Sisällysluettelo:

Home Assistant Geiger -laskurin integrointi: 8 vaihetta
Home Assistant Geiger -laskurin integrointi: 8 vaihetta

Video: Home Assistant Geiger -laskurin integrointi: 8 vaihetta

Video: Home Assistant Geiger -laskurin integrointi: 8 vaihetta
Video: Home assistant geiger counter integration 2024, Kesäkuu
Anonim
Image
Image
Työn periaate
Työn periaate

Tässä opetusohjelmassa aion näyttää, kuinka voit lisätä mukautettuja antureita HASSiin (kotiassistentti) tarkemmin geigerilaskuriin, mutta prosessi on samanlainen myös muille antureille.

Käytämme NodeMCU -korttia, arduino -pohjaista geiger -laskuria ja jo asennettua kodin avustajaa.

Integraatio perustuu MQTT -palvelimeen (julkinen tai yksityinen), ja aion opastaa sinua askel askeleelta.

Jos et tiedä, mikä on koti-avustaja, käy heidän sivulla https://www.home-assistant.io/. Se on tunnettu kodin automaatioalusta, joka on erittäin hyvin hoidettu ja erittäin muokattavissa.

Opit seuraavista asioista:

- Home Assistantin lisäasetukset

- NodeMCU (kehityskortti) ja sen ohjelmointi Arduino IDE: n avulla

- OTA (langattomat päivitykset) käyttämällä Arduino IDE: tä NodeMCU -kortille

- kuinka sarjalaite kytketään NodeMCU -laitteeseen

- MQTT -palvelimen asentaminen manuaalisesti Linuxiin (valinnainen)

Perusoletukset:

- sinulla on Home Assistant käynnissä

- tiedät vähän elektroniikasta

- sinulla on Arduino IDE asennettuna

Vaihe 1: Osat ja työkalut

Osat:

1. NodeMCU -kortti

2. leipäjuusto

3. uros-uros ja uros-naaras juper-johdot

3. usb - micro usb -kaapeli

4. arduino geiger -laskuri sarjaliitännällä

(etsi Ebaysta "arduino geiger couter")

5. radioaktiivinen materiaali (valinnainen pieni testinäyte)

Työkalut:

1. Arduino IDE

2. Home Assistant asennettu

Vaihe 2: Työn periaate

Tavoitteenamme on näyttää HomeAssistatissa (HASS) lukemat geigerilaskurista. Toisella puolella meillä on HASS -palvelin käynnissä jossain, se voi olla vadelmapi tai muu laite, ja toisella puolella meillä on geiger -laskuri.

Geigerilaskurissa on sarjaportti, yksi ratkaisu on liittää sarjaportti suoraan RaspberryPi -laitteeseen, jossa HASS toimii.

Joitakin syitä, miksi se ei ehkä ole hyvä idea:

- Siellä ei ole fyysistä tilaa

- Meillä on sarjaportissa jokin muu laite

- Haluamme kiinnittää ympäristöanturin, joka tulisi sijoittaa ulkopuolelle geigerilaskurin sijaan

Ok, joten aiomme tutkia toista mahdollisuutta muodostaa yhteys WIFI: n kautta:

HASS tukee anturitietojen lukemista ja sen näyttämistä, että MQTT -palvelimen kautta tämäntyyppinen palvelin on kevytpainoinen yhteys pienille laitteille. Yksi laite julkaisee viestin "aiheesta", toinen kuuntelee kyseistä aihetta vastaanottaakseen viestin. Joten HASS kuuntelee, ja tarvitsemme jotain, joka julkaisee viestin.

Anturimme osaa puhua vain sarjaliitännän kautta, joten käytämme levyä, joka voi lukea sarjalinjaa ja joka voi muodostaa yhteyden WIFI: n kautta ja puhua MQTT -palvelimelle. Halpa levy, joka tekee tämän, on NodeMCU.

NodeMCU voidaan ohjelmoida Arduino IDE: llä. Luonnos on melko yksinkertainen, se tekee seuraavan:

- muodostaa yhteyden WIFI -verkkoon

- ylläpitää MQTT -yhteyttä palvelimeen ja yrittää uudelleen yhteyttä, jos se epäonnistuu tai katkeaa

- kuuntelee saapuvaa sarjatietoa kokonaislukuna

- Kun kokonaisluku saapuu, se lähettää sen MQTT: n kautta tiettyyn aiheeseen

Vaihe 3: Kokoa laite

Kokoa laite
Kokoa laite

Käytämme leipälevyjä ja johtoja, joten se on melko yksinkertaista, meillä on muutama vaihe:

- aseta NodeMCU leipälevylle

- liitä geiger -putki geiger -laskuriin (varo napaisuutta)

- VIN menee geiger -laskuriin +

- GND goest to geiger counter -

- NodeMCU D7 (nasta 13) menee geiger TX: lle

- NodeMCU D8 (nasta 15) menee geiger RX: lle

- Virta NodeMCU: lle tietokoneen mikro -USB: n kautta

Vaihe 4: Lataa koodi

Lataa koodi
Lataa koodi
Lataa koodi
Lataa koodi
Lataa koodi
Lataa koodi
Lataa koodi
Lataa koodi

Käytämme Arduino IDE: tä ja varmistamme, että meillä on asennettu NodeMCU -kortti ja Adafruit_MQTT -kirjasto.

1. Kloonaa github -arkisto: https://github.com/danionescu0/arduino ja kopioi luonnos projekteista/HASSGeigerIntegration arduino -luonnoskirjaasi

2. Avaa Arduino IDE ja asenna NodeMCU

- siirry kohtaan Tiedosto -> Asetukset, lisää taulujen hallinnan URL -osoitteet lisää https://arduino.esp8266.com/stable/package_esp8266com_index.json, jos sinulla on jo jotain, laita kooma eteen ja napsauta ok

-valitse Työkalut -> Hallitus -> Hallintopäällikkö kirjoita "nodemcu" ja valitse ESP8266 Communityn merkintä esp8266 ja paina asennusta

3. Asenna Adafruit_MQTT

-siirry kohtaan Työkalut -> Hallitse kirjastoja -> etsi "Adafruit_MQTT" ja asenna "Arduino MQTT -kirjasto"

4. Liitä USB -kaapeli tietokoneeseen ja määritä kortti:

-Siirry Työkalut -> Hallitus -> valitse NodeMcu 1.0

-Työkalut -> Portti -> USB -portti

- jätä muut asetukset muuttamatta

4. Muuta luonnoksessa WIFI -tunnuksesi vastaamaan omiasi:

#define STASSID "ssid" // Korvaa WIFI -SSID -tunnuksellasi

#define STAPSK "pass" // Korvaa WIFI -salasanallasi

5. Lataa luonnos taulullesi ja nollaa levy lataamisen jälkeen painikkeesta

6. Avaa sarjamonitori, jos kaikki on mennyt hyvin, sinun pitäisi nähdä seuraavanlainen ulostulo:

Käynnistys

IP -osoite: 192.168.1.168 OTA käytössä Yhdistetään MQTT: hen… MQTT Connected! {"säteily": 0,03}..

Vaihe 5: Määritä HomeAssistant

Määritä HomeAssistant
Määritä HomeAssistant
Määritä HomeAssistant
Määritä HomeAssistant

Oletamme, että sinulla on koti -avustaja käynnissä. Järjestelmässäni on RaspberryPi -laitteessa HASSOS -versio 3.12. Jos kotiapurin versio on liian vanha tai hyvin uusi, jotkin ominaisuudet voivat poiketa toisistaan. Tämä opetusohjelma toimii varmasti 3.12 -version kanssa.

Jos kotiapuria ei ole asennettu, tutustu heidän viralliseen asennusoppaaseen:

Ennen kuin aloitat asennuksen, varmista, että NodeMCU on kytketty ja että se julkaisee tietoja.

Ok, meillä on myös useita vaiheita täällä kokoonpanoon:

1. Asenna "tiedostoeditori", jos sinulla ei ole sitä valikossa, tässä on virallinen opetusohjelma:

2. Muokkaa "/config/configuration.yaml" -tiedostoa ja lisää seuraava ja tallenna se

- mqtt -osio, jos sinulla ei vielä ole sitä

mqtt:

välittäjä: broker.hivemq.com löytö: tosi löytö_etuliite: ha

- anturiosa

sensori:

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

3. Valitse Asetukset -> Palvelimen ohjaimet: paina "Tarkista kokoonpano", tarkista yaml -määritystiedosto virheiden varalta ja paina sitten "Käynnistä uudelleen" ja odota, kunnes se käynnistyy uudelleen

4. Valitse Yleiskatsaus -> Oikean yläkulman valikko -> Määritä käyttöliittymä -> paina + -painiketta oikeasta alakulmasta

5. Valitse luettelosta "anturi" -> etsi "entiteetti" -kentästä "sensor.radiation", kirjoita nimikenttään "Säteily" ja napsauta ok, sen pitäisi olla pääsivulla nyt

Vaihe 6: Oman MQTT -palvelimen määrittäminen [valinnainen]

Keskustellaan hieman MQTT: stä

”MQTT on asiakaspalvelimen julkaisu-/tilausviestien siirtoprotokolla. Se on kevyt, avoin, yksinkertainen ja suunniteltu siten, että se on helppo toteuttaa. Nämä ominaisuudet tekevät siitä ihanteellisen käytettäväksi monissa tilanteissa, mukaan lukien rajoitetut ympäristöt, kuten kommunikointi koneelta koneelle (M2M) ja esineiden internet (IoT) -yhteyksissä, joissa tarvitaan pieni koodijalanjälki ja/tai verkon kaistanleveys.”

Lainaus virallisesta MQTT 3.1.1 -määrityksestä.

Joten periaatteessa voimme julkaista viestin jossain toisella puolella ja toisella puolella voimme kuunnella näitä viestejä ja tehdä jotain tiedoilla. MQTT tukee "aiheita", aiheita ovat merkkijonoja, joita välittäjä käyttää suodattamaan jokaisen asiakkaan viestit, joten jos julkaisemme viestin "/säteily" -aiheeseen, kuuntelijan on tilattava sama aihe saadakseen lähettämämme viestit.

Tässä on hieno opetusohjelma MQTT: stä yksityiskohtaisesti:

Ilmaisen pesän palvelimen käyttämisellä on joitain haittoja, kuten:

- kaikki, jotka kuuntelevat aihetta, saavat viestisi

- jos se laskee tai vaatii maksun myöhemmin, et voi käyttää sitä (ellet maksa)

- jos joku, joka julkaisee viestejä samasta aiheesta, saat myös heidän viestinsä, he voivat julkaista yhteensopimattomia viestejä ja rikkoa HASS -kaaviosi

Yksityisen palvelimen käyttö

Jos et halua käyttää julkista ilmaista palvelinta, sinulla on mahdollisuus käyttää yksityistä palvelinta. Asennamme Mosquitto MQTT: n ubuntu / debian -palvelimelle, kuten vadelmapi tai tietokone.

Mosquitto on palvelin, joka toteuttaa MQTT -protokollan ja se on ilmainen.

Asenna se kirjautumalla raspnerry pi: hen tai muuhun debian -pohjaiseen palvelimeen ja suorittamalla:

sudo apt päivitys

sudo apt install -y mosquitto mosquitto -clientit sudo systemctl ota käyttöön mosquitto.service

Tämä päivittää arkiston, asentaa hyttyspalvelimen ja asiakkaan ja mahdollistaa palvelun suorittamisen käynnistyksen yhteydessä

Palvelimen ip -suorituksen suorittaminen:

isäntänimi -I

ja se antaa jotain seuraavanlaista:

192.168.1.52 172.17.0.1 172.18.0.1

Joten minun ip on 192.168.1.52, korvaa alla olevat komennot omalla ip: lläsi

Voit testata MQTT -palvelinta julkaisemalla viestin ja vastaanottamalla sen konsolityökalulla. Tätä varten kaksi terminaalia on avattava, joka kuuntelee viestiä, toinen, joka julkaisee viestin.

Suorita ensin päätelaitteessa tämä komento kuunnellaksesi viestin aiheesta "/some-topic"

mosquitto_sub -h 192.168.1.52 -t /some -topic

Avaa toinen pääte ja julkaise viesti kyseiseen aiheeseen:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"kosteus": 74.0}'

Ensimmäisessä päätelaitteessa pitäisi näkyä "{" kosteus ": 74.0}" tulostettuna.

Erityistä huomiota:

- tämä asetus olettaa, että HASS, Mosquitto ja NodeMCU on kytketty samaan WIFI -verkkoon ja palomuurisääntöjä ei ole ja ne voivat kommunikoida vapaasti

-Mosquitt MQTT -palvelimella ei ole käyttäjänimeä/salasanaa, jos haluat määrittää kirjautumistiedot, tarkista tämä: https://www.steves-internet-guide.com/mqtt-username-password-example/ Sinun on myös määritettävä kirjautumistiedot Home Assistantissa ja arduino -luonnoksessa

Vaihe 7: OTA (Over the Air Updates) NodeMCU: lle

Over the air päivitykset tarkoittaa, että kehityskortti voidaan väläyttää langattomasti ilman fyysistä kaapelia.

Arduino IDE tukee tätä toimintoa ESP8266 -sarjassa ja joissakin muissa levyissä:

- vaatii ensimmäisen salaman USB -kaapelin kautta

- luo virtuaalisen portin WIFI: n yli ja se näkyy vain Arduino IDE: stä

- Sarjan virheenkorjaustietoja ei ole saatavilla

- tukee salasanasuojausta

Ota OTA käyttöön ESP8266 -luonnoksessa sisällyttämällä ensin kirjasto:

#sisältää "ArduinoOTA.h"

Määritä myös tämä luonnossalasanavakio:

#define SKETCHPASS "some_password"

Lisää asetusosioon seuraavat rivit:

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

Serial.println ("Yhteys epäonnistui! Käynnistetään uudelleen …"); viive (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Merkkijonotyyppi; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Aloita päivitys " + tyyppi);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nPää");}); ArduinoOTA.onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:%u %% / r", (progress / (yhteensä / 100)));}); 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 ("Begin Failed");} else if (error == OTA_CONNECT_ERROR) {Serial.println ("Connect Failed");} else if (error == OTA_RECEIVE_ERROR) {Serial.println (" Vastaanotto epäonnistui ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ");}}); ArduinoOTA.begin (); Serial.print ("IP -osoite:"); Serial.println (WiFi.localIP ());

Ja silmukkaosioon lisää tämä rivi:

ArduinoOTA.kahva ();

Ensimmäisen koodin lataamisen jälkeen levyn käynnistymisen jälkeen sinun pitäisi nähdä Arduino IDE: n Työkalut-> Portti-osassa kahdenlaisia portteja:

Sarjaportit: /dev /ttyUSB0 (esimerkiksi)

Verkkoportit: esp8266-xxxxx osoitteessa 192.168.1.xxx

Nyt voit valita verkkoportin ja ladata luonnoskaukosäätimen, ja sinulta kysytään luonnossalasanaa (salasana, jonka olet määrittänyt yllä olevassa vakiossa)

Vaihe 8: Johtopäätökset, tuleva työ

Tätä opetusohjelmaa voidaan helposti muokata lähettämään tietoja muun tyyppisistä antureista:

- jos NodeMCU tukee anturiasi kirjaston kautta, yhdistä vain anturin tiedot ja työnnä ne suoraan MQTT: n kautta

- jos anturikirjasto ei toimi NodeMCU: n kanssa, mutta se on tarkoitettu vain Arduinolle, lataa koodisi arduinoon, anna arvo sarjaliitännän kautta ja lue se NodeMCU: sta ja paina sitä (aivan kuten teimme geigerilaskurilla)

Voimme jopa muokata sitä lähettämään tietoja useista antureista, kuten:

- Liitä anturit NodeMCU -laitteeseen

- kyselytiedot jokaisesta anturista

- julkaise kunkin anturin tiedot eri aiheeseen

- määrittele HASSissa useita antureita (kuten teimme geigerin kanssa), jotka kuuntelevat eri aiheita

Suositeltava: