Obsah:

Integrace Geiger Counter Home Assistant: 8 kroků
Integrace Geiger Counter Home Assistant: 8 kroků

Video: Integrace Geiger Counter Home Assistant: 8 kroků

Video: Integrace Geiger Counter Home Assistant: 8 kroků
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Listopad
Anonim
Image
Image
Princip práce
Princip práce

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í

Sestavte zařízení
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

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ží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

Konfigurujte HomeAssistant
Konfigurujte HomeAssistant
Konfigurujte HomeAssistant
Konfigurujte 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: