Turinys:
- 1 žingsnis: dalys ir įrankiai
- 2 žingsnis: darbo principas
- 3 žingsnis: Surinkite įrenginį
- 4 veiksmas: įkelkite kodą
- 5 veiksmas: sukonfigūruokite „HomeAssistant“
- 6 veiksmas: savo MQTT serverio konfigūravimas [neprivaloma]
- 7 veiksmas: „NodeMCU“OTA (atnaujinimas per orą)
- 8 žingsnis: Išvados, būsimas darbas
Video: Namų asistento Geigerio skaitiklio integravimas: 8 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
Šioje pamokoje aš parodysiu, kaip galite pridėti pasirinktinius jutiklius prie HASS (namų asistentas), tiksliau, geigerio skaitiklio, tačiau procesas yra panašus ir kitiems jutikliams.
Mes naudosime „NodeMCU“plokštę, „arduino“pagrįstą geigerio skaitiklį ir jau įdiegtą namų asistentą.
Integracija bus pagrįsta MQTT serveriu (viešu ar privačiu), ir aš jums padėsiu žingsnis po žingsnio.
Jei nežinote, kas yra namų asistentas, apsilankykite jų puslapyje https://www.home-assistant.io/. Tai gerai žinoma namų automatikos platforma, kuri yra labai gerai prižiūrima ir labai pritaikoma.
Jūs sužinosite apie:
- išplėstinė namų asistento konfigūracija
- „NodeMCU“(kūrimo lenta) ir kaip ją užprogramuoti naudojant „Arduino IDE“
- OTA (atnaujinimai per orą) naudojant „Arduino IDE“, skirtą „NodeMCU“plokštei
- kaip prijungti nuoseklųjį įrenginį prie „NodeMCU“
- rankiniu būdu įdiegti MQTT serverį „Linux“(neprivaloma)
Pagrindinės prielaidos:
- turite paleisti namų asistentą
- tu šiek tiek žinai apie elektroniką
- turite įdiegtą „Arduino IDE“
1 žingsnis: dalys ir įrankiai
Dalys:
1. „NodeMCU“plokštė
2. duonkepė
3. vyriškos lyties ir vyriškos lyties laidai
3. USB -micro USB kabelis
4. arduino geiger skaitiklis su nuoseklia sąsaja
(„Ebay“ieškokite „arduino geiger couter“)
5. radioaktyviosios medžiagos (pasirinktinai nedidelis bandinys)
Įrankiai:
1. „Arduino IDE“
2. Įdiegtas namų asistentas
2 žingsnis: darbo principas
Mūsų tikslas yra „HomeAssistat“(HASS) parodyti geigerio skaitiklio rodmenis. Vienoje pusėje veikia ir veikia kažkur HASS serveris, tai gali būti aviečių pi ar kitas įrenginys, o kitoje pusėje yra geigerio skaitiklis.
Geigerio skaitiklis turi nuoseklųjį prievadą, vienas iš sprendimų bus tiesiogiai prijungti nuoseklųjį prievadą prie RaspberryPi, kuriame veikia HASS.
Keletas priežasčių, kodėl tai gali būti ne gera idėja:
- ten nėra fizinės erdvės
- serijiniame prievade turime kokį nors kitą įrenginį
- norime pritvirtinti aplinkos jutiklį, kuris turėtų būti pastatytas lauke, o ne geigerio skaitiklis
Gerai, todėl išnagrinėsime kitą galimybę užmegzti ryšį per WIFI:
HASS palaiko jutiklių duomenų skaitymą ir parodo, kad per MQTT serverį tokio tipo serveris yra mažo svorio įrenginys, skirtas mažiems įrenginiams, vienas įrenginys paskelbia pranešimą „tema“, kitas klausosi tos temos, kad gautų pranešimą. Taigi HASS išklausys ir mums reikia kažko, kas paskelbs pranešimą.
Mūsų jutiklis žino tik kalbėti per nuosekliąją liniją, todėl naudosime plokštę, kuri gali nuskaityti nuosekliąją liniją ir kuri gali prisijungti per WIFI ir kalbėtis su MQTT serveriu. Pigi plokštė, kuri tai daro, yra „NodeMCU“.
„NodeMCU“galima užprogramuoti naudojant „Arduino IDE“. Eskizas yra gana paprastas, jis atlieka šiuos veiksmus:
- jungiasi prie WIFI
- palaiko MQTT ryšį su serveriu ir iš naujo bando prisijungti, kai nepavyksta arba atsijungia
- klausosi gaunamų serijinių duomenų kaip sveikųjų skaičių serijos
- Kai sveikas skaičius atvyksta, jis siunčia jį per MQTT į konkrečią temą
3 žingsnis: Surinkite įrenginį
Mes naudosime duonos lentas ir laidus, todėl tai gana paprasta, turime atlikti kelis veiksmus:
- padėkite „NodeMCU“ant duonos lentos
- prijunkite geigerio vamzdelį prie geigerio skaitiklio (saugokitės poliškumo)
- VIN eina į geigerio skaitiklį +
- GND eina į geigerio skaitiklį -
- „NodeMCU D7“(13 kaištis) eina į „Geiger TX“
- „NodeMCU D8“(15 kaištis) eina į „Geiger RX“
- maitinkite „NodeMCU“per kompiuterio mikro USB
4 veiksmas: įkelkite kodą
Mes naudosime „Arduino IDE“ir įsitikinsime, kad įdiegta „NodeMCU“plokštė ir įdiegta „Adafruit_MQTT“biblioteka.
1. Klonuokite „Github“saugyklą: https://github.com/danionescu0/arduino ir nukopijuokite eskizą iš projektų/HASSGeigerIntegration į savo arduino eskizų knygos vietą
2. Atidarykite „Arduino IDE“ir įdiekite „NodeMCU“
- eikite į Failas -> Nuostatos, papildomų lentų tvarkytuvės URL adresuose pridėkite https://arduino.esp8266.com/stable/package_esp8266com_index.json, jei jau turite ką nors, įdėkite komą į priekį ir spustelėkite gerai
-iš Tools -> Board -> Board Manager įveskite „nodemcu“ir pasirinkite ESP8266 Community įrašą esp8266 ir paspauskite install
3. Įdiekite „Adafruit_MQTT“
-eikite į Įrankiai -> Tvarkyti bibliotekas -> ieškokite „Adafruit_MQTT“ir įdiekite „Arduino MQTT biblioteka“
4. Prijunkite USB kabelį prie kompiuterio ir sukonfigūruokite plokštę:
-eikite į Įrankiai -> Lenta -> pasirinkite „NodeMcu 1.0“
-Įrankiai -> Prievadas -> jūsų USB prievadas
- palikite kitus nustatymus nepakeistus
4. Eskize pakeiskite savo WIFI prisijungimo duomenis, kad jie atitiktų jūsų:
#define STASSID "ssid" // Pakeiskite savo WIFI SSID
#define STAPSK "pass" // Pakeiskite savo WIFI slaptažodžiu
5. Įkelkite eskizą į savo lentą ir po įkėlimo iš naujo nustatykite lentą iš mygtuko
6. Atidarykite nuoseklųjį monitorių, jei viskas gerai, turėtumėte pamatyti tokią išvestį:
Paleidimas
IP adresas: 192.168.1.168 Įjungta OTA Prisijungimas prie MQTT … MQTT prijungtas! {„spinduliuotė“: 0,03}..
5 veiksmas: sukonfigūruokite „HomeAssistant“
Darysime prielaidą, kad turite namų asistentą ir jis veikia. Mano sistemoje turiu RaspberryPi HASSOS 3.12 versiją. Jei jūsų namų asistento versija yra per sena arba labai nauja, kai kurios funkcijos gali skirtis. Ši pamoka tikrai veikia su 3.12 versija.
Jei jūsų namuose nėra įdiegtas asistentas, peržiūrėkite jų oficialų diegimo vadovą:
Prieš pradėdami diegti, įsitikinkite, kad „NodeMCU“yra prijungtas ir skelbia duomenis.
Gerai, čia taip pat atliksime keletą konfigūracijos veiksmų:
1. Įdiekite „failų redaktorių“, jei jo neturite meniu, čia yra oficiali pamoka:
2. Redaguokite „/config/configuration.yaml“failą, pridėkite toliau nurodytą ir išsaugokite
- „mqtt“skyrius, jei jo dar neturite
mqtt:
brokeris: broker.hivemq.com atradimas: tikras atradimas_prefiksas: ha
- jutiklių skyrius
jutiklis:
- platforma: mqtt name: "Radiation" state_topic: "ha/spinduliuotė" unit_of_measurement: 'uSv' unique_id: "spinduliuotė" value_template: "{{value_json.radiation}}"
3. Iš konfigūracijos -> serverio valdikliai: paspauskite „Tikrinti konfigūraciją“, kad patikrintumėte „yaml“konfigūracijos failą, ar nėra klaidų, tada paspauskite „iš naujo“ir palaukite, kol jis bus paleistas iš naujo
4. Iš apžvalgos -> Viršutinio dešiniojo kampo meniu -> Konfigūruoti vartotojo sąsają -> paspauskite + mygtuką apačioje dešinėje
5. Iš sąrašo pasirinkite „jutiklis“-> lauke „objektas“ieškokite „sensor.radiation“, pavadinimo lauke įrašykite „Radiation“ir spustelėkite „OK“, dabar jis turėtų būti pagrindiniame puslapyje
6 veiksmas: savo MQTT serverio konfigūravimas [neprivaloma]
Pakalbėkime šiek tiek apie MQTT
„MQTT yra klientų serverio skelbimo/prenumeratos pranešimų perdavimo protokolas. Jis yra lengvas, atviras, paprastas ir suprojektuotas taip, kad jį būtų lengva įgyvendinti. Dėl šių savybių jis idealiai tinka naudoti daugelyje situacijų, įskaitant suvaržytą aplinką, pvz., Komunikaciją mašinų ir mašinų (M2M) ir daiktų interneto (daiktų interneto) kontekstuose, kur reikalingas nedidelis kodo pėdsakas ir (arba) tinklo pralaidumas. “
Citata iš oficialios MQTT 3.1.1 specifikacijos.
Taigi iš esmės mes galime paskelbti pranešimą kažkur vienoje pusėje, o kitoje pusėje galime klausytis tų pranešimų ir ką nors padaryti su duomenimis. MQTT palaiko „temas“, temos yra eilutės, kurias brokeris naudoja filtruodamas kiekvieno kliento pranešimus, taigi, jei paskelbsime pranešimą „/radiacijos“tema, klausytojas turi užsiprenumeruoti tą pačią temą, kad gautų siunčiamus pranešimus.
Čia yra puiki pamoka apie MQTT išsamiai:
Naudojant nemokamą avilio serverį yra keletas trūkumų, tokių kaip:
- visi, klausantys jūsų temos, gaus jūsų žinutes
- jei jis sumažės arba reikės sumokėti vėliau, negalėsite juo naudotis (nebent sumokėsite)
- jei kas nors, skelbiantis tos pačios temos pranešimus, gausite ir jūs, jie gali paskelbti nesuderinamus pranešimus ir sulaužyti jūsų HASS grafikus
Naudojant privatų serverį
Jei nenorite naudotis viešuoju nemokamu serveriu, galite pasirinkti privatų serverį. Mes ketiname įdiegti „Mosquitto MQTT“„Ubuntu“/ „debian“serveryje, pavyzdžiui, „aviečių pi“ar kompiuteryje.
„Mosquitto“yra nemokamas serveris, įgyvendinantis MQTT protokolą.
Norėdami jį įdiegti, prisijunkite prie savo „raspnerry pi“ar kito „Debian“serverio ir paleiskite:
sudo apt atnaujinimas
sudo apt install -y mosquitto mosquitto -customers sudo systemctl įgalina mosquitto.service
Tai atnaujins saugyklą, įdiegs uodų serverį ir klientą ir įgalins paslaugą paleisti paleidžiant
Norėdami gauti serverio ip vykdymą:
pagrindinio kompiuterio vardas -aš
ir jis išves kažką panašaus:
192.168.1.52 172.17.0.1 172.18.0.1
Taigi mano ip yra 192.168.1.52, žemiau pateiktose komandose pakeiskite jį savo IP
Galite išbandyti MQTT serverį paskelbdami pranešimą ir gavę jį naudodami konsolės įrankį, nes šiems dviem terminalams turi būti atidarytas tas, kuris klausosi pranešimo, o kitas - skelbimas.
Pirmiausia terminale paleiskite šią komandą, kad išklausytumėte pranešimą „/some-topic“
mosquitto_sub -h 192.168.1.52 -t /some -topic
Atidarykite kitą terminalą ir paskelbkite pranešimą ta tema:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"drėgmė": 74.0}'
Pirmame terminale turėtumėte pamatyti atspausdintą „{" drėgmė ": 74.0} '.
Ypatingas dėmesys:
- ši sąranka daro prielaidą, kad HASS, Mosquitto ir NodeMCU yra prijungti prie to paties WIFI tinklo ir nėra ugniasienės taisyklių ir jie gali laisvai bendrauti
-„Mosquitt MQTT“serveryje nėra vartotojo vardo/slaptažodžio, jei norite nustatyti kredencialus, patikrinkite tai: https://www.steves-internet-guide.com/mqtt-username-password-example/ Taip pat turėsite sukonfigūruoti „Home Assistant“ir „arduino“eskizo įgaliojimai
7 veiksmas: „NodeMCU“OTA (atnaujinimas per orą)
Atnaujinimai per orą reiškia, kad kūrimo plokštę galima sumontuoti belaidžiu būdu, nereikalaujant fizinio kabelio.
„Arduino IDE“palaiko šią ESP8266 serijos ir kai kurių kitų plokščių funkciją:
- reikalinga pradinė blykstė per USB kabelį
- sukuria virtualų prievadą per WIFI ir jis matomas tik iš „Arduino IDE“
- nėra serijos derinimo informacijos
- palaiko apsaugą slaptažodžiu
Norėdami įjungti OTA ESP8266 eskize, pirmiausia įtraukite biblioteką:
#įtraukti „ArduinoOTA.h“
Taip pat apibrėžkite šią eskizo slaptažodžio konstantą:
#define SKETCHPASS "some_password"
Sąrankos skiltyje pridėkite šias eilutes:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Nepavyko prisijungti! Perkraunama …"); vėlavimas (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Stygos tipas; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Pradėti atnaujinti " + tipas);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nPabaigos");}); ArduinoOTA.onProgress ( (nepasirašyta int pažanga, nepasirašyta int viso) {Serial.printf ("Progress:%u %% / r", (progress / (total / 100)));}); ArduinoOTA.onError ( (ota_error_t klaida) {Serial.printf („Klaida [%u]:“, klaida); if (error == OTA_AUTH_ERROR) {Serial.println („Auth Failed“);} else if (error == OTA_BEGIN_ERROR) {Serial.println ("Pradėti nepavyko");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Nepavyko prisijungti");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Gauti nepavyko ");} else if (error == OTA_END_ERROR) {Serial.println (" Pabaiga nepavyko ");}}); ArduinoOTA.begin (); Serial.print („IP adresas:“); Serial.println (WiFi.localIP ());
Ir kilpos skyriuje pridėkite šią eilutę:
„ArduinoOTA.handle“();
Įkėlus pradinį kodą po to, kai lenta paleidžiama, „Arduino IDE“skiltyje Įrankiai-> Uostas turėtumėte pamatyti dviejų tipų prievadus:
Serijiniai prievadai: /dev /ttyUSB0 (pavyzdžiui)
Tinklo prievadai: esp8266-xxxxx, 192.168.1.xxx
Dabar galite pasirinkti tinklo prievadą ir įkelti eskizo nuotolinio valdymo pultą, būsite paraginti įvesti eskizo slaptažodį (tą, kurį apibrėžėte aukščiau esančioje konstantoje)
8 žingsnis: Išvados, būsimas darbas
Ši pamoka gali būti lengvai pakeista, kad būtų galima siųsti duomenis apie kitų tipų jutiklius:
- jei jūsų jutiklį tiesiogiai palaiko „NodeMCU“per biblioteką, tiesiog surinkite jutiklio duomenis ir tiesiogiai stumkite juos per MQTT
- jei jutiklių biblioteka neveikia su „NodeMCU“, bet skirta tik „Arduino“, įkelkite savo kodą į „arduino“, išveskite vertę per serijinę liniją ir perskaitykite ją „NodeMCU“ir paspauskite (kaip ir su geigerio skaitikliu)
Mes netgi galime jį pakeisti, kad būtų siunčiami duomenys iš kelių jutiklių:
- prijunkite jutiklius prie „NodeMCU“
- apklausos duomenys iš kiekvieno jutiklio
- kiekvieno jutiklio duomenys skelbiami skirtinga tema
- HASS apibrėžkite kelis jutiklius (kaip tai darėme su geigeriu), kurie klausysis skirtingų temų
Rekomenduojamas:
„Pasidaryk pats“išmaniųjų garažo durų atidarytuvas ir namų asistento integracija: 5 žingsniai
„Pasidaryk pats“išmaniųjų garažo durų atidarytuvas ir namų asistento integracija: naudodamiesi šiuo „pasidaryk pats“projektu, protingai paverskite įprastas garažo duris. Aš jums parodysiu, kaip jį sukurti ir valdyti naudojant „Home Assistant“(per MQTT) ir galėsiu nuotoliniu būdu atidaryti ir uždaryti garažo duris. Naudosiu ESP8266 plokštę, pavadintą „Wemos“
Geigerio skaitiklio veikla 9–11 metų amžiaus: 4 žingsniai
Geigerio skaitiklio veikla 9–11 metų amžiaus: Šioje pamokoje sužinosite, kaip naudoti branduolinės spinduliuotės detektorių. Čia galite įsigyti „Geiger“skaitiklio detektorių. „Geiger“skaitiklis yra prietaisas, naudojamas jonizuojančiai spinduliuotei aptikti ir matuoti. Taip pat žinomas kaip Geigerio -Miulerio skaitiklis (
Geigerio skaitiklio veikla 12 metų ir vyresniems: 5 žingsniai
Geigerio skaitiklio veikla 12 metų ir vyresniems: Šioje pamokoje sužinosite, kaip surinkti branduolinės spinduliuotės detektorių. Čia galite įsigyti „Geiger“skaitiklio rinkinį. „Geiger“skaitiklis yra prietaisas, naudojamas jonizuojančiai spinduliuotei aptikti ir matuoti. Taip pat žinomas kaip Geigerio -Miulerio skaitiklis (
„Arduino“laidinio namų asistento tinklui: 5 žingsniai
„Arduino“laidinio namų asistento tinklui: „Wifi“komponentus, tokius kaip įvairūs „Sonoff“, „Tasmota“ir ESP8266, labai lengva konfigūruoti ir naudoti, tačiau dažnai viskas nėra taip paprasta, kaip atrodo. Pramoninėje/verslo aplinkoje belaidžio ryšio automatizavimas nėra toks įprastas dalykas. Belaidžiai komponentai yra mažiau patikimi
Išmanioji muzika miegamajame ir vonioje su „Raspberry Pi“- daugiabučio, signalizacijos, mygtukų valdymo ir namų automatikos integravimas: 7 žingsniai
Išmanioji muzika miegamajame ir vonioje su „Raspberry Pi“- integruotas daugiafunkcis kambarys, signalizacija, mygtukų valdymas ir namų automatizavimas: Šiandien norime pateikti du pavyzdžius, kaip galite naudoti „Raspberry Pi“su mūsų „Max2Play“programine įranga, skirta namų automatizavimui: vonios kambaryje ir miegamajame . Abu projektai yra panašūs tuo, kad aukštos kokybės muziką iš įvairių šaltinių galima transliuoti per