Talaan ng mga Nilalaman:
2025 May -akda: John Day | [email protected]. Huling binago: 2025-01-13 06:58
Ang pagkakaroon ng karaniwang mga sensor ng baha ay mahusay upang maiwasan ang napakalaking pinsala sa iyong tahanan o lugar na pinagtatrabahuhan.
Ngunit nagpapahirap kung wala ka sa bahay upang dumalo sa alarma.
Siyempre maaari kang bumili ng mga matalino
Ang sistema ng alarm alarm na ito ay nakakakita ng anumang likido at nagpapalitaw ng alarma at ina-update ang web page tungkol sa pagbaha na maaaring ma-access kahit saan sa mundo, kung mayroon kang nakakarelaks na bakasyon o sa trabaho lamang at nais mong malaman tungkol sa katayuan ng iyong bahay.
Mga gamit
Raspberry pi (gumagamit ako ng modelong 3 B +) na tumatakbo na raspbian
Particle Argon
Grove Water Sensor
Raspi Camera
Buzzer
Jumper wires
Hakbang 1: Ikonekta ang Water Sensor sa Particle
ang water sensor ay mayroong 4 na pin, na kung saan ay ang GND, VCC, NC at SIG at gagamitin lamang namin ang tatlo sa kanila
Kinokonekta ko ang SIG pin sa D2 sa Argon.
Ngayon, maaari mong ilunsad ang Particle Web IDE upang isulat ang code at flash sa Argon
Kaya nakarehistro kami ng likido ng pagpapaandar ng Particle at tinukoy ang isang variable na.
tiyaking nakikita mo ang pagpapaandar na iyon at variable mula sa Particle Console ng iyong Particle Device.
Hakbang 2: Ikonekta ang Pinagmulan ng Alarm sa Raspberry
Sa breadboard maaari mong ikonekta ang Buzzer sa pin ng GPIO ng Raspberry
Nakakonekta ko ang mas maliit na dulo ng buzzer sa GND (PIN 6) at mas matagal na nagtatapos sa pin 7 sa raspberry.
Patakbuhin ngayon ang code upang makita. Kakailanganin namin ang file ng python na ito na tumatakbo sa lahat ng oras upang makatanggap ito ng mga pag-trigger mula sa web server at tumugon nang naaayon.
Bilang kahalili maaari mong patakbuhin ang file na ito sa pagsisimula sa iyong raspberry na maaari mong gawin sa pamamagitan ng pag-edit / etc / systemd
at ang file na ito ay ilalagay sa cgi folder ng iyong apache server, Gumawa ako ng bagong direktoryo na pagbaha-cgi sa loob / var / www / html / at inilagay ang.py file na ito na makikipag-usap sa aking script sa cgi
Hakbang 3: I-configure ang Apache Server
maaari mong mai-install ang apache server sa pamamagitan ng pag-type ng sudo apt-get install apache2
kapag na-install ito, maaari mong i-verify sa pamamagitan ng pagta-type ng hostname -ako
at makukuha mo ang iyong lokal na IP address at maaari kang magtungo sa iyong browser at dapat mong makita ang pagpapatakbo ng server
Hakbang 4: Paganahin ang CGI sa Apache
maaari mong paganahin ang cgi sa pamamagitan ng pagta-type ng sudo a2enmod cgi
Sa pamamagitan ng Default na cgi_bin ng apache ay matatagpuan sa / usr / lib / cgi-bin
dito mo mailalagay ang iyong mga script sa cgi pagkatapos paganahin ang cgi
upang makuha ang epekto, kailangan mong i-restart ang server ng apache
Gusto ko ng pasadyang direktoryo para sa aking mga script sa cgi kaya gumawa ako ng direktoryo sa / var / www / html / tinawag na banjir-cgi
upang paganahin ang direktoryong ito kailangan kong gumawa ng conf file sa pamamagitan ng pagta-type
sudo nano /etc/apache2/conf-available/flood-cgi.conf
at pagdaragdag ng mga utos tulad ng ipinakita sa screenshot
pagkatapos paganahin ang direktoryo na ito sa pamamagitan ng pagta-type
var / www / html $ sudo a2enconf flood-cgi
Ngayon ay maaari mong i-restart muli ang iyong server ng apache at ang lahat ng cgi mula sa folder na ito ay mababasa ng apache pagkatapos ng pahintulot.
Hakbang 5: I-set up ang Web Page
Para sa simpleng serbisyo sa web na ito, gumagamit ako ng HTML, Javascript, CSS, jquery at ajax.
Mayroon akong limang mga label ng kontrol na maaaring mai-click, Sa kaganapan kapag ang pagkuha ng larawan ay na-click mula sa web page, ito ay magpapalitaw sa pagpapaandar ng pag-click sa pindutan ng larawan at ganito ang pag-andar na ito
$ ("# photobutton"). click (function () {var banjirDate = bagong Petsa ();
var banjirImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();
$.ajax ({
url: 'flood-cgi / banjir_cgi.py', pamamaraan: 'post', data: {name_for_image: banjirImageName}, tagumpay: pagpapaandar (data) {
alerto (data, katayuan)
$ ("# kamakailan-lamang").
}
})
});
tatawagan nito ang script na banjir_cgi.py upang kumuha ng larawan at makatipid ng imahe na may pasadyang pangalan na nabuo sa pamamagitan ng kasalukuyang petsa at oras at ajax naglo-load hanggang sa pahina.
sa kaganapan ng Alarm, maaari naming gamitin ang pagpapaandar na ito
function callAlarm (alarmType) {
$.ajax ({
url: 'banjir-cgi / alarm.cgi', pamamaraan: 'post', data: {alarm_type: alarmType}, tagumpay: pagpapaandar (data) {alerto (data)
}, error: function (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});
}
tatawag ang function na callAlarm kapag na-click ang label ng buzzer, $ ("# buzzer"). click (function () {callAlarm ("test");
})
sa ibaba ng code ay kapag nais mong i-click ang mock banjir ie ibig sabihin ang pagtawag sa Particle API at tawagan ang pagpapaandar at baguhin ang likidong halaga na 1 at suriin ang system kung ang kabuuan ay gumagana tulad ng inaasahan sa pamamagitan ng pagsasagawa ng isang mock na kaganapan sa pagbaha
$ ("# mockFlood"). mag-click (function () {console.log ("humiling ng mock banjir");
var banjirVal = 1;
$ ("# signal2"). css ("font-size", "maliit");
var varName = "isFloodPresent";
var deviceID = "IYONG DEVICE ID";
var accessToken = "IYONG ACCESS TOKEN";
kung (floodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/ likido? access_token =" + accessToken, {likido: banjirVal}, pagpapaandar (data, katayuan) {
kung (katayuan == "tagumpay") {
alerto ("Isinagawa ang Mock Flood !!!");
} iba pa {
alerto ("Paumanhin, nagkaroon ng problema");
}
});
}
});
Ito ang mga pangunahing pag-andar na kailangan mo upang makakonekta sa Particle Api at sa iyong raspberry upang ang iyong raspberry pi at particle device na Argon ay maaaring makipag-usap.
tandaan: Nais kong i-upload ang lahat ng code, ngunit hindi ako pinapayagan na mag-upload ng.html file
Hakbang 6: Lumikha ng Script para sa Raspi Camera
lumilikha kami ng simpleng.py upang makuha ang imahe at magkakaroon ito ng anotasyon ng kasalukuyang petsa at oras dito.
pagkatapos ay lilikha kami ng cgi script na banjir_cgi.py kaya't tatawagin ito mula sa web at uutusan nito ang.py file upang kumuha ng litrato.
tiyaking sisimulan ang script ng cgi sa #! / usr / bin / env python
at magbigay din ng pahintulot sa apache upang patakbuhin ang mga file na ito.
tumatakbo ang server ng apache sa www-data ng gumagamit kaya sa sandaling nalikha namin ang.py o.cgi file, kailangang maging may-ari ng file ang apache
sudo chown pi: www-data banjir-cgi.py
at magbigay ng pahintulot upang maisagawa
sudo chmod a + x baha-cgi.py
kakailanganin mong gawin ito para sa lahat ng mga file na kailangang tumakbo mula sa apache server.
TANDAAN: ang paglalantad ng iyong raspberry sa internet at pagbibigay ng lahat ng mga pahintulot na ito ay ginagawang mas mahina ang iyong raspberry para sa mga kadahilanang pangseguridad kaya ang mahigpit na gumagamit at mga pahintulot ay dapat sundin at mai-install ang firewall tulad ng hindi komplikadong firewall (ufw)