Turinys:
- 1 žingsnis: įkelkite „Pi“su „Rasbian Stretch“
- 2 veiksmas: atnaujinkite ir pridėkite „Node-Red“funkcijas
- 3 žingsnis: „Mosquitto MQTT“diegimas
- 4 žingsnis: nustatykite raudoną mazgo sąsają
- 5 veiksmas: „Arduino“sistemos nustatymas perprogramuoti „Sonoff“įrenginius
- 6 veiksmas: perprogramuokite „Sonoff“jungiklį
- 7 žingsnis: saugumas
- 8 veiksmas: pradiniai plėtros veiksmai
- 9 veiksmas: priedas - įkėlimas iš „Raspbian Stretch Lite“
Video: Galinga autonominė namų automatizavimo sistema - „Pi“, „Sonoff“, ESP8266 ir „Node -Red“: 9 žingsniai (su nuotraukomis)
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šis vadovas turėtų nukreipti jus į pirmąją bazę, kurioje galite įjungti/išjungti šviesą ar prietaisą per bet kurį įrenginį, kuris gali prisijungti prie jūsų vietinio tinklo, ir su puikia tinkinama žiniatinklio sąsaja. Funkcijų išplėtimo/ pridėjimo galimybės yra didžiulės, įskaitant el. Laiškų siuntimą, „Twitter“pranešimus, skaitymo jutiklius (pvz., Temperatūrą). Galite lengvai nustatyti taisykles, pvz. - jei temperatūra žemesnė nei 15C 23 val., Įjunkite elektrinę antklodę 30 min. Sistema naudoja MQTT protokolą su TCP, kuris yra žymiai patikimesnis nei UDP - tuo stebėtinai naudojasi kai kurie komerciniai namų automatikos įrenginiai. Kai bus atliktas sunkus sistemos nustatymo darbas, aprašytas čia, linksmybės gali prasidėti. „Node Red“suteikia fantastišką vartotojo sąsają, kuri yra intuityvi, greitai ir lengvai nustatoma ir suteikia nuostabių galimybių.
Rezultatas yra galinga namų automatizavimo sistema, kuri visiškai kontroliuojama ir yra visiškai vietiniame tinkle. Daugelis „Instructables“rodomų sistemų veikia su debesų pagrindu veikiančiais serveriais, todėl kelia pavojų saugumui ir gali reikalauti prenumeratos. Juos lengviau nustatyti, tačiau jie kelia didesnę saugumo riziką ir gali kainuoti daugiau. Turėčiau pridurti, kad prie „Pi“galima nustatyti VPN (virtualų privatų tinklą), kad būtų galima saugiai prisijungti prie namų tinklo/sistemos, jei būtų naudinga prieiga iš išorės (instrukcijos „Google Pi OpenVPN“).
Šiai sistemai reikia perprogramuoti „Sonoff“įrenginius su puikia atviro kodo sistema, vadinama „Sonoff-Tasmoda“. Tai galima padaryti naudojant specialią „Arduino“sąranką ir USB į nuoseklųjį keitiklį. „Sonoff“įrenginiai naudoja „Wi-Fi“mikroschemą ESP8266, todėl taip pat galite pasigaminti savo įrenginius naudodami ESP8266 modulius arba pritaikyti juos prie kitų elementų, kad būtų užtikrintas belaidis ryšys.
Didžiausia užduotis yra nustatyti „Raspberry Pi“kaip centrą. Taip veikia MQTT brokeris (arba serveris), valdantis ryšį su prijungtais įrenginiais. „Pi“taip pat valdo sistemą „Node-Red“, kuri gali perimti pranešimus ir duomenis bei išvesties komandas, pavyzdžiui, kada įjungti elektrinę antklodę. „Node-Red“taip pat suteikia sąsają, skirtą tinklalapiui aptarnauti, prie kurio galite prisijungti naudodami išmanųjį telefoną/planšetinį kompiuterį/kompiuterį/nešiojamąjį kompiuterį, kad pamatytumėte, kas vyksta, ir įgalinti rankinį žibintų perjungimą ir pan.
Šios instrukcijos tikslas yra pakankamai išsamiai aprašyti kiekvieną žingsnį, kad naujokas galėtų pradėti veikti.
Žingsniai yra šie:
- Įkelkite „Pi“su „Rasbian Stretch“
- Atnaujinkite ir pridėkite „Node-Red“funkcijų
- Įdiekite „Mosquitto MQTT“brokerį
- Nustatykite „Arduino“aplinką „Sonoff-Tasmota“programinei įrangai įkelti
- Iš naujo užprogramuokite „Sonoff“jungiklį
- Nustatykite „Node-Red“sąsają
- Išbandykite, ar viskas veikia.
Techninė įranga, kurios jums reikės:
- „Raspberry Pi“ir maitinimo šaltinis (ir klaviatūra bei monitorius pradiniam nustatymui) (čia naudojamas B modelis)
- „Sonoff“jungiklis
- USB serijos keitiklis
- Neprivaloma - ESP kūrimo plokštė, tokia kaip „NodeMCU“.
Mano patirtis su „Raspberry Pi“yra ta, kad bet kokio įrenginio sukūrimas yra susijęs su žymiai daugiau skausmo, nei būtų galima įsivaizduoti, kai daiktai neveikia arba įstringa trivialiame žingsnyje, kur paaiškinimas galėjo būti geresnis. Forumai ne visada gauna patarimų, kurie veikia! Radau kelis maršrutus, kurie dėl vienokių ar kitokių priežasčių tiesiog neveikė. Tai kainavo 3 dienas! Tada viską nušluosčiau ir pradėjau iš naujo ir baigiau mažiau nei per (ilgą) dieną. Tačiau tai panaudojo vyresnę Raspian Jessie. Po to radau būdą, kaip naudoti dabartinę ir neseniai išleistą versiją („Stretch“), ir padariau viską iš naujo. Šis vadovas leidžia nukopijuoti ir įklijuoti instrukcijas į „Pi“. Taigi jūs turėtumėte tai padaryti per kelias valandas. Bet kokiu atveju tikiuosi, kad tai padės greičiau įveikti mokymosi kreivę ir su daug mažesniu skausmu. Patikėkite, tai verta dėl galutinio rezultato.
1 žingsnis: įkelkite „Pi“su „Rasbian Stretch“
Tai turėtų būti gana paprasta. Pradėkite nuo 8Gb arba 16Gb SD kortelės. Atsisiųskite naujausią versiją iš:
www.raspberrypi.org/downloads/
Pagrindinė gija čia daro prielaidą, kad įkelta pilna versija. Tačiau, norėdami sutaupyti vietos, galite naudoti paprastąją versiją. Jei naudojate „Raspbian Stretch Lite“, atlikite šį veiksmą, o pabaigoje pereikite prie 9 veiksmo.
Išpakavus atsisiųstą failą, atsiranda aplankas su.img failu. „7Zip“rekomenduojama „Windows“(ir „Unarchiver Mac“). Vaizdas turi būti įrašytas į SD kortelę, tačiau turi būti naudojama speciali programa, nes failų sistema nesuderinama su „Windows“. Rekomenduojama programinė įranga vadinama „Etcher“ir ją galima atsisiųsti iš:
etcher.io/
„Etcher“instrukcijos yra jų svetainėje ir vargu ar gali būti paprastesnės. Pasirinkite vaizdą ir diską ir spustelėkite „Flash“.
Dabar su mirksinčia SD kortele galite paleisti „Pi“.
Jei žinote IP adresą, kurį naudoja jūsų „Pi“, arba džiaugiamės jį radę prisijungę prie maršrutizatoriaus, tuomet galite išvengti klaviatūros ir monitoriaus poreikio ir nedelsdami naudoti SSH. Tiesiog pridėkite tuščią failą pavadinimu SSH prie SD kortelės, įdėkite, prijunkite prie eterneto ir įjunkite. Priešingu atveju vadovaukitės žemiau esančiu vadovu.
Prijunkite „Pi“prie interneto, ekrano, pelės ir klaviatūros ir prijunkite prie maitinimo. Pirmas dalykas, kurį mes padarysime, yra įjungti SSH, kad galėtume atlikti didžiąją dalį sąrankos patogiai kompiuteryje. Žinoma, tai galima padaryti tiesiogiai, tačiau labai padeda tai, kad galite vadovautis šiuo vadovu tame pačiame įrenginyje, kuriame važiuojate „Pi“, ir daugumai instrukcijų naudoti kopijavimą ir įklijavimą. Taip pat mano atveju mano kompiuterio darbo vieta yra graži ir patogi, tačiau nėra pakankamai didelė pi.
Yra vadovas, skirtas daugeliui „YouTube“vaizdo įrašo darbų. Čia aš pradėjau. Galite paleisti vaizdo įrašą kartu vykdydami šias instrukcijas. Tačiau kai rašydamas šį procesą dar kartą peržiūrėjau, man buvo lengviau sekti čia pateiktas instrukcijas. Yra keletas reikšmingų nukrypimų. Taip pat yra keletas skyrių, kuriuose patariau sekti vaizdo įrašą, o ne čia išvardyti veiksmus. Tačiau aš rekomenduočiau pažvelgti į jį, kad suprastumėte MQTT, „Node-Red“ir platų sąrankos procesą. Vaizdo įrašo trukmė yra 38 minutės, todėl jauskitės patogiai. Vaizdo įrašas prasideda parodant, ką gali padaryti „Node Red“, tada apima „Pi“diegimą ir sąranką, po to atnaujina „Node Red“ir galiausiai įdiegia „Mosquitto“. Svarbiausi laikai, jei norite grįžti į skyrių:
00:00 Video įvadas
03:00 „Node Red“demonstracija
14:14 Prietaisų skydelio elementų importavimas į raudoną mazgą
21:05 Pi pradinė sąranka, įskaitant SSH
23:35 Raudonojo mazgo palaikomojo kodo diegimas
27:00 MQTT įvadas
29:12 „Mosquitto“(MQTT) diegimas (pastaba tinka tik Raspian Jessie)
33:00 Mazgas Raudoni pavyzdžiai
Komandas išvardysiu paryškintu kursyvu (o ne „“). Šis formatavimas nepaisomas, kai nukopijuojate ir įklijuojate juos į „Pi“.
Įvadas į „Node Red“suteiks jums idėją apie tai, ką sistema gali padaryti, ir parodys, kur mes atsidursime.
„YouTube“vaizdo įrašas yra adresu:
Atlikite diegimo procedūrą nuo 21:05 iki 23:35. Atminkite, kad numatytasis prisijungimo vardas yra vartotojas: pi ir slaptažodis: raspberry. Prieš paleisdami iš naujo, suraskite pi IP adresą. Darbalaukio viršuje esančioje juostoje spustelėkite piktogramą „aukštyn ir žemyn“arba terminalo/terminalo lange įveskite šią instrukciją:
sudo ifconfig adresas
Tada pažymėkite IP adresą po: inet addr:. Jis bus 192.168.x.y formos
Atkreipkite dėmesį į šį adresą ir paleiskite iš naujo (įveskite: sudo shutdown –r now)
Svarbiausia šiuo metu yra tai, kad SSH buvo įjungtas ir galima nustatyti nuorodą į Pi iš kompiuterio („Mac“ir „Linux“apima SSH sąsajas). Gera programa tai padaryti yra nemokamas atsisiuntimas, vadinamas „PuTTY“, kuris taip pat gali būti naudojamas kaip nuosekli sąsaja ir gali veikti „Telnet“. Glaistą galima įsigyti iš:
www.chiark.greenend.org.uk/~sgtatham/putty…
Atsisiųskite ir įdiekite „PuTTY“.
Dabar, kai „Pi“bus paleistas iš naujo, paleiskite „PuTTY“ir įveskite anksčiau nurodytą IP adresą. Žr. Pavyzdį žemiau:
Dabar spustelėkite Atidaryti
Po prisijungimo kaip: įveskite pi
Tada įveskite slaptažodį.
Dabar vykdykite čia pateiktas instrukcijas ir pasirinktinai pradėkite vaizdo įrašą nuo 23:35. Daugeliu atvejų galite nukopijuoti ir įklijuoti. Pažymėkite tekstą ir nukopijuokite naudodami „Ctrl“+C. Tada dešiniuoju pelės mygtuku spustelėkite PuTTY, kad įklijuotumėte. Kartais tekstas pasirodo ne iš karto, todėl palaukite kelias sekundes. Jei įvedate du kartus, naudokite backspace, kad ištrintumėte antrą įrašą. Paspauskite „Enter“, kad atliktumėte kiekvieną nurodymą.
sudo raspi atnaujinimas
Gavau komandą, kuri nerasta, ir ignoravau tai bei šią išjungimo/paleidimo instrukciją:
sudo shutdown -r dabar
sudo apt -get -y atnaujinimas
sudo apt -get -y atnaujinimas
Tai užtrunka ….
sudo apt-get autoremove
sudo apt -get -y atnaujinimas
sudo shutdown -r dabar
Šiuo metu „Pi“operacinė sistema yra įkelta ir atnaujinta, paruošta kitam žingsniui.
2 veiksmas: atnaujinkite ir pridėkite „Node-Red“funkcijas
„PuTTY“ryšys bus prarastas iš naujo paleidus ankstesnio veiksmo pabaigoje. Taigi uždarykite „PuTTY“ir palaukite, kol „Pi“bus paleistas, prisijunkite dar kartą, kaip ir anksčiau.
Aš perėjau prie paprastesnio ir patikimesnio „Node-Red“įkėlimo metodo-vadovaudamasi šiuo adresu: https://nodered.org/docs/hardware/raspberrypi. Tam naudojamas scenarijus ir bus įdiegtas arba atnaujintas „Node-Red“-taigi, tas pats metodas veikia ir naudojant visas ar supaprastintas „Raspbian Stretch“versijas. Taigi įveskite:
bash <(curl -sL
Įveskite Y, kai būsite paraginti (du kartus). Šis scenarijus taip pat įkelia failus, reikalingus automatiniam „Node-Red“paleidimui įjungti.
Taigi šiuo metu mūsų „pi“yra įkeltas ir atnaujintas bei atnaujinimai, reikalingi „Node Red“. Prieš kitą etapą iš naujo paleisti nėra jokios žalos.
sudo shutdown -r dabar
3 žingsnis: „Mosquitto MQTT“diegimas
Jei to dar nepadarėte, verta žiūrėti vaizdo įvadą į MQTT vaizdo įraše nuo 27:00 val.
Čia mes turime eiti kitu keliu. Vaizdo įraše aprašyta procedūra tinka tik senesnei Jessie „Raspian“versijai. Uodų svetainėje vyksta diskusijos, tačiau aiškių rezultatų neparodoma, todėl laikysimės paprastesnio ir saugesnio kelio.
Taigi prisijunkite naudodami „PuTTY“ir įveskite:
sudo apt-get atnaujinimas
sudo apt-get įdiegti mosquitto mosquitto-klientus
Y
sudo /etc/init.d/mosquitto stop
sudo /etc/init.d/mosquitto start
Pastarosios dvi instrukcijos sustoja ir paleidžia uodus ir parodo, kad mūsų MQTT brokeris dirba.
Norėdami greitai išbandyti, atidarykite dar dvi „PuTTY“sesijas ir prisijunkite prie kiekvienos.
Jūs jau žinosite, kad MQTT veikia įrenginyje, kuriam reikia duomenų, prenumeruojančių „temą“. Brokeris atsiųs bet kokius duomenis ta pačia „tema“. Tada įrenginys, norintis siųsti duomenis/instrukcijas, paskelbia tai brokeriui, naudodamas tą pačią „temą“.
Taigi vienoje „PuTTY“sesijoje įveskite:
mosquitto_sub -d -t sveiki/pasaulis
Tai instrukcija užsiprenumeruoti temą: labas/pasaulis.
Kitame įveskite:
mosquitto_pub -d -t hello/world -m "Sveiki iš 2 terminalo lango!"
Tai yra paskelbimo instrukcija ta pačia tema su žinute. Tekstas: „Sveiki iš 2 terminalo lango!“dabar turėtų pasirodyti kitame terminale.
Puikiai pavyko taip toli. Dabar turime „Pi“įkeltą ir atnaujintą atnaujinimus, reikalingus „Node-Red“, ir įdiegtą ir išbandytą uodų MQTT brokerį. Nuo šiol gyvenimas tampa lengvesnis ir linksmesnis. Uždarykite dvi „PuTTY“sesijas, naudojamas MQTT testui.
4 žingsnis: nustatykite raudoną mazgo sąsają
Pirmiausia turime paleisti raudoną mazgą. Įveskite instrukciją:
mazgas-raudonas-pi-max-old-space-size = 256
Palaukite, kol jis pradės veikti, ir pamatysite tekstą „Pradėti srautai“.
Dabar atidarykite naršyklę, naudoju „Chrome“ir įveskite anksčiau nurodytą pi IP adresą, po kurio: 1880, t.y. kažkas panašaus į 192.168.0.8:1880
Dabar turėtumėte matyti „Node Red“programavimo puslapį, kaip parodyta žemiau:
Dabar galite sekti „Node Red“pavyzdžius, pradedant nuo 33:00, arba pereiti prie nedidelės papildomos sąrankos ir įkelti pirmąjį srautą, kuriame bus rodoma nuoroda į MQTT, ir būsite pasiruošę valdyti mūsų jungiklį.
Papildoma sąranka reikalinga pridėti prietaisų skydelio elementus, įgalinančius žiniatinklio sąsają.
Jie rodomi vaizdo įraše 14:14.
Vykdykite instrukcijas, kaip įkelti mazgo raudonojo prietaisų skydelį.
Dabar galime šiek tiek pažaisti ir parodyti, kad MQTT veikia ir yra vairuojamas „Node-Red“. Tai nėra vaizdo įraše, bet yra šio projekto raktas. Galite sekti mano nurodymus ir (arba) importuoti srautus iš pridėto failo NRtest1.txt.
Pirmiausia pridėkite įvesties įpurškimo mazgą ir išvesties mqtt mazgą ir susiekite juos.
Dukart spustelėkite injekcijos mazgą (kuris iš pradžių yra pažymėtas laiko žyma). Skiltyje „Naudinga apkrova“naudokite „twiddly“, kad pakeistumėte eilutę ir įveskite: Sveiki nuo manęs. Palikite temą tuščią, nes galime ją įvesti į MQTT mazgą. Spustelėkite Atlikta
Dabar dukart spustelėkite MQTT mazgą. Spustelėkite pieštuko piktogramą, esančią skyriaus „Serveris“dešinėje. Tai atveria naują dialogo langą. Skiltyje „Serveris“įveskite: localhost. Spustelėkite Pridėti. Dabar, grįždami į mazgą Redaguoti mqtt out, įveskite mūsų temą į temos skyrių: labas/pasaulis. Nustatykite QoS į 1. Spustelėkite Atlikta. Dabar spustelėkite Diegti. Turėtumėte pamatyti žalią dėmelę ir „prijungtą“po „mqtt“mazgu.
Dabar pridėkite dar du mazgus - įvestį mqtt ir išvesties derinimą, ir sujunkite juos kartu. Dabar dukart spustelėkite įvesties mqtt mazgą ir temos skiltyje įveskite sveiki/pasaulis. Serveris jau turėtų rodyti localhost: 1883. Nustatykite QoS į 1. Spustelėkite Atlikta. Tada spustelėkite Diegti ir dešinėje esančioje srityje spustelėkite derinimo skirtuką. Dabar spustelėkite pilką kvadratą „Sveiki nuo manęs“injekcijos mazgo kairėje. Tai siunčia naudingą teksto siuntą MQTT brokeriui tema „labas/pasaulis“. Brokeris žino, kad „mqtt“įvesties mazgas užsiprenumeravo tą pačią temą ir taip persiunčia naudingąją apkrovą. Tada įvesties mazgas „mqtt“siunčia jį į derinimo skirtuką (RHS) ir turėtų pasirodyti tekstas „Sveiki nuo manęs“.
Tai pažymi kitą langelį, nes „Node Red“kalba su mūsų MQTT brokeriu. Atminkite, kad „Node Red“yra tik tarpininko klientas - kaip ir „Sonoff“įrenginiai, kuriuos prijungsime vėliau. Tačiau tai įgalina sudėtingą automatizavimą ir puikią vartotojo sąsają.
Dabar galime atlikti keletą nedidelių pakeitimų ir nustatyti „Sonoff“jungiklio srautus.
Taigi ištrinkite įvesties įpurškimo mazgą (spustelėkite, kad paryškintumėte ir paspauskite ištrynimo klavišą). Dabar pridėkite jungiklį iš prietaisų skydelio skyriaus ir prijunkite jį prie „mqtt“išvesties. Dukart spustelėkite jungiklį. Spustelėkite pieštuką grupės dešinėje. Įveskite Pavadinimas: Šviesa. Tada spustelėkite pieštuką, esantį skirtuko dešinėje, ir įveskite skyrių Pavadinimas: Lounge. Spustelėkite Pridėti/atnaujinti ir Pridėti/atnaujinti dar kartą. Dabar, grįždami į redagavimo jungiklio mazgą, nustatykite ir įjunkite ir išjunkite naudingąsias apkrovas. Naudokite „twidlys“, kad pasirinktumėte eilutę, ir įveskite „ON“į naudingąją apkrovą, o „OFF“- į naudingąją apkrovą. Spustelėkite Atlikta
Dabar eikite į kiekvieną mqtt mazgą ir pakeiskite temą į cmnd/sonoff/POWER. Jei kopijuojate ir įklijuojate, patikrinkite, ar pabaigoje neįtraukėte tarpo. Tai yra kita tema ir ji neveiks su „Sonoff“. Klaidingos erdvės radimas gali užtrukti valandą - patikėkite manimi! Aš taip pat nuėjau į prietaisų skydelį> Tema ir pasirinkau: Tamsu. Spustelėkite Diegti ir pasirinkite derinimo skirtuką.
Dabar atidarykite naują naršyklės seansą naujame lange ir nustatykite jį kaip mobilųjį telefoną per „Node Red“seansą. Įveskite adresą: savo Pi IP adresą: 1880/ui/#/0, t. Y. Kažką panašaus į 192.168.0.8:1880/ui/#/0. Turėtumėte pamatyti ekraną su „Lounge“ir „Light“ir perjungti. Spustelėkite jungiklį ir tada išjunkite. Derinimo lange turėtų būti rodomos naudingos apkrovos ĮJUNGTA ir IŠJUNGTA. Dabar, jei norite, taip pat prisijunkite per mobilųjį telefoną. Atminkite, kad jungiklio padėtis yra sinchronizuota. Nesvarbu, kad mūsų Sonoffas dar nėra prisijungęs. Kai tai bus, užsiprenumeravusi temą, ji pasiims pranešimą/naudingą krovinį ir veiks pagal tai.
Paskutinis mažas žingsnis yra priversti „Node Red“automatiškai paleisti, kai „Pi“įsijungia.
„Node Red“turi vadovą:
Tačiau reikalingi failai jau yra įkelti, todėl nereikia diegti.
Jei norite, kad „Node-RED“veiktų automatiškai kiekvieną kartą paleidžiant ir įvykstant avarijoms, įveskite (atidarykite „PuTTY“seansą):
sudo systemctl įgalinti nodered.service
Jei kada nors turėsite tai išjungti, įveskite:
sudo systemctl išjungti nodered.service
Dabar išjunkite „pi“su „sudo“išjungimu ir išjunkite maitinimą.
Dabar mūsų „Pi“yra užrakintas ir įkeltas veikti. Mūsų kompiuteris/mobilusis telefonas jungiasi prie „Node Red“ir tai kalba su mūsų MQTT serveriu. Tai buvo ilgas kelias ir verta daug paglostyti. Šauniai padirbėta. Kitą, „Arduino“bitą, radau daug lengviau!
5 veiksmas: „Arduino“sistemos nustatymas perprogramuoti „Sonoff“įrenginius
Visa informacija, kaip tai padaryti, yra „Sonoff-Tasmota GitHub“. Vienintelė dalis, su kuria man buvo sunku, buvo temos tekstas, bet aš gudriai privertiau jus tai įvesti!
Eikite į
Sąrankos instrukcijas rasite skirtuko „Wiki“skiltyje „Įkėlimo įrankiai“:
Užuot atlikęs kiekvieną žingsnį, aš tik atkreipsiu dėmesį į pagrindinius aspektus, kurie, mano manymu, buvo svarbūs arba įstrigo.
Instrukcijos yra geros, tačiau reikia atidžiai išnagrinėti detales. Mane sujaudino tai, kad reikia aplanko ESP8266 aplanke, esančiame kitame aplanke, pavadintame ESP8266, ir todėl praleidau du lygius.
Aš laikiausi rekomendacijos dėl visiškai atskiros „Arduino“sąrankos. Aš sukūriau naują aplanką „ArduinoSonoff“, kuris yra atskiras nuo esamo „Arduino“aplanko. Sąranka yra gana pažangi, todėl ją laikyti atskirai yra labai gera idėja. Jei tai yra jūsų pirmoji „Arduino“sąranka, būtinai įdiekite ją antrą kartą „Arduino“ar kitame aplanke bet kokiam kitam „Arduino“darbui, įskaitant darbą su ESP8266.
Atsisiųskite naujausią „Arduino IDE“iš https://www.arduino.cc/en/Main/Software. Išpakuokite failą į naują aplanką.
Instrukcijose yra „Sonoff-Tasmoda“sistemos atsisiuntimas iš https://github.com/arendst/Sonoff-Tasmota pagrindinio puslapio per: Klonuoti arba Atsisiųsti> Atsisiųsti ZIP. Išpakuokite failą į naują aplanką.
Atidžiai vykdykite instrukcijas. Nepasiruošiau pasirinktinai: pasiruoškite OTA įkėlimui. Paliksime tai kitai dienai.
Dabar paleiskite „Arduino IDE“(dukart spustelėkite arduino.exe). Įkelkite „Sonoff-Tasmota“eskizą naudodami Failas> Sketchbook> sonoff. Nereikia atlikti jokių pakeitimų. Įkėlus programinę -aparatinę įrangą visi nustatymai atliekami naudojant nuoseklųjį ryšį. Jie saugomi EEPROM. Taigi programinę įrangą galima atnaujinti ir išsaugoti visus nustatymus. Tai gana protingas dalykas. Tačiau čia galite išvengti kelių žingsnių, eidami į failą user-config.h ir įvesdami „wifi“SSID ir slaptažodį bei MQTT_HOST (pakeiskite „domus1“-antroji nuoroda jūsų „Pi“IP adresu). Vėliau galbūt norėsite įvesti MQTT vartotoją ir slaptažodį. Prieš atsisiųsdami patikrinkite lentos nustatymus skiltyje Įrankiai. Tam reikės atlikti keletą pakeitimų, kad jie atitiktų „Wiki“nustatytus reikalavimus. Dabar spustelėkite kompiliuoti (pažymėkite piktogramą). Tai turėtų sudaryti gerai. Jei taip nėra arba jei nėra reikiamų plokštės nustatymų, grįžkite atgal ir patikrinkite kiekvieną sąrankos veiksmą.
6 veiksmas: perprogramuokite „Sonoff“jungiklį
Dabar esame pasiruošę atsisiųsti. Šiame etape galima eiti tiesiai į priekį ir mirksėti „Sonoff“jungikliu, arba pirmiausia galima mirksėti ESP8266 moduliu. Aš padariau pastarąjį, iš dalies dėl to, kad mano jungikliai dar nebuvo atėję (ką tik atėjo, kai tai įvedu!), Bet ir kaip atsargumo priemonė, nes „Sonoff“jungiklio mirksėjimas yra vienas iš žingsnių, nes originali programinė įranga nėra viešai prieinama, kol Aš žinau. Turiu porą „NodeMCU“plokščių. Juos lengva prijungti, naudojant įmontuotą USB į nuoseklųjį keitiklį. Tačiau „nodemcu“atstatymo metodas neveikia su šia sistema. Taigi palikite Įrankiai> Iš naujo nustatyti metodą „ck“. Atlikite įprastą rankinę blykstės sąranką, laikydami nuspaudę blykstės mygtuką (GPIO 0 į žemę), paspausdami ir atleisdami Reset (Reset to ground). Aš nesu tikras, ar tai turi skirtąjį laiką, ar galbūt aš pakankamai ilgai nelaikiau GPIO 0, bet man reikėjo kelių bandymų, įskaitant tai, kol rengiamas „Arduino IDE“!
Jei norite patikrinti atsakymus - relės išėjimas yra D6 „NodeMCU“plokštėse. ESP12 yra GPIO 12. LED išvestis yra D7 (NodeMCU) arba GPIO 13 (ESP12).
Sonoff jungiklis.
ĮSPĖJIMAS: Turiu pasakyti „jokiu būdu neprisijunkite prie elektros tinklo, kai korpusas yra atidarytas“. Atkreipkite dėmesį, kad PCB (bent jau „Sonoff Basic“(linijinis jungiklis) turi tik „atskirus“atstumus tarp žemos įtampos sekcijos ir tinklo. Taigi bet kurią „Sonoff“grandinės dalį reikia laikyti tinklo įtampa. „Tasmota GitHub“rodo temperatūros ir drėgmės jutiklio prijungimą prie „Sonoff S20“. Aš to nedaryčiau dėl izoliacijos problemų. - taigi, jei norite tai padaryti, įsigykite ESP12 arba „NodeMCU“modulį ir nustatykite jį atskirai, naudodami tinkamą dvigubą izoliaciją arba įžemintas maitinimo šaltinis.
„Sonoff S20“kištukinis jungiklis yra geras atspirties taškas, nes jam nereikia jokių elektros laidų. Jį galima atidaryti nuėmus vieną varžtą (po apsauginiu antspaudu) ir atidarius dėklą. Žemiau esančioje nuotraukoje parodyta, kur yra žymos. Padėti korpusą šiuose taškuose padeda.
USB serijos keitiklis
Mano mėgstamiausias keitiklis yra FTDI versija. Tačiau tai neturi tinkamų galimybių patenkinti „Sonoff 3.3v“poreikius. FTDI specifikacija nurodo ne daugiau kaip 50 mA. Kita geriausia alternatyva yra naudojant CP2102 lustą. Tačiau tai turi 100 mA ribą, kurios vis dar nepakanka. Akivaizdu, kad daugelis šį keitiklį naudoja tiesiogiai, tačiau taip pat yra pranešimų apie nepavykusį įkėlimą. Aš apribočiau prijungimo laiką, nes jis sušils po apkrova. Darykite tai savo rizika. Idealus sprendimas yra turėti ir 3.3v reguliatorių, pvz. an AMS1117 3.3. Norėdami tai padaryti, sukūriau nedidelę PCB. Žr. „Sonoff“įrenginių programuotoją.
Mano programavimo seka yra tokia:
Atidarykite „Arduino IDE“.
Skiltyje Įrankiai patikrinkite nustatymus, tokius kaip Wiki.
Atlikite visus redagavimus, reikalingus user_config.h. Nustatiau „Wifi“SSID ir slaptažodį bei MQTT tarpininko adresą ir išsamią laiko juostos/vasaros laiko informaciją.
Spustelėkite „patvirtinti“, kad patikrintumėte, ar kompiliacija yra gerai.
Prijunkite USB nuoseklųjį keitiklį (atskirai) prie kompiuterio. Atkreipkite dėmesį į prievado numerį.
Dabar atjunkite USB nuoseklųjį laidą nuo kompiuterio ir prijunkite jį prie „Sonoff“jungiklio. Patikrinkite, ar įžeminimas ir 3v3 jungtys yra teisingos (įžeminimas prijungtas prie įžeminimo plokštės Sonoff PCB).
Laikykite programuotoją taip, kad kontaktai būtų saugūs, kartu paspausdami mygtuką.
Dabar prijunkite USB laidą prie kompiuterio, patikrinkite, ar prievado numeris yra teisingas (įrankiuose), tada spustelėkite atsisiųsti.
Aš ir toliau laikau mygtuką viso programavimo metu, nes nenoriu trikdyti ryšių.
Baigę turėtumėte pamatyti ekraną, kaip parodyta žemiau:
Norint prisijungti prie mūsų sistemos, „Sonoff“reikia poros bitų informacijos: vietinio tinklo „Wi -Fi“SSID ir slaptažodis bei „Pi“IP adresas. Tai galima padaryti keliais būdais, iš kurių vienas yra modifikuoti failą config.ino, kaip minėta anksčiau. Jei turite išmanųjį telefoną, galite (iš naujo surinkę jungiklį) 4 kartus gana greitai paspausti „Sonoff“mygtuką, kad jis įjungtų žiniatinklio serverio režimą. Šviesos diodas mirksi. Turėjau keletą kartų pabandyti, kad tai veiktų. Tada išmaniajame telefone ieškokite naujo „Sonoff“tinklo ir prisijunkite. Bus rodomas tinklalapis, kuriame galėsite nustatyti reikiamus duomenis. Pi IP adresas patenka į pagrindinio kompiuterio pavadinimą. Aš taip pat pakeičiau antrąjį SSID ir slaptažodį į kažką ilgo ir iš esmės nenaudojamo.
Arba jį galima nustatyti naudojant nuoseklųjį ryšį iškart po įkrovimo. Atidarykite „Arduino“serijos monitorių (skiltyje „Įrankiai“).
Įvesties komandos:
SSIDėkite savo „Wi -FiSSID“
Slaptažodis „Wi -Fi“slaptažodis
MqttHost 192.168.x.y (PI IP adresas)
Taip pat galite įvesti SSId1 ir Slaptažodis1, o po to kažką ilgo ir nenaudojamo, kad tai efektyviai išjungtumėte.
Dabar galite sudėti „Sonoff“jungiklį, atidaryti „Node-Red“ir „Node-red“prietaisų skydelį, spustelėti jungiklio mygtuką ir pažvelgti į derinimo skirtuką, kuriame dabar turėtų būti „Sonoff“atsakymai. Taigi mes turime dar vieną svarbų žingsnį - pirmasis jungiklis yra valdomas iš kompiuterio/išmaniojo telefono.
Iki šiol apie saugumą nekalbėjome. Yra galimybė naudoti užšifruotą ryšį. Tai gana sudėtinga nustatyti ir tikriausiai labiau tinka ten, kur naudojamas debesies tarpininkas. Taip pat yra galimybė pridėti visų prijungtų įrenginių vartotojo vardus ir slaptažodžius ir neleisti anoniminių vartotojų. Tai gana paprasta nustatyti. Ir dabar į saugumą.
7 žingsnis: saugumas
„MQTT“leidžia kiekvieno kliento vartotojo vardus ir slaptažodžius. Tai lengva nustatyti. Tikriausiai lengviau iš pradžių pervadinti kiekvieną įrenginį ir tada nustatyti jų vartotojo vardus ir slaptažodžius. Tai galima padaryti naudojant MQTT komandas, o „Node-Red“yra turbūt lengviausias būdas juos siųsti. Pirmiausia nuspręskite dėl pavadinimo susitarimo. Viena galimybė yra pavadinimus pagrįsti vieta ir funkcija. Tada norėsite įrašyti vardą (temą) naudotojo vardą ir slaptažodį kartu su atsarginę temą. Atminkite, kad taip pat yra „atstatymo parinktis“, skirta iš naujo nustatyti „Sonoff“nustatymus į pradinį atsisiuntimą (žr. „Wiki“naudojimas> Mygtukų funkcionalumas).
Įjunkite „pi“ir po kelių sekundžių atidarykite naršyklę „Node-Red“(IP adresas: 1880).
„Node-Red“nustatykite įpurškimo mazgą ir susiekite jį su „mqtt“išvestimi ir nustatykite „mqtt“serverį į „localhost“. Palikite temą, naudotoją ir slaptažodį tuščius, nes mes juos nustatysime įpurškimo mazge. Taip pat nustatykite „mqtt“įvesties mazgą ir prijunkite jį prie derinimo mazgo, kad galėtume matyti atsakymus. Nustatykite mqtt įvesties pastabą į localhost (jau turėtų būti nustatyta) ir įveskite+/+/+temą, kad ji sugautų visą srautą.
Įvedimo mazge įveskite šią nustatymų seką.
Pirmiausia patikrinkite ryšį su
Tema: cmnd/sonoff/Status
Pranešimas: 6
spustelėkite „Pradėti injekciją vieną kartą“. Diegti. Turėtume matyti derinimą, įskaitant 7 eilutes duomenų iš stat/sonoff/STATUS6
Įveskite temą: cmnd/sonoff/Tema ir pranešimas: Loungelight. Diegti. Tai pakeičia jungiklio pavadinimą iš sonoff į loungelight
Derinimo skirtuke turėtų būti rodomas įrenginio paleidimas iš naujo su nauju pavadinimu/tema
Tema: cmnd/loungelight/MqttUser
Pranešimas: saulės šviesa
Spustelėkite įdiegti. Derinimas turėtų būti rodomas iš stat/loungelight/RESULT su {„MtqqUser“: „loungelight“}
Tema: cmnd/loungelight/MqttPassword
Pranešimas: loungelightPW (atkreipkite dėmesį į vaizduotę!)
Išvalykite derinimo skirtuką ir Diegti.
Atsakymas turėtų būti matomas iš stat/loungelight/RESULT naudojant {"MqttPassword": "loungelightPW"}
Dabar įveskite „NodeRed“ir „NodeRedPW“kaip vartotojo vardą ir slaptažodį „mqtt out“mazge. Tai atliekama per serverio pieštuko piktogramą ir atidarytą lango saugos skirtuką. Tai automatiškai nukopijuojama į kitus MQTT mazgus.
Dar kartą patikrinkite su
Tema: cmnd/loungelight/Būsena ir pranešimas: 6. Diegti.
Ir kad atsakymas yra išsiųstas.
Taigi šiuo metu mes pervadinome savo „Sonof“įrenginį, kad jis klausytų cmnd/loungelight/…… temų ir prisijungtų prie „MQTT sever“naudodamasis loungelight ir slaptažodžiu loungelightPW. Mes taip pat nustatėme „Node-Red“vartotojo vardą ir slaptažodį.
Toliau turime pasakyti uodų MQTT serveriui, kad jis priimtų tik klientus, turinčius vartotojo vardus, ir išvardytų priimtinus vartotojo vardus ir slaptažodžius.
Procedūra yra tokia:
- Sustabdykite uodą
- Sukurkite savo konfigūracijos failą
- Redaguoti konfigūracijos failą
- Sukurkite slaptažodžio failą
- Pridėkite naudotojų/slaptažodžių.
Taigi prisijunkite naudodami naują „PuTTY“seansą ir paleiskite šias komandas:
sudo /etc/init.d/mosquitto stop
cd /etc/mosquitto/conf.d/
sudo nano mosquitto.conf Tai paleidžia redaktorių.
Pridėti eilutes:
allow_anonymous false
password_file /etc/mosquitto/conf.d/passwd
reikalauti_sertifikatas klaidingas
Išsaugoti ir išeiti (Ctrl+X), Y, įveskite.
sudo touch passwd Taip sukuriamas slaptažodžio failas, o toliau pateiktose instrukcijose pridedami vardai ir slaptažodžiai.
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd loungelight loungelightPW
sudo mosquitto_passwd -b /etc/mosquitto/conf.d/passwd NodeRed NodeRedPW
sudo /etc/init.d/mosquitto paleiskite iš naujo
Atminkite, kad pridedant naują įrenginį turėsite įvesti vartotoją ir slaptažodį per nuoseklųjį prievadą ir pridėti juos prie slaptažodžio failo arba laikinai pakeisti uodų konfigūracijos failą ir komentuoti (pridėti # eilutės pradžioje) eilutes „allow_anonymous false "ir" password_file /etc/mosquitto/conf.d/passwd ", tada iš naujo nustatykite, kai išsami informacija buvo išsiųsta į įrenginį ir pridėta prie slaptažodžio failo, kaip aprašyta aukščiau.
Mes pakeitėme sonoff pavadinimą į loungelight ir taip atnaujiname mqtt išvesties mazgą (prijungtą prie jungiklio), kad būtų naudojama tema cmnd/loungelight/POWER.
Spustelėkite Diegti ir patikrinkite, ar „mqtt“mazgai rodo „prijungti“.
Toliau pabandykite jungiklio mygtuką ir ieškokite derinimo, rodančio, kaip Sonoff jungiklis reaguoja. Pastebėsite, kad įrenginys rodo pakeitimą tema: stat/loungelight/POWER. Taigi dabar pakeiskite įvesties mazgą, kuris buvo nustatytas į cmnd/sonoff/POWER, į stat/loungelight/POWER. Mes galime tai panaudoti, kad užpildytume savo funkcijų spragą. Iš pradžių nustatyta sistema bus sinchronizuojama su visais prisijungusiais vartotojais, tačiau nebus sinchronizuojama su jungiklio pakeitimais, atliktais paspaudus mygtuką „Sonoff“jungiklyje. Taigi dabar prijunkite stat/loungelight/POWER mqtt įvesties mazgo išvestį prie jungiklio įvesties (LHS). Dabar dukart spustelėkite jungiklį ir panaikinkite žymėjimą „jei įvesties metu gaunama žinutė, pereikite prie išvesties“. Tai atveria keletą naujų parinkčių - pasirinkite „jungiklio piktograma rodo įvesties būseną“. Diegti. Taigi dabar turime gerą grįžtamojo ryšio ciklą. Prietaisų skydelio jungiklio padėtis visada pasikeis, kai pasikeis „Sonoff“jungiklis, nepriklausomai nuo to, kur pakeitimas buvo pradėtas.
Taigi dabar mes turime saugią, savarankišką namų automatizavimo sistemą ir esame pasirengę ją išplėsti, kad ir ką norėtumėte. Kitame skyriuje aptarsiu kai kuriuos savo eksperimentus ir iššūkius, kuriuos planuoju įveikti.
8 veiksmas: pradiniai plėtros veiksmai
Turiu kitą mokomą namų automatikos „Sonoff-Tasmota“jutiklių šviesos diodų kūrimo valdybą, kurioje rodomos kai kurios kitos „Sonoff-Tasmota“programinės įrangos galimybės:
Temperatūros ir drėgmės matavimas
Įsibrovėlio aptikimas (jungiklio įvestis)
IR nuotolinio valdymo pultas (televizoriams ir pan.)
LED stygos - tiek RGB, tiek „NeoPixel“(individualiai adresuojama)
I2C jutikliai
Aukščiau aš naudoju ESP12F ir pasirinktinę PCB. Lygiai taip pat galima naudoti „NodeMCU“ir „breadboard“. Tai leidžia šias papildomas funkcijas neprijungti prie „Sonoff“įrenginio, todėl tai yra daug saugesnis metodas. Įvedęs temperatūrą, galėjau užbaigti savo elektrinės antklodės automatizavimą.
Muziką ir interneto radiją galima lengvai pridėti. Tai atveria galimybes, kad tam tikros stotys ar albumai būtų įjungti nustatytu laiku arba galbūt reaguojant į lankytojo (telefono) aptikimą. Šis susijęs nurodymas yra aukštos kokybės muzikos grotuvas ir interneto radijas su išmaniųjų telefonų valdymu. Kadangi tai taip pat lemia „Node-RED“, netgi turėtų būti įmanoma turėti daugiau nei vieną garso sistemą ir joms valdyti naudojant MQTT ryšį.
Aš taip pat tyrinėjau „Node-Red“, įskaitant el. Laiškų siuntimą ir balso įspėjimus. Sistema taip pat gali aptikti, kada esate įeinant/išeinant - įtvirtindami savo mobiliojo telefono IP adresą. „Node -Red“taip pat gali pasiekti orus ir naujienas - todėl galima pridėti informacijos ir atlikti automatizavimą.
Yra keletas gudrybių, kurias reikia išmokti, tačiau antrą kartą jos tampa labai lengvos.
Kitas būdas yra pridėti ekraną prie pi, kad būtų rodomas prietaisų skydelis. Tai „nebaigtas darbas“, kitaip tariant, nesu per daug laimingas. Gautą ekraną sunku pasukti į portreto režimą, o „Chromium“naršyklė yra skausmingai lėta. Alternatyva būtų pasiimti seną planšetę „ebay“ir ja naudotis. Galiu pabandyti su „Pi 2“ir pažiūrėti, ar tai pakankamai pagerina (šiam vystymui naudojamas B modelis).
Tikiuosi, kad tai padės jums pradėti ir suvirpins jūsų vaizduotę. Potenciali apimtis yra didžiulė. Jei reikia, netgi galima pakeisti kitų jutiklių „Sonoff“kodą.
Apskritai mane nustebino tai, ką ši sistema gali padaryti. Mano pirminis tikslas buvo tiesiog patikimai valdyti jungiklį iš išmaniojo telefono per atskirą sistemą. Turėjau vizijų, kad reikia valdyti serverius ir klientus ir rašyti html vartotojo sąsajai. Tai, kur tai baigėsi, yra kur kas anksčiau už didesnį saugumą, puikų patikimumą, fantastišką vartotojo sąsają, „drag and drop“programavimą ir didžiulį plėtros potencialą. Ir visa tai su daug mažiau pastangų.
Maikas
9 veiksmas: priedas - įkėlimas iš „Raspbian Stretch Lite“
Pasirinkus šią parinktį išvengiama „bloatware“, kuri pateikiama kartu su visa „Raspbian Stretch“versija. Daugumos to neprireiks, kai namų automatizavimui naudosite „Pi“. Tačiau „Node-Red“reikia įdiegti.
Tęskite kaip 1 veiksme, bet naudokite „Raspbian Stretch Lite“, o ne „Raspbian Stretch“.
Vietoj 2 veiksmo atlikite šiuos veiksmus:
sudo apt -y įdiegti npm
npm -v turėtų grįžti: 1.4.21 arba naujesnė
sudo npm įdiegti -g n
sudo n 8.9.0
Dabar galime naudoti mazgų paketų tvarkyklę, kad įdiegtume „Node-Red“:
sudo npm install node-red --global --unsafe-perm
Dėl neteisingo adreso bus pateikta keletas klaidų pranešimų. Tačiau sistema atlieka „šaltinio kompiliavimą“, kad išspręstų šią problemą. Jei pakartosite aukščiau pateiktą instrukciją (nebūtina), klaidų nebus.
Dabar turime įdiegtą raudoną mazgą ir jį palaikančius paketus ir galime pereiti prie 3 veiksmo, įkeldami uodus.
Antroji vieta belaidžio ryšio konkurse