INHOUDSOPGAWE:

Tuisassistent Geiger -toonbankintegrasie: 8 stappe
Tuisassistent Geiger -toonbankintegrasie: 8 stappe

Video: Tuisassistent Geiger -toonbankintegrasie: 8 stappe

Video: Tuisassistent Geiger -toonbankintegrasie: 8 stappe
Video: Die Reise der Menschheit (1/3 ) | Ganze Folge Terra X 2024, Julie
Anonim
Image
Image
Werkbeginsel
Werkbeginsel

In hierdie tutoriaal gaan ek wys hoe u persoonlike sensors by HASS (huisassistent) meer spesifiek 'n geiger -toonbank kan voeg, maar die proses is ook dieselfde vir ander sensors.

Ons gebruik die NodeMCU -bord, 'n geiger -toonbank op arduino en 'n reeds geïnstalleerde huisassistent.

Die integrasie sal gebaseer wees op 'n MQTT -bediener (publiek of privaat) en ek sal u stap vir stap hiermee neem.

As u nie weet wat die huisassistent is nie, besoek dan hul webwerf https://www.home-assistant.io/. Dit is 'n bekende tuisautomatiseringsplatform wat baie goed onderhou en baie aanpasbaar is.

U sal leer oor:

- gevorderde konfigurasie vir Home Assistant

- NodeMCU (ontwikkelingsbord) en hoe om dit te programmeer met die Arduino IDE

- OTA (via die lug -opdaterings) met behulp van die Arduino IDE vir die NodeMCU -bord

- hoe om 'n seriële toestel aan die NodeMCU te koppel

- handmatig die installering van 'n MQTT -bediener op Linux (opsioneel)

Basiese aannames:

- u het Home Assistant aan die gang

- jy weet 'n bietjie oor elektronika

- u het Arduino IDE geïnstalleer

Stap 1: Onderdele en gereedskap

Dele:

1. NodeMCU bord

2. broodbord

3. mannetjie-mannetjie en mannetjie-wyfie juperdrade

3. usb na mikro usb kabel

4. arduino geiger toonbank met seriële koppelvlak

(soek Ebay vir "arduino geiger couter")

5. radioaktiewe materiaal (opsioneel 'n klein toetsmonster)

Gereedskap:

1. Arduino IDE

2. Home Assistant geïnstalleer

Stap 2: Beginsel van werk

Ons doel is om die lesings van die geiger -toonbank op HomeAssistat (HASS) te wys. Aan die een kant het ons 'n HASS -bediener iewers aan die gang, dit kan 'n framboospi of 'n ander toestel wees, en aan die ander kant het ons 'n geiger -toonbank.

Die geiger -toonbank het 'n seriële poort; een oplossing is om die seriële poort direk aan die RaspberryPi te koppel waarop die HASS werk.

Enkele redes waarom dit nie 'n goeie idee is nie:

- daar is geen fisiese ruimte nie

- ons het 'n ander toestel op die seriële poort

- ons wil 'n omgewingsensor aanbring wat buite in plaas van die geiger -toonbank geplaas moet word

Ok, ons gaan 'n ander moontlikheid ondersoek om die verbinding via WIFI te maak:

Die HASS ondersteun die lees van sensordata en wys dat hierdie soort bediener deur 'n MQTT -bediener 'n ligte gewigverbinding is vir klein toestelle, een toestel publiseer 'n boodskap oor 'n 'onderwerp', die ander luister na die onderwerp om die boodskap te ontvang. Dus HASS sal luister, en ons het iets nodig wat die boodskap sal publiseer.

Ons sensor weet net om oor die reekslyn te praat, so ons sal 'n bord gebruik wat 'n reëllyn kan lees en wat via WIFI kan skakel en met die MQTT -bediener kan praat. Die NodeMCU is 'n goedkoop bord wat dit doen.

Die NodeMCU kan met Arduino IDE geprogrammeer word. Die skets is redelik eenvoudig, dit doen die volgende:

- maak verbinding met WIFI

- hou 'n MQTT -verbinding met die bediener en probeer die verbinding weer as dit misluk of ontkoppel word

- luister na reeks inkomende data as 'n reeks heelgetalle

- sodra 'n heelgetal kom, stuur dit dit deur MQTT na 'n spesifieke onderwerp

Stap 3: Monteer die toestel

Monteer die toestel
Monteer die toestel

Ons gebruik broodborde en drade, so dit is redelik eenvoudig; ons het 'n paar stappe:

- plaas die NodeMCU op die broodbord

- koppel die geigerbuis aan die geiger -toonbank (pas op vir polariteit)

- VIN gaan na geiger counter +

- GND gaan na geiger counter -

- NodeMCU D7 (pen 13) gaan na geiger TX

- NodeMCU D8 (pen 15) gaan na geiger RX

- voed NodeMCU via die mikro -USB vanaf die rekenaar

Stap 4: Laai die kode op

Laai die kode op
Laai die kode op
Laai die kode op
Laai die kode op
Laai die kode op
Laai die kode op
Laai die kode op
Laai die kode op

Ons gaan Arduino IDE gebruik en ons sal seker maak dat die NodeMCU -bord geïnstalleer is en die Adafruit_MQTT -biblioteek geïnstalleer is.

1. Kloon die github -bewaarplek: https://github.com/danionescu0/arduino en kopieer die skets van projekte/HASSGeigerIntegration na u arduino -sketsboeklokasie

2. Maak Arduino IDE oop en installeer NodeMCU

- gaan na Lêer -> Voorkeure, voeg by die URL's vir addisionele rade bestuurder https://arduino.esp8266.com/stable/package_esp8266com_index.json as u reeds iets daar het, plaas 'n koma voor en klik op ok

-vanaf Tools -> Board -> Board Manager, tik "nodemcu" en kies die inskrywing esp8266 deur ESP8266 Community, en druk installeer

3. Installeer Adafruit_MQTT

-gaan na Tools -> Bestuur biblioteke -> soek "Adafruit_MQTT" en installeer "Arduino MQTT library"

4. Koppel die USB -kabel in u rekenaar en stel die bord op:

-gaan na Tools -> Board -> kies NodeMcu 1.0

-Gereedskap -> Poort -> u USB -poort

- laat die ander instellings onveranderd

4. In die skets verander u WIFI -geloofsbriewe sodat dit by u eie pas:

#define STASSID "ssid" // Vervang deur u WIFI SSID

#define STAPSK "pas" // Vervang deur u WIFI -wagwoord

5. Laai die skets op u bord op en herstel na die oplaai die bord van die knoppie

6. Maak die seriële monitor oop. As alles goed afgeloop het, moet u 'n uitset soos volg sien:

Oplaai

IP -adres: 192.168.1.168 OTA aangeskakel Koppel aan MQTT … MQTT gekoppel! {"bestraling": 0.03}..

Stap 5: Stel HomeAssistant op

Stel HomeAssistant op
Stel HomeAssistant op
Stel HomeAssistant op
Stel HomeAssistant op

Ons neem aan dat u 'n huisassistent aan die gang het. Op my stelsel het ek HASSOS weergawe 3.12 op 'n RaspberryPi. As u weergawe van die huisassistent te oud of baie nuut is, kan sommige funksies verskil. Hierdie handleiding werk beslis met die weergawe 3.12.

As u nie Home Assistant geïnstalleer het nie, kyk dan na hul amptelike installasiegids:

Maak seker dat die NodeMCU ingeprop is en dat dit data publiseer voordat u met die installasie voortgaan.

Ok, ons het ook 'n reeks stappe hier vir die opset:

1. Installeer 'file editor' as u dit nie in die spyskaart het nie, hier is die amptelike handleiding:

2. Wysig '/config/configuration.yaml' lêer en voeg die volgende by en stoor dit

- die mqtt -afdeling as u dit nog nie het nie

mqtt:

makelaar: broker.hivemq.com ontdekking: ware ontdekking_voorvoegsel: ha

- die sensors afdeling

sensor:

- platform: mqtt naam: "Straling" state_topic: "ha/straling" eenheid_van_meting: 'uSv' uniek_id: "straling" waarde_templaat: "{{waarde_json.straling}}"

3. Van Konfigurasie -> bedienerkontroles: druk op "Kontroleer konfigurasie", kyk na die yaml -konfigurasielêer vir foute, en druk dan "herbegin" en wag totdat dit weer begin is

4. Vanuit Oorsig -> Keuselys regs bo -> UI instel -> druk die + -knoppie regs onder

5. Kies "sensor" uit die lys -> in die veld "entiteit" soek na "sensor.radiation", skryf in die naamveld "Straling" en klik op ok, dit behoort nou op die hoofblad te wees

Stap 6: Stel u eie MQTT -bediener op [opsioneel]

Kom ons bespreek 'n bietjie oor MQTT

“MQTT is 'n kliëntbediener se publiseer/teken -boodskapvervoerprotokol in. Dit is liggewig, oop, eenvoudig en so ontwerp dat dit maklik is om te implementeer. Hierdie eienskappe maak dit ideaal vir gebruik in baie situasies, insluitend beperkte omgewings, soos vir kommunikasie in masjien tot masjien (M2M) en Internet of Things (IoT) kontekste waar 'n klein kodevoetspoor benodig word en/of netwerkbandbreedte teen 'n premie is.”

Aanhaling uit die amptelike MQTT 3.1.1 spesifikasie.

So basies kan ons 'n boodskap iewers aan die een kant publiseer, en aan die ander kant kan ons na die boodskappe luister en iets met die data doen. MQTT ondersteun 'onderwerpe', onderwerpe is stringe wat die makelaar gebruik om boodskappe vir elke kliënt te filter, dus as ons 'n boodskap na '/stralings' -onderwerp publiseer, moet 'n luisteraar op dieselfde onderwerp inteken om die boodskappe wat ons stuur, te kry.

Hier is 'n wonderlike handleiding oor MQTT in detail:

Met die gratis korfbediener is daar 'n paar nadele, soos:

- almal wat na u onderwerp luister, sal u boodskappe ontvang

- as dit afneem of later betaal moet word, kan u dit nie gebruik nie (tensy u betaal)

- as iemand wat boodskappe oor dieselfde onderwerp publiseer, u ook hul boodskappe sal ontvang, kan hy onversoenbare boodskappe publiseer en u HASS -grafieke breek

Gebruik 'n privaat bediener

As u nie die openbare gratis bediener wil gebruik nie, kan u 'n privaat bediener gebruik. Ons gaan die Mosquitto MQTT op 'n ubuntu / debian -bediener installeer, soos 'n framboospi of 'n rekenaar.

Mosquitto is 'n bediener wat MQTT -protokol implementeer en dit is gratis.

Om dit te installeer, meld u aan by u raspnerry pi of 'n ander Debian -bediener en voer uit:

sudo apt -opdatering

sudo apt installeer -y mosquitto mosquitto -clients sudo systemctl aktiveer mosquitto.service

Dit sal die bewaarplek opdateer, die muskietbediener en die kliënt installeer en dit 'n diens moontlik maak om by die aanvang te begin

Om die bediener -ip uit te voer:

gasheernaam -I

en dit sal iets oplewer soos:

192.168.1.52 172.17.0.1 172.18.0.1

My IP is dus 192.168.1.52, in die onderstaande opdragte vervang dit met u eie ip

U kan die MQTT -bediener toets deur 'n boodskap te publiseer en dit met die konsole -instrument te ontvang, want hierdie twee terminale moet oopgemaak word, een wat na 'n boodskap luister, een wat die boodskap sal publiseer.

Begin eers in 'n terminale hierdie opdrag om te luister na 'n boodskap oor "/some-topic"

mosquitto_sub -h 192.168.1.52 -t /some -topic

Maak 'n ander terminale oop en publiseer 'n boodskap oor die onderwerp:

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

In die eerste terminaal moet u '{"humiditeit": 74.0}' sien druk.

Spesiale aandag:

- hierdie opstelling veronderstel dat HASS, Mosquitto en NodeMCU aan dieselfde WIFI -netwerk gekoppel is en dat daar geen firewallreëls is nie en dat hulle vrylik kan kommunikeer

-die Mosquitt MQTT-bediener het geen gebruikersnaam/wagwoord nie, as u die geloofsbriewe wil instel, kyk hier: https://www.steves-internet-guide.com/mqtt-username-password-example/ U moet ook instel die geloofsbriewe in Home Assistant en in die arduino -skets

Stap 7: OTA (On the Air Updates) vir die NodeMCU

Deur die lug laat opdaterings beteken dat die ontwikkelingsbord draadloos kan flits sonder dat 'n fisiese kabel nodig is.

Arduino IDE ondersteun hierdie funksie vir ESP8266 -reekse en 'n paar ander borde:

- benodig aanvanklike flits oor die USB -kabel

- skep 'n virtuele poort via WIFI en dit is slegs sigbaar vanaf Arduino IDE

- geen seriële ontfoutingsinligting is beskikbaar nie

- ondersteun beskerming met wagwoord

Om OTA in 'n ESP8266 -skets moontlik te maak, moet u eers die biblioteek insluit:

#sluit "ArduinoOTA.h" in

Definieer ook hierdie sketswagwoordkonstante:

#define SKETCHPASS "some_password"

Voeg die volgende reëls by in die opstellingsgedeelte:

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

Serial.println ("Verbinding misluk! Herlaai …"); vertraging (5000); ESP.start (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String type; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Begin opdatering " + tipe);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (ongetekende int vordering, ongetekende int totaal) {Serial.printf ("Vordering:%u %% / r", (vordering / (totaal / 100)));}); ArduinoOTA.onError ( (ota_error_t fout) {Serial.printf ("Fout [%u]:", fout); as (fout == OTA_AUTH_ERROR) {Serial.println ("Verifikasie misluk");} anders as (fout == OTA_BEGIN_ERROR) {Serial.println ("Begin misluk");} anders as (fout == OTA_CONNECT_ERROR) {Serial.println ("Verbind misluk");} anders as (fout == OTA_RECEIVE_ERROR) {Serial.println (" Ontvang misluk ");} anders as (fout == OTA_END_ERROR) {Serial.println (" Eind misluk ");}})); ArduinoOTA.begin (); Serial.print ("IP -adres:"); Serial.println (WiFi.localIP ());

En voeg hierdie reël by in die lusgedeelte:

ArduinoOTA.handle ();

Nadat u aanvanklike kode opgelaai is nadat die bord opgestart is, moet u twee soorte hawens in die Arduino IDE in die Tools-> Port-afdeling sien:

Seriële poorte: /dev /ttyUSB0 (byvoorbeeld)

Netwerkpoort: esp8266-xxxxx by 192.168.1.xxx

Nou kan u die netwerkpoort kies en die skets -afstandsbediening oplaai, u sal gevra word om die sketswagwoord (die een wat u in 'n konstante hierbo gedefinieer het)

Stap 8: Gevolgtrekkings, toekomstige werk

Hierdie tutoriaal kan maklik aangepas word om data oor ander soorte sensors te stuur:

- as u sensor direk deur NodeMCU deur 'n biblioteek ondersteun word, moet u slegs die data van die sensor saamvoeg en dit direk deur MQTT druk

- as die sensorbiblioteek nie met NodeMCU werk nie, maar dit is slegs vir Arduino, laai dan u kode op na die arduino, voer die waarde deur die reekslyn uit en lees dit in die NodeMCU en druk dit (net soos ons met die geiger -toonbank gedoen het)

Ons kan dit selfs verander om data van verskeie sensors soos volg te stuur:

- koppel u sensors aan die NodeMCU

- peilingsdata van elke sensor

- publiseer die data vir elkeen van die sensors na 'n ander onderwerp

- definieer in die HASS verskeie sensors (soos met die geiger) wat na verskillende onderwerpe sal luister

Aanbeveel: