Tartalomjegyzék:
- 1. lépés: Alkatrészek és eszközök
- 2. lépés: A munka elve
- Lépés: Szerelje össze az eszközt
- 4. lépés: Töltse fel a kódot
- 5. lépés: A HomeAssistant konfigurálása
- 6. lépés: Saját MQTT szerver konfigurálása [opcionális]
- 7. lépés: OTA (Over the Air Updates) a NodeMCU számára
- 8. lépés: Következtetések, jövőbeli munka
Videó: Az otthoni asszisztens Geiger számláló integrálása: 8 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
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
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
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
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:
Működő Geiger számláló W/ minimális alkatrészekkel: 4 lépés (képekkel)
Működő Geiger -számláló W/ minimális alkatrészek: Tudomásom szerint itt van a legegyszerűbben működő Geiger -számláló, amelyet felépíthet. Ez egy orosz gyártmányú SMB-20 Geiger csövet használ, amelyet egy nagyfeszültségű fokozó áramkör hajt meg, amelyet egy elektronikus légycsapótól raboltak ki. Felismeri a béta részecskéket és a gam
DIY Geiger számláló ESP8266 -tal és érintőképernyővel: 4 lépés (képekkel)
DIY Geiger számláló ESP8266 -tal és érintőképernyővel: FRISSÍTÉS: ÚJ ÉS JOBB VÁLTOZAT WIFI- ÉS EGYÉB TOVÁBBI FUNKCIÓKKAL túl ismerős kattintás nem
Arduino a vezetékes otthoni asszisztens hálózathoz: 5 lépés
Arduino a vezetékes otthoni asszisztens hálózathoz: A különféle Wifi -összetevők, mint például a különféle Sonoff, Tasmota és ESP8266, nagyon könnyen konfigurálhatók és használhatók, de a dolgok gyakran nem olyan egyszerűek, mint amilyennek látszanak. Ipari/üzleti környezetben a vezeték nélküli automatizálás nem olyan gyakori. A vezeték nélküli alkatrészek kevésbé megbízhatóak
Változtassa vezetékes ajtócsengőjét intelligens ajtócsengővé az otthoni asszisztens segítségével: 6 lépés
Változtassa vezetékes ajtócsengőjét intelligens ajtócsengővé az otthoni asszisztens segítségével: Alakítsa át a meglévő vezetékes ajtócsengőt intelligens csengővé. Értesítést kaphat telefonjára vagy párosíthatja a meglévő bejárati ajtókamerájával, hogy bármikor kaphasson fénykép- vagy videóriasztást, amikor valaki csenget az ajtón. További információ: fireflyelectronix.com/pro
Intelligens zene a hálószobában és a fürdőben a Raspberry Pi -vel - Multiroom, riasztás, gombvezérlés és otthoni automatizálás integrálása: 7 lépés
Intelligens zene a hálószobában és a fürdőben a Raspberry Pi segítségével - Integrált többszobás, riasztó, gombvezérlés és otthonautomatizálás: Ma két példát szeretnénk bemutatni, hogyan használhatja a Raspberry Pi -t a Max2Play szoftverrel az otthoni automatizáláshoz: a fürdőszobában és a hálószobában . Mindkét projekt hasonló abban a tekintetben, hogy a különböző forrásokból származó, kiváló minőségű zenét streamelni lehet