Obsah:

Integrácia domáceho asistenta Geigera: 8 krokov
Integrácia domáceho asistenta Geigera: 8 krokov

Video: Integrácia domáceho asistenta Geigera: 8 krokov

Video: Integrácia domáceho asistenta Geigera: 8 krokov
Video: Zigbee пульт управления для умного дома Moes на 4 кнопки. Обзор, интеграция в Home Assistant 2024, Júl
Anonim
Image
Image
Princíp práce
Princíp práce

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

Zostavte zariadenie
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

Nahrajte kód
Nahrajte kód
Nahrajte kód
Nahrajte kód
Nahrajte kód
Nahrajte kód
Nahrajte kód
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

Konfigurácia HomeAssistant
Konfigurácia HomeAssistant
Konfigurácia HomeAssistant
Konfigurácia 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: