Mundarija:

Raspberry Pi va Argon zarrachalari yordamida suv toshqinini aniqlash signalizatsiya tizimini qanday qilish kerak: 6 qadam
Raspberry Pi va Argon zarrachalari yordamida suv toshqinini aniqlash signalizatsiya tizimini qanday qilish kerak: 6 qadam

Video: Raspberry Pi va Argon zarrachalari yordamida suv toshqinini aniqlash signalizatsiya tizimini qanday qilish kerak: 6 qadam

Video: Raspberry Pi va Argon zarrachalari yordamida suv toshqinini aniqlash signalizatsiya tizimini qanday qilish kerak: 6 qadam
Video: Raspberry Pi 4B в корпусе Argon ONE M.2 c SSD диском 128 ГБ, собираем сервер для Home Assistant 2024, Noyabr
Anonim
Image
Image
Raspberry Pi va Argon zarrachalari yordamida suv toshqinlarini aniqlashning aqlli signal tizimini qanday qilish kerak
Raspberry Pi va Argon zarrachalari yordamida suv toshqinlarini aniqlashning aqlli signal tizimini qanday qilish kerak

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 sensorini zarrachaga ulang
Suv sensorini zarrachaga ulang
Suv sensorini zarrachaga ulang
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

Signal manbasini Raspberry -ga ulang
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

Apache serverini sozlash
Apache serverini sozlash

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

Apache -da CGI -ni yoqing
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

Veb -sahifani sozlash
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)

Tavsiya: