Obsah:
- Krok 1: Diely a nástroje
- Krok 2: Princíp práce
- Krok 3: Zostavte zariadenie
- Krok 4: Nahrajte kód
- Krok 5: Konfigurujte HomeAssistant
- Krok 6: Konfigurácia vlastného servera MQTT [voliteľné]
- Krok 7: OTA (Over the Air Updates) pre NodeMCU
- Krok 8: Závery, budúca práca
Video: Integrácia domáceho asistenta Geigera: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
V tomto tutoriáli vám ukážem, ako pridať vlastné senzory do HASS (domáci asistent), konkrétnejšie geigerov počítač, ale postup je podobný aj pre ostatné senzory.
Budeme používať dosku NodeMCU, geigerový pult na báze arduina a už nainštalovaného domáceho asistenta.
Integrácia bude založená na serveri MQTT (verejnom alebo súkromnom) a ja vás týmto krok za krokom prevediem.
Ak neviete, čo je domáci asistent, navštívte ich stránku https://www.home-assistant.io/. Je to dobre známa platforma pre domácu automatizáciu, ktorá je veľmi dobre udržiavaná a vysoko prispôsobiteľná.
Dozviete sa o:
- pokročilá konfigurácia pre Home Assistant
- NodeMCU (vývojová doska) a ako ho naprogramovať pomocou Arduino IDE
- OTA (bezdrôtové aktualizácie) pomocou Arduino IDE pre dosku NodeMCU
- ako pripojiť sériové zariadenie k NodeMCU
- manuálna inštalácia servera MQTT na linux (voliteľné)
Základné predpoklady:
- máte zapnutého domáceho asistenta
- vieš niečo o elektronike
- máte nainštalované Arduino IDE
Krok 1: Diely a nástroje
Diely:
1. doska NodeMCU
2. chlebík
3. juperové drôty samec-samec a samec-samica
3. kábel USB na micro USB
4. počítadlo arduino geiger so sériovým rozhraním
(vyhľadajte na Ebay výraz „arduino geiger couter“)
5. rádioaktívny materiál (voliteľne malá skúšobná vzorka)
Náradie:
1. Arduino IDE
2. Domáci asistent nainštalovaný
Krok 2: Princíp práce
Našim cieľom je ukázať na HomeAssistat (HASS) hodnoty z geigerovho počítadla. Na jednej strane máme server HASS, ktorý je niekde v prevádzke, môže to byť malinové pi alebo iné zariadenie, a na druhej strane máme geigerov počítač.
Geigerov počítač má sériový port, jedným z riešení bude priamo pripojiť sériový port k RaspberryPi, na ktorom beží HASS.
Niektoré dôvody, prečo to nemusí byť dobrý nápad:
- nie je tam žiadny fyzický priestor
- Na sériovom porte máme nejaké ďalšie zariadenie
- chceme pripojiť snímač prostredia, ktorý by mal byť umiestnený mimo geigerovho počítadla
Ok, takže preskúmame ďalšiu možnosť vytvorenia pripojenia prostredníctvom WIFI:
HASS podporuje čítanie údajov zo senzorov a ukazuje, že prostredníctvom servera MQTT je tento druh servera jednoduchým pripojením pre malé zariadenia. Jedno zariadenie zverejní správu na „tému“, druhé počúva na túto tému a správu prijme. HASS teda bude počúvať a my potrebujeme niečo, čo správu zverejní.
Náš senzor vie iba hovoriť po sériovej linke, takže použijeme dosku, ktorá dokáže čítať sériovú linku a ktorá sa môže pripojiť cez WIFI a hovoriť so serverom MQTT. Lacná doska, ktorá to robí, je NodeMCU.
NodeMCU je možné naprogramovať pomocou Arduino IDE. Náčrt je veľmi jednoduchý a robí nasledujúce:
- pripája sa k WIFI
- udržiava spojenie MQTT so serverom a pokúsi sa spojenie zopakovať, ak zlyhalo alebo bolo odpojené
- počúva prichádzajúce sériové údaje ako sériu celých čísel
- Akonáhle príde celé číslo, odošle ho prostredníctvom MQTT na konkrétnu tému
Krok 3: Zostavte zariadenie
Budeme používať doštičky a drôty, takže je to celkom jednoduché, máme niekoľko krokov:
- položte NodeMCU na dosku s chlebom
- pripojte geigerovu trubicu k geigerovému počítadlu (pozor na polaritu)
- VIN ide na geigerový pult +
- GND prejde na geigerový pult -
- NodeMCU D7 (pin 13) ide do geiger TX
- NodeMCU D8 (kolík 15) ide na geiger RX
- napájajte NodeMCU pomocou micro USB z počítača
Krok 4: Nahrajte kód
Budeme používať Arduino IDE a uistíme sa, že máme nainštalovanú dosku NodeMCU a nainštalovanú knižnicu Adafruit_MQTT.
1. Klonujte úložisko github: https://github.com/danionescu0/arduino a skopírujte skicu z projektov/HASSGeigerIntegration do svojho umiestnenia arduino skicára
2. Otvorte Arduino IDE a nainštalujte NodeMCU
- choďte na Súbor -> Predvoľby, do adries URL dodatočného správcu dosiek pridajte https://arduino.esp8266.com/stable/package_esp8266com_index.json, ak tam už niečo máte, dajte kómu dopredu a kliknite na ok
-z Nástroje -> Doska -> Správca dosky napíšte „nodemcu“, vyberte položku esp8266 od komunity ESP8266 a stlačte tlačidlo nainštalovať
3. Nainštalujte Adafruit_MQTT
-prejdite na Nástroje -> Spravovať knižnice -> vyhľadajte „Adafruit_MQTT“a nainštalujte „knižnicu Arduino MQTT“
4. Pripojte kábel USB k počítaču a nakonfigurujte dosku:
-prejdite na Nástroje -> Doska -> vyberte NodeMcu 1.0
-Nástroje -> Port -> váš port USB
- ostatné nastavenia nechajte nezmenené
4. V náčrte zmeňte svoje poverenia WIFI tak, aby zodpovedali vašim:
#define STASSID "ssid" // Nahraďte svojim WIFI SSID
#define STAPSK "pass" // Nahradiť heslom WIFI
5. Načrtnite náčrt na svoju nástenku a po nahraní tabuľu resetujte pomocou tlačidla
6. Otvorte sériový monitor, ak je všetko v poriadku, mali by ste vidieť nejaký výstup takto:
Zavádzanie
IP adresa: 192.168.1.168 OTA povolené Pripojenie k MQTT … MQTT pripojené! {"žiarenie": 0,03}..
Krok 5: Konfigurujte HomeAssistant
Budeme predpokladať, že máte domáceho asistenta v prevádzke. V mojom systéme mám HASSOS verzie 3.12 na RaspberryPi. Ak je vaša verzia domáceho asistenta príliš stará alebo veľmi nová, niektoré funkcie sa môžu líšiť. Tento tutoriál funguje určite s verziou 3.12.
Ak nemáte nainštalovaného Home Assistant, pozrite sa na jeho oficiálneho sprievodcu inštaláciou:
Pred pokračovaním v inštalácii sa uistite, že je NodeMCU zapojený a publikuje údaje.
Ok, tu budeme mať aj sériu krokov pre konfiguráciu:
1. Nainštalujte si „súborový editor“, ak ho nemáte v ponuke, tu je oficiálny návod:
2. Upravte súbor "/config/configuration.yaml" a pridajte nasledujúci súbor a uložte ho
- sekcia mqtt, ak ju ešte nemáte
mqtt:
broker: broker.hivemq.com objav: skutočná predpona objavu: predpona
- sekcia senzorov
senzor:
- platforma: mqtt názov: "Radiation" state_topic: "ha/radiace" unit_of_measurement: 'uSv' unique_id: "radiaction" value_template: "{{value_json.radiation}}"
3. V časti Konfigurácia -> Ovládanie servera: kliknite na položku „Skontrolovať konfiguráciu“, skontrolujte, či v konfiguračnom súbore yaml nie sú chyby, a potom kliknite na tlačidlo „reštartovať“a počkajte, kým sa reštartuje.
4. V Prehľade -> ponuka v pravom hornom rohu -> Konfigurovať používateľské rozhranie -> stlačte tlačidlo + v pravom dolnom rohu
5. V zozname zvoľte „senzor“-> v poli „entita“vyhľadajte „senzor.radiace“, do poľa pre názov napíšte „Žiarenie“a kliknite na tlačidlo ok, teraz by malo byť na hlavnej stránke
Krok 6: Konfigurácia vlastného servera MQTT [voliteľné]
Poďme trochu diskutovať o MQTT
"MQTT je transportný protokol správ pre publikovanie/predplatné správ na klientskom serveri." Je ľahký, otvorený, jednoduchý a navrhnutý tak, aby sa dal ľahko implementovať. Vďaka týmto vlastnostiam je ideálny pre použitie v mnohých situáciách, vrátane obmedzených prostredí, ako je napríklad komunikácia v kontextoch Machine to Machine (M2M) a Internet of Things (IoT), kde je potrebná malá stopa kódu a/alebo je obmedzená šírka pásma siete.”
Citácia z oficiálnej špecifikácie MQTT 3.1.1.
V zásade teda môžeme zverejniť správu niekde na jednej strane a na druhej strane môžeme tieto správy počúvať a s údajmi niečo urobiť. Podpora MQTT „témy“, témy sú reťazce, ktoré maklér používa na filtrovanie správ pre každého klienta, takže ak zverejníme správu na tému „/žiarenie“, poslucháč sa musí prihlásiť na rovnakú tému, aby získal správy, ktoré odosielame.
Tu je podrobný skvelý návod o MQTT:
Používanie servera s voľným úľom má niekoľko nevýhod, ako napríklad:
- každý, kto počúva vašu tému, dostane vaše správy
- ak sa zníži alebo bude vyžadovať platbu neskôr, nebudete ju môcť použiť (pokiaľ nezaplatíte)
- Ak niekto, kto publikuje správy na rovnakú tému, dostane aj jeho správy, môže publikovať nekompatibilné správy a rozbiť vaše HASSOVÉ grafy
Použitie súkromného servera
Ak nechcete používať verejný bezplatný server, máte možnosť súkromného servera. Mosquitto MQTT nainštalujeme na server ubuntu / debian ako malinový pi alebo počítač.
Mosquitto je server, ktorý implementuje protokol MQTT a je zadarmo.
Ak ho chcete nainštalovať, prihláste sa na svoj Raspnerry Pi alebo iný server založený na Debiane a spustite:
sudo apt aktualizácia
sudo apt install -y mosquitto mosquitto -clients sudo systemctl enable mosquitto.service
Tým sa aktualizuje úložisko, nainštaluje sa server proti komárom a klientovi a umožní sa mu služba spustiť pri spustení
Ak chcete spustiť ip servera:
názov hostiteľa -I
a vygeneruje niečo ako:
192.168.1.52 172.17.0.1 172.18.0.1
Takže moja ip je 192.168.1.52, v nižšie uvedených príkazoch ju nahraďte vlastnou ip
Server MQTT môžete otestovať zverejnením správy a jej prijatím pomocou konzolového nástroja, pretože pre tieto dva terminály musí byť otvorený ten, ktorý počúva správu, druhý, ktorý správu zverejní.
Najprv v termináli spustite tento príkaz a počúvajte správu o „/some-topic“
mosquitto_sub -h 192.168.1.52 -t /some -topic
Otvorte ďalší terminál a zverejnite správu na túto tému:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"vlhkosť": 74,0}'
V prvom termináli by ste mali vytlačiť „{„ vlhkosť “: 74,0}.
Osobitná pozornosť:
- toto nastavenie predpokladá, že HASS, Mosquitto a NodeMCU sú pripojené k rovnakej sieti WIFI a neexistujú žiadne pravidlá brány firewall a môžu voľne komunikovať
-server Mosquitt MQTT nemá žiadne používateľské meno/heslo, ak chcete nastaviť poverenia, pozrite sa na to: https://www.steves-internet-guide.com/mqtt-username-password-example/ Tiež by ste museli nakonfigurovať poverenia v aplikácii Home Assistant a v náčrte arduina
Krok 7: OTA (Over the Air Updates) pre NodeMCU
Aktualizácie vzduchom znamenajú, že na vývojovej doske je možné bezdrôtovo blikať bez potreby fyzického kábla.
Arduino IDE podporuje túto funkciu pre rady ESP8266 a niektoré ďalšie dosky:
- vyžaduje počiatočný blesk cez USB kábel
- vytvára virtuálny port cez WIFI a je viditeľný iba z Arduino IDE
- nie sú k dispozícii žiadne informácie o sériovom ladení
- podporuje ochranu heslom
Ak chcete povoliť OTA v skici ESP8266, najskôr zahrňte knižnicu:
#include „ArduinoOTA.h“
Definujte aj túto konštantu hesla skice:
#define SKETCHPASS "some_password"
V sekcii nastavenia pridajte tieto riadky:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Pripojenie zlyhalo! Reštartovanie …"); oneskorenie (5 000); ESP. Restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Typ reťazca; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Začať aktualizovať " + typ);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (priebeh bez znamienka, celkový súčet bez znamienka) {Serial.printf ("priebeh:%u %% / r", (priebeh / (celkom / 100));}); ArduinoOTA.onError ( (chyba ota_error_t) {Serial.printf ("Chyba [%u]:", chyba); if (chyba == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} else if (chyba == OTA_BEGIN_ERROR) {Serial.println ("Začiatok zlyhal");} else if (chyba == OTA_CONNECT_ERROR) {Serial.println ("Pripojenie zlyhalo");} else if (chyba == OTA_RECEIVE_ERROR) {Serial.println (" Príjem zlyhal ");} else if (chyba == OTA_END_ERROR) {Serial.println (" Koniec zlyhal ";}})); ArduinoOTA.begin (); Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());
A do sekcie slučky pridajte tento riadok:
Rukoväť ArduinoOTA. ();
Po úvodnom nahraní kódu po spustení dosky by ste v IDE Arduino v sekcii Nástroje-> Port mali vidieť dva typy portov:
Sériové porty: /dev /ttyUSB0 (napríklad)
Sieťové porty: esp8266-xxxxx na adrese 192.168.1.xxx
Teraz môžete vybrať sieťový port a nahrať diaľkové ovládanie náčrtu, zobrazí sa výzva na zadanie hesla pre náčrt (heslo, ktoré ste definovali v konštante vyššie)
Krok 8: Závery, budúca práca
Tento návod je možné ľahko upraviť tak, aby odosielal údaje o iných typoch senzorov:
- ak je váš senzor priamo podporovaný NodeMCU prostredníctvom knižnice, stačí zhromaždiť údaje zo senzora a priamo ich odoslať prostredníctvom MQTT
- ak knižnica senzorov nefunguje s NodeMCU, ale je to len pre Arduino, nahrajte svoj kód do arduina, zadajte hodnotu cez sériový riadok a prečítajte si ju v NodeMCU a stlačte ju (rovnako ako my s geigerovým počítadlom)
Môžeme ho dokonca upraviť tak, aby odosielal údaje z viacerých senzorov takto:
- pripojte svoje senzory k NodeMCU
- údaje o hlasovaní z každého senzora
- pre každý zo senzorov zverejniť údaje na inú tému
- v HASS definujte viac senzorov (ako sme to urobili s geigerom), ktoré budú počúvať rôzne témy
Odporúča:
Inteligentný otvárač garážových brán DIY + integrácia domáceho asistenta: 5 krokov
Inteligentný otvárač garážových brán DIY + integrácia domáceho asistenta: Premeňte svoje normálne garážové brány na inteligentné pomocou tohto projektu DIY. Ukážem vám, ako ho postaviť a ovládať pomocou Home Assistant (cez MQTT) a mať možnosť diaľkovo otvárať a zatvárať garážové brány. Budem používať dosku ESP8266 s názvom Wemos
DIY Smart Doorbell: Kód, nastavenie a integrácia HA: 7 krokov (s obrázkami)
DIY Smart Doorbell: Kód, nastavenie a integrácia HA: V tomto projekte vám ukážem, ako môžete svoj normálny zvonček zmeniť na inteligentný bez toho, aby ste zmenili akékoľvek zo súčasných funkcií alebo prerušili akékoľvek káble. Budem používať dosku ESP8266 s názvom Wemos D1 mini. Novinka v ESP8266? Sledujte môj Úvod
Ovládajte svoju automatickú posuvnú bránu pomocou domáceho asistenta a systému ESPHome: 5 krokov (s obrázkami)
Ovládajte svoju automatickú posuvnú bránu pomocou domáceho asistenta a systému ESPHome: Nasledujúci článok predstavuje spätnú väzbu k mojim osobným skúsenostiam s ovládaním automatickej posuvnej brány, ktorú som nainštaloval do svojho domu. Táto brána, značková „V2 Alfariss“, bola vybavená niekoľkými diaľkovými ovládačmi Phox V2. Tiež mám
Ovládanie žalúzií s ESP8266, integrácia Google Home a Openhab a webové ovládanie: 5 krokov (s obrázkami)
Ovládanie žalúzií S ESP8266, integráciou Google Home a Openhab a webovým ovládaním: V tomto návode vám ukážem, ako som k svojim žalúziám pridal automatizáciu. Chcel som mať možnosť pridať a odstrániť automatizáciu, takže všetka inštalácia je nasadená. Hlavnými časťami sú: krokový motor, krokový ovládač ovládaný bij ESP-01 prevodovka a montáž
Začíname s domácou automatizáciou: Inštalácia domáceho asistenta: 3 kroky
Začíname s domácou automatizáciou: Inštalácia domáceho asistenta: Teraz začneme sériu domácej automatizácie, kde vytvoríme inteligentný domov, ktorý nám umožní ovládať veci ako svetlá, reproduktory, senzory a podobne pomocou centrálneho rozbočovača spolu s hlasový asistent. V tomto príspevku sa naučíme, ako vložiť