Sadržaj:

Pool Pi Guy - Alarmni sistem s AI -om i nadzor bazena pomoću Raspberry Pi: 12 koraka (sa slikama)
Pool Pi Guy - Alarmni sistem s AI -om i nadzor bazena pomoću Raspberry Pi: 12 koraka (sa slikama)

Video: Pool Pi Guy - Alarmni sistem s AI -om i nadzor bazena pomoću Raspberry Pi: 12 koraka (sa slikama)

Video: Pool Pi Guy - Alarmni sistem s AI -om i nadzor bazena pomoću Raspberry Pi: 12 koraka (sa slikama)
Video: Schoolgirls for Sale in Japan 2024, Novembar
Anonim
Pool Pi Guy - Alarmni sistem sa AI upravljanjem i nadzor bazena pomoću Raspberry Pi
Pool Pi Guy - Alarmni sistem sa AI upravljanjem i nadzor bazena pomoću Raspberry Pi

Imati bazen kod kuće je zabavno, ali dolazi s velikom odgovornošću. Moja najveća briga je praćenje ako je neko u blizini bazena bez nadzora (posebno mlađa djeca). Moja najveća smetnja je što pazim da voda u bazenu nikada ne padne ispod ulaza u pumpu, što bi pumpu osušilo i uništilo, što bi koštalo $$$ u popravcima.

Nedavno sam otkrio kako koristiti Raspberry Pi sa OpenCV -om i TensorFlow -om, zajedno sa senzorom nivoa vode i magnetnim ventilom za rješavanje oba problema - i zabavite se pri tome!

Ispostavilo se da je i odličan alarmni sistem - pokretom aktiviran, AI kontroliran, beskonačno prilagodljiv.

Uronimo.

Korak 1: Veliki plan

U ovom uputstvu pokazat ćemo kako:

  1. Postavite Raspberry Pi s OpenCV -om i TensorFlow -om
  2. Povežite web kameru putem dugačkog USB kabela
  3. Napišite OpenCV algoritam za detekciju pokreta
  4. Koristite TensorFlow za otkrivanje objekata
  5. Postavite web server na Raspberry Pi da prikazuje zanimljive slike
  6. Integrirajte se s IFTTT -om za pokretanje mobilnih upozorenja u slučaju otkrivanja osobe
  7. Priključite relejni HAT na Raspberry Pi i spojite ga na elektromagnetni ventil koji bi dodao vodu u bazen
  8. Priključite senzor nivoa vode na Raspberry Pi i povežite se s njim koristeći Pi -jev GPIO
  9. Napišite neki kod da biste sve zalijepili

Korak 2: Lista za kupovinu

Lista za kupovinu
Lista za kupovinu

Sve komponente su dostupne u Amazonu. Slobodno eksperimentirajte i zamijenite komponente - to je pola zabave!

  1. Raspberry Pi
  2. Napajanje Raspberry Pi (ne štedite ovdje)
  3. Memorijska kartica (veća je bolja)
  4. Kućište (ovo je dovoljno veliko da primi i Pi i HAT)
  5. USB web kamera (svaka web kamera će poslužiti, ali želite onu koja dobiva dobre slike i dobro uravnotežuje osvjetljenje)
  6. USB produžni kabel (ako je potrebno - izmjerite udaljenost između Pi i mjesta gdje biste postavili kameru)
  7. Relejna ploča HAT (ova ima 3 releja, a treba nam samo jedan, no uskoro ćete pronaći primjenu za ostale!)
  8. Solenoid
  9. Solenoidni priključak 1 i fiting 2 (to zaista ovisi o tome na šta pristajete solenoid, ali meni je ovo uspjelo)
  10. Solenoidno napajanje (bilo koji 24V AC bi odgovarao)
  11. Kabel (opet, gotovo bilo koji dvožilni kabel bi odgovarao - struja je minimalna)
  12. Plivajući prekidač za vodostaj (ovo je samo primjer, provjerite šta se lako može spojiti na vaš bazen)
  13. Neke kratkospojne žice i žičani konektori

Korak 3: Postavite svoj Raspberry Pi

Postavite svoj Raspberry Pi
Postavite svoj Raspberry Pi

Raspberry Pi je odličan mali računar. Košta samo 35 USD, radi dosljedno i ima puno kompatibilnog softvera i hardvera. Postavljanje je prilično jednostavno:

  1. Formatirajte SD karticu. To zahtijeva posebnu njegu - Raspberry Pi se može pokrenuti samo s SD kartice formatirane u FAT formatu. Slijedite ova uputstva.
  2. Povežite Raspberry Pi na USB tastaturu i miša, plus HDMI ekran, i slijedite upute u vodiču Raspberry Pi NOOBS. Postavite WiFi i omogućite SSH pristup. Ne zaboravite postaviti lozinku za zadani pi račun.
  3. Prilikom postavljanja kućne mreže statički IP za Raspberry Pi - uvelike bi olakšao SSH pristup.
  4. Provjerite imate li instaliran ssh klijent na radnoj površini/prijenosnom računaru. Za PC bih preporučio Putty, koji možete instalirati odavde.
  5. Odvojite USB i HDMI od Raspberry Pi -a, ponovo ga pokrenite i ubacite ssh u njega - ako je sve radilo, trebali biste vidjeti nešto poput ovoga:

Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l

Programi uključeni u Debian GNU/Linux sistem su besplatni softver; tačni uslovi distribucije za svaki program opisani su u pojedinačnim datotekama u/usr/share/doc/*/copyright. Debian GNU/Linux dolazi s APSOLUTNO BEZ JAMSTVA, u mjeri u kojoj to dopušta važeći zakon. Zadnja prijava: pon, 13. svibnja 10:41:40 2019 sa 104.36.248.13 pi@raspberrypi: ~ $

Korak 4: Postavite OpenCV

Postavljanje OpenCV -a
Postavljanje OpenCV -a

OpenCV je nevjerojatna zbirka funkcija za manipulaciju slikama za računarski vid. Omogućit će nam da čitamo slike s web kamere, manipuliramo njima kako bismo pronašli područja kretanja, spremili ih i još mnogo toga. Postavljanje na Raspberry Pi nije teško, ali zahtijeva malo pažnje.

Počnite instaliranjem virtaulenvwrapper: koristit ćemo python za sve naše programiranje, a virtualenv bi nam pomogao da odvojimo zavisnosti za OpenCV i TensorFlow vs. Flask ili GPIO:

pi@raspberrypi: ~ $ sudo pip instaliraj virtualenvwrapper

Sada možete pokrenuti "mkvirtualenv" za stvaranje novog okruženja, "workon" za rad na njemu i još mnogo toga.

Dakle, stvorimo okruženje za manipulaciju slikama, s pythonom 3 kao zadanim tumačem (2019. je, nema razloga da se držimo starijeg pythona 2):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

Sada smo spremni za instalaciju OpenCV -a. Uglavnom ćemo pratiti odličan vodič u Learn OpenCV -u. Konkretno slijedite njihove korake 1 i 2:

sudo apt -y updatesudo apt -y upgrade ## Instalacijske ovisnosti sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm sudo apt-get -y install git gfortran sudo apt-get -y install libjpeg8-dev libjasper- dev libpng12-dev sudo apt-get -y instaliraj libtiff5-dev sudo apt-get -y instaliraj libtiff-dev sudo apt-get -y instaliraj libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y instalirajte libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y instalirajte libgstreamer0.10-dev libgstreamer-plugins-base0. 10-dev sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default sudo apt-get -y install libatlas-base-dev sudo apt-get -y install libmp3lame-dev libtheora-dev sudo apt-get -y instalirajte libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y instalirajte libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y instalirajte libavresample-dev sudo apt-get -y instalirajte x264 v4l-utils sudo apt -get -y install libprotobuf -dev protobuf-compiler sudo apt-get -y install libgoogle-glog-dev libgflags-dev sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen sudo apt-get install libqtgui4 sudo apt-get install libqt4 test

Sada možemo samo instalirati OpenCV sa python vezama unutar cv virtualenv (još ste u njemu, zar ne?) Koristeći

pip install opencv-contrib-python

I to je to! Na našem Raspberry Pi -u imamo instaliran OpenCV, spreman za snimanje fotografija i video zapisa, manipulaciju njima i kul.

Provjerite to otvaranjem python tumača i uvozom opencv -a i provjerite da nema grešaka:

(cv) pi@raspberrypi: ~ $ python

Python 3.5.3 (zadano, 27. septembra 2018, 17:25:39) [GCC 6.3.0 20170516] na linuxu Za više informacija upišite "help", "copyright", "credits" ili "license". >>> uvoz cv2 >>>

Korak 5: Postavite TensorFlow

Postavite TensorFlow
Postavite TensorFlow

TensorFlow je okvir za mašinsko učenje / AI koji je razvio i održava Google. Ima opsežnu podršku za modele dubokog učenja za razne zadatke, uključujući otkrivanje objekata na slikama, i sada je prilično jednostavan za instalaciju na Raspberry Pi. Performanse njegovih lakih modela na malenom Pi -u su oko 1 kadra u sekundi, što je savršeno primjereno za primjenu poput naše.

U osnovi ćemo slijediti odličan vodič Edje Electronics, s izmjenama koje su omogućile novije distribucije TensorFlow:

pi@raspberrypi: ~ $ workon cv

(cv) pi@raspberrypi: ~ $ pip instaliraj tensorflow (cv) pi@raspberrypi: ~ $ sudo apt-get instaliraj libxml2-dev libxslt-dev (cv) pi@raspberrypi: ~ $ pip instaliraj jastuk lxml jupyter matplotlib cython (cv) pi@raspberrypi: ~ $ sudo apt-get install python-tk

Sada moramo sastaviti Googleov protobuf. Samo slijedite upute u koraku 4 istog izvrsnog vodiča

Konačno, klonirajte i postavite definicije modela TensorFlow -a - slijedite korak 5 u vodiču Edje Electronics

Slijedite njihov primjer i u koraku 6, to je odličan uvod u otkrivanje objekata na Raspberry Pi.

Korak 6: Otkrivanje pokreta pomoću OpenCV -a

Počnimo s testiranjem da se OpenCV može povezati s našom web kamerom: ssh u Raspberry Pi, prijeđite na cv virtualenv (workon cv), otvorite python interpreter (samo upišite python) i unesite sljedeće naredbe python:

import cv2

cap = cv2. VideoCapture (0) cap.set (cv2. CAP_PROP_FRAME_WIDTH, 1920) cap.set (cv2. CAP_PROP_FRAME_HEIGHT, 1080) ret, frame = cap.read () print ('Pročitajte veličinu okvira: {} x {}'.format (frame.shape [1], frame.shape [0])

Uz malo sreće, vidjet ćete da je OpenCV uspio pročitati HD okvir s kamere.

Možete koristiti cv2.imwrite (path, frame) da zapišete taj okvir na disk i sftp ga vratite da biste ga zaista pogledali.

Strategija otkrivanja pokreta prilično je jednostavna:

  1. Radite na okvirima niže rezolucije - ovdje nema potrebe za radom na full HD -u
  2. Nadalje, zamaglite slike kako biste osigurali što je moguće manje šuma.
  3. Zadržite tekući prosjek zadnjih N kadrova. Za ovu aplikaciju, gdje je frame rate oko 1 FPS (samo zato što TensorFlow -u treba neko vrijeme po kadru), otkrio sam da N = 60 daje dobre rezultate. A budući da pažljiva implementacija ne zahtijeva više CPU -a s više okvira, to je u redu (potrebno je više memorije - ali to je zanemarivo kada radimo s okvirima niže rezolucije)
  4. Oduzmite trenutnu sliku od tekućeg prosjeka (samo budite oprezni pri upisivanju - morate omogućiti pozitivne i negativne vrijednosti [-255.. 255], pa okvir treba pretvoriti u int)
  5. Možete oduzeti na konverziji okvira u sivoj skali (i prosjek) ili to učiniti zasebno za svaki od RGB kanala, a zatim kombinirati rezultate (što je strategija koju sam odabrao, čineći je osjetljivom na promjene boje)
  6. Koristite prag na delti i uklonite buku erozijom i dilatacijom
  7. Na kraju potražite konture područja s deltom - na tim područjima dolazi do kretanja i trenutna slika se razlikuje od prosjeka prethodnih slika. Ako je potrebno, možemo dalje pronaći granične okvire za ove konture.

Inkapsulirao sam kod za to u klasu python DeltaFinder koju možete pronaći u mom githubu ovdje

Korak 7: Otkrijte objekte pomoću programa TensorFlow

Ako ste slijedili proceduru instalacije TensorFlow -a, već ste provjerili da li je TensorFlow instaliran i radi.

U svrhu otkrivanja ljudi na općoj sceni na otvorenom, modeli koji su unaprijed obučeni u COCO skupu podataka rade prilično dobro - što je upravo model koji smo preuzeli na kraju instalacije TensorFlow. Samo ga trebamo upotrijebiti za zaključivanje!

Opet sam inkapsulirao učitavanje modela i zaključivanje u klasu python TFClassify kako bih olakšao stvari, koje možete pronaći ovdje.

Korak 8: Postavite web server na Raspberry Pi

Postavite web server na Raspberry Pi
Postavite web server na Raspberry Pi

Najlakši način za pristup rezultatima otkrivanja objekata je web preglednik, pa postavimo web server na Raspberry Pi. Zatim ga možemo postaviti za posluživanje slika iz određenog direktorija.

Postoji više opcija za okvir web servera. Ja sam izabrao Flask. Izuzetno se konfigurira i lako se proširuje s Pythonom. Budući da nam je "skala" trivijalna, bilo je više nego dovoljno.

Predlažem da ga instalirate u novi virtualenv, pa:

pi@raspberrypi: ~ $ mkvirtualenv webserv

(webserv) pi@raspberrypi: ~ $ pip install Flask

Imajte na umu da će s normalnim mrežnim postavljanjem biti dostupan samo ako je vaš preglednik na istoj bežičnoj LAN mreži kao i vaš Raspberry Pi. Mogli biste stvoriti mapiranje portova / NAT konfiguraciju na svom internetskom usmjerivaču kako biste omogućili vanjski pristup - ali ja to ne preporučujem. Kôd koji sam napisao ne pokušava pružiti sigurnost koja bi vam bila potrebna kada dopuštate opći pristup internetu vašem Raspberry Pi -u.

Testirajte svoju instalaciju slijedeći vodič za brzi početak Flask

Korak 9: Obavještenja za mobilne uređaje iz Raspberry Pi -a pomoću IFTTT -a

Mobilna obavještenja iz Raspberry Pi -a pomoću IFTTT -a
Mobilna obavještenja iz Raspberry Pi -a pomoću IFTTT -a

Zaista želim primati mobilna obavještenja kada se dogode događaji. U ovom slučaju, kada se osoba otkrije i kada nivo vode padne. Najjednostavniji način na koji sam to učinio, bez potrebe za pisanjem prilagođene mobilne aplikacije, je korištenje IFTTT -a. IFTTT označava "If This Then That" i omogućava mnogim vrstama događaja da pokrenu mnoge vrste radnji. U našem slučaju, zanima nas pokretač IFTTT Maker Webhook. To nam omogućava da pokrenemo IFTTT radnju upućivanjem HTTP POST zahtjeva IFTTT poslužitelju s posebnim ključem dodijeljenim našem računu, zajedno sa podacima koji određuju šta se dogodilo. Radnja koju poduzimamo može biti jednostavna kao stvaranje obavijesti na našem mobilnom uređaju pomoću mobilne aplikacije IFTTT, ili bilo što složenije od toga.

Evo kako to učiniti:

  1. Napravite IFTTT račun na ifttt.com
  2. Dok ste prijavljeni, idite na stranicu postavki usluge Webhook i unesite URL u svoj preglednik (nešto poput https://maker.ifttt.com/use/. Ta web stranica će vam pokazati vaš ključ i URL koji možete koristiti za pokretanje radnji.
  3. Napravite IFTTT applet koji će generirati mobilno obavještenje kada se pokrene Webhook s detaljima događaja:

    1. Kliknite na "My Applets", a zatim na "New Applet".
    2. Pritisnite "+ovo" i odaberite "webhooks". Kliknite "Primite web zahtjev" za nastavak detalja
    3. Dajte svom događaju naziv, npr. "PoolEvent" i kliknite "Kreiraj okidač"
    4. Pritisnite "+to" i odaberite "obavijesti". Zatim odaberite "Pošalji bogato obavještenje iz aplikacije IFTTT"
    5. Za "naslov" odaberite nešto poput "PoolPi"
    6. Za "poruku" napišite "Pool Pi je otkriveno:" i kliknite "dodaj sastojak".. "Vrijednost1".
    7. Vratite se na URL koji ste kopirali u koraku 2. Prikazat će URL koji ćete upotrijebiti za pozivanje novonastalog apleta. Kopirajte taj URL, zamijenivši rezervirano mjesto {event} imenom događaja (u našem primjeru PoolEvent)
  4. Preuzmite, instalirajte i prijavite se na aplikaciju IFTTT za svoj mobilni uređaj
  5. Pokrenite ovu python skriptu na svom Raspberry Pi -u da vidite da li radi (imajte na umu da može proći nekoliko sekundi ili minuta da se aktivira na vašem mobilnom uređaju):

uvozni zahtevi

requests.post ('https://maker.ifttt.com/trigger/PoolEvent/with/key/', json = {"value1": "Pozdrav obavještenja"})

Korak 10: Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil

Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni HAT u Raspberry Pi i spojite ga na elektromagnetni ventil

Prije nego nastavite s ovim korakom ISKLJUČITE svoj Raspberry Pi: ssh na njega i upišite "sudo shutdown now", a zatim ga isključite iz napajanja

Naš cilj je uključiti i isključiti napajanje elektromagnetnim ventilom - ventilom koji može otvoriti ili zatvoriti dovod vode na osnovu 24 V izmjenične struje koju dobiva iz napajanja. Releji su električne komponente koje mogu otvoriti ili zatvoriti krug na temelju digitalnog signala koji naša Raspberry Pi može pružiti. Ono što mi ovdje radimo je da spojimo relej na ove digitalne signalne pinove Raspberry Pi -a i da ga zatvorimo u krug između 24V AC napajanja i elektromagnetnog ventila.

Igle na Raspberry Pi -u koje mogu djelovati kao digitalni ulaz ili izlaz nazivaju se GPIO - ulaz/izlaz opće namjene i red su od 40 pinova sa strane Pi -a. Kad je Pi isključen i čvrsto umetnite relej HAT u njega. ŠEŠIR koji sam odabrao ima 3 releja u sebi, a mi ćemo koristiti samo jedan od njih. Zamislite sve što možete učiniti sa druga dva:)

Sada ponovo uključite Raspberry Pi. Crvena LED "napajanje" na releju HAT bi se trebala uključiti, što znači da napaja Pi iz GPIO -a. Testirajmo možemo li to kontrolirati: ssh ponovo u Pi, unesite python i upišite:

import gpiozero

dev = gpiozero. DigitalOutputDevice (26, initial_value = True) dev.off ()

Trebali biste čuti zvučni "klik", koji označava da je relej uključen, i vidjeti upaljenu LED lampicu koja pokazuje da je prvi relej u spojenom položaju. Sada možete tipkati

dev.on ()

Što bi relej prebacilo u položaj "isključeno" (čudno, znam …) i izašlo () iz pythona.

Sada pomoću kratkospojnih kabela i dužeg kabela spojite relej između 24V napajanja i elektromagnetnog ventila. Pogledajte dijagram. Konačno, spojite elektromagnetni ventil na slavinu pomoću adaptera i pripremite se za testiranje svega ponavljanjem gornjih naredbi - one bi trebale uključivati i isključivati vodu.

Priključite crijevo na elektromagnetni ventil, a drugi kraj stavite duboko u bazen. Sada imate kompjuterski upravljani sistem nadopunjavanja bazena i vrijeme je da spojite senzor kako biste mu rekli kada da radi.

Korak 11: Povežite senzor nivoa vode

Povežite senzor nivoa vode
Povežite senzor nivoa vode
Priključite senzor nivoa vode
Priključite senzor nivoa vode
Priključite senzor nivoa vode
Priključite senzor nivoa vode
Priključite senzor nivoa vode
Priključite senzor nivoa vode

Senzor nivoa vode je jednostavno plovak koji povezuje električni krug kada je plovak spušten i prekida ga kada pluta. Ako ga umetnete u bazen na pravoj visini, plovak će se podići kada je razina vode odgovarajuća, ali će se smanjiti ako nema dovoljno vode.

Da bi Raspberry Pi znao status senzora nivoa vode, potreban nam je Pi da bi osjetio otvoreni ili zatvoreni krug. Srećom, to je vrlo jednostavno: isti GPIO konektori koje koristimo kao digitalni izlaz za upravljanje relejima mogu djelovati kao ulazi (dakle I u GPIO). Konkretno, ako jednu žicu senzora spojimo na +3,3 V na GPIO konektoru, a drugu žicu senzora na pin koji konfiguriramo kao padajući ulaz (što znači da će normalno biti na naponskom nivou GND), taj pin će mjeriti digitalni "visoki" ili "uključeni" napon samo kada senzor nivoa vode zatvori krug - kada je nivo vode nizak. Koristio sam GPIO pin 16 kao ulaz, koji sam označio na gornjoj slici.

Python kôd za konfiguriranje pina kao ulaza i testiranje njegovog trenutnog stanja je:

import gpiozero

level_input = gpiozero. Button (16) water_low = level_input.is_pressed

Jedan od potencijalnih izazova je to što bi senzor samo promijenio stanje, brzo bi oscilirao između stanja uključivanja i isključivanja. Rješenje za to je poznato kao "debouncing" i traži dosljednu promjenu stanja prije poduzimanja radnji. Biblioteka GPIOZERO ima kod za to, ali iz nekog razloga taj kod mi nije dobro funkcionirao. Napisao sam jednostavnu petlju za pokretanje IFTTT upozorenja kada se otkrije dosljedna promjena stanja, koju možete pronaći u mom spremištu ovdje.

Korak 12: Napišite kôd da biste sve povezali

Napišite kôd da biste sve povezali
Napišite kôd da biste sve povezali

To je to. Naše postavljanje je završeno. Možete napisati vlastiti kôd za povezivanje stvari u cjelovit sistem ili upotrijebiti kôd koji vam dajem. Da biste to učinili, jednostavno stvorite strukturu direktorija i klonirajte spremište, na sljedeći način:

mkdir poolpi

cd poolpi git clone

Zatim uredite datoteke s imenom ifttt_url.txt u direktorijima motion_alert i water_level tako da imaju URL za vašu IFTTT web udicu s vašim tajnim ključem. Za različite radnje možete koristiti dvije različite web kuke.

Konačno, želimo da se ovaj kôd automatski pokrene. Najlakši način da to postignete je putem Linux crontab usluge. Možemo dodati neke crontab linije za dva glavna zadatka:

  1. Pokrenite naša tri programa: detektor objekata, senzor nivoa vode i web server pri svakom ponovnom pokretanju
  2. Očistite izlazni direktorij, brišući stare slike i stare video datoteke (odabrao sam brisanje datoteka starijih od 1 dana i slika starijih od 7 dana - slobodno eksperimentirajte)

Da biste to učinili, upišite crontab -e koji će otvoriti vaš uređivač nano teksta. Dodajte sljedeće retke na dno datoteke:

0 1 * * * find/home/pi/poolpi/output -type f -name " *.avi" -mtime +1 -delete

0 2 * * * find/home/pi/poolpi/output -type f -name " *.jpg" -mtime +7 -delete @reboot python3 /home/pi/poolpi/motion_alert/webserv/webserv.py @reboot python3 /home/pi/poolpi/motion_alert/motion_obj_alert.py @reboot python3 /home/pi/poolpi/water_level/test_water_level.py

Na kraju, ponovo pokrenite svoj Raspberry Pi. Sada je spreman za održavanje vašeg bazena punim i sigurnim.

Učinite nešto sa postavljanjem, kodom i ne zaboravite označiti zvjezdicom moje github spremište i komentirati uputstva ako vam je to korisno. Uvijek želim saznati više.

Sretno stvaranje!

IoT Challenge
IoT Challenge
IoT Challenge
IoT Challenge

Drugoplasirani u IoT Challenge -u

Preporučuje se: