Kazalo:
- Korak: Deli in orodja
- 2. korak: Načelo dela
- 3. korak: Sestavite napravo
- 4. korak: Naložite kodo
- 5. korak: Konfigurirajte HomeAssistant
- 6. korak: Konfiguriranje lastnega strežnika MQTT [izbirno]
- 7. korak: OTA (Over the Air Updates) za NodeMCU
- 8. korak: Zaključki, prihodnje delo
Video: Integracija Geigerjevega števca za domačega pomočnika: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:03
V tej vadnici bom pokazal, kako lahko HASS (domači pomočnik) dodate senzorje po meri, natančneje gejgerov števec, vendar je postopek podoben tudi za druge senzorje.
Uporabljali bomo ploščo NodeMCU, geigerjev števec na osnovi arduina in že nameščenega domačega pomočnika.
Integracija bo temeljila na strežniku MQTT (javnem ali zasebnem) in s tem vas bom popeljal korak za korakom.
Če ne veste, kaj je domači pomočnik, obiščite njihovo stran https://www.home-assistant.io/. To je dobro znana platforma za avtomatizacijo doma, ki je zelo dobro vzdrževana in zelo prilagodljiva.
Spoznali boste:
- napredna konfiguracija za domačega pomočnika
- NodeMCU (razvojna plošča) in kako ga programirati z Arduino IDE
- OTA (brezžične posodobitve) z uporabo Arduino IDE za ploščo NodeMCU
- kako priključiti serijsko napravo na NodeMCU
- ročna namestitev strežnika MQTT na Linux (neobvezno)
Osnovne predpostavke:
- imate domačega pomočnika in deluje
- veste nekaj o elektroniki
- imate nameščen Arduino IDE
Korak: Deli in orodja
Deli:
1. Plošča NodeMCU
2. kruh
3. moški-moški in moško-ženski juper žice
3. kabel USB na mikro usb
4. arduino geigerjev števec s serijskim vmesnikom
(na Ebayu poiščite "arduino geiger couter")
5. radioaktivni material (po izbiri majhen preskusni vzorec)
Orodja:
1. Arduino IDE
2. Nameščen Home Assistant
2. korak: Načelo dela
Naš cilj je na HomeAssistatu (HASS) prikazati odčitke iz gejgerjevega števca. Na eni strani imamo strežnik HASS, ki deluje in nekje deluje, morda je to malina pi ali druga naprava, na drugi strani pa imamo geigerjev števec.
Geigerjev števec ima serijska vrata, ena od rešitev bo, da serijska vrata priključite neposredno na RaspberryPi, na katerem deluje HASS.
Nekaj razlogov, zakaj to morda ni dobro:
- tam ni fizičnega prostora
- imamo nekaj drugih naprav na serijskih vratih
- želimo pritrditi okoljski senzor, ki bi ga morali namestiti zunaj Geigerjevega števca
V redu, zato bomo raziskali drugo možnost vzpostavitve povezave prek WIFI:
HASS podpira branje senzorskih podatkov in prikaz tega strežnika prek strežnika MQTT, ki je povezava z majhno težo za majhne naprave. Ena naprava objavi sporočilo na "temo", druga posluša na to temo, da jo prejme. Tako bo HASS prisluhnil in potrebujemo nekaj, kar bo objavilo sporočilo.
Naš senzor se lahko pogovarja samo po serijski liniji, zato bomo uporabili ploščo, ki lahko bere serijsko linijo in se lahko poveže prek WIFI in se pogovarja s strežnikom MQTT. Poceni plošča, ki to počne, je NodeMCU.
NodeMCU je mogoče programirati z Arduino IDE. Skica je precej preprosta, naredi pa naslednje:
- poveže se z WIFI
- vzdržuje povezavo MQTT s strežnikom in znova vzpostavi povezavo, če ni uspela ali prekinjena
- posluša serijske vhodne podatke kot vrsto celih števil
- ko pride celo število, ga pošlje prek MQTT na določeno temo
3. korak: Sestavite napravo
Uporabljali bomo plošče in žice, zato je dokaj preprosto, imamo nekaj korakov:
- postavite NodeMCU na mizo
- Geigerjevo cev priključite na Geigerjev števec (pazite na polarnost)
- VIN gre na geigerjev števec +
- GND goest to geiger counter -
- NodeMCU D7 (pin 13) gre na Geiger TX
- NodeMCU D8 (pin 15) gre na geiger RX
- napajanje NodeMCU prek mikro USB iz računalnika
4. korak: Naložite kodo
Uporabljali bomo Arduino IDE in poskrbeli, da imamo nameščeno ploščo NodeMCU in knjižnico Adafruit_MQTT.
1. Klonirajte repozitorij github: https://github.com/danionescu0/arduino in kopirajte skico iz projektov/HASSGeigerIntegration na vašo lokacijo skicirk arduino
2. Odprite Arduino IDE in namestite NodeMCU
- pojdite na Datoteka -> Nastavitve, v URL -jih Dodatnih upraviteljev plošč dodajte https://arduino.esp8266.com/stable/package_esp8266com_index.json, če že imate kaj, postavite komo spredaj in kliknite V redu
-iz Orodja -> Plošča -> Upravitelj odbora vnesite "nodemcu" in izberite vnos esp8266 skupnosti ESP8266 ter pritisnite namestitev
3. Namestite Adafruit_MQTT
-pojdite na Orodja -> Upravljanje knjižnic -> poiščite »Adafruit_MQTT« in namestite »Knjižnico Arduino MQTT«
4. Priključite kabel USB v računalnik in konfigurirajte ploščo:
-pojdite na Orodja -> Plošča -> izberite NodeMcu 1.0
-Orodja -> Vrata -> vrata USB
- ostale nastavitve pustite nespremenjene
4. V skici spremenite poverilnice za WIFI tako, da ustrezajo vašim:
#define STASSID "ssid" // Zamenjajte z vašim WIDI SSID
#define STAPSK "pass" // Zamenjajte z geslom za WIFI
5. Naložite skico na svojo ploščo in po nalaganju ponastavite ploščo s tipke
6. Odprite serijski monitor, če je vse v redu, bi morali videti takšen izhod:
Zagon
Naslov IP: 192.168.1.168 OTA omogočeno Povezovanje z MQTT… MQTT Povezano! {"sevanje": 0,03}..
5. korak: Konfigurirajte HomeAssistant
Predvidevali bomo, da imate domačega pomočnika. V sistemu imam HASSOS različice 3.12 na RaspberryPi. Če je vaša različica domačega pomočnika prestara ali zelo nova, se lahko nekatere funkcije razlikujejo. Ta vadnica zagotovo deluje z različico 3.12.
Če nimate nameščenega domačega pomočnika, si oglejte njegov uradni vodnik za namestitev:
Preden nadaljujete z namestitvijo, se prepričajte, da je NodeMCU priključen in da objavlja podatke.
V redu, tukaj bomo imeli tudi nekaj korakov za konfiguracijo:
1. Namestite "urejevalnik datotek", če ga nimate v meniju, tukaj je uradna vadnica:
2. Uredite datoteko "/config/configuration.yaml" in dodajte to ter jo shranite
- razdelek mqtt, če ga še nimate
mqtt:
posrednik: broker.hivemq.com odkritje: pravo odkritje_preiskave: ha
- odsek senzorjev
senzor:
- platforma: ime mqtt: "sevanje" stanje_teme: "ha/sevanje" enota_mer_merenja: 'uSv' edinstven_id: "sevanje" vrednost_predloga: "{{value_json.radiation}}"
3. V konfiguraciji -> Nadzor strežnika: pritisnite "Preveri konfiguracijo", preverite, ali je v konfiguracijski datoteki yaml napake, nato pritisnite "znova zaženi" in počakajte, da se znova zažene
4. V razdelku Pregled -> zgornji desni kotni meni -> Konfiguriraj uporabniški vmesnik -> pritisnite gumb + v spodnjem desnem kotu
5. S seznama izberite "sensor" -> v polju "entity" poiščite "sensor.radiation", v polje z imenom napišite "Radiation" in kliknite v redu, zdaj bi moralo biti na glavni strani
6. korak: Konfiguriranje lastnega strežnika MQTT [izbirno]
Pogovorimo se malo o MQTT
MQTT je protokol za prenos sporočil za objavo/naročanje strežnika odjemalcev. Je lahek, odprt, preprost in zasnovan tako, da ga je enostavno izvajati. Zaradi teh lastnosti je idealen za uporabo v številnih situacijah, vključno z omejenimi okolji, na primer za komunikacijo v kontekstu med stroji (M2M) in internetom stvari (IoT), kjer je potreben majhen odtis kode in/ali je pasovna širina omrežja na prvem mestu.”
Citiranje iz uradne specifikacije MQTT 3.1.1.
Tako lahko v bistvu objavimo sporočilo nekje na eni strani, na drugi strani pa lahko poslušamo ta sporočila in naredimo nekaj s podatki. MQTT podpirajo "teme", teme so nizovi, ki jih posrednik uporablja za filtriranje sporočil za vsako stranko, zato se mora poslušalec naročiti na isto temo, če želi prejeti sporočila, ki jih pošiljamo.
Tukaj je podroben odličen vodič o MQTT:
Uporaba brezplačnega strežnika za panj ima nekaj pomanjkljivosti, kot so:
- vsak, ki posluša vašo temo, bo prejel vaša sporočila
- če se zniža ali pozneje zahteva plačilo, ga ne boste mogli uporabiti (razen če plačate)
- če kdo, ki objavi sporočila na isto temo, prejmete tudi njihova sporočila, lahko objavi nezdružljiva sporočila in razbije vaše grafikone HASS
Uporaba zasebnega strežnika
Če ne želite uporabljati javnega brezplačnega strežnika, imate možnost zasebnega strežnika. Mosquitto MQTT bomo namestili na strežnik ubuntu / debian, kot je malina pi ali računalnik.
Mosquitto je strežnik, ki uporablja protokol MQTT in je brezplačen.
Če ga želite namestiti, se prijavite v svoj raspnerry pi ali drug strežnik, ki temelji na debianu, in zaženite:
sudo apt posodobitev
sudo apt install -y mosquitto mosquitto -clients sudo systemctl enable mosquitto.service
To bo posodobilo repozitorij, namestilo strežnik in odjemalca Mosquiito in omogočilo storitev, ki se bo izvajala ob zagonu
Če želite ip strežnika izvesti:
ime gostitelja -I
in bo prikazal nekaj takega:
192.168.1.52 172.17.0.1 172.18.0.1
Moj ip je torej 192.168.1.52, v spodnjih ukazih ga zamenjajte z lastnim
Strežnik MQTT lahko preizkusite tako, da objavite sporočilo in ga sprejmete s konzolnim orodjem, za ta dva terminala morate odpreti enega, ki posluša sporočilo, enega, ki bo sporočilo objavil.
Najprej v terminalu zaženite ta ukaz in poslušajte sporočilo o "/some-topic"
mosquitto_sub -h 192.168.1.52 -t /nekaj tem
Odprite drug terminal in objavite sporočilo na to temo:
mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"vlažnost": 74.0}'
V prvem terminalu bi morali natisniti "{" vlažnost ": 74.0}".
Posebna pozornost:
- ta nastavitev predvideva, da so HASS, Mosquitto in NodeMCU povezani v isto omrežje WIFI in da ni pravil za požarni zid in da lahko prosto komunicirajo
-strežnik Mosquitt MQTT nima uporabniškega imena/gesla. Če želite nastaviti poverilnice, preverite to: https://www.steves-internet-guide.com/mqtt-username-password-example/ Prav tako bi morali konfigurirati poverilnice v domačem pomočniku in skici arduino
7. korak: OTA (Over the Air Updates) za NodeMCU
Brezžične posodobitve pomenijo, da lahko razvojno ploščo brezžično utripate brez potrebe po fizičnem kablu.
Arduino IDE podpira to funkcionalnost za serijo ESP8266 in nekatere druge plošče:
- zahteva začetno bliskavico prek kabla USB
- ustvari navidezna vrata prek WIFI in so vidna samo iz Arduino IDE
- ni na voljo podatkov o odpravljanju napak v seriji
- podpira zaščito z geslom
Če želite omogočiti OTA v skici ESP8266, najprej vključite knjižnico:
#include "ArduinoOTA.h"
Določite tudi to konstantno geslo za skico:
#define SKETCHPASS "some_password"
V razdelku za nastavitev dodajte te vrstice:
medtem ko (WiFi.waitForConnectResult ()! = WL_CONNECTED) {
Serial.println ("Povezava ni uspela! Ponovni zagon …"); zamuda (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Vrsta niza; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "datotečni sistem";} Serial.println ("Začni posodabljanje " + tip);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA. ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} else if (error == OTA_BEGIN_ERROR) {Serial.println ("Začetek ni uspel");} drugače če (napaka == OTA_CONNECT_ERROR) {Serial.println ("Povezava ni uspela");} 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 naslov:"); Serial.println (WiFi.localIP ());
In v razdelku zanke dodajte to vrstico:
ArduinoOTA.handle ();
Po prvem nalaganju kode po zagonu plošče bi morali v Arduino IDE v razdelku Orodja-> Vrata videti dve vrsti vrat:
Zaporedna vrata: /dev /ttyUSB0 (na primer)
Omrežna vrata: esp8266-xxxxx na 192.168.1.xxx
Zdaj lahko izberete omrežna vrata in naložite daljinski upravljalnik skice, pozvani boste k vnosu gesla za skico (tistega, ki ste ga definirali v zgornji konstanti)
8. korak: Zaključki, prihodnje delo
To vadnico lahko preprosto spremenite za pošiljanje podatkov o drugih vrstah senzorjev:
- če NodeMCU neposredno podpira vaš senzor prek knjižnice, samo združite podatke s senzorja in jih neposredno potisnite skozi MQTT
- če knjižnica senzorjev ne deluje z NodeMCU, ampak je samo za Arduino, nato naložite svojo kodo v arduino, vrednost vnesite skozi serijsko vrstico in jo preberite v NodeMCU ter jo potisnite (tako kot smo to storili z gejgerjevim števcem)
Lahko ga celo spremenimo za pošiljanje podatkov iz več senzorjev, na primer:
- povežite svoje senzorje z NodeMCU
- podatki ankete za vsak senzor
- za vsak senzor objavite podatke na drugo temo
- v sistemu HASS določite več senzorjev (kot smo to storili pri geigerju), ki bodo poslušali različne teme
Priporočena:
Samodejno odpiranje garažnih vrat + integracija domačega pomočnika: 5 korakov
Samodejno odpiranje garažnih vrat + integracija domačega pomočnika: S tem projektom »naredi sam« pametno obrnite običajna garažna vrata. Pokazal vam bom, kako ga zgraditi in nadzorovati s pomočjo domačega pomočnika (prek MQTT) in imeti možnost daljinskega odpiranja in zapiranja garažnih vrat. Uporabil bom ploščo ESP8266, imenovano Wemos
Začnite z avtomatizacijo doma: Namestitev domačega pomočnika: 3 koraki
Kako začeti z avtomatizacijo doma: Namestitev domačega pomočnika: Zdaj bomo začeli serijo avtomatizacije doma, kjer bomo ustvarili pameten dom, ki nam bo omogočal nadzor nad stvarmi, kot so luči, zvočniki, senzorji in tako naprej z uporabo osrednjega vozlišča skupaj z glasovni pomočnik. V tem prispevku se bomo naučili, kako
Arduino za žično omrežje domačega pomočnika: 5 korakov
Arduino za žično omrežje za domačega pomočnika: komponente Wifi, kot so različni Sonoff, Tasmota in ESP8266, so zelo enostavne za konfiguracijo in uporabo, vendar stvari pogosto niso enostavne, kot se zdijo. V industrijskih/poslovnih okoljih brezžična avtomatizacija ni tako pogosta. Brezžične komponente so manj zanesljive
Popravilo Geigerjevega pulta DIY: 9 korakov (s slikami)
Popravilo DIEG -ovega Geigerjevega števca: Ta DIEG -ov Geigerjev števec sem naročil na spletu. Prišel je pravočasno, vendar je bil poškodovan, držala varovalk so zdrobljena, cev J305 Geiger Muller pa uničena. To je bil problem, saj sem svoje točke pri prejšnjih nakupih uporabil pri tem
Nadzor domačega pomočnika z samodejnim glasom: 4 koraki
Nadzor domačega pomočnika z Autovoice: ta dodatek uporabljam s hass.iohttps: //github.com/notoriousbdg/hassio-addons