Kako narediti pametni alarmni sistem za odkrivanje poplav z uporabo maline Pi in delcev argona: 6 korakov
Kako narediti pametni alarmni sistem za odkrivanje poplav z uporabo maline Pi in delcev argona: 6 korakov
Anonim
Image
Image
Kako narediti pametni alarmni sistem za odkrivanje poplav z uporabo maline Pi in delcev argona
Kako narediti pametni alarmni sistem za odkrivanje poplav z uporabo maline Pi in delcev argona

Standardni senzorji za poplave so odlični za preprečevanje velikih poškodb vašega doma ali delovnega mesta.

Toda oteži se, če se niste udeležili alarma, če niste doma.

Seveda bi jih lahko kupili pametne

Ta alarmni sistem za poplave zazna kakršno koli tekočino in sproži alarm ter posodobi spletno stran o poplavah, do katere lahko dostopate kjer koli po svetu, ne glede na to, ali imate sproščujoče počitnice ali samo v službi in želite vedeti o stanju svoje hiše.

Zaloge

Raspberry pi (uporabljam model 3 B+), ki teče raspbian

Delci Argon

Senzor vode Grove

Kamera Raspi

Zvočni signal

Mostične žice

1. korak: Senzor vode priključite na delce

Senzor vode priključite na delce
Senzor vode priključite na delce
Senzor vode priključite na delce
Senzor vode priključite na delce

senzor vode ima 4 zatiče, ki so GND, VCC, NC in SIG in uporabili jih bomo le tri

Priključujem pin SIG na D2 na Argonu.

Zdaj lahko zaženete Particle Web IDE, da napišete kodo in utripate v Argon

Tako smo registrirali funkcijo delcev tekočino in definirali spremenljivko isFloodPresent, ki jo lahko pokličemo iz konzole Particle Console in pridobimo logično vrednost isFloodPresent ter tudi pokličemo funkcijo liquid za lažno testiranje, ki za vnos vzame vrednost 1, kar pomeni, da je za poplavo (voda) prisotna.

Poskrbite, da boste lahko videli to funkcijo in spremenljivko iz konzole Particle vaše naprave za delce.

Korak: Priključite vir alarma na Raspberry

Priključite vir alarma na Raspberry
Priključite vir alarma na Raspberry

Na matični plošči lahko Buzzer povežete z Raspberryjevim zatičem GPIO

Manjši konec sirene sem priključil na GND (PIN 6), daljši konec pa na pin 7 na malini.

Zdaj zaženite kodo, da vidite. To datoteko python bomo morali ves čas izvajati, da lahko sprejme sprožilce s spletnega strežnika in se ustrezno odzove.

Druga možnost je, da to datoteko zaženete ob zagonu v svoji malini, kar lahko storite tako, da uredite /etc /systemd

in ta datoteka bo postavljena v mapo cgi vašega strežnika apache, Naredil sem nov imenik flood-cgi znotraj/var/www/html/in postavil to datoteko.py, ki bo komunicirala z mojim skriptom cgi

3. korak: Konfigurirajte strežnik Apache

Konfigurirajte strežnik Apache
Konfigurirajte strežnik Apache

strežnik apache lahko namestite tako, da vnesete sudo apt-get install apache2

ko je nameščen, lahko preverite tako, da vnesete ime gostitelja -I

in dobili boste lokalni naslov IP in se lahko odpravite v brskalnik in videli boste, da strežnik deluje

4. korak: Omogočite CGI v Apacheju

Omogočite CGI v Apacheju
Omogočite CGI v Apacheju

cgi lahko omogočite tako, da vnesete sudo a2enmod cgi

Privzeto je cgi_bin apache v/usr/lib/cgi-bin

tukaj lahko po vklopu cgi postavite svoje skripte cgi

Če želite doseči učinek, morate znova zagnati strežnik apache

Želel sem imenik po meri za svoje skripte cgi, zato sem ustvaril imenik v/var/www/html/, imenovan flood-cgi

Za omogočanje tega imenika sem moral z vnosom vnesti datoteko conf

sudo nano /etc/apache2/conf-available/flood-cgi.conf

in dodajanje ukazov, kot je prikazano na posnetku zaslona

nato omogočite ta imenik z vnosom

var/www/html $ sudo a2enconf flood-cgi

zdaj lahko znova zaženete strežnik apache in vse cgi iz te mape bo po dovoljenju bral apache.

5. korak: Nastavite spletno stran

Nastavite spletno stran
Nastavite spletno stran

Za to preprosto spletno storitev uporabljam HTML, Javascript, CSS, jquery in ajax.

Imam pet kontrolnih oznak, ki jih je mogoče klikniti, V primeru, da na spletni strani kliknete fotografijo, se bo sprožila funkcija klika na gumb za fotografijo in ta funkcija izgleda tako

$ ("#photobutton"). click (function () {var floodDate = nov datum ();

var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();

$.ajax ({

url: 'flood-cgi/flood_cgi.py', metoda: 'objava', podatki: {name_for_image: floodImageName}, uspeh: funkcija (podatki) {

opozorilo (podatki, stanje)

$ ("#recentpic"). attr ("src", "flood-cgi/" + floodImageName + ".jpg");

}

})

});

to bo poklicalo skript flood_cgi.py za fotografiranje in shrani sliko z imenom po meri, ki ga ustvarijo trenutni datum in čas, ajax pa se naloži do strani.

v primeru alarma lahko uporabimo to funkcijo

function callAlarm (alarmType) {

$.ajax ({

url: 'flood-cgi/alarm.cgi', metoda: 'objava', podatki: {alarm_type: alarmType}, uspeh: funkcija (podatki) {opozorilo (podatki)

}, error: function (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});

}

funkcija callAlarm bo poklicana, ko kliknete na oznako brenčalnika, $ ("#buzzer"). click (function () {callAlarm ("test");

})

spodnja koda je, če želite klikniti namišljeno poplavo, tj. poklicati API za delce in poklicati funkcijo ter spremeniti vrednost tekočine 1 in preveriti, ali celota deluje po pričakovanjih z izvedbo lažnega dogodka poplave

$ ("#mockFlood"). click (function () {console.log ("zahtevana je lažna poplava");

var floodVal = 1;

$ ("#signal2"). css ("velikost pisave", "majhna");

var varName = "isFloodPresent";

var deviceID = "ID VAŠE NAPRAVE";

var accessToken = "VAŠ ŽEZEN ZA DOSTOP";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + ID naprave + "/tekočina? access_token =" + accessToken, {tekočina: floodVal}, funkcija (podatki, stanje) {

if (status == "uspeh") {

alert ("Mock Flood je izveden !!!");

} drugo {

alert ("Oprostite, prišlo je do težave");

}

});

}

});

To so glavne funkcije, ki jih potrebujete za vzpostavitev povezave z Particle Api in vašo malino, da lahko komunicira vaš malina pi in naprava z delci Argon.

opomba: želel sem naložiti vso kodo, vendar mi ne dovoljuje nalaganja datoteke.html

6. korak: Ustvarite skript za kamero Raspi

ustvarjamo preprosto datoteko.py za zajem slike, ki bo imela opombo o trenutnem datumu in času.

nato bomo ustvarili skript cgi flood_cgi.py, tako da bo poklican s spleta in to bo ukazalo datoteko.py za fotografiranje.

zagotovo zaženite skript cgi z #! /usr/bin/env python

in tudi dovolite apacheju za izvajanje teh datotek.

strežnik apache deluje na uporabniških www-podatkih, zato mora biti apache, ko ustvarimo datoteko.py ali.cgi, lastnik datoteke

sudo chown pi: www-data flood-cgi.py

in da dovoljenje za izvedbo

sudo chmod a+x flood-cgi.py

to boste morali narediti za vse datoteke, ki jih je treba zagnati s strežnika apache.

OPOMBA: zaradi izpostavljanja vaše maline internetu in dajanja vseh teh dovoljenj je vaša malina zaradi varnostnih razlogov zelo ranljiva, zato je treba upoštevati stroge uporabnike in dovoljenja ter namestiti požarni zid kot nezapleten požarni zid (ufw)