Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
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
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
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
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
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
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)