Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Standart suv toshqini sensorlari sizning uyingiz yoki ish joyingizga katta zarar etkazilishining oldini olish uchun juda yaxshi.
Ammo, agar siz uyda bo'lmasangiz, signalga kirishni qiyinlashtirasiz.
Albatta, siz ularni aqlli sotib olishingiz mumkin
Suv toshqini signalizatsiyasi har qanday suyuqlikni aniqlaydi va signalni ishga tushiradi va dunyoning istalgan nuqtasiga kira oladigan suv toshqini haqidagi veb -sahifani yangilaydi, siz dam olayotganingizda yoki ishda bo'lsangiz ham, siz uyingizning holati haqida bilmoqchisiz.
Ta'minotlar
Raspberry pi (men 3 B+modelini ishlataman) raspbian bilan ishlaydi
Argo zarrachasi
Grove suv sensori
Raspi kamera
Buzzer
Jumper simlari
1 -qadam: Suv sensorini zarrachaga ulang
Suv sensori 4 ta pinli, ular GND, VCC, NC va SIG va biz ulardan faqat uchtasini ishlatamiz.
Men SIG pinini Argonda D2 ga ulayman.
Endi siz Argon -ga kod yozish va o'chirish uchun Particle Web IDE -ni ishga tushirishingiz mumkin
Shunday qilib, biz zarracha funktsiyasi suyuqligini ro'yxatdan o'tkazdik va PartFor Console -dan chaqiriladigan isFloodPresent boolean qiymatini olishimiz mumkin bo'lgan isFloodPresent o'zgarmaydiganini aniqladik va shuningdek, toshqin (suv) uchun haqiqiy degan ma'noni anglatuvchi 1 qiymatini oladigan soxta sinov uchun funktsional suyuqlikni chaqirdik..
zarracha qurilmangizning zarracha konsolidan bu funktsiyani va o'zgaruvchini ko'rishingiz mumkinligiga ishonch hosil qiling.
2 -qadam: Signal manbasini Raspberry -ga ulang
Non panelida siz Buzzerni Raspberry GPIO piniga ulashingiz mumkin
Men buzzerning kichik uchini GND (PIN 6) va uzunroq uchini malinaning 7 -piniga uladim.
Endi ko'rish uchun kodni ishga tushiring. Bizga bu python fayli doimo ishga tushishi kerak bo'ladi, shuning uchun u tetiklarni veb -serverdan qabul qilishi va shunga mos ravishda javob berishi mumkin.
Shu bilan bir qatorda, bu faylni malinangizda ishga tushirishda ishga tushirishingiz mumkin, buni /etc /systemd tahrirlash orqali qilishingiz mumkin
va bu fayl apache serveringizning cgi papkasida joylashtiriladi, Men/var/www/html/ichida
3 -qadam: Apache serverini sozlang
sudo apt-get install apache2 yozib apache serverini o'rnatishingiz mumkin
u o'rnatilganda, siz hostname -I ni yozib tekshirishingiz mumkin
va siz mahalliy IP -manzilni olasiz va siz brauzeringizga kirishingiz mumkin va server ishlayotganini ko'rasiz
4 -qadam: Apache -da CGI -ni yoqing
sudo a2enmod cgi yozish orqali cgi -ni yoqishingiz mumkin
Apache-ning cgi_bin sukut bo'yicha/usr/lib/cgi-bin-da joylashgan
bu erda siz cgi -ni yoqgandan so'ng cgi skriptlarini qo'yishingiz mumkin
ta'sir qilish uchun siz apache serverini qayta ishga tushirishingiz kerak
Men cgi skriptlari uchun maxsus katalogni xohladim, shuning uchun
bu katalogni yoqish uchun yozish orqali conf faylini tuzishim kerak edi
sudo nano /etc/apache2/conf-available/flood-cgi.conf
va skrinshotda ko'rsatilgandek buyruqlarni qo'shish
keyin yozish orqali ushbu katalogni yoqing
var/www/html $ sudo a2enconf sel-cgi
Endi siz apache serveringizni qayta ishga tushirishingiz mumkin va bu papkadagi barcha cgi ruxsatdan keyin apache tomonidan o'qiladi.
5 -qadam: veb -sahifani sozlash
Ushbu oddiy veb -xizmat uchun men HTML, Javascript, CSS, jquery va ajaxdan foydalanaman.
Menda bosish mumkin bo'lgan beshta boshqaruv yorlig'i bor, Agar veb -sahifadan suratga olinsa, u tugmachani bosish funktsiyasini ishga tushiradi va bu funksiya shunday ko'rinadi
$ ("#photobutton"). bosing (function () {var FloodDate = new Date ();
var FloodImageName = "Flood_IMG_" + FloydDate.toLocaleTimeString ();
$.ajax ({
url: 'sel-cgi/sel_cgi.py', usul: "post", ma'lumotlar: {name_for_image: FloodImageName}, muvaffaqiyat: funktsiya (ma'lumotlar) {
ogohlantirish (ma'lumotlar, holat)
$ ("#oxirgi rasm"). attr ("src", "sel-cgi/" + selImageName + ".jpg");
}
})
});
bu Flood_cgi.py skriptini suratga olish uchun chaqiradi va rasmni joriy sana va vaqt va ajax sahifaga yuklangan maxsus nom bilan saqlaydi.
signal bo'lsa, biz bu funktsiyadan foydalanishimiz mumkin
callAlarm (signalType) funksiyasi {
$.ajax ({
url: 'sel-cgi/alarm.cgi', usul: "post", ma'lumotlar: {alarm_type: alarmType}, muvaffaqiyat: funktsiya (ma'lumotlar) {ogohlantirish (ma'lumotlar)
}, xato: funktsiya (XMLHttpRequest, textStatus, throwError) {ogohlantirish (throwError)}});
}
callAlarm funktsiyasi qo'ng'iroq belgisi bosilganda chaqiriladi, $ ("#buzzer"). bosing (function () {callAlarm ("test");
})
Quyidagi kod - siz zarba suvini bosmoqchi bo'lsangiz, ya'ni Particle API -ni chaqiring va funktsiyani chaqiring va suyuqlikning qiymatini o'zgartiring va butun tizim kutilganidek ishlayotganini tekshiring.
$ ("#mockFlood"). bosing (function () {console.log ("soxta toshqin talab qilingan");
var selVal = 1;
$ ("#signal2"). css ("shrift o'lchami", "kichik");
var varName = "isFloodPresent";
var deviceID = "SIZNING QURILMA ID";
var accessToken = "KIRISH TOKENINGIZ";
agar (FloodVal) {
$.post ("https://api.particle.io/v1/devices/" + deviceID + "/suyuqlik? access_token =" + accessToken, {suyuqlik: selVal}, funktsiya (ma'lumotlar, holat) {
agar (status == "muvaffaqiyat") {
ogohlantirish ("Mock Flood o'tkazdi !!!");
} boshqa {
ogohlantirish ("Kechirasiz, muammo yuz berdi");
}
});
}
});
Bu sizning zarracha api va malinangiz bilan aloqa o'rnatishingiz kerak bo'lgan asosiy funktsiyalar, shuning uchun siz malina pi va zarracha qurilmasi Argon bilan bog'lana olasiz.
Eslatma: Men barcha kodni yuklamoqchi edim, lekin u menga.html faylini yuklashga ruxsat bermaydi
6 -qadam: Raspi Camera uchun skript yarating
biz tasvirni olish uchun oddiy.py faylini yaratmoqdamiz va unda joriy sana va vaqt izohi bo'ladi.
Keyin biz cgi skriptini Flood_cgi.py yaratamiz, shunda u Internetdan chaqiriladi va bu.py faylini suratga olishni buyuradi.
cgi skriptini #bilan boshlaganingizga ishonch hosil qiling! /usr/bin/env python
va apache -ga ushbu fayllarni ishga tushirishga ruxsat bering.
apache serveri www-data foydalanuvchisida ishlaydi, shuning uchun.py yoki.cgi faylini yaratganimizda, apache fayl egasi bo'lishi kerak.
sudo chown pi: www-ma'lumotlar sel-cgi.py
va bajarishga ruxsat bering
sudo chmod a+x sel-cgi.py
Siz buni apache serveridan ishlashi kerak bo'lgan barcha fayllar uchun qilishingiz kerak bo'ladi.
QAYD: malinani internetga chiqarish va barcha ruxsatnomalarni berish sizning malinangizni xavfsizlik nuqtai nazaridan juda himoyasiz qiladi, shuning uchun qattiq foydalanuvchi va ruxsatlarga rioya qilish va xavfsizlik devorini oddiy xavfsizlik devori kabi o'rnatish kerak (ufw)