Mündəricat:
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-13 06:56
Standart daşqın sensorlarının olması evinizə və ya iş yerinizə böyük ziyan vurmamaq üçün əladır.
Ancaq evdə olmadıqda həyəcan siqnalı verməyi çətinləşdirir.
Əlbəttə ki, bu ağıllıları satın ala bilərsiniz
Bu daşqın siqnalizasiya sistemi hər hansı bir mayeni aşkar edir və həyəcan siqnalı verir və dünyanın hər yerində əldə edilə bilən daşqınla bağlı veb səhifəni yeniləyir, istər istirahət etmək istər istirahət, istərsə də iş yerində və evinizin vəziyyəti haqqında bilmək istəyirsiniz.
Təchizat
Raspberry pi (mən 3 B+modelindən istifadə edirəm) raspbian işləyir
Hissəcik Argon
Grove Su Sensoru
Raspi Kamera
Buzzer
Jumper telləri
Addım 1: Su Sensorunu Partikula bağlayın
su sensoru GND, VCC, NC və SIG olan 4 sancağa malikdir və onlardan yalnız üçünü istifadə edəcəyik
SIG pinini Argonda D2 -yə bağlayıram.
İndi, Argon -a kodu yazmaq və flash etmək üçün Particle Web IDE -ni işə sala bilərsiniz
Beləliklə, biz hissəcik funksiyası mayesini qeydiyyatdan keçirdik və PartFile Console -dan çağırıla bilən və isFloodPresent -in boole dəyərini əldə edə biləcəyimiz isFloodPresent dəyişənini təyin etdik və eyni zamanda daşqın (su) üçün doğru olan 1 mənasını daxil edən saxta test üçün funksiya mayesini çağırırıq..
Partikül Cihazınızın Particle Console -dan bu funksiyanı və dəyişəni görə bildiyinizə əmin olun.
Addım 2: Siqnal mənbəyini Moruqla birləşdirin
Çörək taxtasında Buzzer -i Raspberry -nin GPIO pininə qoşa bilərsiniz
Zilin daha kiçik ucunu GND -ə (PIN 6) və daha uzun ucunu moruqda 7 -ci pinlə bağladım.
İndi görmək üçün kodu işlədin. Bu python faylının hər zaman işləyəcəyinə ehtiyacımız olacaq ki, tetikleyiciləri veb serverdən alsın və buna uyğun olaraq cavab versin.
Alternativ olaraq, bu faylı /etc /systemd redaktə etməklə edə biləcəyiniz moruqda işə sala bilərsiniz
və bu fayl apache serverinizin cgi qovluğuna yerləşdiriləcək, /Var/www/html/daxilində yeni bir daşqın cgi qovluğu yaratdım və cgi skriptimlə əlaqə quracaq bu.py faylını yerləşdirdim
Addım 3: Apache Serveri konfiqurasiya edin
sudo apt-get install apache2 yazaraq apache server qura bilərsiniz
quraşdırıldıqda, hostname -I yazaraq yoxlaya bilərsiniz
və yerli IP ünvanınızı alacaqsınız və brauzerinizə gedə bilərsiniz və serverin işlədiyini görməlisiniz
Addım 4: Apache -də CGI -ni aktivləşdirin
sudo a2enmod cgi yazaraq cgi -ni aktivləşdirə bilərsiniz
Varsayılan olaraq apache-nin cgi_bin/usr/lib/cgi-bin-də yerləşir
cgi -ni aktiv etdikdən sonra cgi skriptlərinizi bura yerləşdirə bilərsiniz
təsir etmək üçün apache serverini yenidən başlatmalısınız
Cgi skriptlərim üçün xüsusi bir kataloq istədim, buna görə/var/www/html/-də daşqın-cgi adlı bir kataloq yaratdım
Bu qovluğu aktiv etmək üçün yazaraq conf faylını hazırlamalı oldum
sudo nano /etc/apache2/conf-available/flood-cgi.conf
və ekran görüntüsündə göstərildiyi kimi əmrlər əlavə edin
sonra yazaraq bu qovluğu aktiv edin
var/www/html $ sudo a2enconf sel-cgi
indi apache serverinizi yenidən başlata bilərsiniz və bu qovluqdakı bütün cgi icazədən sonra apache tərəfindən oxunacaq.
Addım 5: İnternet səhifəsini qurun
Bu sadə veb xidməti üçün HTML, Javascript, CSS, jquery və ajax istifadə edirəm.
Tıklana bilən beş nəzarət etiketim var, Veb səhifədən fotoşəkil çəkildikdə, fotoşəkil düyməsini vurma funksiyasını işə salacaq və bu funksiya belə görünür
$ ("#photobutton"). klikləyin (function () {var FloodDate = yeni Tarix ();
var FloodImageName = "Flood_IMG_" + FloodDate.toLocaleTimeString ();
$.ajax ({
url: 'sel-cgi/sel_cgi.py', üsul: 'post', məlumatlar: {name_for_image: FloodImageName}, uğur: funksiya (data) {
xəbərdarlıq (məlumat, status)
$ ("#latestpic"). attr ("src", "sel-cgi/" + FloodImageName + ".jpg");
}
})
});
bu, şəkil çəkmək üçün Flood_cgi.py skriptini çağıracaq və səhifəyə qədər cari tarix və vaxt və ajax yükləmələri ilə yaradılan xüsusi adla şəkil saxlayacaq.
siqnalizasiya vəziyyətində bu funksiyadan istifadə edə bilərik
funksiyası callAlarm (alarmType) {
$.ajax ({
url: 'sel-cgi/alarm.cgi', üsul: 'post', məlumatlar: {alarm_type: alarmType}, müvəffəqiyyət: funksiya (data) {xəbərdarlıq (məlumat)
}, səhv: funksiya (XMLHttpRequest, textStatus, throwError) {xəbərdarlıq (throwError)}});
}
zəng siqnalı tıklandığında callAlarm funksiyası çağırılacaq, $ ("#buzzer"). basın (function () {callAlarm ("test");
})
Aşağıdakı kod, istehza daşqınını vurmaq istədiyiniz zaman, yəni Particle API -ni çağırmaq və funksiyanı çağırmaq və maye dəyərini 1 dəyişdirmək və sistemin saxta daşqın hadisəsi keçirərək gözlənildiyi kimi işlədiyini yoxlamaqdır.
$ ("#mockFlood"). basın (function () {console.log ("istehza daşqını istədi");
var selVal = 1;
$ ("#signal2"). css ("font-size", "small");
var varName = "isFloodPresent";
var deviceID = "CİHAZIN ID";
var accessToken = "SİZİN GİRİŞ TOKENİNİZ";
if (FloodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {maye: selVal}, funksiya (məlumat, status) {
əgər (status == "uğur") {
xəbərdarlıq ("Mock Flood keçirdi !!!");
} başqa {
xəbərdarlıq ("Bağışlayın, bir problem oldu");
}
});
}
});
Moruq pi və hissəcik cihazınız Argonun ünsiyyət qura bilməsi üçün Particle Api və moruq ilə əlaqə qurmaq üçün lazım olan əsas funksiyalar bunlardır.
Qeyd: Bütün kodu yükləmək istədim, amma.html faylını yükləməyimə icazə vermir
Addım 6: Raspi Camera üçün Script yaradın
şəkil çəkmək üçün sadə.py yaradırıq və bunun üzərində cari tarix və vaxtın qeydləri olacaq.
sonra cgi skriptini Flood_cgi.py yaradacağıq ki, internetdən çağırılsın və bu.py faylını çəkmək üçün əmr verəcək.
cgi skriptini #ilə başladığınızdan əmin olun! /usr/bin/env python
və həmçinin apache -dən bu faylları işə salmağa icazə verin.
apache serveri istifadəçi www-data üzərində işləyir, buna görə.py və ya.cgi faylını yaratdıqdan sonra apache faylın sahibi olmalıdır.
sudo chown pi: www-data sel-cgi.py
və icrasına icazə verin
sudo chmod a+x sel-cgi.py
apache serverindən işləməsi lazım olan bütün fayllar üçün bunu etməlisiniz.
QEYD: moruqunuzu internetə çıxarmaq və bütün bu icazələri vermək moruqunuzu təhlükəsizlik baxımından çox həssas edir, buna görə ciddi istifadəçi və icazələrə riayət olunmalı və mürəkkəb olmayan bir təhlükəsizlik duvarı (ufw) kimi təhlükəsizlik duvarı quraşdırılmalıdır.