Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Att ha vanliga översvämningssensorer är bra för att förhindra massiva skador på ditt hem eller din arbetsplats.
Men det gör det svårt om du inte är hemma för att delta i larmet.
Naturligtvis kan du köpa de smarta
Detta översvämningslarmsystem upptäcker all vätska och utlöser larm och uppdaterar webbsidan om översvämning som kan nås var som helst i världen, oavsett om du har en avkopplande semester eller bara på jobbet och du vill veta om ditt hus status.
Tillbehör
Hallon pi (jag använder modell 3 B+) kör raspbian
Partikel Argon
Grove Water Sensor
Raspi -kamera
Summer
Bygelkablar
Steg 1: Anslut vattensensorn till partikeln
vattensensorn har 4 stift, som är GND, VCC, NC och SIG och vi kommer att använda bara tre av dem
Jag ansluter SIG -stift till D2 på Argon.
Nu kan du starta Particle Web IDE för att skriva koden och blinka till Argon
Så vi har registrerat partikelfunktionsvätska och definierat en variabel isFloodPresent, som kan ringas från Particle Console och erhålla det booleska värdet för isFloodPresent och även kalla funktionsvätska för mock -test som tar värde 1 som ingång vilket betyder sant för översvämning (vatten) närvarande.
se till att du kan se den funktionen och variabeln från Particle Console på din Particle Device.
Steg 2: Anslut larmkällan till hallon
På brödbräda kan du ansluta Buzzer till Raspberrys GPIO -stift
Jag har anslutit mindre ände av summer till GND (PIN 6) och längre ände till pin 7 på hallon.
Kör nu koden för att se. Vi kommer att behöva denna python -fil kör hela tiden så att den kan ta emot utlösarna från webbservern och svara därefter.
Alternativt kan du köra den här filen vid start på ditt hallon som du kan göra genom att redigera /etc /systemd
och den här filen kommer att placeras i cgi -mappen på din apache -server, Jag har gjort en ny katalog flood-cgi inuti/var/www/html/och placerat denna.py-fil som kommer att kommunicera med mitt cgi-skript
Steg 3: Konfigurera Apache Server
du kan installera apache-servern genom att skriva sudo apt-get install apache2
när det är installerat kan du verifiera genom att skriva värdnamn -I
och du får din lokala IP -adress och du kan gå till din webbläsare och ser servern köra
Steg 4: Aktivera CGI på Apache
du kan aktivera cgi genom att skriva sudo a2enmod cgi
Som standard ligger cgi_bin för apache i/usr/lib/cgi-bin
det är här du kan lägga dina cgi -skript efter att du har aktiverat cgi
För att få effekt måste du starta om apache -servern
Jag ville ha anpassad katalog för mina cgi-skript så jag skapade katalogen i/var/www/html/kallade flood-cgi
för att aktivera den här katalogen var jag tvungen att skapa konf -filen genom att skriva
sudo nano /etc/apache2/conf-available/flood-cgi.conf
och lägga till kommandon enligt skärmdumpen
aktivera sedan den här katalogen genom att skriva
var/www/html $ sudo a2enconf flood-cgi
nu kan du starta om din apache -server igen och alla cgi från den här mappen kommer att kunna läsas av apache efter tillståndet.
Steg 5: Konfigurera webbsidan
För denna enkla webbtjänst använder jag HTML, Javascript, CSS, jquery och ajax.
Jag har fem kontrolletiketter som är klickbara, Om du klickar på ta foto från webbsidan, kommer det att utlösa funktionen för fotoknapps klickfunktion och den här funktionen ser ut så här
$ ("#photobutton"). klicka (function () {var floodDate = new Date ();
var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();
$.ajax ({
url: 'flood-cgi/flood_cgi.py', metod: 'post', data: {name_for_image: floodImageName}, framgång: funktion (data) {
varning (data, status)
$ ("#recentpic"). attr ("src", "flood-cgi/" + floodImageName + ".jpg");
}
})
});
detta kommer att kalla skriptet flood_cgi.py för att ta foto och spara bild med anpassat namn som genereras av aktuellt datum och tid och ajax laddas upp till sidan.
vid larm kan vi använda den här funktionen
funktion callAlarm (alarmType) {
$.ajax ({
url: 'flood-cgi/alarm.cgi', metod: 'post', data: {alarm_type: alarmType}, framgång: funktion (data) {alert (data)
}, error: function (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});
}
funktionen callAlarm kommer att ringas upp när du klickar på summeretiketten, $ ("#summer"). klicka (function () {callAlarm ("test");
})
nedanstående kod är när du vill klicka på mock flood, det vill säga ringa Particle API och ringa funktionen och ändra vätskevärdet 1 och kontrollera systemet om helheten fungerar som förväntat genom att genomföra en mock flood -händelse
$ ("#mockFlood"). klicka (function () {console.log ("mock flood har begärt");
var floodVal = 1;
$ ("#signal2"). css ("font-size", "small");
var varName = "isFloodPresent";
var deviceID = "DITT ENHETS -ID";
var accessToken = "DITT ACCESS TOKEN";
if (floodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {liquid: floodVal}, funktion (data, status) {
if (status == "framgång") {
alert ("Mock Flood har genomfört !!!");
} annat {
alert ("Tyvärr, det var ett problem");
}
});
}
});
Dessa är de viktigaste funktionerna du behöver för att ansluta till Particle Api och ditt hallon så att din hallonpi och partikelapparat Argon kan kommunicera.
Obs! Jag ville ladda upp all kod, men det tillåter mig inte att ladda upp.html -fil
Steg 6: Skapa skript för Raspi -kamera
vi skapar enkla.py för att fånga bild och det kommer att ha en anteckning om aktuellt datum och tid på den.
då kommer vi att skapa cgi -script flood_cgi.py så det kommer att ringas från webben och detta kommer att beordra.py -fil för att ta foto.
se till att starta cgi -skriptet med #! /usr/bin/env python
och ge även apache behörighet att köra dessa filer.
apache-servern körs på användarens www-data så när vi har skapat.py- eller.cgi-filen måste apache vara ägare till filen
sudo chown pi: www-data flood-cgi.py
och ge tillstånd att verkställa
sudo chmod a+x flood-cgi.py
du måste göra detta för alla filer som måste köras från apache -servern.
OBS: att exponera ditt hallon för internet och ge alla dessa behörigheter gör ditt hallon mycket sårbart av säkerhetsskäl så strikta användare och behörigheter bör följas och installera brandvägg som okomplicerad brandvägg (ufw)