Sadržaj:

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

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

Video: Pool Pi Guy - Alarmni sustav s AI -om i nadzor bazena pomoću Raspberry Pi: 12 koraka (sa slikama)
Video: The 5 Funniest Pool Moments In Family Guy 2024, Srpanj
Anonim
Pool Pi Guy - Alarmni sustav s AI upravljanjem i nadzor bazena pomoću Raspberry Pi
Pool Pi Guy - Alarmni sustav s 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 nadzirati je li netko u blizini bazena bez nadzora (osobito mlađa djeca). Najveća me smetnja brine to što vodovod bazena nikada ne ide ispod ulaza u crpku, što bi crpku osušilo i uništilo, što bi koštalo $$$ u popravcima.

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

Pokazalo se da je i odličan alarmni sustav - 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. Spojite web kameru putem dugog USB kabela
  3. Napišite OpenCV algoritam za otkrivanje pokreta
  4. Za otkrivanje objekata koristite TensorFlow
  5. Postavite web poslužitelj na Raspberry Pi za prikaz zanimljivih slika
  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 razine vode na Raspberry Pi i povežite se s njim pomoću Pi -jevog GPIO -a
  9. Napišite neki kod kako biste sve zalijepili

Korak 2: Popis za kupovinu

Popis za kupovinu
Popis za kupovinu

Sve su komponente lako dostupne s Amazona. Slobodno eksperimentirajte i zamijenite komponente - to je pola zabave!

  1. Malina 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 stvarno ovisi o tome na što pristajete solenoidu, ali meni je to 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. Plutajući prekidač razine vode (ovo je samo primjer, provjerite što se lako može spojiti na vaš bazen)
  13. Neke kratkospojne žice i žičani priključci

Korak 3: Postavite svoj Raspberry Pi

Postavite svoj Raspberry Pi
Postavite svoj Raspberry Pi

Raspberry Pi je odlično malo računalo. 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 oblikovane u FAT. Slijedite ove upute.
  2. Spojite Raspberry Pi na USB tipkovnicu i miša, plus HDMI zaslon i slijedite upute u vodiču Raspberry Pi NOOBS. Pobrinite se da 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čunalu. Za računalo bih preporučio Putty koji možete instalirati odavde.
  5. Odvojite USB i HDMI od Raspberry Pi -a, ponovno ga pokrenite i ubacite ssh u njega - ako je sve radilo, trebali biste vidjeti ovako nešto:

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

Programi uključeni u Debian GNU/Linux sustav besplatni su softver; točni uvjeti 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 dopuštenoj važećim zakonom. Zadnja prijava: pon, 13. svibnja 10:41:40 2019 sa 104.36.248.13 pi@raspberrypi: ~ $

Korak 4: Postavljanje OpenCV -a

Postavljanje OpenCV -a
Postavljanje OpenCV -a

OpenCV je nevjerojatna zbirka manipulacija slikama za računalni vid. Omogućit će nam čitanje slika s web kamere, manipuliranje njima kako bismo pronašli područja kretanja, spremili ih i još mnogo toga. Postavljanje na Raspberry Pi nije teško, ali zahtijeva određenu njegu.

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

pi@raspberrypi: ~ $ sudo pip install 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 našu manipulaciju slikom, s pythonom 3 kao zadanim tumačem (2019. je, nema razloga držati se starijeg pythona 2):

pi@raspberrypi: ~ $ mkvirtualenv cv -p python3

… (Cv) pi@raspberrypi: ~

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

sudo apt -y updatesudo apt -y nadogradnja ## Ovisnosti o instaliranju 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 install libtiff5-dev sudo apt-get -y install libtiff-dev sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev sudo apt-get- y instalirati libxine2-dev libv4l-dev cd/usr/include/linux sudo ln -s -f../libv4l1-videodev.h videodev.h sudo apt-get -y instalirati 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 install libvorbis-dev libxvidcore-dev libx264-dev sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev sudo apt-get -y install libavresample-dev sudo apt-get -y install 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 s 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 videozapisa, rukovanje 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. rujna 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

Postavljanje TensorFlow
Postavljanje TensorFlow

TensorFlow je okvir za strojno 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, a 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 izvrstan vodič Edje Electronics, s izmjenama koje su omogućile novije distribucije TensorFlow:

pi@raspberrypi: ~ $ workon cv

(cv) pi@raspberrypi: ~ $ pip install tensorflow (cv) pi@raspberrypi: ~ $ sudo apt-get install libxml2-dev libxslt-dev (cv) pi@raspberrypi: ~ $ pip install 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 izvrstan uvod u otkrivanje objekata na Raspberry Pi.

Korak 6: Otkrivanje pokreta pomoću OpenCV -a

Počnimo s testiranjem da li OpenCV može imati sučelje 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:

uvoz 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čitaj 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 (put, okvir) za pisanje tog okvira na disk i sftp ga natrag da biste pogledali.

Strategija otkrivanja pokreta prilično je ravna:

  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 sličica. 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 s upisivanjem - morate dopustiti pozitivne i negativne vrijednosti [-255.. 255], pa okvir treba pretvoriti u int)
  5. Oduzimanje možete izvršiti na konverziji okvira u sivoj ljestvici (i prosjeku) 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. Upotrijebite prag na delti i uklonite buku erozijom i dilatacijom
  7. Na kraju potražite konture područja s deltom - ta područja su mjesto gdje se dogodilo kretanje 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 postupak instalacije TensorFlow -a, već ste provjerili imate li TensorFlow instaliran i radi.

U svrhu otkrivanja ljudi na općenitoj sceni na otvorenom, modeli koji su unaprijed obučeni na 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, što možete pronaći ovdje.

Korak 8: Postavite web poslužitelj na Raspberry Pi

Postavite web poslužitelj na Raspberry Pi
Postavite web poslužitelj na Raspberry Pi

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

Postoji više opcija za okvir web poslužitelja. Ja sam odabrao Flask. Izuzetno se konfigurira i lako se proširuje s Pythonom. Budući da nam je "ljestvica" 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 istom bežičnom LAN -u kao i vaš Raspberry Pi. Mogli biste stvoriti mapiranje portova / NAT konfiguraciju na 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 trebala kada dopuštate opći pristup Internetu vašem Raspberry Pi.

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

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

Mobilne obavijesti iz Raspberry Pi -a pomoću IFTTT -a
Mobilne obavijesti iz Raspberry Pi -a pomoću IFTTT -a

Stvarno želim primati obavijesti na mobitelu kada se dogode događaji. U ovom slučaju, kada se osoba otkrije i kada razina 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ćuje mnogim vrstama događaja da pokrenu mnoge vrste radnji. U našem slučaju, zanima nas okidač IFTTT Maker Webhook. To nam omogućuje pokretanje IFTTT radnje upućivanjem HTTP POST zahtjeva IFTTT poslužitelju s posebnim ključem dodijeljenim našem računu, zajedno s podacima koji određuju što 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 će vam web stranica pokazati vaš ključ i URL koji možete koristiti za pokretanje radnji.
  3. Izradite IFTTT applet koji će generirati mobilnu obavijest kada se pokrene Webhook s detaljima događaja:

    1. Pritisnite "Moji apleti", a zatim "Novi applet".
    2. Pritisnite "+ovo" i odaberite "webhooks". Kliknite "Primite web zahtjev" za nastavak pojedinosti
    3. Dajte svom događaju naziv, npr. "PoolEvent" i kliknite "Izradi okidač"
    4. Pritisnite "+to" i odaberite "obavijesti". Zatim odaberite "Pošalji bogatu obavijest iz aplikacije IFTTT"
    5. Za "naslov" odaberite nešto poput "PoolPi"
    6. Za "poruku" upišite "Otkriveno Pool Pi:" i kliknite "dodaj sastojak".. "Vrijednost1".
    7. Vratite se na URL koji ste kopirali u 2. koraku. Prikazat će URL koji ćete koristiti za dozivanje novostvorene aplikacije. Kopirajte taj URL, zamijenivši rezervirano mjesto {event} imenom događaja (u našem primjeru PoolEvent)
  4. Preuzmite, instalirajte i prijavite se u 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 bi moglo proći nekoliko sekundi ili minuta da se aktivira na vašem mobilnom uređaju):

zahtjevi za uvoz

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

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

Dodajte relejni šešir u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni šešir u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni šešir u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni šešir u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni šešir u Raspberry Pi i spojite ga na elektromagnetni ventil
Dodajte relejni šešir 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 temelju 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 spajanje releja na ove digitalne signalne pinove Raspberry Pi -a i njegovo zatvaranje kruga između 24V AC napajanja i elektromagnetskog 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 s ostale dvije:)

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

uvoziti 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 diodu 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 računalno upravljani sustav nadopunjavanja bazena i vrijeme je da spojite senzor kako biste mu rekli kada treba raditi.

Korak 11: Priključite osjetnik razine vode

Priključite osjetnik razine vode
Priključite osjetnik razine vode
Spojite osjetnik razine vode
Spojite osjetnik razine vode
Spojite osjetnik razine vode
Spojite osjetnik razine vode
Priključite osjetnik razine vode
Priključite osjetnik razine vode

Senzor razine vode jednostavno je plovak koji povezuje električni krug kada je plovak spušten, a 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 razine 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 -u). 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 razini napona GND), taj će pin mjeriti digitalni "visoki" ili "uključeni" napon samo kada osjetnik razine vode zatvori krug - kada je razina vode niska. 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:

uvoziti gpiozero

level_input = gpiozero. Tipka (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 kako biste sve povezali

Napišite kod kako biste sve povezali
Napišite kod kako biste sve povezali

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

mkdir poolpi

cd poolpi git klon

Zatim uredite datoteke s imenom ifttt_url.txt u direktorijima motion_alert i water_level tako da s vašim tajnim ključem imaju URL za vašu IFTTT web udicu. 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 retke crontab za dva glavna zadatka:

  1. Pokrenite naša tri programa: detektor objekata, senzor razine vode i web poslužitelj 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, ponovno pokrenite svoj Raspberry Pi. Sada je spreman za održavanje vašeg bazena punim i sigurnim.

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

Sretno u izradi!

IoT izazov
IoT izazov
IoT izazov
IoT izazov

Drugoplasirani u IoT Challengeu

Preporučeni: