Hoe maak je een slim overstromingsdetectie-alarmsysteem met Raspberry Pi en Particle Argon - Ajarnpa
Hoe maak je een slim overstromingsdetectie-alarmsysteem met Raspberry Pi en Particle Argon - Ajarnpa
Anonim
Image
Image
Hoe maak je een slim overstromingsdetectie-alarmsysteem met Raspberry Pi en Particle Argon?
Hoe maak je een slim overstromingsdetectie-alarmsysteem met Raspberry Pi en Particle Argon?

Het hebben van standaard overstromingssensoren is geweldig om enorme schade aan uw huis of werkplek te voorkomen.

Maar het maakt het moeilijk als je niet thuis bent om de wekker bij te wonen.

Die kun je natuurlijk wel slim kopen

Dit overstromingsalarmsysteem detecteert elke vloeistof en activeert een alarm en werkt de webpagina over overstroming bij die overal ter wereld toegankelijk is, of u nu een ontspannen vakantie hebt of gewoon op het werk bent en u wilt weten hoe het met uw huis staat.

Benodigdheden

Raspberry pi (ik gebruik model 3 B+) met raspbian

Deeltje Argon

Grove Watersensor

Raspi-camera

Zoemer

Doorverbindingsdraden

Stap 1: Sluit de watersensor aan op het deeltje

Sluit de watersensor aan op het deeltje
Sluit de watersensor aan op het deeltje
Sluit de watersensor aan op het deeltje
Sluit de watersensor aan op het deeltje

watersensor heeft 4 pinnen, die GND, VCC, NC en SIG zijn en we gaan er slechts drie gebruiken

Ik verbind de SIG-pin met D2 op Argon.

Nu kunt u Particle Web IDE starten om de code te schrijven en naar Argon te flashen

We hebben dus de Particle-functie vloeistof geregistreerd en een variabele isFloodPresent gedefinieerd, die kan worden aangeroepen vanuit Particle Console en de booleaanse waarde van isFloodPresent kan verkrijgen en ook functie vloeistof kan aanroepen voor schijntesten die waarde 1 als invoer heeft, wat betekent waar voor overstroming (water) aanwezig.

zorg ervoor dat u die functie en variabele kunt zien vanuit de Particle Console van uw Particle Device.

Stap 2: Verbind alarmbron met Raspberry

Verbind alarmbron met Raspberry
Verbind alarmbron met Raspberry

Op breadboard kun je zoemer verbinden met de GPIO-pin van Raspberry

Ik heb een kleiner uiteinde van de zoemer aangesloten op GND (PIN 6) en een langer uiteinde op pin 7 op Raspberry.

Voer nu de code uit om te zien. We hebben dit python-bestand de hele tijd nodig, zodat het de triggers van de webserver kan ontvangen en dienovereenkomstig kan reageren.

Als alternatief kunt u dit bestand uitvoeren bij het opstarten op uw Raspberry, wat u kunt doen door /etc/systemd. te bewerken

en dit bestand wordt in de cgi-map van uw apache-server geplaatst, Ik heb een nieuwe map flood-cgi in /var/www/html/ gemaakt en dit.py-bestand geplaatst dat zal communiceren met mijn cgi-script

Stap 3: Configureer Apache Server

Apache-server configureren
Apache-server configureren

je kunt de apache-server installeren door sudo apt-get install apache2 te typen

wanneer het is geïnstalleerd, kunt u dit verifiëren door hostnaam -I. te typen

en je krijgt je lokale IP-adres en je kunt naar je browser gaan en zou de server moeten zien draaien

Stap 4: CGI inschakelen op Apache

CGI inschakelen op Apache
CGI inschakelen op Apache

je kunt cgi inschakelen door sudo a2enmod cgi. te typen

Standaard bevindt cgi_bin van apache zich in /usr/lib/cgi-bin

hier kun je je cgi-scripts plaatsen nadat je cgi. hebt ingeschakeld

om het effect te krijgen, moet je de apache-server opnieuw opstarten

Ik wilde een aangepaste map voor mijn cgi-scripts, dus maakte ik een map in /var/www/html/ genaamd flood-cgi

om deze map in te schakelen moest ik een conf-bestand maken door te typen

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

en commando's toevoegen zoals getoond in screenshot

schakel vervolgens deze map in door te typen

var/www/html $ sudo a2enconf flood-cgi

nu kun je je apache-server opnieuw opstarten en alle cgi uit deze map zullen na de toestemming leesbaar zijn voor apache.

Stap 5: Stel de webpagina in

De webpagina instellen
De webpagina instellen

Voor deze eenvoudige webservice gebruik ik HTML, Javascript, CSS, jQuery en ajax.

Ik heb vijf controlelabels die klikbaar zijn, In het geval dat er op een webpagina op een foto wordt geklikt, wordt de klikfunctie van de fotoknop geactiveerd en ziet deze functie er als volgt uit:

$("#photobutton").click(function () { var floodDate = new Date();

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

$.ajax({

url: 'flood-cgi/flood_cgi.py', methode: 'post', data: { name_for_image: floodImageName }, succes: functie (gegevens) {

waarschuwing (gegevens, status)

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

}

})

});

dit zal het flood_cgi.py-script aanroepen om een foto te maken en de afbeelding op te slaan met een aangepaste naam gegenereerd door de huidige datum en tijd en ajax laadt naar de pagina.

in het geval van Alarm kunnen we deze functie gebruiken

functieaanroepAlarm(alarmType) {

$.ajax({

url: 'flood-cgi/alarm.cgi', methode: 'post', gegevens: { alarm_type: alarmType }, succes: functie (data) { alert(data)

}, fout: functie (XMLHttpRequest, textStatus, throwError) { alert (throwError) } });

}

de functie callAlarm wordt aangeroepen wanneer op het zoemerlabel wordt geklikt, $("#zoemer").click(function () { callAlarm("test");

})

onderstaande code is wanneer u op mock flood wilt klikken, d.w.z. de Particle API aanroepen en de functie aanroepen en de vloeistofwaarde 1 wijzigen en het systeem controleren of het geheel werkt zoals verwacht door een mock flood-gebeurtenis uit te voeren

$("#mockFlood").click(function () { console.log("mock flood heeft aangevraagd");

var floodVal = 1;

$("#signal2").css("lettergrootte", "klein");

var varName = "isFloodPresent";

var deviceID = "UW APPARAAT-ID";

var accessToken = "UW TOEGANGSTOKEN";

if (floodVal) {

$.post("https://api.particle.io/v1/devices/" + deviceID + "/liquid?access_token=" + accessToken, { vloeistof: floodVal }, functie (gegevens, status) {

if (status == "succes") {

alert("Mock Flood heeft uitgevoerd!!!");

} anders {

alert("Sorry, er was een probleem");

}

});

}

});

Dit zijn de belangrijkste functies die je nodig hebt om verbinding te maken met Particle Api en je Raspberry, zodat je Raspberry Pi en Argon-partikelapparaat kunnen communiceren.

opmerking: ik wilde alle code uploaden, maar ik kan geen.html-bestand uploaden

Stap 6: maak een script voor Raspi Camera

we maken een eenvoudige.py om een afbeelding vast te leggen en er zal een annotatie van de huidige datum en tijd op staan.

dan zullen we cgi-script flood_cgi.py maken, zodat het vanaf het web wordt aangeroepen en dit zal het.py-bestand opdracht geven om een foto te maken.

zorg ervoor dat u het cgi-script start met #! /usr/bin/env python

en geef apache ook toestemming om deze bestanden uit te voeren.

apache-server draait op gebruikers www-data, dus zodra we het.py- of.cgi-bestand hebben gemaakt, moet apache de eigenaar van het bestand zijn

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

en geef toestemming om uit te voeren

sudo chmod a+x flood-cgi.py

u moet dit doen voor alle bestanden die vanaf de apache-server moeten worden uitgevoerd.

OPMERKING: uw Raspberry blootstellen aan internet en al deze machtigingen geven, maakt uw Raspberry erg kwetsbaar om veiligheidsredenen, dus strikte gebruikers- en machtigingen moeten worden gevolgd en een firewall installeren zoals een ongecompliceerde firewall (ufw)