Spisu treści:

Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząstek: 6 kroków
Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząstek: 6 kroków

Wideo: Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząstek: 6 kroków

Wideo: Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząstek: 6 kroków
Wideo: Przekaźnik kontroli poziomu cieczy PZ 828RC. Czujnik zalania. 2024, Listopad
Anonim
Image
Image
Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząsteczkowego?
Jak stworzyć inteligentny system alarmowy do wykrywania powodzi przy użyciu Raspberry Pi i argonu cząsteczkowego?

Posiadanie standardowych czujników zalania jest świetne, aby zapobiec ogromnym uszkodzeniom domu lub miejsca pracy.

Ale to utrudnia, jeśli nie ma Cię w domu, aby stawić się na alarm.

Oczywiście możesz kupić te inteligentne

Ten system alarmowy o zalaniu wykrywa każdą ciecz i uruchamia alarm oraz aktualizuje stronę internetową o powodziach, do której można uzyskać dostęp z dowolnego miejsca na świecie, bez względu na to, czy masz relaksujące wakacje, czy po prostu w pracy i chcesz wiedzieć o stanie swojego domu.

Kieszonkowe dzieci

Raspberry pi (ja używam modelu 3 B+) z systemem raspbian

Argon cząsteczkowy

Czujnik wody w Grove

Aparat Raspi

Brzęczyk

Przewody połączeniowe

Krok 1: Podłącz czujnik wody do cząstek

Podłącz czujnik wody do cząstek
Podłącz czujnik wody do cząstek
Podłącz czujnik wody do cząstek
Podłącz czujnik wody do cząstek

czujnik wody ma 4 piny, którymi są GND, VCC, NC i SIG i będziemy używać tylko trzech z nich

Podłączam pin SIG do D2 na Argonie.

Teraz możesz uruchomić Particle Web IDE, aby napisać kod i flashować do Argon

Tak więc zarejestrowaliśmy funkcję Particle liquid i zdefiniowaliśmy zmienną isFloodPresent, którą można wywołać z konsoli Particle Console i uzyskać wartość logiczną isFloodPresent, a także wywołać funkcję liquid do próbnego testowania, która przyjmuje jako dane wejściowe wartość 1, co oznacza true dla obecnego powodzi (wody).

upewnij się, że możesz zobaczyć tę funkcję i zmienną z Konsoli cząstek urządzenia.

Krok 2: Podłącz źródło alarmu do Raspberry

Podłącz źródło alarmu do Raspberry
Podłącz źródło alarmu do Raspberry

Na płytce stykowej można podłączyć Buzzer do pinu GPIO Raspberry

Mniejszy koniec buzzera podłączyłem do GND(PIN 6) a dłuższy do pinu 7 na malinie.

Teraz uruchom kod, aby zobaczyć. Będziemy potrzebować tego pliku Pythona przez cały czas, aby mógł odbierać wyzwalacze z serwera WWW i odpowiednio reagować.

Alternatywnie możesz uruchomić ten plik podczas uruchamiania na malinie, co możesz zrobić, edytując /etc/systemd

a ten plik zostanie umieszczony w folderze cgi twojego serwera Apache, Zrobiłem nowy katalog flood-cgi wewnątrz /var/www/html/ i umieściłem ten plik.py, który będzie komunikował się z moim skryptem cgi

Krok 3: Skonfiguruj serwer Apache

Skonfiguruj serwer Apache
Skonfiguruj serwer Apache

możesz zainstalować serwer Apache, wpisując sudo apt-get install apache2

gdy jest zainstalowany, możesz zweryfikować, wpisując hostname -I

a otrzymasz swój lokalny adres IP i możesz przejść do przeglądarki i powinieneś zobaczyć działający serwer

Krok 4: Włącz CGI na Apache

Włącz CGI na Apache
Włącz CGI na Apache

możesz włączyć cgi, wpisując sudo a2enmod cgi

Domyślnie cgi_bin Apache znajduje się w /usr/lib/cgi-bin

tutaj możesz umieścić swoje skrypty cgi po włączeniu cgi

aby odnieść skutek, musisz zrestartować serwer Apache

Potrzebowałem niestandardowego katalogu dla moich skryptów cgi, więc utworzyłem katalog w /var/www/html/ o nazwie flood-cgi

aby włączyć ten katalog, musiałem utworzyć plik konfiguracyjny, wpisując

sudo nano /etc/apache2/conf-available/flood-cgi.conf

i dodawanie poleceń, jak pokazano na zrzucie ekranu

następnie włącz ten katalog, wpisując

var/www/html $ sudo a2enconf flood-cgi

teraz możesz ponownie uruchomić serwer Apache, a wszystkie pliki cgi z tego folderu będą odczytywane przez apache po uzyskaniu uprawnień.

Krok 5: Skonfiguruj stronę internetową

Skonfiguruj stronę internetową
Skonfiguruj stronę internetową

Do tej prostej usługi internetowej używam HTML, Javascript, CSS, jquery i ajax.

Mam pięć etykiet kontrolnych, które można kliknąć, W przypadku, gdy zrobisz zdjęcie zostanie kliknięte na stronie internetowej, uruchomi to funkcję kliknięcia przycisku zdjęcia i ta funkcja wygląda tak

$("#photobutton").click(function () { var floodDate = new Date();

var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString();

$.ajax({

url: 'flood-cgi/flood_cgi.py', metoda: 'post', data: { name_for_image: floodImageName }, sukces: funkcja (dane) {

alert (dane, status)

$("#recentpic").attr("src", "flood-cgi/" + floodImageName + ".jpg");

}

})

});

wywoła to skrypt flood_cgi.py do zrobienia zdjęcia i zapisania obrazu z niestandardową nazwą wygenerowaną przez bieżącą datę i godzinę, a ajax ładuje się do strony.

w przypadku Alarmu możemy skorzystać z tej funkcji

function callAlarm(typ alarmu) {

$.ajax({

url: 'flood-cgi/alarm.cgi', metoda: 'post', data: { typ_alarmu: typ_alarmu }, sukces: funkcja (dane) { alert (dane)

}, błąd: function (XMLHttpRequest, textStatus, throwError) { alert(throwError) } });

}

funkcja callAlarm zostanie wywołana po kliknięciu etykiety brzęczyka, $("#buzzer").click(function () { callAlarm("test");

})

poniższy kod jest wtedy, gdy chcesz kliknąć mock flood tj. wywołać Particle API i wywołać funkcję oraz zmienić wartość liquidu 1 i sprawdzić system czy całość działa zgodnie z oczekiwaniami przeprowadzając mock flood event

$("#mockFlood").click(function () { console.log("mock Flood zażądał");

var floodVal = 1;

$("#signal2").css("rozmiar czcionki", "mały");

var nazwa_zmiennej = "isFloodPresent";

var deviceID = "ID TWOJEGO URZĄDZENIA";

var accessToken = "TWÓJ TOKEN DOSTĘPU";

if (floodVal) {

$.post("https://api.particle.io/v1/devices/" + identyfikator urządzenia + "/liquid?access_token=" + accessToken, { ciecz: floodVal }, funkcja (dane, status) {

if (status == "sukces") {

alert("Mock Flood przeprowadziła!!!");

} w przeciwnym razie {

alert("Przepraszamy, wystąpił problem");

}

});

}

});

Są to główne funkcje, których potrzebujesz, aby połączyć się z Particle Api i Raspberry Pi, aby Twoje Raspberry Pi i Argon mogły się komunikować.

uwaga: chciałem wgrać cały kod, ale nie mogę wgrać pliku.html

Krok 6: Utwórz skrypt dla aparatu Raspi

tworzymy prosty plik.py do przechwytywania obrazu, który będzie zawierał adnotację z aktualną datą i godziną.

następnie stworzymy skrypt cgi flood_cgi.py, który zostanie wywołany z sieci i wyda plik.py, aby zrobić zdjęcie.

pamiętaj, aby uruchomić skrypt cgi z #! /usr/bin/env python

a także dać Apache pozwolenie na uruchamianie tych plików.

Serwer Apache działa na www-data użytkownika, więc po utworzeniu pliku.py lub.cgi, apache musi być właścicielem pliku

sudo chown pi:www-data flood-cgi.py

i daj pozwolenie na wykonanie

sudo chmod a+x flood-cgi.py

będziesz musiał to zrobić dla wszystkich plików, które muszą być uruchamiane z serwera Apache.

UWAGA: wystawienie swojej maliny na Internet i nadanie wszystkich tych uprawnień sprawia, że malina jest bardzo podatna na zagrożenia ze względów bezpieczeństwa, więc należy przestrzegać surowych uprawnień użytkownika i uprawnień i zainstalować zaporę ogniową, taką jak nieskomplikowana zapora ogniowa (ufw)

Zalecana: