Obsah:
- Krok 1: Díly a nástroje
- Krok 2: Princip práce
- Krok 3: Sestavte zařízení
- Krok 4: Nahrajte kód
- Krok 5: Konfigurace HomeAssistant
- Krok 6: Konfigurace vlastního serveru MQTT [volitelně]
- Krok 7: OTA (Over the Air Updates) pro NodeMCU
- Krok 8: Závěry, budoucí práce
Video: Integrace Geiger Counter Home Assistant: 8 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:19
V tomto tutoriálu vám ukážu, jak přidat vlastní senzory do HASS (domácí asistent) konkrétněji geigerovým čítačem, ale postup je podobný i pro ostatní senzory.
Budeme používat desku NodeMCU, geigerový čítač na bázi arduina a již nainstalovaného domácího asistenta.
Integrace bude založena na serveru MQTT (veřejném nebo soukromém) a já vás s tím krok za krokem provedu.
Pokud nevíte, co je to domácí asistent, navštivte jejich stránku https://www.home-assistant.io/. Je to dobře známá platforma pro domácí automatizaci, která je velmi dobře udržovaná a vysoce přizpůsobitelná.
Dozvíte se o:
- pokročilá konfigurace pro Home Assistant
- NodeMCU (vývojová deska) a jak ji naprogramovat pomocí Arduino IDE
- OTA (bezdrátové aktualizace) pomocí Arduino IDE pro desku NodeMCU
- jak připojit sériové zařízení k NodeMCU
- ruční instalace serveru MQTT na linux (volitelně)
Základní předpoklady:
- máte spuštěného Home Assistant
- víš něco o elektronice
- máte nainstalované Arduino IDE
Krok 1: Díly a nástroje
Díly:
1. Deska NodeMCU
2. chleba
3. juperové dráty samec-samec a samec-samice
3. USB na micro USB kabel
4. čítač arduino geiger se sériovým rozhraním
(vyhledejte na Ebay „arduino geiger couter“)
5. radioaktivní materiál (volitelně malý zkušební vzorek)
Nástroje:
1. Arduino IDE
2. Home Assistant nainstalován
Krok 2: Princip práce
Naším cílem je ukázat na HomeAssistat (HASS) hodnoty z geigerova počítače. Na jedné straně máme HASS server, který někde běží a může to být malinový pi nebo jiné zařízení, a na druhé straně máme geigerův počítač.
Geigerův čítač má sériový port, jedním z řešení bude přímo připojit sériový port k RaspberryPi, na kterém běží HASS.
Některé důvody, proč to nemusí být dobrý nápad:
- není tam žádný fyzický prostor
- Na sériovém portu máme nějaké další zařízení
- chceme připojit snímač prostředí, který by měl být umístěn venku místo geigerova počítadla
Dobře, prozkoumáme další možnost připojení prostřednictvím WIFI:
HASS podporuje čtení dat ze senzorů a zobrazuje, že prostřednictvím serveru MQTT je tento typ serveru spojením nízké hmotnosti pro malá zařízení, jedno zařízení publikuje zprávu na „téma“, druhé poslouchá na toto téma, aby zprávu přijalo. HASS tedy naslouchá a my potřebujeme něco, co zprávu zveřejní.
Náš senzor umí mluvit pouze přes sériovou linku, takže použijeme desku, která dokáže číst sériovou linku a která se může připojit přes WIFI a mluvit se serverem MQTT. Levná deska, která to dělá, je NodeMCU.
NodeMCU lze naprogramovat pomocí Arduino IDE. Náčrt je velmi jednoduchý, dělá následující:
- připojuje se k WIFI
- udržuje spojení MQTT se serverem a opakuje připojení, pokud selže nebo je odpojeno
- poslouchá příchozí sériová data jako řadu celých čísel
- jakmile přijde celé číslo, odešle ho přes MQTT na konkrétní téma
Krok 3: Sestavte zařízení
Budeme používat prkénka a dráty, takže je to docela jednoduché, máme několik kroků:
- položte NodeMCU na prkénko
- připojte geigerovu trubici k geigerovu počítadlu (pozor na polaritu)
- VIN jde na geigerův čítač +
- GND Goest to Geiger Counter -
- NodeMCU D7 (pin 13) jde do geiger TX
- NodeMCU D8 (pin 15) jde do geiger RX
- napájení NodeMCU přes micro USB z počítače
Krok 4: Nahrajte kód
Budeme používat Arduino IDE a zajistíme, abychom měli nainstalovanou desku NodeMCU a nainstalovanou knihovnu Adafruit_MQTT.
1. Naklonujte úložiště github: https://github.com/danionescu0/arduino a zkopírujte skicu z projektů/HASSGeigerIntegration do svého umístění skicáře arduino
2. Otevřete Arduino IDE a nainstalujte NodeMCU
- přejděte na Soubor -> Předvolby, v adresách URL dalších správců desek přidejte https://arduino.esp8266.com/stable/package_esp8266com_index.json, pokud tam již něco máte, vložte před sebe koma a klikněte na ok
-z Nástroje -> Deska -> Správce desky zadejte „nodemcu“a vyberte položku esp8266 od komunity ESP8266 a stiskněte tlačítko Instalovat
3. Nainstalujte Adafruit_MQTT
-přejděte na Nástroje -> Spravovat knihovny -> vyhledejte „Adafruit_MQTT“a nainstalujte „knihovnu Arduino MQTT“
4. Připojte kabel USB k počítači a nakonfigurujte desku:
-přejděte na Nástroje -> Deska -> vyberte NodeMcu 1.0
-Nástroje -> Port -> váš USB port
- ostatní nastavení ponechte beze změny
4. V náčrtu změňte své přihlašovací údaje WIFI tak, aby odpovídaly vašim:
#define STASSID "ssid" // Nahraďte svým WIFI SSID
#define STAPSK "pass" // Nahradit heslem WIFI
5. Nahrajte skicu na svoji tabuli a po nahrání desku resetujte pomocí tlačítka
6. Otevřete sériový monitor, pokud vše proběhlo dobře, měli byste vidět nějaký výstup takto:
Bootování
IP adresa: 192.168.1.168 OTA povoleno Připojování k MQTT… MQTT připojeno! {"záření": 0,03}..
Krok 5: Konfigurace HomeAssistant
Budeme předpokládat, že máte rozjetého domácího asistenta. V mém systému mám HASSOS verze 3.12 na RaspberryPi. Pokud je vaše verze domácího asistenta příliš stará nebo velmi nová, některé funkce se mohou lišit. Tento tutoriál funguje určitě s verzí 3.12.
Pokud nemáte nainstalovaného Home Assistant, podívejte se na jeho oficiální instalační průvodce:
Před pokračováním v instalaci se ujistěte, že je NodeMCU zapojen a publikuje data.
Dobře, i zde budeme mít pro konfiguraci řadu kroků:
1. Nainstalujte si „souborový editor“, pokud jej nemáte v nabídce, zde je oficiální návod:
2. Upravte soubor "/config/configuration.yaml" a přidejte následující a uložte jej
- sekce mqtt, pokud ji ještě nemáte
mqtt:
broker: broker.hivemq.com objev: opravdový objev_předpona: ha
- sekce senzorů
senzor:
- platforma: mqtt name: "Radiation" state_topic: "ha/radiace" unit_of_measurement: 'uSv' unique_id: "radiační" value_template: "{{value_json.radiation}}"
3. Z Konfigurace -> Ovládací prvky serveru: stiskněte „Zkontrolovat konfiguraci“, zkontrolujte, zda konfigurační soubor yaml neobsahuje chyby, a poté stiskněte „restartovat“a počkejte, až se restartuje
4. Z Přehledu -> Nabídka v pravém horním rohu -> Konfigurovat uživatelské rozhraní -> stiskněte tlačítko + vpravo dole
5. Vyberte ze seznamu „senzor“-> v poli „entita“vyhledejte „senzor.radiace“, do pole názvu napište „Radiace“a klikněte na ok, mělo by to být hned na hlavní stránce
Krok 6: Konfigurace vlastního serveru MQTT [volitelně]
Pojďme trochu diskutovat o MQTT
"MQTT je přenosový protokol pro zasílání/zasílání zpráv klientského serveru." Je lehký, otevřený, jednoduchý a navržený tak, aby se snadno implementoval. Díky těmto vlastnostem je ideální pro použití v mnoha situacích, včetně omezených prostředí, jako je komunikace v kontextech Machine to Machine (M2M) a Internet of Things (IoT), kde je vyžadována malá stopa kódu a/nebo je omezena šířka pásma sítě.”
Citace z oficiální specifikace MQTT 3.1.1.
V zásadě tedy můžeme zveřejnit zprávu někde na jedné straně a na druhé straně můžeme tyto zprávy poslouchat a něco s daty dělat. Podpora MQTT „témata“, témata jsou řetězce, které broker používá k filtrování zpráv pro každého klienta, takže pokud zveřejníme zprávu na téma „/záření“, musí se posluchač přihlásit k odběru stejného tématu, aby získal zprávy, které odesíláme.
Zde je podrobný skvělý návod o MQTT:
Používání serveru volného úlu má několik nevýhod, jako například:
- každý, kdo poslouchá vaše téma, obdrží vaše zprávy
- pokud klesne nebo bude vyžadovat platbu později, nebudete ji moci použít (pokud nezaplatíte)
- pokud někdo, kdo publikuje zprávy na stejné téma, obdrží také jeho zprávy, může publikovat nekompatibilní zprávy a rozbít vaše HASS grafy
Pomocí soukromého serveru
Pokud nechcete používat veřejný bezplatný server, máte možnost soukromého serveru. Mosquitto MQTT nainstalujeme na server ubuntu / debian jako malinový pi nebo počítač.
Mosquitto je server, který implementuje protokol MQTT a je zdarma.
Chcete -li jej nainstalovat, přihlaste se na svůj raspnerry pi nebo jiný server založený na debianu a spusťte:
sudo apt aktualizace
sudo apt install -y mosquitto mosquitto -clients sudo systemctl enable mosquitto.service
Tím se aktualizuje úložiště, nainstaluje se moskytiérový server a klient a povolí se spuštění služby při spuštění
Chcete -li spustit ip serveru:
název hostitele -I
a vygeneruje něco jako:
192.168.1.52 172.17.0.1 172.18.0.1
Moje IP je tedy 192.168.1.52, v níže uvedených příkazech ji nahraďte svou vlastní IP
Server MQTT můžete vyzkoušet zveřejněním zprávy a jejím přijetím pomocí nástroje konzoly, protože pro tyto dva terminály musí být otevřen ten, který naslouchá zprávě, ten, který zprávu zveřejní.
Nejprve v terminálu spusťte tento příkaz a poslouchejte zprávu na téma „/some-topic“
mosquitto_sub -h 192.168.1.52 -t /some -topic
Otevřete jiný terminál a publikujte zprávu k tomuto tématu:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"vlhkost": 74,0}'
V prvním terminálu byste měli vidět vytištěné „{“vlhkost”: 74,0}.
Speciální pozornost:
- toto nastavení předpokládá, že HASS, Mosquitto a NodeMCU jsou připojeny ke stejné WIFI síti a neexistují žádná pravidla brány firewall a mohou volně komunikovat
-server Mosquitt MQTT nemá žádné uživatelské jméno/heslo, pokud chcete nastavit přihlašovací údaje, podívejte se na toto: https://www.steves-internet-guide.com/mqtt-username-password-example/ Také byste museli nakonfigurovat přihlašovací údaje v Home Assistant a v náčrtu arduino
Krok 7: OTA (Over the Air Updates) pro NodeMCU
Aktualizace přes vzduch znamená, že vývojovou desku lze bezdrátově propojit bez potřeby fyzického kabelu.
Arduino IDE podporuje tuto funkci pro řadu ESP8266 a některé další desky:
- vyžaduje počáteční blesk přes USB kabel
- vytváří virtuální port přes WIFI a je viditelný pouze z Arduino IDE
- nejsou k dispozici žádné informace o sériovém ladění
- podporuje ochranu pomocí hesla
Chcete -li povolit OTA v náčrtu ESP8266, nejprve zahrňte knihovnu:
#include "ArduinoOTA.h"
Také definujte tuto konstantu hesla skici:
#define SKETCHPASS "some_password"
V sekci nastavení přidejte tyto řádky:
while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Připojení se nezdařilo! Restartování …"); zpoždění (5000); ESP. Restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Typ řetězce; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Zahájit aktualizaci " + typ);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (průběh bez znaménka, celkový součet bez znaménka) {Serial.printf ("Průběh:%u %% / r", (průběh / (celkem / 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 ("Begin Failed");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Receive Failed ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ")}}}); ArduinoOTA.begin (); Serial.print ("IP adresa:"); Serial.println (WiFi.localIP ());
A v sekci smyčky přidejte tento řádek:
Rukojeť ArduinoOTA. ();
Po načtení počátečního kódu po spuštění desky byste měli vidět v Arduino IDE v sekci Nástroje-> Port dva typy portů:
Sériové porty: /dev /ttyUSB0 (například)
Síťové porty: esp8266-xxxxx na 192.168.1.xxx
Nyní můžete vybrat síťový port a nahrát vzdálené skici, budete vyzváni k zadání hesla skici (hesla, které jste definovali v konstantě výše)
Krok 8: Závěry, budoucí práce
Tento tutoriál lze snadno upravit tak, aby odesílal data o jiných typech senzorů:
- pokud je váš snímač přímo podporován NodeMCU prostřednictvím knihovny, stačí shromáždit data ze senzoru a přímo je poslat přes MQTT
- pokud knihovna senzorů nefunguje s NodeMCU, ale je pouze pro Arduino, nahrajte svůj kód do arduina, vygenerujte hodnotu přes sériovou linku a přečtěte ji v NodeMCU a stiskněte ji (stejně jako my s geigerovým čítačem)
Můžeme jej dokonce upravit tak, aby odesílal data z více senzorů takto:
- připojte senzory k NodeMCU
- data hlasování z každého senzoru
- pro každý ze senzorů publikovat data na jiné téma
- v HASS definujte více senzorů (jako jsme to udělali s geigerem), které budou poslouchat různá témata
Doporučuje:
Inteligentní otvírač garážových vrat DIY + integrace domácího asistenta: 5 kroků
Integrace inteligentních garážových vrat DIY + integrace domácího asistenta: Proměňte své normální garážová vrata chytře pomocí tohoto projektu DIY. Ukážu vám, jak jej sestavit a ovládat pomocí Home Assistant (přes MQTT) a mít schopnost dálkově otevírat a zavírat garážová vrata. Budu používat desku ESP8266 s názvem Wemos
DIY Smart Doorbell: kód, nastavení a integrace HA: 7 kroků (s obrázky)
DIY Smart Doorbell: Kód, nastavení a integrace HA: V tomto projektu vám ukážu, jak můžete svůj normální zvonek přeměnit na chytrý, aniž byste změnili některou ze současných funkcí nebo přestřihli kabely. Budu používat desku ESP8266 s názvem Wemos D1 mini. Novinka v ESP8266? Sledujte můj Úvod
Ovládání žaluzií pomocí ESP8266, integrace Google Home a Openhab a Webcontrol: 5 kroků (s obrázky)
Ovládání žaluzií S ESP8266, Google Home a Openhab Integration a Webcontrol: V tomto Instructable vám ukážu, jak jsem do svých žaluzií přidal automatizaci. Chtěl jsem mít možnost přidat a odebrat automatizaci, takže veškerá instalace je jednoduchá. Hlavní části jsou: krokový motor, krokový ovladač ovládaný bij ESP-01 převodovka a montáž
Integrace Raspberry Pi Linux Motion Google Photos: 5 kroků
Integrace Raspberry Pi Linux Motion Google Photos: Cílem je odesílat fotografie a videa vytvořená pomocí pohybem aktivované kamery připojené k Raspberry Pi a odesílat soubory do cloudu. Software „Motion“podporuje nahrávání na Disk Google prostřednictvím PyDrive. V tomto článku se „Motion“používá k nahrávání na Google P
Wifi ovládaný 12v LED pás pomocí Raspberry Pi s Taskerem, integrace Ifttt .: 15 kroků (s obrázky)
Wifi ovládaný 12v LED pásek využívající Raspberry Pi s integrací Tasker, Ifttt .: V tomto projektu vám ukážu, jak ovládat jednoduchý 12v analogový LED pásek přes wifi pomocí malinového pi. Pro tento projekt budete potřebovat: 1x Raspberry Pi (I používám Raspberry Pi 1 Model B+) 1x RGB 12v Le