Სარჩევი:

მთავარი ასისტენტი გეიგერის მთვლელი ინტეგრაცია: 8 ნაბიჯი
მთავარი ასისტენტი გეიგერის მთვლელი ინტეგრაცია: 8 ნაბიჯი

ვიდეო: მთავარი ასისტენტი გეიგერის მთვლელი ინტეგრაცია: 8 ნაბიჯი

ვიდეო: მთავარი ასისტენტი გეიგერის მთვლელი ინტეგრაცია: 8 ნაბიჯი
ვიდეო: პარლამენტში მდინარაძის თანაშემწე და პაპუაშვილის მრჩეველი ერთმანეთს ფიზიკურად დაუპირისპირდნენ 2024, ივლისი
Anonim
Image
Image
მუშაობის პრინციპი
მუშაობის პრინციპი

ამ გაკვეთილში მე ვაჩვენებ, თუ როგორ უნდა დაამატოთ პერსონალური სენსორები HASS- ში (სახლის ასისტენტი) უფრო კონკრეტულად გეიგერის მრიცხველი, მაგრამ პროცესი მსგავსია სხვა სენსორებისთვისაც.

ჩვენ გამოვიყენებთ NodeMCU დაფას, არდუინოზე დაფუძნებულ გეიგერს და უკვე დაყენებულ სახლის ასისტენტს.

ინტეგრაცია დაფუძნებული იქნება MQTT სერვერზე (საჯარო თუ კერძო) და მე ვაპირებ თქვენთან ერთად ეტაპობრივად.

თუ არ იცით რა არის სახლის დამხმარე, ეწვიეთ მათ გვერდს https://www.home-assistant.io/. ეს არის კარგად ცნობილი სახლის ავტომატიზაციის პლატფორმა, რომელიც ძალიან კარგად არის დაცული და ძალიან მორგებულია.

თქვენ შეისწავლით შემდეგს:

- მოწინავე კონფიგურაცია სახლის ასისტენტისთვის

- NodeMCU (განვითარების დაფა) და როგორ დავპროგრამოთ იგი Arduino IDE– ით

- OTA (განახლება ჰაერში) Arduino IDE გამოყენებით NodeMCU დაფისთვის

- როგორ დავუკავშიროთ სერიული მოწყობილობა NodeMCU- ს

- ხელით დაყენება MQTT სერვერი linux– ზე (სურვილისამებრ)

ძირითადი ვარაუდები:

- თქვენ გაქვთ სახლის ასისტენტი ამოქმედებული

- ცოტა რამ იცი ელექტრონიკის შესახებ

- თქვენ გაქვთ Arduino IDE დაინსტალირებული

ნაბიჯი 1: ნაწილები და ინსტრუმენტები

ნაწილები:

1. NodeMCU დაფა

2. პურის ბორდი

3. მამაკაცი-მამაკაცი და მამაკაცი-ქალი წვენის მავთულები

3. usb to micro usb კაბელი

4. arduino geiger counter სერიული ინტერფეისით

(მოძებნეთ 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 გადადის გეიგერის მრიცხველზე +

- GND მიდის გეიგერის მრიცხველთან -

- NodeMCU D7 (პინ 13) გადადის geiger TX– ზე

- NodeMCU D8 (პინ 15) გადადის geiger RX– ზე

- ჩართეთ NodeMCU კომპიუტერიდან მიკრო USB- ის საშუალებით

ნაბიჯი 4: ატვირთეთ კოდი

ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი
ატვირთეთ კოდი

ჩვენ ვაპირებთ გამოვიყენოთ Arduino IDE და ჩვენ დავრწმუნდებით, რომ ჩვენ გვაქვს NodeMCU დაფა დაინსტალირებული და Adafruit_MQTT ბიბლიოთეკა.

1. დააბლოკეთ github საცავი: https://github.com/danionescu0/arduino და დააკოპირეთ ესკიზი პროექტებიდან/HASSGeigerIntegration თქვენს arduino სკეტჩბუქის ადგილას

2. გახსენით Arduino IDE და დააინსტალირეთ NodeMCU

- გადადით ფაილზე -> პარამეტრები, დამატებითი დაფების მენეჯერის URL– ებში დაამატეთ https://arduino.esp8266.com/stable/package_esp8266com_index.json თუ უკვე გაქვთ რაიმე იქ დადეთ კომა წინ და დააწკაპუნეთ OK

-ინსტრუმენტებიდან -> დაფა -> დაფის მენეჯერი ჩაწერეთ "nodemcu" და შეარჩიეთ ჩანაწერი esp8266 ESP8266 საზოგადოების მიერ და დააჭირეთ ინსტალაციას

3. დააინსტალირეთ Adafruit_MQTT

-გადადით ინსტრუმენტებზე -> ბიბლიოთეკების მართვა -> მოძებნეთ "Adafruit_MQTT" და დააინსტალირეთ "Arduino MQTT ბიბლიოთეკა"

4. შეაერთეთ USB კაბელი თქვენს კომპიუტერში და დააკონფიგურირეთ დაფა:

-გადადით ინსტრუმენტებზე -> დაფაზე -> აირჩიეთ NodeMcu 1.0

-ინსტრუმენტები -> პორტი -> თქვენი USB პორტი

- დატოვეთ სხვა პარამეტრები უცვლელი

4. ესკიზში შეცვალეთ თქვენი WIFI რწმუნებათა სიგელები თქვენივე შესატყვისი:

#განსაზღვრეთ STASSID "ssid" // შეცვალეთ თქვენი WIFI SSID

#define STAPSK "pass" // შეცვალეთ თქვენი WIFI პაროლით

5. ატვირთეთ ესკიზი თქვენს დაფაზე და ატვირთვის შემდეგ გადატვირთეთ დაფა ღილაკიდან

6. გახსენით სერიული მონიტორი, თუ ყველაფერი კარგად არის, თქვენ უნდა ნახოთ ასეთი გამომავალი:

ჩატვირთვა

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 დასახელება: "რადიაცია" მდგომარეობის_თემა: "ჰა/გამოსხივება" ერთეულის_ზომვის: 'uSv' უნიკალური_იდი: "გამოსხივება" ღირებულების_თაბლონი: "{{value_json.radiation}}"

3. კონფიგურაციიდან -> სერვერის კონტროლი: დააჭირეთ ღილაკს "შეამოწმეთ კონფიგურაცია", შეამოწმეთ yaml კონფიგურაციის ფაილი შეცდომებისთვის და შემდეგ დააჭირეთ ღილაკს "გადატვირთვა" და დაელოდეთ სანამ დაიწყება

4. მიმოხილვიდან -> ზედა მარჯვენა კუთხის მენიუ -> ინტერფეისის კონფიგურაცია -> დააჭირეთ ღილაკს + ქვედა მარჯვნივ

5. აირჩიეთ "სენსორი" სიიდან -> "ერთეულის" ველში მოძებნეთ "sensor.radiation", სახელის ველში ჩაწერეთ "რადიაცია" და დააწკაპუნეთ ok, ის უნდა იყოს მთავარ გვერდზე ახლა

ნაბიჯი 6: საკუთარი MQTT სერვერის კონფიგურაცია [სურვილისამებრ]

მოდი ცოტა ვისაუბროთ MQTT– ის შესახებ

”MQTT არის კლიენტი სერვერი, რომელიც აქვეყნებს/გამოწერა შეტყობინებების სატრანსპორტო პროტოკოლს. ეს არის მსუბუქი წონა, ღია, მარტივი და შემუშავებული ისე, რომ მისი განხორციელება ადვილი იყოს. ეს მახასიათებლები მას იდეალურ ხდის მრავალ სიტუაციაში გამოსაყენებლად, მათ შორის შეზღუდულ გარემოში, როგორიცაა მანქანასთან მანქანასთან (M2M) და ნივთების ინტერნეტში (IoT) კონტექსტში, სადაც მცირე კოდის ნაკვალევია საჭირო და/ან ქსელის გამტარუნარიანობა.”

ციტირება ოფიციალური MQTT 3.1.1 სპეციფიკაციიდან.

ამრიგად, ჩვენ შეგვიძლია გამოვაქვეყნოთ შეტყობინება სადღაც ერთ მხარეს, მეორე მხარეს კი შეგვიძლია მოვისმინოთ ეს შეტყობინებები და რაღაც გავაკეთოთ მონაცემებით. MQTT მხარს უჭერს "თემებს", თემები არის ის სტრიქონები, რომელსაც ბროკერი იყენებს თითოეული კლიენტისთვის შეტყობინებების გასაფილტრავად, ასე რომ, თუ ჩვენ გამოვაქვეყნებთ შეტყობინებას "/გამოსხივების" თემაზე, მსმენელმა უნდა გამოიწეროს იგივე თემა, რომ მიიღოს ის შეტყობინებები, რომელსაც ჩვენ ვგზავნით.

აქ არის დიდი გაკვეთილი MQTT– ის შესახებ დეტალურად:

უფასო hive სერვერის გამოყენებით არის გარკვეული უარყოფითი მხარეები, როგორიცაა:

- ვინც თქვენს თემას უსმენს, მიიღებს თქვენს შეტყობინებებს

- თუ ის მცირდება ან მოითხოვს გადახდას მოგვიანებით თქვენ ვერ შეძლებთ მის გამოყენებას (თუ არ გადაიხდით)

თუ ვინმე, ვინც აქვეყნებს შეტყობინებებს იმავე თემაზე, თქვენ მიიღებთ მათ შეტყობინებებს, მათ შეუძლიათ გამოაქვეყნონ შეუთავსებელი შეტყობინებები და დაარღვიონ თქვენი HASS გრაფიკები

პირადი სერვერის გამოყენებით

თუ არ გსურთ საჯარო უფასო სერვერის გამოყენება, თქვენ გაქვთ კერძო სერვერის ვარიანტი. ჩვენ ვაპირებთ დავაყენოთ Mosquitto MQTT ubuntu / debian სერვერზე, როგორც ჟოლოს პი ან კომპიუტერი.

Mosquitto არის სერვერი, რომელიც ახორციელებს MQTT პროტოკოლს და ის უფასოა.

მისი ინსტალაციისთვის შედით თქვენს raspnerry pi ან სხვა დებიანზე დაფუძნებულ სერვერზე და გაუშვით:

sudo apt განახლება

sudo apt install -y mosquitto mosquitto კლიენტები sudo systemctl ჩართვა mosquitto.service

ეს განაახლებს საცავს, დააინსტალირებს mosquiito სერვერს და კლიენტს და მისცემს მას სერვისს გაშვებისას

სერვერის ip მისაღებად უნდა შეასრულოს:

მასპინძლის სახელი -მე

და გამოვა რაღაც მსგავსი:

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– დან

- სერიული გამართვის ინფორმაცია არ არის ხელმისაწვდომი

- მხარს უჭერს პაროლის დაცვას

ETA8266 ესკიზში OTA- ს გასააქტიურებლად ჯერ შეიტანეთ ბიბლიოთეკა:

#მოიცავს "ArduinoOTA.h"

ასევე განსაზღვრეთ ესკიზის პაროლის მუდმივი:

#განსაზღვრეთ SKETCHPASS "ზოგიერთი_სიტყვა"

დაყენების განყოფილებაში დაამატეთ ეს ხაზები:

ხოლო (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("კავშირი ვერ მოხერხდა! გადატვირთვა …"); დაგვიანება (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {სიმებიანი ტიპი; if (ArduinoOTA.getCommand () == U_FLASH) {type = "sketch";} else {// U_FS type = "filesystem";} Serial.println ("განახლების დაწყება " + ტიპი);}); ArduinoOTA.onEnd ( () {Serial.println ("\ n დასასრული");}); ArduinoOTA.onProgress ( (ხელმოუწერელი პროგრესი, ხელმოუწერელი int საერთო) {Serial.printf ("პროგრესი:%u %% / r", (პროგრესი / (სულ / 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. დასაწყისი (); Serial.print ("IP მისამართი:"); Serial.println (WiFi.localIP ());

და მარყუჟის განყოფილებაში დაამატეთ ეს ხაზი:

ArduinoOTA.handle ();

დაფის ჩატვირთვის შემდეგ თქვენი საწყისი კოდის ატვირთვის შემდეგ თქვენ უნდა ნახოთ Arduino IDE– ში Tools-> Port განყოფილებაში ორი სახის პორტი:

სერიული პორტები: /dev /ttyUSB0 (მაგალითად)

ქსელის პორტები: esp8266-xxxxx at 192.168.1.xxx

ახლა თქვენ შეგიძლიათ აირჩიოთ ქსელის პორტი და ატვირთოთ ესკიზის პულტი, თქვენ მოგეთხოვებათ ესკიზის პაროლი (ის, რაც თქვენ განსაზღვრეთ ზემოთ მუდმივობით)

ნაბიჯი 8: დასკვნები, მომავალი სამუშაო

ეს სახელმძღვანელო შეიძლება ადვილად შეიცვალოს სხვა ტიპის სენსორების შესახებ მონაცემების გასაგზავნად:

- თუ თქვენს სენსორს უშუალოდ მხარს უჭერს NodeMCU ბიბლიოთეკა, უბრალოდ შეაგროვეთ მონაცემები სენსორიდან და უშუალოდ უბიძგეთ მას MQTT საშუალებით

- თუ სენსორების ბიბლიოთეკა არ მუშაობს NodeMCU– სთან, მაგრამ ეს მხოლოდ Arduino– სთვისაა, მაშინ ატვირთეთ თქვენი კოდი arduino– ში, გამოიტანეთ მნიშვნელობა სერიული ხაზის საშუალებით და წაიკითხეთ NodeMCU– ში და დააყენეთ იგი (ისევე როგორც გეიგერის მრიცხველთან ერთად)

ჩვენ შეგვიძლია მისი შეცვლაც კი, რათა გავგზავნოთ მონაცემები მრავალი სენსორიდან, როგორიცაა:

- დაუკავშირეთ თქვენი სენსორები NodeMCU– ს

- გამოკითხვის მონაცემები თითოეული სენსორისგან

- თითოეული სენსორისთვის გამოაქვეყნეთ მონაცემები სხვადასხვა თემაზე

- HASS– ში განსაზღვრეთ მრავალი სენსორი (როგორც ჩვენ გავაკეთეთ გეიჯერთან ერთად), რომლებიც მოუსმენენ სხვადასხვა თემებს

გირჩევთ: