Talaan ng mga Nilalaman:

Home Assistant Geiger Counter Integration: 8 Hakbang
Home Assistant Geiger Counter Integration: 8 Hakbang

Video: Home Assistant Geiger Counter Integration: 8 Hakbang

Video: Home Assistant Geiger Counter Integration: 8 Hakbang
Video: Home assistant geiger counter integration 2024, Nobyembre
Anonim
Image
Image
Prinsipyo ng Trabaho
Prinsipyo ng Trabaho

Sa tutorial na ito ipapakita ko kung paano ka magdagdag ng mga pasadyang sensor sa HASS (home assistant) na mas partikular sa isang geiger counter ngunit ang proseso ay katulad din para sa iba pang mga sensor.

Gagamitin namin ang board ng NodeMCU, isang arduino based geiger counter at isang naka-install na katulong sa bahay.

Ang pagsasama ay ibabatay sa isang MQTT server (pampubliko o pribado) at dadalhin ka namin hakbang-hakbang sa ito.

Kung sakaling hindi mo alam kung ano ang katulong sa bahay mangyaring bisitahin ang kanilang pahina https://www.home-assistant.io/. Ito ay isang kilalang platform ng automation ng bahay na napakahusay na napanatili at lubos na napapasadyang.

Malalaman mo ang tungkol sa:

- advanced na pagsasaayos para sa Home Assistant

- NodeMCU (development board) at kung paano ito i-program sa Arduino IDE

- OTA (sa paglipas ng mga air update) gamit ang Arduino IDE para sa board ng NodeMCU

- kung paano ikonekta ang isang serial device sa NodeMCU

- manu-manong pag-install ng isang MQTT server sa linux (opsyonal)

Pangunahing pagpapalagay:

- mayroon kang Home Assistant na tumatakbo at tumatakbo

- alam mo nang kaunti tungkol sa electronics

- mayroon kang naka-install na Arduino IDE

Hakbang 1: Mga Bahagi at Mga Tool

Mga Bahagi:

1. Lupon ng NodeMCU

2. breadbord

3. mga wire ng lalaki-lalaki at lalaki-babae na juper

3. usb sa micro usb cable

4. arduino geiger counter na may serial interface

(hanapin ang Ebay para sa "arduino geiger couter")

5. materyal na radioactive (opsyonal isang maliit na sample ng pagsubok)

Mga tool:

1. Arduino IDE

2. Naka-install ang Home Assistant

Hakbang 2: Prinsipyo ng Trabaho

Ang aming layunin ay upang ipakita sa HomeAssistat (HASS) ang mga pagbabasa mula sa geiger counter. Sa isang gilid mayroon kaming isang HASS server at tumatakbo sa kung saan maaaring ito ay isang raspberry pi o iba pang aparato at sa kabilang panig mayroon kaming geiger counter.

Ang geiger counter ay may isang serial port, isang solusyon ay ang ilakip nang direkta ang serial port sa RaspberryPi kung saan tumatakbo ang HASS.

Ang ilang mga kadahilanan kung bakit hindi ito isang magandang ideya:

- walang pisikal na puwang doon

- Mayroon kaming ilang iba pang aparato sa serial port

- Nais naming maglakip ng isang sensor ng kapaligiran na dapat ilagay sa labas sa halip na ang geiger counter

Ok kaya't susuriin namin ang isa pang posibilidad na gawin ang koneksyon sa pamamagitan ng WIFI:

Sinusuportahan ng HASS ang pagbabasa ng data ng sensor at ipinapakita na sa pamamagitan ng isang MQTT server, ang ganitong uri ng server ay isang koneksyon ng lite weight para sa maliliit na aparato isang aparato ang nag-publish ng isang mensahe sa isang "paksa" na ang iba pang nakikinig sa paksang iyon upang matanggap ang mensahe. Kaya makikinig ang HASS, at kailangan namin ng isang bagay na maglalathala ng mensahe.

Alam lamang ng aming sensor na pag-usapan ang serial line kaya gagamit kami ng isang board na makakabasa ng isang serial line at maaari itong kumonekta sa WIFI at makausap ang MQTT server. Ang isang murang board na ginagawa ito ay ang NodeMCU.

Ang NodeMCU ay maaaring mai-program sa Arduino IDE. Ang sketch ay medyo simple, ginagawa nito ang mga sumusunod:

- kumokonekta sa WIFI

- nagpapanatili ng isang koneksyon sa MQTT sa server at muling sinusubukan ang koneksyon kapag nabigo o na-disconnect

- Nakikinig sa serial papasok na data bilang isang serye ng mga integer

- sa sandaling dumating ang isang integer ipinapadala ito sa pamamagitan ng MQTT sa isang tukoy na paksa

Hakbang 3: Tipunin ang Device

Ipunin ang Device
Ipunin ang Device

Gumagamit kami ng mga breadboard at wires kaya't medyo simple, mayroon kaming ilang mga hakbang:

- ilagay ang NodeMCU sa breadboard

- ikonekta ang geiger tube sa geiger counter (abangan ang polarity)

- Pumunta ang VIN sa geiger counter +

- GND goest sa geiger counter -

- Ang NodeMCU D7 (pin 13) ay pupunta sa geiger TX

- Ang NodeMCU D8 (pin 15) ay pupunta sa geiger RX

- kapangyarihan NodeMCU sa pamamagitan ng micro USB mula sa computer

Hakbang 4: I-upload ang Code

I-upload ang Code
I-upload ang Code
I-upload ang Code
I-upload ang Code
I-upload ang Code
I-upload ang Code
I-upload ang Code
I-upload ang Code

Gagamitin namin ang Arduino IDE at tiyakin na mayroon kaming naka-install na board ng NodeMCU at naka-install ang Adafruit_MQTT library.

1. I-clone ang repository ng github: https://github.com/danionescu0/arduino at kopyahin ang sketch mula sa mga proyekto / HASSGeigerIntegration sa iyong lokasyon ng sketchbook ng arduino

2. Buksan ang Arduino IDE at i-install ang NodeMCU

- pumunta sa File -> Mga Kagustuhan, sa mga Karagdagang Mga Boards Manager URL idagdag ang https://arduino.esp8266.com/stable/package_esp8266com_index.json kung mayroon ka nang isang bagay doon maglagay ng isang pagkawala ng malay sa harap at mag-click sa ok

- mula sa Tools -> Board -> Uri ng Board Manager na "nodemcu" at piliin ang entry na esp8266 ng ESP8266 Community, at pindutin ang install

3. I-install ang Adafruit_MQTT

- pumunta sa Mga Tool -> Pamahalaan ang Mga Aklatan -> hanapin ang "Adafruit_MQTT" at i-install ang "Arduino MQTT library"

4. I-plug ang USB cable sa iyong computer at i-configure ang board:

- pumunta sa Tools -> Board -> piliin ang NodeMcu 1.0

- Mga Tool -> Port -> iyong USB port

- iwanang hindi nagbago ang iba pang mga setting

4. Sa sketch baguhin ang iyong mga kredensyal sa WIFI upang tumugma sa iyong sarili:

#define STASSID "ssid" // Palitan ng iyong WIFI SSID

#define STAPSK "pass" // Palitan ng iyong WIFI password

5. I-upload ang sketch sa iyong board at pagkatapos ng pag-upload ay i-reset ang board mula sa pindutan

6. Buksan ang serial monitor, kung naging maayos ang lahat dapat mong makita ang ilang output na tulad nito:

Pag-boot

IP address: 192.168.1.168 pinagana ng OTA Ang pagkonekta sa MQTT… Nakakonekta ang MQTT! {"radiation": 0.03}..

Hakbang 5: I-configure ang HomeAssistant

I-configure ang HomeAssistant
I-configure ang HomeAssistant
I-configure ang HomeAssistant
I-configure ang HomeAssistant

Ipagpalagay namin na mayroon kang katulong sa bahay na tumatakbo at tumatakbo. Sa aking system mayroon akong bersyon ng HASSOS 3.12 sa isang RaspberryPi. Kung ang iyong bersyon ng katulong sa bahay ay masyadong luma o napakabago ng ilang mga tampok ay maaaring magkakaiba. Gumagana ang tutorial na ito sigurado na may 3.12 bersyon.

Kung wala kang naka-install na Home Assistant, tingnan ang kanilang opisyal na gabay sa pag-install:

Bago sumulong sa pag-install siguraduhing naka-plug ang NodeMCU at naglilimbag ito ng data.

Ok magkakaroon din kami ng isang serye ng mga hakbang dito para sa pagsasaayos:

1. I-install ang "file editor" kung wala ka sa menu, narito ang opisyal na tutorial:

2. I-edit ang file na "/config/configuration.yaml" at idagdag ang sumusunod at i-save ito

- ang seksyon ng mqtt kung wala ka nito

mqtt:

broker: broker.hivemq.com pagtuklas: totoong pagtuklas_prefix: ha

- seksyon ng mga sensor

sensor:

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

3. Mula sa Pag-configure -> Mga kontrol ng server: pindutin ang "Suriin ang pagsasaayos" suriin ang yaml config file para sa mga error, at pagkatapos ay pindutin ang "restart" at maghintay hanggang ma-restart ito

4. Mula sa Pangkalahatang-ideya -> Pang-itaas na kanang sulok ng menu -> I-configure ang UI -> pindutin ang pindutan ng + mula sa kanang ibaba

5. Piliin ang "sensor" mula sa listahan -> sa paghahanap ng patlang na "entity" para sa "sensor.radiation", sa patlang ng pangalan isulat ang "Radiation" at i-click ang ok, dapat ito ay nasa pangunahing pahina ngayon

Hakbang 6: Pag-configure ng Iyong Sariling MQTT Server [Opsyonal]

Talakayin natin nang kaunti tungkol sa MQTT

"Ang MQTT ay isang Client Server mag-publish / mag-subscribe sa protokol ng transportasyon ng pagmemensahe. Ito ay magaan na timbang, bukas, simple, at nakadisenyo upang madaling ipatupad. Ang mga katangiang ito ay ginagawang perpekto para magamit sa maraming mga sitwasyon, kabilang ang mga napigilan na kapaligiran tulad ng para sa komunikasyon sa mga konteksto ng Machine to Machine (M2M) at Internet of Things (IoT) kung saan kinakailangan ang isang maliit na bakas ng code at / o ang bandwidth ng network ay may premium."

Sipi mula sa opisyal na detalye ng MQTT 3.1.1.

Kaya karaniwang maaari naming mai-publish ang isang mensahe sa isang lugar sa isang gilid at sa kabilang panig maaari kaming makinig para sa mga mensahe na iyon at gumawa ng isang bagay sa data. Sinusuportahan ng MQTT ang "mga paksa", ang mga paksa ay mga string na ginagamit ng broker upang ma-filter ang mga mensahe para sa bawat kliyente kaya kung nag-publish kami ng isang mensahe sa paksang "/ radiation" na isang tagapakinig ay dapat mag-subscribe sa parehong paksa upang makuha ang mga mensahe na ipinapadala namin.

Narito ang isang mahusay na tutorial tungkol sa MQTT nang detalyado:

Ang paggamit ng libreng server ng pugad ay may ilang mga kawalan tulad ng:

- ang sinumang nakikinig sa iyong paksa ay makakatanggap ng iyong mga mensahe

- kung bumababa ito o nangangailangan ng pagbabayad sa paglaon hindi mo ito magagamit (maliban kung magbabayad ka)

- kung ang sinumang naglathala ng mga mensahe sa parehong paksa ay matatanggap mo rin ang kanilang mga mensahe, maaari silang mag-publish ng mga hindi tugma na mensahe at masira ang iyong mga HASS na graph

Paggamit ng isang pribadong server

Kung hindi mo nais na gamitin ang pampublikong server na libre mayroon kang pagpipilian ng isang pribadong server. I-install namin ang Mosquitto MQTT sa isang ubuntu / debian server tulad ng isang raspberry pi o computer.

Ang Mosquitto ay isang server na nagpapatupad ng MQTT protocol at libre ito.

Upang mai-install ito, mag-log in sa iyong raspnerry pi o ibang debian based server at patakbuhin:

sudo apt update

sudo apt install -y mosquitto mosquitto-kliyente sudo systemctl paganahin ang mosquitto.service

I-a-update nito ang imbakan, i-install ang mosquiito server at client at paganahin itong isang serbisyo upang tumakbo sa pagsisimula

Upang maipatupad ang server ip:

hostname -ako

at maglalabas ito ng isang bagay tulad ng:

192.168.1.52 172.17.0.1 172.18.0.1

Kaya't ang aking ip ay 192.168.1.52, sa mga utos sa ibaba palitan ito ng iyong sariling ip

Maaari mong subukan ang server ng MQTT sa pamamagitan ng pag-publish ng isang mensahe at pagtanggap nito gamit ang tool ng console, para sa dalawang terminal na ito ay dapat buksan ang isa na nakikinig para sa isang mensahe, isa na maglalathala ng mensahe.

Una sa isang terminal patakbuhin ang utos na ito upang makinig para sa isang mensahe sa "/ ilang-paksang"

mosquitto_sub -h 192.168.1.52 -t / ilang-paksa

Magbukas ng isa pang terminal at mag-publish ng mensahe sa paksang iyon:

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

Sa unang terminal dapat mong makita ang '{"kahalumigmigan": 74.0}' na nakalimbag.

Espesyal na pansin:

- Ipinapalagay ng pag-setup na ito na ang HASS, Mosquitto at NodeMCU ay konektado sa parehong network ng WIFI at walang mga panuntunan sa firewall at maaari silang malayang makipag-usap

- ang Mosquitt MQTT server ay walang username / password, kung nais mong i-set ang mga kredensyal suriin ito: https://www.steves-internet-guide.com/mqtt-username-password-example/ Gayundin kakailanganin mong i-configure ang mga kredensyal sa Home Assistant at sa arduino sketch

Hakbang 7: OTA (Sa paglipas ng Mga Update sa Air) para sa NodeMCU

Sa paglipas ng mga pag-update sa himpapawid ay nangangahulugang ang board ng pag-unlad ay maaaring mai-flash nang wirelesly nang hindi nangangailangan ng isang pisikal na cable.

Sinusuportahan ng Arduino IDE ang pagpapaandar na ito para sa serye ng ESP8266 at ilang iba pang mga board:

- nangangailangan ng paunang flash sa USB cable

- Lumilikha ng isang virtual port sa paglipas ng WIFI at makikita lamang ito mula sa Arduino IDE

- walang magagamit na impormasyon sa Serial debug

- Sinusuportahan ang proteksyon sa password

Upang paganahin ang OTA sa isang sketch ng ESP8266 unang isama ang silid-aklatan:

# isama ang "ArduinoOTA.h"

Tukuyin din ang pare-parehong sketch na password na ito:

# tukuyin ang SKETCHPASS "ilang_password"

Sa seksyon ng pag-set up idagdag ang mga linya na ito:

habang (WiFi.waitForConnectResult ()! = WL_CONNected) {

Serial.println ("Nabigo ang Koneksyon! Pag-reboot …"); pagkaantala (5000); ESP. restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String type; kung (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} iba pa {// U_FS type = "filesystem";} Serial.println ("Simulang i-update "+ type);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nEnd");}); ArduinoOTA.onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:% u %% / r", (advance / (total / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [% u]:", error); kung (error == OTA_AUTH_ERROR) {Serial.println ("Nabigo ang Auth");} iba pa kung (error == OTA_BEGIN_ERROR) {Serial.println ("Fail Failed");} iba pa kung (error == OTA_CONNECT_ERROR) {Serial.println ("Failed Failed");} iba pa kung (error == OTA_RECEIVE_ERROR) {Serial.println (" Natanggap na Nabigo ");} iba pa kung (error == OTA_END_ERROR) {Serial.println (" Nabigo ang Pagtatapos ");}}); ArduinoOTA.begin (); Serial.print ("IP address:"); Serial.println (WiFi.localIP ());

At sa seksyon ng loop idagdag ang linyang ito:

ArduinoOTA.handle ();

Matapos ang iyong paunang pag-upload ng code pagkatapos ng pag-boot ng board dapat mong makita sa Arduino IDE sa Tools-> Seksyon ng Port dalawang uri ng mga port:

Mga serial port: / dev / ttyUSB0 (halimbawa)

Mga port ng network: esp8266-xxxxx sa 192.168.1.xxx

Ngayon ay maaari mong piliin ang network port at i-upload ang sketch remote, sasabihan ka para sa sketch password (ang isa na tinukoy mo sa isang pare-pareho sa itaas)

Hakbang 8: Mga Konklusyon, Trabaho sa Hinaharap

Ang tutorial na ito ay maaaring madaling mabago upang magpadala ng data tungkol sa iba pang mga uri ng sensor:

- kung ang iyong sensor ay direktang sinusuportahan ng NodeMCU sa pamamagitan ng isang silid-aklatan, pool data lamang mula sa sensor at direktang itulak ito sa pamamagitan ng MQTT

- kung ang sensor library ay hindi gumagana sa NodeMCU ngunit para lamang ito sa Arduino pagkatapos ay i-upload ang iyong code sa arduino, i-output ang halaga sa pamamagitan ng serial line at basahin ito sa NodeMCU at itulak ito (tulad ng ginawa namin sa geiger counter)

Maaari rin nating baguhin ito upang magpadala ng data mula sa maraming mga sensor tulad nito:

- ikonekta ang iyong mga sensor sa NodeMCU

- Data ng poll mula sa bawat sensor

- Para sa bawat sensor ay nai-publish ang data sa isang iba't ibang paksa

- sa HASS tukuyin ang maraming mga sensor (tulad ng ginawa namin sa geiger) na makikinig sa iba't ibang mga paksa

Inirerekumendang: