Përmbajtje:

Home Assistant Geiger Counter Integrimi: 8 hapa
Home Assistant Geiger Counter Integrimi: 8 hapa

Video: Home Assistant Geiger Counter Integrimi: 8 hapa

Video: Home Assistant Geiger Counter Integrimi: 8 hapa
Video: Radiation Geiger counter DIY sensor in Home Assistant 2024, Nëntor
Anonim
Image
Image
Parimi i Punës
Parimi i Punës

Në këtë tutorial do të tregoj se si të shtoni sensorë të personalizuar në HASS (asistent në shtëpi) më konkretisht një sportel geiger, por procesi është i ngjashëm edhe për sensorët e tjerë.

Ne do të përdorim tabelën NodeMCU, një sportel geiger të bazuar në arduino dhe një asistent tashmë të instaluar në shtëpi.

Integrimi do të bazohet në një server MQTT (publik ose privat) dhe unë do t'ju çoj hap pas hapi me këtë.

Në rast se nuk e dini se çfarë është ndihmësi i shtëpisë ju lutemi vizitoni faqen e tyre https://www.home-assistant.io/. It'sshtë një platformë e njohur e automatizimit të shtëpisë që është e mirëmbajtur shumë dhe shumë e personalizueshme.

Do të mësoni për:

- konfigurim i avancuar për Home Assistant

- NodeMCU (bordi i zhvillimit) dhe si ta programoni me Arduino IDE

- OTA (përditësimet mbi ajrin) duke përdorur Arduino IDE për bordin e NodeMCU

- si të lidhni një pajisje serike me NodeMCU

- instalimi manual i një serveri MQTT në linux (opsional)

Supozimet themelore:

- ju keni Home Assistant në funksionim

- ju dini pak për elektronikën

- keni të instaluar Arduino IDE

Hapi 1: Pjesët dhe mjetet

Pjesët:

1. Bordi NodeMCU

2. bukëbardhë

3. telat meshkuj meshkuj-meshkuj dhe meshkuj-femra

3. kabllo usb në mikro usb

4. sportel arduino geiger me ndërfaqe serike

(kërko në Ebay për "arduino geiger couter")

5. material radioaktiv (opsional një mostër e vogël prove)

Mjetet:

1. Arduino IDE

2. Asistenti i shtëpisë i instaluar

Hapi 2: Parimi i punës

Qëllimi ynë është të tregojmë në HomeAssistat (HASS) leximet nga sporteli geiger. Nga njëra anë kemi një server HASS që funksionon diku mund të jetë një mjedër pi ose pajisje tjetër dhe në anën tjetër kemi sportelin geiger.

Numëruesi geiger ka një port serik, një zgjidhje do të jetë të lidhni direkt portin serik me RaspberryPi në të cilën funksionon HASS.

Disa arsye pse mund të mos jetë një ide e mirë:

- nuk ka hapësirë fizike atje

- ne kemi disa pajisje të tjera në portin serik

- ne duam të bashkojmë një sensor mjedisor që duhet të vendoset jashtë në vend të sportelit geiger

Ok, kështu që ne do të eksplorojmë një mundësi tjetër për të bërë lidhjen përmes WIFI:

HASS mbështet leximin e të dhënave të sensorit dhe shfaqjen se përmes një serveri MQTT, ky lloj serveri është një lidhje e lehtë për pajisjet e vogla, një pajisje publikon një mesazh në një "temë" dhe tjetra dëgjon në atë temë për të marrë mesazhin. Kështu që HASS do të dëgjojë, dhe ne kemi nevojë për diçka që do të publikojë mesazhin.

Sensori ynë di vetëm të flasë mbi linjën serike, kështu që ne do të përdorim një tabelë që mund të lexojë një linjë serike dhe që mund të lidhet përmes WIFI dhe të flasë me serverin MQTT. Një bord i lirë që e bën këtë është NodeMCU.

NodeMCU mund të programohet me Arduino IDE. Skica është mjaft e thjeshtë, ajo bën sa më poshtë:

- lidhet me WIFI

- mban një lidhje MQTT me serverin dhe riprovon lidhjen kur dështon ose shkëputet

- dëgjon të dhënat hyrëse serike si një seri numrash të plotë

- sapo të arrijë një numër i plotë ai e dërgon atë përmes MQTT në një temë të caktuar

Hapi 3: Mblidhni pajisjen

Mblidhni Pajisjen
Mblidhni Pajisjen

Ne do të përdorim tabela dhe tela kështu që është mjaft e thjeshtë, kemi disa hapa:

- vendosni NodeMCU në tabelën e bukës

- lidhni tubin geiger me sportelin geiger (kini kujdes për polaritetin)

- VIN shkon në numëruesin geiger +

- GND shkon në sportelin geiger -

- NodeMCU D7 (kunja 13) shkon te geiger TX

- NodeMCU D8 (kunja 15) shkon te geiger RX

- fuqizoni NodeMCU përmes mikro USB nga kompjuteri

Hapi 4: Ngarko kodin

Ngarko Kodin
Ngarko Kodin
Ngarko Kodin
Ngarko Kodin
Ngarko Kodin
Ngarko Kodin
Ngarko Kodin
Ngarko Kodin

Ne do të përdorim Arduino IDE dhe do të sigurohemi që kemi bordin NodeMCU të instaluar dhe bibliotekën Adafruit_MQTT të instaluar.

1. Klononi depon e github: https://github.com/danionescu0/arduino dhe kopjoni skicën nga projektet/HASSGeigerIntegration në vendndodhjen tuaj të skicave arduino

2. Hapni Arduino IDE dhe instaloni NodeMCU

- shkoni te Skedari -> Preferencat, në URL -të e Menaxherëve të Bordeve Shtesë shtoni https://arduino.esp8266.com/stable/package_esp8266com_index.json nëse tashmë keni diçka atje vendosni një koma përpara dhe klikoni ok

-nga Tools -> Board -> Board Manager shkruani "nodemcu" dhe zgjidhni hyrjen esp8266 nga ESP8266 Community dhe shtypni install

3. Instaloni Adafruit_MQTT

-shkoni te Mjetet -> Menaxhoni Bibliotekat -> kërkoni "Adafruit_MQTT" dhe instaloni "bibliotekën Arduino MQTT"

4. Lidheni kabllon USB në kompjuterin tuaj dhe konfiguroni tabelën:

-shkoni te Tools -> Board -> zgjidhni NodeMcu 1.0

-Mjetet -> Porti -> porta juaj USB

- lini cilësimet e tjera të pandryshuara

4. Në skicë ndryshoni kredencialet tuaja WIFI që të përputhen me tuajat:

#define STASSID "ssid" // Zëvendësoni me SSID -in tuaj WIFI

#define STAPSK "pass" // Zëvendësoni me fjalëkalimin tuaj WIFI

5. Ngarko skicën në tabelën tënde dhe pas ngarkimit rivendos bordin nga butoni

6. Hapni monitorin serik, nëse gjithçka ka shkuar mirë, duhet të shihni një dalje si kjo:

Nisja

Adresa IP: 192.168.1.168 OTA aktivizohet Lidhja me MQTT… MQTT e lidhur! {"rrezatimi": 0.03}..

Hapi 5: Konfiguroni HomeAssistant

Konfiguro HomeAssistant
Konfiguro HomeAssistant
Konfiguro HomeAssistant
Konfiguro HomeAssistant

Ne do të supozojmë se keni asistentin e shtëpisë në punë. Në sistemin tim kam versionin HASSOS 3.12 në një RaspberryPi. Nëse versioni juaj i asistentit në shtëpi është shumë i vjetër ose shumë i ri, disa veçori mund të ndryshojnë. Ky tutorial punon me siguri me versionin 3.12.

Nëse nuk keni të instaluar Asistentin në shtëpi, shikoni udhëzuesin e tyre zyrtar të instalimit:

Para se të përparoni me instalimin, sigurohuni që NodeMCU të jetë i kyçur dhe të publikojë të dhëna.

Ok ne do të kemi një seri hapash edhe këtu për konfigurimin:

1. Instaloni "redaktuesin e skedarëve" nëse nuk e keni në meny, këtu është mësimi zyrtar:

2. Ndryshoni skedarin "/config/configuration.yaml" dhe shtoni sa vijon dhe ruajeni

- seksioni mqtt nëse nuk e keni tashmë

mqtt:

ndërmjetësi: broker.hivemq.com zbulim: zbulim i vërtetë_prefiks: ha

- seksioni i sensorëve

sensor:

- platforma: mqtt emri: "Rrezatimi" gjendja_tema: "ha/rrezatimi" njësia e_masës: 'uSv' unique_id: "rrezatimi" vlera_template: "{{value_json.radiation}}"

3. Nga Konfigurimi -> Kontrollet e serverit: shtypni "Kontrollo konfigurimin" kontrolloni skedarin e konfigurimit yaml për gabime, dhe më pas shtypni "rinis" dhe prisni derisa të riniset

4. Nga Pasqyra -> Menyja e këndit të sipërm të djathtë -> Konfiguro UI -> shtyp butonin + nga poshtë djathtas

5. Zgjidhni "sensor" nga lista -> në fushën "entitet" kërkoni për "sensor.radiation", në fushën e emrit shkruani "Rrezatim" dhe klikoni ok, duhet të jetë në faqen kryesore tani

Hapi 6: Konfigurimi i serverit tuaj MQTT [Opsionale]

Le të diskutojmë pak rreth MQTT

"MQTT është një server i klientit që publikon/regjistrohet në protokollin e transportit të mesazheve. Weightshtë e lehtë, e hapur, e thjeshtë dhe e dizajnuar në mënyrë që të jetë e lehtë për t'u zbatuar. Këto karakteristika e bëjnë atë ideal për përdorim në shumë situata, duke përfshirë mjedise të kufizuara, të tilla si për komunikim në kontekstet Machine to Machine (M2M) dhe Internet of Things (IoT), ku kërkohet një gjurmë e vogël e kodit dhe/ose gjerësia e brezit të rrjetit është me çmim të lartë."

Citimi nga specifikimi zyrtar MQTT 3.1.1.

Pra, në thelb ne mund të publikojmë një mesazh diku në njërën anë dhe në anën tjetër mund t'i dëgjojmë ato mesazhe dhe të bëjmë diçka me të dhënat. MQTT mbështet "temat", temat janë vargje që ndërmjetësi përdor për të filtruar mesazhet për secilin klient, kështu që nëse publikojmë një mesazh në temën "/rrezatimi", një dëgjues duhet të regjistrohet në të njëjtën temë për të marrë mesazhet që ne po dërgojmë.

Këtu është një mësim i shkëlqyeshëm në lidhje me MQTT në detaje:

Përdorimi i serverit falas të koshereve ka disa disavantazhe si:

- kushdo që dëgjon temën tuaj do të marrë mesazhet tuaja

- nëse zbret ose kërkon pagesa më vonë, nuk do të mund ta përdorni (nëse nuk paguani)

- nëse dikush që publikon mesazhe për të njëjtën temë do të merrni edhe mesazhet e tij, ata mund të publikojnë mesazhe të papajtueshme dhe të thyejnë grafikët tuaj HASS

Përdorimi i një serveri privat

Nëse nuk doni të përdorni serverin publik falas, ju keni mundësinë e një serveri privat. Ne do të instalojmë Mosquitto MQTT në një server ubuntu / debian si një pi mjedër ose kompjuter.

Mosquitto është një server që zbaton protokollin MQTT dhe është falas.

Për ta instaluar, regjistrohuni në raspnerry pi ose server tjetër me bazë debian dhe ekzekutoni:

sudo apt përditësim

sudo apt install -y mushkonja mushkonja -klientë sudo systemctl aktivizoni mushkonjat.shërbimi

Kjo do të azhurnojë depon, do të instalojë serverin dhe klientin e mushkonjave dhe do t'i mundësojë atij një shërbim që të funksionojë gjatë fillimit

Për të ekzekutuar ip serverin:

emri i hostit -I

dhe do të dalë diçka si:

192.168.1.52 172.17.0.1 172.18.0.1

Pra, IP -ja ime është 192.168.1.52, në komandat më poshtë zëvendësojeni atë me IP -në tuaj

Ju mund të testoni serverin MQTT duke publikuar një mesazh dhe duke e marrë atë me mjetin e tastierës, për këtë duhet të hapen dy terminale, ai që dëgjon një mesazh, ai që do të publikojë mesazhin.

Së pari në një terminal ekzekutoni këtë komandë për të dëgjuar një mesazh në "/disa-tema"

mushkonja_sub -h 192.168.1.52 -t /ndonjë temë

Hapni një terminal tjetër dhe publikoni një mesazh për atë temë:

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"lagështia": 74.0}'

Në terminalin e parë duhet të shihni '{"lagështia": 74.0}' të shtypura.

Vëmendje e veçantë:

- ky konfigurim supozon se HASS, Mosquitto dhe NodeMCU janë të lidhur në të njëjtin rrjet WIFI dhe nuk ka rregulla firewall dhe ato mund të komunikojnë lirshëm

-serveri Mosquitt MQTT nuk ka emër përdoruesi/fjalëkalim, nëse doni të konfiguroni kredencialet, kontrolloni këtë: https://www.steves-internet-guide.com/mqtt-username-password-example/ Gjithashtu ju do të duhet të konfiguroni kredencialet në Home Assistant dhe në skicën arduino

Hapi 7: OTA (Përditësimet mbi ajrin) për NodeMCU

Përditësimet mbi ajër do të thotë që bordi i zhvillimit mund të ndizet me tela pa nevojën e një kablli fizik.

Arduino IDE mbështet këtë funksionalitet për seritë ESP8266 dhe disa borde të tjera:

- kërkon ndezje fillestare mbi kabllon USB

- krijon një port virtual mbi WIFI dhe është i dukshëm vetëm nga Arduino IDE

- nuk ka asnjë informacion të korrigjimit serik

- mbështet mbrojtjen me fjalëkalim

Për të aktivizuar OTA në një skicë të ESP8266, së pari përfshini bibliotekën:

#përfshi "ArduinoOTA.h"

Përcaktoni gjithashtu këtë konstante të skicës së fjalëkalimit:

#define SKETCHPASS "some_password"

Në pjesën e konfigurimit shtoni këto rreshta:

ndërsa (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Lidhja dështoi! Rinisja …"); vonesa (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Lloji i vargut; nëse (ArduinoOTA.getCommand () == U_FLASH) {type = "skicë";} tjetër {// U_FS type = "sistemi i skedarëve";} Serial.println ("Fillo përditësimin " + lloji);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nPërfundim");}); ArduinoOTA.onProgress ( (progres i panënshkruar int, i panënshkruar int total) {Serial.printf ("Progresi:%u %% / r", (përparimi / (total / 100)));}); ArduinoOTA.onError ( (gabimi ota_error_t) {Serial.printf ("Gabim [%u]:", gabim); if (error == OTA_AUTH_ERROR) {Serial.println ("Auth Failed");} tjetër nëse (gabim == OTA_BEGIN_ERROR) {Serial.println ("Fillimi dështoi");} tjetër nëse (gabim == OTA_CONNECT_ERROR) {Serial.println ("Lidhja dështoi");} tjetër nëse (gabim == OTA_RECEIVE_ERROR) {Serial.println (" Marrja dështoi ");} tjetër nëse (gabim == OTA_END_ERROR) {Serial.println (" Fundi dështoi ");}}); ArduinoOTA.filloj (); Serial.print ("Adresa IP:"); Serial.println (WiFi.localIP ());

Dhe në pjesën lak shtoni këtë rresht:

ArduinoOTA.handle ();

Pas ngarkimit të kodit fillestar pasi bordi të ngrihet, duhet të shihni në Arduino IDE në seksionin Tools-> Port dy lloje portesh:

Portet serike: /dev /ttyUSB0 (për shembull)

Portet e rrjetit: esp8266-xxxxx në 192.168.1.xxx

Tani mund të zgjidhni portën e rrjetit dhe të ngarkoni telekomandën e skicës, do t'ju kërkohet fjalëkalimi i skicës (ai që keni përcaktuar në një konstante më lart)

Hapi 8: Përfundime, Puna në të ardhmen

Ky tutorial mund të modifikohet lehtësisht për të dërguar të dhëna në lidhje me llojet e tjera të sensorëve:

- nëse sensori juaj mbështetet drejtpërdrejt nga NodeMCU përmes një biblioteke, thjesht grumbulloni të dhëna nga sensori dhe drejtojini drejtpërdrejt përmes MQTT

- nëse biblioteka e sensorëve nuk punon me NodeMCU por është vetëm për Arduino atëherë ngarkoni kodin tuaj në arduino, nxirrni vlerën përmes linjës seriale dhe lexojeni në NodeMCU dhe shtyjeni atë (ashtu siç bëmë me sportelin geiger)

Ne madje mund ta modifikojmë atë për të dërguar të dhëna nga sensorë të shumtë si kështu:

- lidhni sensorët tuaj me NodeMCU

- të dhënat e sondazhit nga secili sensor

- për secilin nga sensorët publikoni të dhënat në një temë të ndryshme

- në HASS përcaktoni sensorë të shumtë (siç bëmë me geiger) që do të dëgjojnë tema të ndryshme

Recommended: