Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Standartiniai potvynių jutikliai yra puikūs, kad būtų išvengta didelės žalos jūsų namams ar darbo vietai.
Tačiau sunku, jei nesate namuose, apsilankyti žadintuve.
Žinoma, jūs galite nusipirkti protingus
Ši potvynių aliarmo sistema aptinka bet kokį skystį ir suaktyvina aliarmą ir atnaujina tinklalapį apie potvynį, kurį galima pasiekti bet kurioje pasaulio vietoje, nesvarbu, ar atostogaujate atostogų metu, ar tiesiog dirbate, ir norite sužinoti apie savo būsto būklę.
Prekės
Raspberry pi (naudoju 3 B+modelį), kuriame veikia raspbian
Argono dalelės
Grove vandens jutiklis
„Raspi“kamera
Garsinis signalas
Jumperio laidai
1 žingsnis: prijunkite vandens jutiklį prie dalelių
vandens jutiklis turi 4 kaiščius, kurie yra GND, VCC, NC ir SIG, ir mes ketiname naudoti tik tris iš jų
Aš jungiu SIG kaištį prie Argon D2.
Dabar galite paleisti „Particle Web IDE“, kad parašytumėte kodą ir paleistumėte „Argon“
Taigi mes užregistravome dalelių funkcinį skystį ir apibrėžėme kintamąjį isFloodPresent, kurį galima iškviesti iš dalelių konsolės ir gauti loginę isFloodPresent vertę, taip pat iškviesti funkcinį skystį bandomajam bandymui, kurio vertė 1 kaip įvestis, o tai reiškia, kad esama potvynio (vandens).
įsitikinkite, kad galite matyti šią funkciją ir kintamąjį savo dalelių įrenginio dalelių konsolėje.
2 veiksmas: prijunkite aliarmo šaltinį prie aviečių
Duonos lentoje galite prijungti „Buzzer“prie „Raspberry“GPIO kaiščio
Mažesnį garsinio signalo galą prijungiau prie GND (PIN 6), o ilgesnį - prie avinėlio 7 kaiščio.
Dabar paleiskite kodą, kad pamatytumėte. Mums reikės, kad šis „python“failas veiktų visą laiką, kad jis galėtų gauti aktyviklius iš žiniatinklio serverio ir atitinkamai reaguoti.
Arba galite paleisti šį failą paleisdami savo avietę, kurią galite padaryti redaguodami /etc /systemd
ir šis failas bus patalpintas jūsų apache serverio cgi aplanke, Sukūriau naują katalogą „flood-cgi“/var/www/html/ir įdėjau šį.py failą, kuris bendrauja su mano cgi scenarijumi
3 veiksmas: sukonfigūruokite „Apache“serverį
apache serverį galite įdiegti įvesdami sudo apt-get install apache2
kai ji įdiegta, galite patikrinti įvesdami kompiuterio pavadinimą -I
ir jūs gausite savo vietinį IP adresą ir galėsite eiti į savo naršyklę ir pamatyti, kaip veikia serveris
4 veiksmas: įjunkite CGI „Apache“
galite įjungti cgi įvesdami sudo a2enmod cgi
Pagal numatytuosius nustatymus apache cgi_bin yra/usr/lib/cgi-bin
čia galite įdėti savo cgi scenarijus įjungę cgi
norėdami pasiekti efektą, turite iš naujo paleisti „apache“serverį
Norėjau pritaikyti savo cgi scenarijų katalogą, todėl sukūriau katalogą/var/www/html/pavadinimu „flood-cgi“
norėdamas įjungti šį katalogą, turėjau padaryti conf failą įvesdamas
sudo nano /etc/apache2/conf-available/flood-cgi.conf
ir pridėti komandas, kaip parodyta ekrano kopijoje
tada įjunkite šį katalogą įvesdami
var/www/html $ sudo a2enconf flood-cgi
dabar galite iš naujo paleisti apache serverį ir visi cgi iš šio aplanko bus skaitomi apache po leidimo.
5 veiksmas: nustatykite tinklalapį
Šiai paprasta žiniatinklio paslaugai naudoju HTML, Javascript, CSS, jquery ir ajax.
Turiu penkias valdomas etiketes, kurias galima spustelėti, Jei iš tinklalapio spustelėjama fotografuoti, ji suaktyvina nuotraukos mygtuko paspaudimo funkciją ir ši funkcija atrodo taip
$ ("#photobutton"). spustelėkite (funkcija () {var floodDate = new Date ();
var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();
$.ajax ({
url: 'flood-cgi/flood_cgi.py', metodas: „post“, duomenys: {name_for_image: floodImageName}, sėkmė: funkcija (duomenys) {
įspėjimas (duomenys, būsena)
$ ("#Recentpic"). attr ("src", "flood-cgi/" + floodImageName + ".jpg");
}
})
});
tai iškvies scenarijų „flood_cgi.py“, kad nufotografuotų ir išsaugotų vaizdą pagal pasirinktą pavadinimą, sukurtą pagal dabartinę datą ir laiką, o „ajax“įkeliamas į puslapį.
aliarmo atveju galime naudoti šią funkciją
funkcija callAlarm (alarmType) {
$.ajax ({
URL: „flood-cgi/alarm.cgi“, metodas: „post“, duomenys: {alarm_type: alarmType}, sėkmė: funkcija (duomenys) {įspėjimas (duomenys)
}, klaida: funkcija (XMLHttpRequest, textStatus, throError) {alert (throError)}});
}
funkcija callAlarm bus iškviesta, kai bus spustelėta garsinio signalo etiketė, $ ("#buzzer"). spustelėkite (funkcija () {callAlarm ("test");
})
žemiau esantis kodas yra tada, kai norite spustelėti netikrą potvynį, t. y. paskambinus „Particle API“, iškviesti funkciją ir pakeisti skysčio vertę 1 ir patikrinti, ar visa sistema veikia taip, kaip tikėtasi, atlikdami bandomąjį potvynio įvykį
$ ("#mockFlood"). click (function () {console.log ("juokingas potvynis paprašė");
var potvynisVal = 1;
$ ("#signal2"). css ("šrifto dydis", "mažas");
var varName = "isFloodPresent";
var deviceID = "JŪSŲ ĮRENGINIO ID";
var accessToken = "JŪSŲ PRIEIGA PATIKRINTA";
if (floodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {skystis: floodVal}, funkcija (duomenys, būsena) {
if (status == "sėkmė") {
įspėjimas ("įvykdytas netikras potvynis !!!");
} Kitas {
įspėjimas („Atsiprašome, kilo problema“);
}
});
}
});
Tai yra pagrindinės funkcijos, kurių reikia norint užmegzti ryšį su dalelėmis Api ir jūsų avietėmis, kad jūsų aviečių pi ir dalelių įrenginys Argon galėtų bendrauti.
pastaba: norėjau įkelti visą kodą, bet jis neleidžia įkelti.html failo
6 veiksmas: sukurkite „Raspi Camera“scenarijų
mes kuriame paprastą.py vaizdą ir jame bus dabartinės datos ir laiko komentarai.
tada mes sukursime cgi scenarijų flood_cgi.py, todėl jis bus iškviestas iš žiniatinklio ir tai lieps fotografuoti.py failą.
būtinai paleiskite cgi scenarijų su #! /usr/bin/env python
taip pat duokite apache leidimą paleisti šiuos failus.
„apache“serveris veikia naudotojo „www“duomenimis, todėl kai sukuriame.py arba.cgi failą, apache turi būti failo savininkas
sudo chown pi: www-data flood-cgi.py
ir duoti leidimą vykdyti
sudo chmod a+x flood-cgi.py
turėsite tai padaryti visiems failams, kuriuos reikia paleisti iš apache serverio.
PASTABA: veikiant avietėms internete ir suteikiant visus šiuos leidimus, avietės dėl saugumo priežasčių tampa labai pažeidžiamos, todėl reikia laikytis griežtų naudotojų ir leidimų ir įdiegti ugniasienę kaip nesudėtingą užkardą (ufw)