Tartalomjegyzék:

Az otthoni asszisztens Geiger számláló integrálása: 8 lépés
Az otthoni asszisztens Geiger számláló integrálása: 8 lépés

Videó: Az otthoni asszisztens Geiger számláló integrálása: 8 lépés

Videó: Az otthoni asszisztens Geiger számláló integrálása: 8 lépés
Videó: Ошибки в сантехнике. Вводной узел в квартиру. 2024, Július
Anonim
Image
Image
A munka elve
A munka elve

Ebben az oktatóanyagban megmutatom, hogyan lehet egyéni érzékelőket hozzáadni a HASS -hoz (otthoni asszisztens), pontosabban egy geiger számlálóhoz, de a folyamat más érzékelők esetében is hasonló.

A NodeMCU kártyát, egy arduino alapú geiger számlálót és egy már telepített otthoni asszisztenst fogjuk használni.

Az integráció egy MQTT (nyilvános vagy privát) szerverre épül, és lépésről lépésre elvezetlek ehhez.

Ha nem tudja, mi az otthoni asszisztens, látogasson el a https://www.home-assistant.io/ oldalra. Ez egy jól ismert otthoni automatizálási platform, amely nagyon jól karbantartott és személyre szabható.

A következőkről fog tanulni:

- speciális konfiguráció a Home Assistant számára

- NodeMCU (fejlesztőtábla) és annak programozása az Arduino IDE segítségével

- OTA (az éteren keresztüli frissítések) az Arduino IDE használatával a NodeMCU táblához

- hogyan lehet soros eszközt csatlakoztatni a NodeMCU -hoz

- MQTT szerver manuális telepítése linuxra (opcionális)

Alapvető feltételezések:

- be van kapcsolva a Home Assistant

- tudsz egy kicsit az elektronikáról

- telepítve van az Arduino IDE

1. lépés: Alkatrészek és eszközök

Alkatrészek:

1. NodeMCU kártya

2. kenyérzsinór

3. férfi-férfi és férfi-nő juper vezetékek

3. usb - micro usb kábel

4. arduino geiger számláló soros interfésszel

(keressen az Ebay -en az "arduino geiger couter" kifejezésre)

5. radioaktív anyag (opcionális kis vizsgálati minta)

Eszközök:

1. Arduino IDE

2. Home Assistant telepítve

2. lépés: A munka elve

Célunk, hogy a HomeAssistat (HASS) oldalon megmutassuk a geiger számláló leolvasásait. Az egyik oldalon van egy HASS szerver, és valahol fut, lehet, hogy málna pi vagy más eszköz, a másik oldalon pedig a geiger számláló.

A geiger számláló soros porttal rendelkezik, az egyik megoldás az lesz, ha közvetlenül csatlakoztatja a soros portot a RaspberryPi -hez, amelyen a HASS fut.

Néhány ok, amiért nem biztos, hogy jó ötlet:

- ott nincs fizikai tér

- van egy másik eszközünk a soros porton

- környezeti érzékelőt szeretnénk felszerelni, amelyet a geiger számláló helyett kívül kell elhelyezni

Rendben, ezért megvizsgálunk egy másik lehetőséget a kapcsolat létrehozására WIFI -n keresztül:

A HASS támogatja az érzékelőadatok olvasását és annak megjelenítését, hogy egy MQTT szerver révén ez a fajta szerver egyszerű súlyú kapcsolat a kis eszközök számára, az egyik eszköz üzenetet tesz közzé egy "témában", a másik pedig hallgatja az adott témát, hogy megkapja az üzenetet. Tehát a HASS hallgatni fog, és szükségünk van valamire, ami közzéteszi az üzenetet.

Érzékelőnk csak a soros vonalon keresztül tud beszélni, ezért olyan táblát fogunk használni, amely képes olvasni a soros vonalat, és amely képes WIFI -n keresztül csatlakozni és beszélni az MQTT szerverrel. Egy olcsó tábla, amely ezt teszi, a NodeMCU.

A NodeMCU programozható Arduino IDE -vel. A vázlat nagyon egyszerű, a következőket teszi:

- csatlakozik a WIFI -hez

- fenntartja az MQTT kapcsolatot a szerverrel, és újra megpróbálja a kapcsolatot, ha sikertelen vagy megszakad

- a beérkező soros adatokat egész számok sorozataként hallgatja

- ha egy egész szám megérkezik, elküldi az MQTT -n keresztül egy adott témához

Lépés: Szerelje össze az eszközt

Szerelje össze a készüléket
Szerelje össze a készüléket

Kenyérpántokat és vezetékeket fogunk használni, így ez meglehetősen egyszerű, néhány lépést kell tennünk:

- tegye a NodeMCU -t a kenyértáblára

- csatlakoztassa a geiger csövet a geiger számlálóhoz (vigyázzon a polaritásra)

- A VIN a geiger számlálóhoz megy +

- GND goest a geiger számlálóhoz -

- A NodeMCU D7 (13. tű) a geiger TX -hez megy

- A NodeMCU D8 (15. láb) a geiger RX -hez megy

- táplálja a NodeMCU -t a számítógép mikro -USB -jén keresztül

4. lépés: Töltse fel a kódot

Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot
Töltse fel a kódot

Az Arduino IDE -t fogjuk használni, és gondoskodunk arról, hogy telepítve legyen a NodeMCU kártya és az Adafruit_MQTT könyvtár.

1. Klónozza a github adattárat: https://github.com/danionescu0/arduino, és másolja a vázlatot a projektekből/HASSGeigerIntegration az arduino vázlatfüzetébe

2. Nyissa meg az Arduino IDE -t, és telepítse a NodeMCU -t

- lépjen a Fájl -> Beállítások menüpontba, a További táblák kezelője URL -címekhez adja hozzá a https://arduino.esp8266.com/stable/package_esp8266com_index.json címet, ha már van valami, tegyen kómát elé, és kattintson az OK gombra

-az Eszközök -> Tábla -> Fórumkezelő típusból írja be a "nodemcu" parancsot, és válassza ki az ESP8266 Community ESP8266 bejegyzését, majd nyomja meg a telepítés gombot

3. Telepítse az Adafruit_MQTT programot

-lépjen az Eszközök -> Könyvtárak kezelése -> keresse meg az "Adafruit_MQTT" elemet, és telepítse az "Arduino MQTT könyvtár" -t

4. Csatlakoztassa az USB -kábelt a számítógéphez, és konfigurálja a kártyát:

-lépjen az Eszközök -> Tábla -> NodeMcu 1.0 menüpontra

-Eszközök -> Port -> az USB -port

- hagyja változatlanul a többi beállítást

4. A vázlatban módosítsa WIFI hitelesítő adatait, hogy azok megfeleljenek a sajátjának:

#define STASSID "ssid" // Cserélje ki WIFI SSID -jére

#define STAPSK "pass" // Cserélje ki WIFI jelszavával

5. Töltse fel a vázlatot a táblájára, és a feltöltés után állítsa vissza a táblát a gombbal

6. Nyissa meg a soros monitort, ha minden jól ment, akkor a következő kimenetet kell látnia:

Indítás

IP -cím: 192.168.1.168 OTA engedélyezve Csatlakozás az MQTT -hez… MQTT Connected! {"sugárzás": 0,03}..

5. lépés: A HomeAssistant konfigurálása

A HomeAssistant konfigurálása
A HomeAssistant konfigurálása
A HomeAssistant konfigurálása
A HomeAssistant konfigurálása

Feltételezzük, hogy az otthoni asszisztens be van kapcsolva. A rendszeren a RaspberryPi HASSOS 3.12 verziója van. Ha az otthoni asszisztens verziója túl régi vagy nagyon új, egyes funkciók eltérhetnek. Ez az oktatóanyag biztosan működik a 3.12 verzióval.

Ha nincs telepítve a Home Assistant, nézze meg a hivatalos telepítési útmutatót:

Mielőtt folytatná a telepítést, győződjön meg arról, hogy a NodeMCU csatlakoztatva van, és közzéteszi az adatokat.

Rendben, a konfiguráláshoz itt is több lépést kell végrehajtanunk:

1. Telepítse a "fájlszerkesztőt", ha nincs a menüben, itt a hivatalos oktatóanyag:

2. Szerkessze a "/config/configuration.yaml" fájlt, és adja hozzá a következőt, és mentse el

- az mqtt szekció, ha még nincs meg

mqtt:

bróker: broker.hivemq.com felfedezés: igaz felfedezés_előtag: ha

- az érzékelők rész

érzékelő:

- platform: mqtt name: "Radiation" state_topic: "ha/sugárzás" unit_of_measurement: 'uSv' unique_id: "sugárzás" value_template: "{{value_json.radiation}}"

3. A Konfiguráció -> Kiszolgáló vezérlők menüpontban: nyomja meg a "Konfiguráció ellenőrzése" gombot, ellenőrizze a yaml konfigurációs fájl hibáit, majd nyomja meg az "újraindítás" gombot, és várja meg, amíg újraindul

4. Az Áttekintés -> jobb felső sarok menü -> UI konfigurálása -> nyomja meg a + gombot a jobb alsó sarokban

5. Válassza ki az "érzékelőt" a listából -> az "entitás" mezőben keressen rá az "érzékelő.sugárzás" kifejezésre, a névmezőbe írja be a "Sugárzás" elemet, majd kattintson az OK gombra, most a főoldalon kell lennie.

6. lépés: Saját MQTT szerver konfigurálása [opcionális]

Beszéljünk egy kicsit az MQTT -ről

„Az MQTT az ügyfélszerver közzétételi/előfizetési üzenetküldési protokollja. Könnyű, nyitott, egyszerű és könnyen megvalósítható. Ezek a jellemzők ideálissá teszik számos helyzetben való használatra, beleértve a korlátozott környezeteket, például a gépek közötti kommunikációt a gépek között (M2M) és a tárgyak internete (IoT) környezetben, ahol kis kódlábnyom szükséges és/vagy a hálózati sávszélesség kiemelt.”

Idézet a hivatalos MQTT 3.1.1 specifikációból.

Tehát alapvetően közzétehetünk egy üzenetet valahol az egyik oldalon, a másik oldalon pedig hallgathatjuk ezeket az üzeneteket, és tehetünk valamit az adatokkal. Az MQTT támogatja a "témákat", a témák olyan karakterláncok, amelyeket a bróker az egyes ügyfelek üzeneteinek szűrésére használ, így ha üzenetet teszünk közzé a "/sugárzás" témában, a hallgatónak fel kell iratkoznia ugyanarra a témára, hogy megkapja az általunk küldött üzeneteket.

Itt található egy nagyszerű bemutató az MQTT-ről részletesen:

Az ingyenes kaptár szerver használata néhány hátrányt jelent, például:

- aki hallgatja a témáját, megkapja az üzeneteit

- ha lecsökken, vagy később fizetést igényel, akkor nem fogja tudni használni (kivéve, ha fizet)

- ha bárki, aki ugyanabban a témában tesz közzé üzeneteket, Ön is megkapja az üzeneteit, közzéteheti az összeférhetetlen üzeneteket, és megtörheti a HASS grafikonjait

Privát szerver használata

Ha nem szeretné használni a nyilvános ingyenes szervert, lehetősége van privát szerverre. Telepíteni fogjuk a Mosquitto MQTT -t egy ubuntu / debian szerverre, mint egy málna pi vagy számítógép.

A Mosquitto egy ingyenes szerver, amely megvalósítja az MQTT protokollt.

Telepítéséhez jelentkezzen be a raspnerry pi vagy más debian alapú kiszolgálóra, és futtassa:

sudo apt frissítés

sudo apt install -y mosquitto mosquitto -ügyfelek sudo systemctl engedélyezi a mosquitto.service szolgáltatást

Ez frissíti a lerakatot, telepíti a szúnyogkiszolgálót és az ügyfelet, és lehetővé teszi a szolgáltatás indítását

A szerver ip végrehajtásához:

hosztnév -Én

és valami ilyesmit ad ki:

192.168.1.52 172.17.0.1 172.18.0.1

Tehát az ip -m 192.168.1.52, az alábbi parancsokban cserélje le a saját ip -jére

Az MQTT szervert úgy tesztelheti, hogy közzétesz egy üzenetet, és fogadja azt a konzol eszközzel, ehhez két terminált kell megnyitni, amelyik hallgat egy üzenetet, és amely közzéteszi az üzenetet.

Először a terminálon futtassa ezt a parancsot, hogy meghallgassa a "/some-topic" témájú üzenetet

mosquitto_sub -h 192.168.1.52 -t /some -topic

Nyisson meg egy másik terminált, és tegyen közzé egy üzenetet a témához:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"páratartalom": 74.0}'

Az első terminálon a "{" páratartalom ": 74.0}" feliratot kell látni.

Speciális figyelem:

- ez a beállítás feltételezi, hogy a HASS, a Mosquitto és a NodeMCU ugyanahhoz a WIFI -hálózathoz kapcsolódik, és nincsenek tűzfalszabályok, és szabadon kommunikálhatnak

-a Mosquitt MQTT szerver nem rendelkezik felhasználónévvel/jelszóval, ha hitelesítő adatokat szeretne beállítani, ellenőrizze ezt: https://www.steves-internet-guide.com/mqtt-username-password-example/ Ezenkívül konfigurálnia kell a hitelesítő adatokat a Home Assistant alkalmazásban és az arduino vázlatban

7. lépés: OTA (Over the Air Updates) a NodeMCU számára

Az éteren keresztüli frissítések azt jelentik, hogy a fejlesztőkártya vezeték nélkül villoghat fizikai kábel nélkül.

Az Arduino IDE támogatja ezt a funkciót az ESP8266 sorozat és néhány más tábla esetén:

- kezdeti vaku szükséges az USB -kábelen keresztül

- létrehoz egy virtuális portot a WIFI -n, és csak az Arduino IDE -ből látható

- nem érhető el soros hibakeresési információ

- támogatja a jelszavas védelmet

Az OTA engedélyezéséhez az ESP8266 vázlatban először tartalmazza a könyvtárat:

#include "ArduinoOTA.h"

Határozza meg ezt a vázlatjelszó -konstansot is:

#define SKETCHPASS "some_password"

A beállítás szakaszban adja hozzá ezeket a sorokat:

while (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("A kapcsolat nem sikerült! Újraindítás …"); késleltetés (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Frissítés megkezdése " + típus);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nVége");}); ArduinoOTA.onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:%u %% / r", (progress / (összesen / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Sikertelen");} else if (error == 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 (" A fogadás sikertelen ");} else if (error == OTA_END_ERROR) {Serial.println (" Sikertelen befejezés ");}}); ArduinoOTA.begin (); Serial.print ("IP -cím:"); Serial.println (WiFi.localIP ());

És a hurok szakaszban adja hozzá ezt a sort:

ArduinoOTA.handle ();

A kezdeti kódfeltöltés után a tábla indítása után az Arduino IDE Eszközök-> Port szakaszában kétféle portot kell látnia:

Soros portok: /dev /ttyUSB0 (például)

Hálózati portok: esp8266-xxxxx, 192.168.1.xxx

Most kiválaszthatja a hálózati portot, és feltöltheti a vázlatos távirányítót, és meg kell adnia a vázlatjelszót (a fenti konstansban megadott jelszót)

8. lépés: Következtetések, jövőbeli munka

Ez az oktatóanyag könnyen módosítható, hogy adatokat küldjön más típusú érzékelőkről:

- ha az érzékelőt a NodeMCU közvetlenül támogatja egy könyvtáron keresztül, csak gyűjtse össze az érzékelő adatait, és közvetlenül nyomja át az MQTT -n

- ha az érzékelőkönyvtár nem működik a NodeMCU -val, de csak az Arduino számára, akkor töltse fel a kódot az arduino -ba, adja ki az értéket a soros vonalon keresztül, olvassa el a NodeMCU -ban és nyomja meg (ugyanúgy, mint a geiger számlálóval)

Akár azt is módosíthatjuk, hogy több érzékelőből küldjön adatokat, például:

- csatlakoztassa az érzékelőket a NodeMCU -hoz

- lekérdezési adatok minden érzékelőről

- az egyes érzékelők számára más témában kell közzétenni az adatokat

- a HASS -ban definiáljon több érzékelőt (mint a geigernél), amelyek különböző témákat hallgatnak

Ajánlott: