Satura rādītājs:

Mājas palīga Geigera skaitītāja integrācija: 8 soļi
Mājas palīga Geigera skaitītāja integrācija: 8 soļi

Video: Mājas palīga Geigera skaitītāja integrācija: 8 soļi

Video: Mājas palīga Geigera skaitītāja integrācija: 8 soļi
Video: как сбросить счетчик коммунальных услуг домашний помощник 2024, Jūlijs
Anonim
Image
Image
Darba princips
Darba princips

Šajā apmācībā es parādīšu, kā jūs varat pievienot pielāgotus sensorus HASS (mājas palīgam), jo īpaši ģeigera skaitītājam, taču process ir līdzīgs arī citiem sensoriem.

Mēs izmantosim NodeMCU plati, arduino balstītu ģeigera skaitītāju un jau instalētu mājas palīgu.

Integrācija balstīsies uz MQTT serveri (publisku vai privātu), un es jums soli pa solim to darīšu.

Ja nezināt, kas ir mājas palīgs, lūdzu, apmeklējiet viņu lapu https://www.home-assistant.io/. Tā ir plaši pazīstama mājas automatizācijas platforma, kas ir ļoti labi uzturēta un ļoti pielāgojama.

Jūs uzzināsit par:

- uzlabota konfigurācija mājas palīgam

- NodeMCU (izstrādes dēlis) un kā to programmēt, izmantojot Arduino IDE

- OTA (bezvadu atjauninājumi), izmantojot Arduino IDE NodeMCU plati

- kā savienot sērijveida ierīci ar NodeMCU

- manuāli instalēt MQTT serveri Linux (pēc izvēles)

Pamata pieņēmumi:

- jums ir aktivizēts mājas palīgs

- Tu mazliet zini par elektroniku

- jums ir instalēta Arduino IDE

1. darbība: detaļas un rīki

Daļas:

1. NodeMCU tāfele

2. maizes rieksts

3. vīriešu-vīriešu un vīriešu-sieviešu juper vadi

3. usb -micro usb kabelis

4. arduino geiger skaitītājs ar sērijas interfeisu

(meklējiet ebay "arduino geiger couter")

5. radioaktīvs materiāls (pēc izvēles neliels testa paraugs)

Rīki:

1. Arduino IDE

2. Mājas palīgs ir instalēts

2. solis: Darba princips

Mūsu mērķis ir parādīt vietnē HomeAssistat (HASS) rādījumus no ģeigera skaitītāja. No vienas puses mums ir izveidots un darbojas HASS serveris, tas var būt aveņu pi vai cita ierīce, bet otrā pusē ir ģeigera skaitītājs.

Geigera skaitītājam ir seriālais ports, viens risinājums būs tieši pievienot seriālo portu RaspberryPi, kurā darbojas HASS.

Daži iemesli, kāpēc tā var nebūt laba ideja:

- tur nav fiziskas telpas

- mums seriālajā portā ir kāda cita ierīce

- mēs vēlamies piestiprināt vides sensoru, kas ģeigera skaitītāja vietā būtu jānovieto ārpusē

Labi, tāpēc mēs izpētīsim citu iespēju izveidot savienojumu, izmantojot WIFI:

HASS atbalsta sensoru datu nolasīšanu un parāda, ka, izmantojot MQTT serveri, šāda veida serveris ir vienkāršs svara savienojums mazām ierīcēm, viena ierīce publicē ziņojumu par "tēmu", otra klausās par šo tēmu, lai saņemtu ziņojumu. Tātad HASS klausīsies, un mums ir nepieciešams kaut kas, kas publicēs ziņojumu.

Mūsu sensors prot runāt tikai pa seriālo līniju, tāpēc mēs izmantosim plati, kas var nolasīt sērijas līniju un kas var izveidot savienojumu, izmantojot WIFI, un runāt ar MQTT serveri. Lēta tāfele, kas to dara, ir NodeMCU.

NodeMCU var ieprogrammēt ar Arduino IDE. Skice ir diezgan vienkārša, tā veic šādas darbības:

- savienojas ar WIFI

- uztur MQTT savienojumu ar serveri un atkārtoti mēģina izveidot savienojumu, ja tas neizdodas vai tiek atvienots

- klausās ienākošos sērijveida datus kā veselu skaitļu sēriju

- kad ir ieradies vesels skaitlis, tas to nosūta caur MQTT uz noteiktu tēmu

3. darbība: samontējiet ierīci

Salieciet ierīci
Salieciet ierīci

Mēs izmantosim maizes dēļus un vadus, tāpēc tas ir diezgan vienkārši, mums ir jāveic dažas darbības:

- ielieciet NodeMCU uz maizes dēļa

- pievienojiet Geigera cauruli Geigera skaitītājam (uzmanieties no polaritātes)

- VIN iet uz ģeigera skaitītāju +

- GND iet uz ģeigera skaitītāju -

- NodeMCU D7 (13. tapa) iet uz geiger TX

- NodeMCU D8 (15. tapa) iet uz geiger RX

- barojiet NodeMCU caur datora mikro USB

4. darbība: augšupielādējiet kodu

Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu
Augšupielādējiet kodu

Mēs izmantosim Arduino IDE un pārliecināsimies, ka mums ir instalēta NodeMCU plate un Adafruit_MQTT bibliotēka.

1. Klonējiet github krātuvi: https://github.com/danionescu0/arduino un nokopējiet skici no projektiem/HASSGeigerIntegration uz savu arduino skiču grāmatas atrašanās vietu

2. Atveriet Arduino IDE un instalējiet NodeMCU

- dodieties uz Fails -> Preferences, Papildu dēļu pārvaldnieka vietrāžos URL pievienojiet vietni https://arduino.esp8266.com/stable/package_esp8266com_index.json, ja jums jau ir kaut kas, ievietojiet komu priekšā un noklikšķiniet uz Labi

-no Tools -> Board -> Board Manager ierakstiet "nodemcu" un atlasiet ESP8266 Community ierakstu esp8266 un nospiediet instalēt

3. Instalējiet Adafruit_MQTT

-dodieties uz Rīki -> Pārvaldīt bibliotēkas -> meklējiet "Adafruit_MQTT" un instalējiet "Arduino MQTT bibliotēka"

4. Pievienojiet datora USB kabeli un konfigurējiet tāfeli:

-dodieties uz Rīki -> Padome -> atlasiet NodeMcu 1.0

-Rīki -> Ports -> jūsu USB ports

- atstājiet citus iestatījumus nemainīgus

4. Skicē mainiet savus WIFI akreditācijas datus, lai tie atbilstu jūsu datiem:

#define STASSID "ssid" // Aizstāt ar savu WIFI SSID

#define STAPSK "pass" // Aizstāt ar savu WIFI paroli

5. Augšupielādējiet skici savā panelī un pēc augšupielādes atiestatiet dēli no pogas

6. Atveriet seriālo monitoru, ja viss ir izdevies, jums vajadzētu redzēt šādu izvadi:

Bootēšana

IP adrese: 192.168.1.168 OTA iespējots Savienojuma izveide ar MQTT… MQTT savienots! {"starojums": 0,03}..

5. darbība: konfigurējiet HomeAssistant

Konfigurēt HomeAssistant
Konfigurēt HomeAssistant
Konfigurēt HomeAssistant
Konfigurēt HomeAssistant

Mēs pieņemsim, ka jums ir mājas palīgs un tas darbojas. Manā sistēmā RaspberryPi ir HASSOS versija 3.12. Ja jūsu mājas asistenta versija ir pārāk veca vai ļoti jauna, dažas funkcijas var atšķirties. Šī apmācība noteikti darbojas ar 3.12 versiju.

Ja jums nav instalēts mājas palīgs, iepazīstieties ar viņa oficiālo instalēšanas rokasgrāmatu:

Pirms instalēšanas pārliecinieties, vai NodeMCU ir pievienots kontaktligzdai un publicē datus.

Labi, arī šeit mums būs jāveic vairākas konfigurācijas darbības:

1. Instalējiet "failu redaktoru", ja tā nav izvēlnē, šeit ir oficiālā apmācība:

2. Rediģējiet failu "/config/configuration.yaml" un pievienojiet tālāk norādīto un saglabājiet to

- sadaļa mqtt, ja jums tā vēl nav

mqtt:

brokeris: broker.hivemq.com atklājums: true discovery_prefix: ha

- sensoru sadaļa

sensors:

- platforma: mqtt name: "Radiācija" state_topic: "ha/starojums" mērvienība: "uSv" unikāls_id: "starojums" value_template: "{{value_json.radiation}}"

3. No konfigurācijas -> servera vadīklas: nospiediet "Pārbaudīt konfigurāciju", pārbaudiet, vai yaml konfigurācijas failā nav kļūdu, un pēc tam nospiediet "restartēt" un pagaidiet, līdz tas tiek restartēts

4. Pārskatā -> Augšējā labā stūra izvēlne -> Konfigurēt lietotāja saskarni -> nospiediet pogu + apakšējā labajā stūrī

5. Sarakstā izvēlieties "sensors" -> laukā "entītija" meklējiet "sensor.radiation", nosaukuma laukā ierakstiet "Radiācija" un noklikšķiniet uz Labi, tam vajadzētu būt galvenajā lapā tagad

6. darbība: sava MQTT servera konfigurēšana [pēc izvēles]

Apspriedīsim mazliet par MQTT

“MQTT ir klientu servera publicēšanas/abonēšanas ziņojumapmaiņas transporta protokols. Tas ir viegls, atvērts, vienkāršs un veidots tā, lai to būtu viegli īstenot. Šo īpašību dēļ tas ir ideāli piemērots izmantošanai daudzās situācijās, tostarp ierobežotā vidē, piemēram, saziņai mašīnu un mašīnu (M2M) un lietu interneta (IoT) kontekstos, kur nepieciešama neliela koda nospiedums un/vai tīkla joslas platums.”

Citāts no oficiālās MQTT 3.1.1 specifikācijas.

Tātad būtībā mēs varam publicēt ziņojumu kaut kur vienā pusē, bet otrā pusē mēs varam klausīties šos ziņojumus un kaut ko darīt ar datiem. MQTT atbalsta “tēmas”, tēmas ir virknes, ko brokeris izmanto, lai filtrētu ziņojumus katram klientam, tādēļ, ja mēs publicējam ziņojumu tēmā “/radiācija”, klausītājam ir jāabonē tā pati tēma, lai saņemtu sūtāmos ziņojumus.

Šeit ir lieliska apmācība par MQTT:

Izmantojot bezmaksas stropu serveri, ir daži trūkumi, piemēram:

- ikviens, kas klausās jūsu tēmu, saņems jūsu ziņas

- ja tas samazināsies vai būs jāmaksā vēlāk, jūs to nevarēsit izmantot (ja vien nemaksāsit)

- ja ikviens, kas publicē ziņas par to pašu tēmu, jūs saņemsiet arī viņu ziņas, viņš var publicēt nesaderīgus ziņojumus un salauzt jūsu HASS diagrammas

Izmantojot privātu serveri

Ja nevēlaties izmantot publisko bezmaksas serveri, varat izvēlēties privātu serveri. Mēs instalēsim Mosquitto MQTT ubuntu / debian serverī, piemēram, aveņu pi vai datorā.

Mosquitto ir serveris, kas ievieš MQTT protokolu, un tas ir bez maksas.

Lai to instalētu, piesakieties savā raspnerry pi vai citā uz debianiem balstītā serverī un palaidiet:

sudo apt atjauninājums

sudo apt instalēt -y mosquitto mosquitto -customers sudo systemctl iespējot mosquitto.service

Tas atjauninās krātuvi, instalēs moskītu serveri un klientu un ļaus tam palaist pakalpojumu startēšanas laikā

Lai saņemtu servera ip izpildi:

saimniekdatora nosaukums -es

un tas izdos kaut ko līdzīgu:

192.168.1.52 172.17.0.1 172.18.0.1

Tātad mans ip ir 192.168.1.52, zemāk esošajās komandās nomainiet to ar savu ip

Jūs varat pārbaudīt MQTT serveri, publicējot ziņojumu un saņemot to ar konsoles rīku, jo šiem diviem termināļiem ir jāatver viens, kas klausās ziņojumu, un tas, kas publicēs ziņojumu.

Vispirms terminālī palaidiet šo komandu, lai noklausītos ziņojumu par "/some-topic"

mosquitto_sub -h 192.168.1.52 -t /some -topic

Atveriet citu termināli un publicējiet ziņojumu par šo tēmu:

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

Pirmajā terminālī vajadzētu redzēt drukātu “{" mitrums ": 74.0}”.

Īpaša uzmanība:

- šī iestatīšana pieņem, ka HASS, Mosquitto un NodeMCU ir savienoti ar vienu un to pašu WIFI tīklu un nav ugunsmūra noteikumu un viņi var brīvi sazināties

-Mosquitt MQTT serverim nav lietotājvārda/paroles, ja vēlaties iestatīt akreditācijas datus, pārbaudiet to: https://www.steves-internet-guide.com/mqtt-username-password-example/ Jums arī jākonfigurē akreditācijas datus mājas palīgā un arduino skicē

7. darbība: OTA (bezvadu atjauninājumi) NodeMCU

Bezvadu atjauninājumi nozīmē, ka izstrādes paneli var mirgot bez vadiem, neizmantojot fizisku kabeli.

Arduino IDE atbalsta šo funkcionalitāti ESP8266 sērijai un dažām citām plāksnēm:

- nepieciešama sākotnējā zibspuldze, izmantojot USB kabeli

- izveido virtuālu portu, izmantojot WIFI, un tas ir redzams tikai no Arduino IDE

- nav pieejama informācija par sērijas atkļūdošanu

- atbalsta aizsardzību ar paroli

Lai iespējotu OTA ESP8266 skicē, vispirms iekļaujiet bibliotēku:

#ietver "ArduinoOTA.h"

Definējiet arī šo skices paroles konstanti:

#define SKETCHPASS "some_password"

Iestatīšanas sadaļā pievienojiet šīs rindas:

kamēr (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Savienojums neizdevās! Atsāknēšana …"); kavēšanās (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Virknes veids; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("Sākt atjaunināšanu " + tips";}); ArduinoOTA.onEnd ( () {Serial.println ("\ nGalums");}); ArduinoOTA.onProgress ( (neparakstīts int progress, neparakstīts int kopā) {Serial.printf ("Progress:%u %% / r", (progress / (kopā / 100)));}); ArduinoOTA.onError ( (ota_error_t kļūda) {Serial.printf ("Kļūda [%u]:", kļūda); 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 (" Saņemšana neizdevās ");} else if (error == OTA_END_ERROR) {Serial.println (" End Failed ");}}); ArduinoOTA.begin (); Serial.print ("IP adrese:"); Serial.println (WiFi.localIP ());

Un cilpas sadaļā pievienojiet šo rindu:

ArduinoOTA.rokturis ();

Pēc sākotnējās koda augšupielādes pēc plates sāknēšanas Arduino IDE sadaļā Rīki-> Port vajadzētu redzēt divu veidu portus:

Sērijas porti: /dev /ttyUSB0 (piemēram)

Tīkla porti: esp8266-xxxxx pie 192.168.1.xxx

Tagad jūs varat izvēlēties tīkla portu un augšupielādēt skices tālvadības pulti, un jums tiks prasīts ievadīt skices paroli (to, kuru esat definējis iepriekšējā konstantē)

8. solis: Secinājumi, nākotnes darbs

Šo apmācību var viegli mainīt, lai nosūtītu datus par cita veida sensoriem:

- ja NodeMCU tieši atbalsta jūsu sensoru, izmantojot bibliotēku, vienkārši apkopojiet sensora datus un tieši spiediet tos caur MQTT

- ja sensoru bibliotēka nedarbojas ar NodeMCU, bet tā ir paredzēta tikai Arduino, augšupielādējiet savu kodu arduino, izvadiet vērtību caur sērijas līniju un izlasiet to NodeMCU un nospiediet (tāpat kā mēs to darījām ar ģeigera skaitītāju)

Mēs pat varam to mainīt, lai nosūtītu datus no vairākiem sensoriem, piemēram:

- pievienojiet sensorus NodeMCU

- aptaujas dati no katra sensora

- par katru sensoru publicējiet datus par citu tēmu

- HASS definējiet vairākus sensorus (kā mēs to darījām ar ģeigeru), kas klausīsies dažādas tēmas

Ieteicams: