Բովանդակություն:

Home Assistant Geiger Counter Integration: 8 Steps
Home Assistant Geiger Counter Integration: 8 Steps

Video: Home Assistant Geiger Counter Integration: 8 Steps

Video: Home Assistant Geiger Counter Integration: 8 Steps
Video: #44 How to Create a Dashboard Controllable Timer Switch in Home Assistant | vccground 2024, Հուլիսի
Anonim
Image
Image
Աշխատանքի սկզբունքը
Աշխատանքի սկզբունքը

Այս ձեռնարկում ես ցույց կտամ, թե ինչպես կարող եք HASS- ին (տնային օգնականին) ավելացնել հատուկ սենսորներ, ավելի կոնկրետ ՝ գեյգերի հաշվիչ, բայց գործընթացը նման է նաև այլ սենսորների համար:

Մենք կօգտագործենք NodeMCU տախտակը, arduino- ի վրա հիմնված գեյգերի հաշվիչը և արդեն տեղադրված տնային օգնականը:

Ինտեգրումը հիմնված կլինի MQTT սերվերի վրա (հանրային կամ մասնավոր), և ես պատրաստվում եմ ձեզ քայլ առ քայլ տանել դրանով:

Եթե չգիտեք, թե ինչ է տան օգնականը, այցելեք նրանց էջը ՝ https://www.home-assistant.io/: Դա տան հայտնի ավտոմատացման հարթակ է, որը շատ լավ պահպանված է և շատ հարմարեցված:

Դուք կսովորեք ՝

- տնային օգնականի առաջադեմ կազմաձևում

- NodeMCU (զարգացման խորհուրդ) և ինչպես ծրագրավորել այն Arduino IDE- ով

- OTA (օդային թարմացումներ) `օգտագործելով Arduino IDE- ն NodeMCU տախտակի համար

- ինչպես միացնել սերիական սարքը NodeMCU- ին

- Linux- ում MQTT սերվեր ձեռքով տեղադրելը (ըստ ցանկության)

Հիմնական ենթադրություններ.

- Դուք ունեք Home Assistant- ը գործարկված

- Դուք մի փոքր գիտեք էլեկտրոնիկայի մասին

- Դուք տեղադրել եք Arduino IDE- ն

Քայլ 1: Մասեր և գործիքներ

Մասեր:

1. NodeMCU տախտակ

2. հացահատիկ

3. արական և արական և իգական ջուփ լարեր

3. usb to micro usb մալուխ

4. arduino geiger հաշվիչ ՝ սերիական ինտերֆեյսով

(Ebay- ում որոնել «arduino geiger couter» բառը)

5. ռադիոակտիվ նյութ (ըստ ցանկության փոքր փորձանմուշ)

Գործիքներ:

1. Arduino IDE

2. Տեղադրված է տան օգնականը

Քայլ 2. Աշխատանքի սկզբունքը

Մեր նպատակն է HomeAssistat- ում (HASS) ցույց տալ ընթերցումները գեյգերի հաշվիչից: Մի կողմից մենք ունենք HASS սերվեր, որը ինչ -որ տեղ գործարկված է, դա կարող է լինել ազնվամորի պի կամ այլ սարք, իսկ մյուս կողմում մենք ունենք գեյգեր հաշվիչ:

Գեյգերի հաշվիչն ունի սերիական նավահանգիստ, լուծումներից մեկը կլինի սերիական պորտի ուղղակի կցումը RaspberryPi- ին, որով աշխատում է HASS- ը:

Որոշ պատճառներ, թե ինչու դա կարող է լավ գաղափար չլինել.

- այնտեղ ֆիզիկական տարածք չկա

- սերիական նավահանգստում մենք ունենք ինչ -որ այլ սարք

- մենք ցանկանում ենք կցել շրջակա միջավայրի տվիչ, որը պետք է դրվի դրսում `գեյգերի հաշվիչի փոխարեն

Լավ, ուրեմն մենք կուսումնասիրենք WIFI- ի միջոցով կապ հաստատելու ևս մեկ հնարավորություն.

HASS- ն աջակցում է սենսորների տվյալների ընթերցմանը և ցուցադրմանը, որ MQTT սերվերի միջոցով այս սերվերը փոքր սարքերի համար թեթև քաշի միացում է: Այսպիսով, HASS- ը կլսի, և մեզ պետք է մի բան, որը կհրապարակի հաղորդագրությունը:

Մեր սենսորը գիտի միայն խոսել սերիական գծի միջոցով, այնպես որ մենք կօգտագործենք տախտակ, որը կարող է կարդալ սերիական տող և որը կարող է միանալ WIFI- ով և խոսել MQTT սերվերի հետ: Էժան տախտակ, որը դա անում է, NodeMCU- ն է:

NodeMCU- ն կարող է ծրագրավորվել Arduino IDE- ով: Էսքիզը բավականին պարզ է, այն կատարում է հետևյալը.

- միանում է WIFI- ին

- պահպանում է MQTT կապը սերվերի հետ և նորից փորձում կապը, երբ այն ձախողված կամ անջատված է

- լսում է հաջորդական մուտքային տվյալները որպես ամբողջ թվերի շարք

- մի ամբողջ թիվ գալուց հետո այն ուղարկում է MQTT- ի միջոցով որոշակի թեմայի

Քայլ 3: Հավաքեք սարքը

Հավաքեք սարքը
Հավաքեք սարքը

Մենք կօգտագործենք գրատախտակներ և լարեր, այնպես որ դա բավականին պարզ է, մենք ունենք մի քանի քայլ.

- NodeMCU- ն դրեք սեղանի վրա

- միացրեք գեյգեր խողովակը գեյգերի հաշվիչին (զգուշացեք բևեռականությունից)

- VIN- ն անցնում է geiger counter +

- GND goest to geiger counter -

- NodeMCU D7 (փին 13) անցնում է geiger TX- ին

- NodeMCU D8 (փին 15) անցնում է geiger RX- ին

- սնուցեք NodeMCU- ն միկրո USB- ի միջոցով համակարգչից

Քայլ 4: Վերբեռնեք ծածկագիրը

Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը
Վերբեռնեք ծածկագիրը

Մենք կօգտագործենք Arduino IDE- ն և կհամոզվենք, որ տեղադրված ենք NodeMCU տախտակը և տեղադրված է Adafruit_MQTT գրադարանը:

1. Կլոնավորեք github- ի պահոցը.

2. Բացեք Arduino IDE- ն և տեղադրեք NodeMCU

- գնացեք Ֆայլ -> Նախապատվություններ, Լրացուցիչ տախտակների մենեջերի URL- ներում ավելացրեք https://arduino.esp8266.com/stable/package_esp8266com_index.json, եթե այնտեղ արդեն ինչ -որ բան ունեք, առաջ դրեք կոմա և կտտացրեք լավ

-Գործիքներից -> Տախտակ -> Տախտակի կառավարիչ մուտքագրեք «nodemcu» և ընտրեք ESP8266 Համայնքի կողմից esp8266 գրառումը և սեղմեք install

3. Տեղադրեք Adafruit_MQTT

-գնալ Գործիքներ -> Կառավարել գրադարանները -> որոնել «Adafruit_MQTT» և տեղադրել «Arduino MQTT գրադարան»

4. Միացրեք ձեր համակարգչի USB մալուխը և կազմաձևեք տախտակը.

-գնացեք Գործիքներ -> Տախտակ -> ընտրեք NodeMcu 1.0

-Գործիքներ -> Պորտ -> ձեր USB պորտ

- մնացած պարամետրերը թողեք անփոփոխ

4. Էսքիզում փոխեք ձեր WIFI հավատարմագրերը `ձեր սեփականին համապատասխանելու համար.

#սահմանեք STASSID «ssid» // Փոխարինեք ձեր WIFI SSID- ով

#define STAPSK «անցնել» // Փոխարինեք ձեր WIFI գաղտնաբառով

5. Էսքիզը վերբեռնեք ձեր տախտակին և վերբեռնումից հետո վերակայեք տախտակը կոճակից

6. Բացեք սերիական մոնիտորը, եթե ամեն ինչ կարգին է, ապա պետք է տեսնեք այսպիսի ելք.

Boot

IP հասցե ՝ 192.168.1.168 OTA- ն միացված է MQTT- ին միանալու… MQTT միացված է: {"ճառագայթում" `0.03}..

Քայլ 5: Կարգավորեք HomeAssistant- ը

Կարգավորեք HomeAssistant- ը
Կարգավորեք HomeAssistant- ը
Կարգավորեք HomeAssistant- ը
Կարգավորեք HomeAssistant- ը

Մենք ենթադրելու ենք, որ դուք ունեք աշխատող տնային օգնական: Իմ համակարգում ես ունեմ HASSOS 3.12 տարբերակ RaspberryPi- ի վրա: Եթե ձեր տան օգնականի տարբերակը չափազանց հին է կամ շատ նոր, որոշ գործառույթներ կարող են տարբերվել: Այս ձեռնարկը հաստատ աշխատում է 3.12 տարբերակով:

Եթե ձեր տնային օգնականը տեղադրված չէ, ստուգեք դրանց տեղադրման պաշտոնական ուղեցույցը ՝

Տեղադրումից առաջ գնալուց առաջ համոզվեք, որ NodeMCU- ն միացված է և տվյալներ է հրապարակում:

Լավ, մենք այստեղ նույնպես կունենանք մի շարք քայլեր ՝ կազմաձևման համար.

1. Տեղադրեք «ֆայլերի խմբագիր», եթե այն չունեք ընտրացանկում, ահա պաշտոնական ձեռնարկը ՝

2. Խմբագրել «/config/configuration.yaml» ֆայլը և ավելացնել հետևյալը և պահպանել այն

- mqtt բաժինը, եթե այն արդեն չունեք

mqtt:

բրոքեր ՝ broker.hivemq.com հայտնագործություն ՝ ճշմարիտ հայտնագործություն_ նախածանց ՝ հա

- սենսորների բաժին

սենսոր:

- հարթակ: mqtt անվանումը ՝ «Radառագայթում» կարգավիճակի_թեմա ՝ «հա/ճառագայթում» չափման_ միավոր ՝ 'uSv' unique_id:

3. Կազմաձևից -> Սերվերի կառավարում. Կտտացրեք «Ստուգեք կազմաձևումը» և ստուգեք yaml կազմաձևման ֆայլը սխալների համար, այնուհետև կտտացրեք «վերագործարկել» և սպասեք, մինչև այն վերագործարկվի

4. Ակնարկից -> Վերին աջ անկյունի ընտրացանկ -> Կարգավորեք UI -> ներքևի աջից սեղմեք + կոճակը

5. Selectանկից ընտրեք «սենսոր» -> «սուբյեկտ» դաշտում որոնեք «sensor.radiation», անվան դաշտում գրեք «iationառագայթում» և կտտացրեք ok, այն այժմ պետք է լինի գլխավոր էջում

Քայլ 6: Կարգավորեք ձեր սեփական MQTT սերվերը [ըստ ցանկության]

Եկեք մի փոքր քննարկենք MQTT- ի մասին

«MQTT- ը Հաճախորդի սերվեր է, որը հրապարակում/բաժանորդագրվում է հաղորդագրությունների փոխադրման արձանագրությանը: Այն թեթև է, բաց, պարզ և նախագծված այնպես, որ հեշտ լինի իրականացնել: Այս բնութագրերը այն իդեալական են դարձնում շատ իրավիճակներում օգտագործելու համար, ներառյալ այնպիսի սահմանափակ միջավայրեր, ինչպիսիք են Machine to Machine (M2M) և Internet of Things (IoT) համատեքստերը, որտեղ պահանջվում է փոքր կոդի ոտնահետք և/կամ ցանցի թողունակություն: »

Մեջբերում MQTT 3.1.1 պաշտոնական ճշգրտումից:

Այսպիսով, հիմնականում մենք կարող ենք հաղորդագրություն հրապարակել ինչ -որ տեղ մի կողմից, իսկ մյուս կողմից ՝ կարող ենք լսել այդ հաղորդագրությունները և ինչ -որ բան անել տվյալների հետ: MQTT- ն աջակցում է «թեմաներին», թեմաներն այն տողերն են, որոնք միջնորդը օգտագործում է յուրաքանչյուր հաճախորդի համար հաղորդագրությունները զտելու համար, այնպես որ, եթե մենք հաղորդագրություն ենք հրապարակում «/ճառագայթում» թեմային, լսողը պետք է բաժանորդագրվի նույն թեմային, որպեսզի ստանա մեր ուղարկած հաղորդագրությունները:

Ահա մանրամասն MQTT- ի մասին հիանալի ձեռնարկ ՝

Օգտագործելով անվճար փեթակի սերվեր, կան որոշ թերություններ, ինչպիսիք են.

- ցանկացած ոք, ով լսում է ձեր թեման, կստանա ձեր հաղորդագրությունները

- եթե այն նվազում է կամ հետագայում պահանջում է վճարում, դուք չեք կարողանա օգտագործել այն (եթե չեք վճարում)

- եթե որևէ մեկը, ով նույն թեմայի վերաբերյալ հաղորդագրություններ է հրապարակում, դուք նույնպես կստանաք նրա հաղորդագրությունները, նա կարող է անհամատեղելի հաղորդագրություններ հրապարակել և կոտրել ձեր HASS գրաֆիկները

Օգտագործելով մասնավոր սերվեր

Եթե չեք ցանկանում օգտագործել հանրային անվճար սերվերը, ապա ունեք մասնավոր սերվերի տարբերակ: Մենք պատրաստվում ենք Mosquitto MQTT- ն տեղադրել ubuntu / debian սերվերի վրա, ինչպես ազնվամորու pi- ն կամ համակարգիչը:

Mosquitto- ն սերվեր է, որն իրականացնում է MQTT արձանագրությունը և այն անվճար է:

Այն տեղադրելու համար մուտք գործեք ձեր raspnerry pi կամ debian- ի վրա հիմնված այլ սերվեր և գործարկեք.

sudo apt թարմացում

sudo apt տեղադրել -y mosquitto mosquitto- հաճախորդներ sudo systemctl միացնել mosquitto.service

Սա կթարմացնի շտեմարանը, կտեղադրի mosquiito սերվեր և հաճախորդ և հնարավորություն կտա այն գործարկել ծառայությունը գործարկման ժամանակ

Սերվերը ip ստանալու համար կատարեք.

հյուրընկալողի անունը -I

և այն կհեռացնի հետևյալը.

192.168.1.52 172.17.0.1 172.18.0.1

Այսպիսով, իմ ip- ն 192.168.1.52 է, ստորև բերված հրամաններում այն փոխարինեք ձեր սեփական ip- ով

Դուք կարող եք փորձարկել MQTT սերվերը `հաղորդագրություն հրապարակելով և ստանալով այն մխիթարիչ գործիքի միջոցով: Այս երկու տերմինալների համար պետք է բացվի մեկը, որը լսում է հաղորդագրությունը, մեկը, որը կհրապարակի հաղորդագրությունը:

Նախ տերմինալում գործարկեք այս հրամանը ՝ «/ինչ-որ թեմայի» վերաբերյալ հաղորդագրություն լսելու համար:

mosquitto_sub -h 192.168.1.52 -t /ինչ -որ թեմա

Բացեք մեկ այլ տերմինալ և հրապարակեք հաղորդագրություն այդ թեմային.

mosquitto_pub -h 192.168.1.52 -t /some -topic -m '{"խոնավություն" `74.0}'

Առաջին տերմինալում դուք պետք է տեսնեք տպված «{" խոնավություն ": 74.0}»:

Հատուկ ուշադրություն.

- այս կարգավորումը ենթադրում է, որ HASS- ը, Mosquitto- ն և NodeMCU- ն միացված են նույն WIFI ցանցին և չկան firewall- ի կանոններ, և նրանք կարող են ազատ հաղորդակցվել

-Mosquitt MQTT սերվերը չունի օգտվողի անուն/գաղտնաբառ: Եթե ցանկանում եք հաստատել հավատարմագրերը, ստուգեք սա ՝ https://www.steves-internet-guide.com/mqtt-username-password-example/ հավատարմագրերը Home Assistant- ում և arduino ուրվագծում

Քայլ 7: OTA (Օդային թարմացումներ) NodeMCU- ի համար

Օդային թարմացումները նշանակում են, որ զարգացման տախտակը կարող է մետաղալարով փայլել առանց ֆիզիկական մալուխի անհրաժեշտության:

Arduino IDE- ն աջակցում է այս գործառույթին ESP8266 շարքի և որոշ այլ տախտակների համար.

- պահանջում է նախնական բռնկում USB մալուխի միջոցով

- ստեղծում է վիրտուալ նավահանգիստ WIFI- ի միջոցով և այն տեսանելի է միայն Arduino IDE- ից

- Սերիայի վրիպազերծման մասին տեղեկություններ չկան

- ապահովում է գաղտնաբառով պաշտպանություն

ESP8266 էսքիզում OTA- ն միացնելու համար նախ ներառեք գրադարանը.

#ներառել «ArduinoOTA.h»

Սահմանեք նաև էսքիզային գաղտնաբառի հաստատուն.

#սահմանել SKETCHPASS «ինչ -որ գաղտնաբառ»

Կարգավորման բաժնում ավելացրեք այս տողերը.

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

Serial.println ("Կապը ձախողվեց: Վերագործարկեք …"); ուշացում (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {Լարի տիպ; եթե (ArduinoOTA.getCommand () == U_FLASH) {type = "ուրվագիծ";} ուրիշ {// U_FS type = "ֆայլային համակարգ";} Serial.println ("Սկսել թարմացումը " + տեսակը);}); ArduinoOTA.onEnd ( () {Serial.println ("\ n Վերջ");}); ArduinoOTA.onProgress ( (unsigned int progress, unsigned int total) {Serial.printf ("Progress:%u %% / r", (progress / (total / 100)));}); ArduinoOTA.onError ( (ota_error_t error) {Serial.printf ("Error [%u]:", error); if (error == OTA_AUTH_ERROR) {Serial.println ("Հեղինակությունը ձախողվեց");} այլ դեպքում, եթե (սխալ) == OTA_BEGIN_ERROR) {Serial.println ("Սկիզբը ձախողվեց");} այլ դեպքում, եթե (սխալ == OTA_CONNECT_ERROR) {Serial.println ("Միացումը ձախողվեց");} այլ դեպքում (սխալ == OTA_RECEIVE_ERROR) {Serial.println (" Ստանալը ձախողվեց ");} այլ դեպքում (սխալ == OTA_END_ERROR) {Serial.println (" Վերջը ձախողվեց ");}}); ArduinoOTA.begin (); Serial.print («IP հասցե ՝»); Serial.println (WiFi.localIP ());

Իսկ loop բաժնում ավելացրեք այս տողը.

ArduinoOTA.handle ();

Տախտակի գործարկումից հետո ձեր սկզբնական ծածկագիրը վերբեռնելուց հետո դուք պետք է տեսնեք Arduino IDE- ում Գործիքներ-> Պորտ բաժնում երկու տեսակի նավահանգիստ.

Սերիական նավահանգիստներ /dev /ttyUSB0 (օրինակ)

Networkանցային նավահանգիստներ. Esp8266-xxxxx ժամը 192.168.1.xxx

Այժմ կարող եք ընտրել ցանցի նավահանգիստը և վերբեռնել էսքիզը հեռակառավարման վահանակով, ձեզ կառաջարկվի էսքիզային գաղտնաբառ (այն, ինչ դուք սահմանել եք վերևում հաստատված):

Քայլ 8. Եզրակացություններ, ապագա աշխատանք

Այս ձեռնարկը կարող է հեշտությամբ փոփոխվել ՝ այլ տեսակի տվիչների վերաբերյալ տվյալներ ուղարկելու համար.

- եթե ձեր սենսորը ուղղակիորեն աջակցվում է NodeMCU- ի կողմից գրադարանի միջոցով, պարզապես սենսորից հավաքեք տվյալները և ուղղակիորեն դրանք մղեք MQTT- ի միջոցով

- եթե սենսորների գրադարանը չի աշխատում NodeMCU- ի հետ, բայց դա միայն Arduino- ի համար է, ապա վերբեռնեք ձեր կոդը arduino- ում, թողարկեք արժեքը սերիական գծի միջոցով և կարդացեք այն NodeMCU- ում և մղեք այն (ճիշտ այնպես, ինչպես մենք արեցինք geiger հաշվիչի հետ)

Մենք նույնիսկ կարող ենք փոփոխել այն ՝ բազմաթիվ սենսորներից տվյալներ ուղարկելու համար, ինչպիսիք են ՝

- միացրեք ձեր տվիչները NodeMCU- ին

- հարցման տվյալները յուրաքանչյուր սենսորից

- սենսորներից յուրաքանչյուրի համար տվյալները հրապարակեք տարբեր թեմայով

- HASS- ում սահմանեք բազմաթիվ սենսորներ (ինչպես մենք արեցինք գեյգերի հետ), որոնք կլսեն տարբեր թեմաներ

Խորհուրդ ենք տալիս: