Mündəricat:

Ev köməkçisi Geiger sayğac inteqrasiyası: 8 addım
Ev köməkçisi Geiger sayğac inteqrasiyası: 8 addım

Video: Ev köməkçisi Geiger sayğac inteqrasiyası: 8 addım

Video: Ev köməkçisi Geiger sayğac inteqrasiyası: 8 addım
Video: Большой тест Zigbee роутеров - кто сможет подключить больше конечных устройств? 2024, Iyul
Anonim
Image
Image
İş prinsipi
İş prinsipi

Bu təlimatda, HASS -a (ev köməkçisi) xüsusi olaraq bir geiger sayğacına necə xüsusi sensorlar əlavə edəcəyinizi göstərəcəyəm, amma proses digər sensorlar üçün də eynidir.

NodeMCU lövhəsindən, arduino əsaslı bir geiger sayğacından və artıq quraşdırılmış bir ev köməkçisindən istifadə edəcəyik.

İnteqrasiya bir MQTT serverinə (ümumi və ya özəl) əsaslanacaq və bununla sizi addım -addım götürəcəyəm.

Ev köməkçisinin nə olduğunu bilmirsinizsə, https://www.home-assistant.io/ səhifəsinə daxil olun. Çox yaxşı saxlanılan və çox özelleştirilebilen tanınmış bir ev avtomatlaşdırma platformasıdır.

Aşağıdakıları öyrənəcəksiniz:

- Ev köməkçisi üçün inkişaf etmiş konfiqurasiya

- NodeMCU (inkişaf lövhəsi) və Arduino IDE ilə necə proqramlaşdırılması

- NodeMCU lövhəsi üçün Arduino IDE -dən istifadə edərək OTA (hava yeniləmələrində)

- NodeMCU -ya seriyalı cihazı necə bağlamaq olar

- Linux -da bir MQTT serverinin əl ilə quraşdırılması (isteğe bağlı)

Əsas fərziyyələr:

- Ev köməkçiniz işləyir və işləyir

- elektronika haqqında bir az məlumatınız var

- Arduino IDE quraşdırmısınız

Addım 1: Parçalar və Alətlər

Parçalar:

1. NodeMCU lövhəsi

2. çörək bord

3. kişi-kişi və kişi-dişi keçid telləri

3. usb mikro usb kabeli

4. seriyalı interfeysi olan arduino geiger sayğacı

("arduino geiger couter" üçün Ebayda axtarın)

5. radioaktiv material (isteğe bağlı olaraq kiçik bir sınaq nümunəsi)

Alətlər:

1. Arduino IDE

2. Ev köməkçisi quraşdırılıb

Addım 2: İş prinsipi

Məqsədimiz, HomeAssistat -da (HASS) geiger sayğacından oxunuşları göstərməkdir. Bir tərəfdə bir yerdə çalışan bir HASS serverimiz var, bu bir moruq pi və ya başqa bir cihaz ola bilər, digər tərəfdə isə geiger sayğacımız var.

Geiger sayğacının seriyalı bir portu var, bir həll birbaşa HASS -ın işlədiyi RaspberryPi -yə qoşulmaq olacaq.

Yaxşı bir fikir ola bilməməsinin bəzi səbəbləri:

- orada fiziki məkan yoxdur

- Seriya portunda başqa bir cihazımız var

- Geiger sayğacının yerinə kənarda yerləşdirilməsi lazım olan bir ətraf mühit sensoru bağlamaq istəyirik

Tamam, buna görə WIFI ilə əlaqə qurmağın başqa bir yolunu araşdıracağıq:

HASS, sensor məlumatlarının oxunmasını və bir MQTT serveri vasitəsi ilə bu tip bir serverin kiçik bir cihaz üçün bir cihazın "mövzu" mövzusunda bir mesaj yayımlayan digər cihazın mesajı almaq üçün bu mövzuda dinlədiyini göstərməsini dəstəkləyir. Beləliklə, HASS dinləyəcək və mesajı dərc edəcək bir şeyə ehtiyacımız var.

Sensorumuz yalnız serial xətti üzərində danışmağı bilir, buna görə də serial xətti oxuya bilən və WIFI ilə əlaqə qura bilən və MQTT serveri ilə danışa bilən bir lövhədən istifadə edəcəyik. Bunu edən ucuz bir lövhə NodeMCU -dur.

NodeMCU Arduino IDE ilə proqramlaşdırıla bilər. Eskiz olduqca sadədir, aşağıdakıları edir:

- WIFI -ə qoşulur

- serverlə MQTT əlaqəsi saxlayır və uğursuz olduqda və ya ayrıldıqda əlaqəni yenidən sınayır

- ardıcıl gələn məlumatları bir sıra ədəd kimi dinləyir

- tam ədəd gəldikdən sonra onu MQTT vasitəsilə müəyyən bir mövzuya göndərir

Addım 3: Cihazı yığın

Cihazı yığın
Cihazı yığın

Çörək taxtaları və tellərdən istifadə edəcəyik, buna görə olduqca sadədir, bir neçə addımımız var:

- çörək lövhəsinə NodeMCU qoyun

- geiger borusunu geiger sayğacına qoşun (polariteye diqqət yetirin)

- VIN geiger sayğacına gedir +

- GND geiger sayğacına gedir -

- NodeMCU D7 (pin 13) geiger TX -ə gedir

- NodeMCU D8 (pin 15) geiger RX -ə gedir

- NodeMCU -nu kompüterdən mikro USB vasitəsilə gücləndirin

Addım 4: Kodu yükləyin

Kodu yükləyin
Kodu yükləyin
Kodu yükləyin
Kodu yükləyin
Kodu yükləyin
Kodu yükləyin
Kodu yükləyin
Kodu yükləyin

Arduino IDE -dən istifadə edəcəyik və NodeMCU lövhəsinin və Adafruit_MQTT kitabxanasının quraşdırıldığından əmin olacağıq.

1. Github deposunu klonlaşdırın: https://github.com/danionescu0/arduino və eskizi layihələrdən kopyalayın/HASSGeiger Arduino eskiz kitabınızın yerləşdiyi yerə inteqrasiya edin.

2. Arduino IDE -ni açın və NodeMCU qurun

- Fayl -> Tercihlər bölməsinə keçin, Əlavə Lövhələr Menecer URL -lərinə https://arduino.esp8266.com/stable/package_esp8266com_index.json əlavə edin, əgər orda bir şeyiniz varsa koma qoyun və OK düyməsini basın.

-Alətlərdən -> İdarə Heyəti -> İdarə Heyəti Menecerinə "nodemcu" yazın və ESP8266 Birliyi tərəfindən esp8266 girişini seçin və quraşdırma düyməsini basın.

3. Adafruit_MQTT quraşdırın

-Alətlər -> Kitabxanaları İdarə et -> "Adafruit_MQTT" axtarın və "Arduino MQTT kitabxanası" nı quraşdırın.

4. USB kabelini kompüterinizə qoşun və lövhəni konfiqurasiya edin:

-Alətlər -> İdarə Heyəti -> NodeMcu 1.0 seçin

-Alətlər -> Port -> USB portunuz

- digər parametrləri dəyişməz buraxın

4. Eskizdə WIFI etimadnamənizi özünüzə uyğun olaraq dəyişdirin:

#define STASSID "ssid" // WIFI SSID ilə dəyişdirin

#destine STAPSK "pass" // WIFI parolunuzla dəyişdirin

5. Eskizi lövhənizə yükləyin və yüklədikdən sonra lövhəni düymədən sıfırlayın

6. Serial monitoru açın, hər şey qaydasındadırsa, belə bir çıxış görməlisiniz:

Booting

IP ünvanı: 192.168.1.168 OTA aktivdir MQTT -yə qoşulur… MQTT Bağlandı! {"radiasiya": 0.03}..

Addım 5: HomeAssistant -ı konfiqurasiya edin

HomeAssistant -ı konfiqurasiya edin
HomeAssistant -ı konfiqurasiya edin
HomeAssistant -ı konfiqurasiya edin
HomeAssistant -ı konfiqurasiya edin

Ev köməkçinizin işlədiyini düşünəcəyik. Sistemimdə bir RaspberryPi -də HASSOS 3.12 versiyası var. Ev köməkçinizin versiyası çox köhnə və ya çox yenidirsə, bəzi xüsusiyyətlər fərqli ola bilər. Bu dərslik 3.12 versiyası ilə əminliklə işləyir.

Ev köməkçiniz yoxdursa, rəsmi quraşdırma təlimatına baxın:

Quraşdırma ilə irəliləməzdən əvvəl NodeMCU -nun qoşulduğundan və məlumatları yayımladığından əmin olun.

Tamam, konfiqurasiya üçün burada da bir sıra addımlarımız olacaq:

1. "Fayl redaktoru" nu menyuda yoxsa quraşdırın, rəsmi təlimat budur:

2. "/config/configuration.yaml" faylını redaktə edin və aşağıdakıları əlavə edin və qeyd edin

- mqtt bölməsi yoxdursa

mqtt:

broker: broker.hivemq.com kəşfi: əsl discovery_prefix: ha

- sensorlar bölməsi

sensor:

- platform: mqtt adı: "Radiasiya" status_topik: "ha/radiasiya" vahidinin_ölçüsü: 'uSv' unikal_id: "radiasiya" dəyər_template: "{{value_json.radiation}}"

3. Konfiqurasiya -> Server nəzarətindən: "Konfiqurasiyanı yoxla" düyməsini basın, yaml konfiqurasiya faylının səhvlərini yoxlayın, sonra "yenidən başladın" düyməsini basın və yenidən başlayana qədər gözləyin.

4. Baxışdan -> Sağ üst küncdəki menyu -> UI konfiqurasiya et -> sağ altdakı + düyməsini basın

5. Siyahıdan "sensoru" seçin -> "varlıq" sahəsində "sensor.radiation" axtarın, ad sahəsində "Radiasiya" yazın və ok düyməsini basın, indi ana səhifədə olmalıdır

Addım 6: Öz MQTT Serverinizi Konfiqurasiya edin [İsteğe bağlı]

MQTT haqqında bir az müzakirə edək

MQTT, Müştəri Serverinin yayım/abunə mesajlaşma nəqliyyat protokoludur. Yüngül, açıq, sadə və həyata keçirilməsi asan olacaq şəkildə dizayn edilmişdir. Bu xüsusiyyətlər, kiçik bir kod izinin tələb olunduğu və/və ya şəbəkə bant genişliyinin yüksək olduğu yerlərdə Maşından Maşına (M2M) və Əşyaların İnterneti (IoT) kontekstlərində ünsiyyət qurmaq kimi məhdud mühitlər də daxil olmaqla bir çox vəziyyətdə istifadə üçün ideal hala gətirir.”

Rəsmi MQTT 3.1.1 spesifikasiyasından sitat.

Beləliklə, bir tərəfdən bir yerdə bir mesaj dərc edə bilərik, digər tərəfdən isə bu mesajları dinləyə və məlumatlarla bir şey edə bilərik. MQTT "mövzular" ı dəstəkləyir, mövzular brokerin hər bir müştəri üçün mesajları süzmək üçün istifadə etdiyi sətirlərdir, buna görə də "/şüalanma" mövzusuna bir mesaj dərc etsək, dinləyici göndərdiyimiz mesajları almaq üçün eyni mövzuya abunə olmalıdır.

İşdə MQTT haqqında ətraflı bir dərslik:

Pulsuz kovan serverindən istifadə edərkən bəzi çatışmazlıqlar var:

- mövzunuzu dinləyən hər kəs mesajlarınızı alacaq

- aşağı düşərsə və ya sonradan ödəniş tələb edərsə, istifadə edə bilməyəcəksiniz (ödəməsəniz)

- Eyni mövzuya mesaj göndərən hər kəs mesajlarını alacaqsa, onlar uyğun olmayan mesajlar dərc edə və HASS qrafiklərinizi poza bilərlər.

Şəxsi serverdən istifadə

Ümumi pulsuz serverdən istifadə etmək istəmirsinizsə, xüsusi bir server seçiminiz var. Mosquitto MQTT -ni moruq pi və ya kompüter kimi bir ubuntu / debian serverinə quracağıq.

Mosquitto, MQTT protokolunu tətbiq edən bir serverdir və pulsuzdur.

Qurmaq üçün raspnerry pi və ya digər debian əsaslı serverinizə daxil olun və işə salın:

sudo apt yeniləmə

sudo apt install -y mosquitto mosquitto -clients sudo systemctl mosquitto.service imkan verir

Bu, anbarı yeniləyəcək, ağcaqanad serveri və müştəri quraşdıracaq və xidmətin başlanğıcda işləməsini təmin edəcək

Serverin icrasını təmin etmək üçün:

ev sahibi -I

və belə bir şey çıxaracaq:

192.168.1.52 172.17.0.1 172.18.0.1

Beləliklə, mənim ipim 192.168.1.52 -dir, aşağıdakı əmrlərdə öz ipinizlə əvəz edin

Bir mesaj dərc edərək konsol vasitəsi ilə alaraq MQTT serverini sınaya bilərsiniz, çünki bu mesajı dinləyəcək bir mesajı açacaq iki terminal açılmalıdır.

Əvvəlcə terminalda "/bəzi mövzu" mesajını dinləmək üçün bu əmri işlədin.

mosquitto_sub -h 192.168.1.52 -t /bəzi -mövzu

Başqa bir terminal açın və bu mövzuya bir mesaj yayımlayın:

mosquitto_pub -h 192.168.1.52 -t /bəzi -mövzu -m '{"rütubət": 74.0}'

Birinci terminalda '{"rütubət": 74.0} yazısını görməlisiniz.

Xüsusi diqqət:

- bu qurğu HASS, Mosquitto və NodeMCU -nun eyni WIFI şəbəkəsinə qoşulduğunu və heç bir təhlükəsizlik duvarı qaydası olmadığını və sərbəst şəkildə ünsiyyət qura biləcəyini güman edir.

-Mosquitt MQTT serverinin istifadəçi adı/şifrəsi yoxdur, kimlik məlumatlarını qurmaq istəyirsinizsə bunu yoxlayın: https://www.steves-internet-guide.com/mqtt-username-password-example/ Ayrıca konfiqurasiya etməlisiniz. ev köməkçisindəki və arduino eskizindəki etimadnamələr

Addım 7: NodeMCU üçün OTA (Hava Güncellemeleri)

Yeniliklər, inkişaf lövhəsinin fiziki bir kabelə ehtiyac olmadan telsiz bir şəkildə söndürülməsi deməkdir.

Arduino IDE, ESP8266 seriyası və digər lövhələr üçün bu funksiyanı dəstəkləyir:

- USB kabeli üzərində ilkin flaş tələb olunur

- WIFI üzərindən virtual bir port yaradır və yalnız Arduino IDE -dən görünür

- Serial debug məlumatı yoxdur

- parol ilə qorunmasını dəstəkləyir

OTA -nı ESP8266 eskizində aktivləşdirmək üçün əvvəlcə kitabxananı daxil edin:

#"ArduinoOTA.h" daxil edin

Bu eskiz parol sabitini də təyin edin:

#müəyyən SKETCHPASS "bəzi_sifariş" təyin edin

Quraşdırma hissəsinə bu sətirləri əlavə edin:

isə (WiFi.waitForConnectResult ()! = WL_CONNECTED) {

Serial.println ("Bağlantı alınmadı! Yenidən yüklənir …"); gecikmə (5000); ESP.restart (); } ArduinoOTA.setPassword (SKETCHPASS); ArduinoOTA.onStart ( () {String növü; əgər (ArduinoOTA.getCommand () == U_FLASH) {type = "eskiz";} başqa {// U_FS type = "fayl sistemi";} Serial.println ("Yeniləməyə başlayın " + növü);}); ArduinoOTA.onEnd ( () {Serial.println ("\ nSon");}); ArduinoOTA.onProgress ( (imzasız int gedişi, imzasız int cəmi) {Serial.printf ("Tərəqqi:%u %% / r", (irəliləyiş / (cəmi / 100)));}); ArduinoOTA.onError ( (ota_error_t xətası) {Serial.printf ("Xəta [%u]:", səhv); əgər (səhv == OTA_AUTH_ERROR) {Serial.println ("Doğrulama Başarısız");} başqa halda (səhv == OTA_BEGIN_ERROR) {Serial.println ("Başlamadı");} başqa halda (səhv == OTA_CONNECT_ERROR) {Serial.println ("Bağlanmadı");} başqa halda (səhv == OTA_RECEIVE_ERROR) {Serial.println (" Alınmadı ");} başqa halda (səhv == OTA_END_ERROR) {Serial.println (" Bitmədi ");}}); ArduinoOTA.begin (); Serial.print ("IP ünvanı:"); Serial.println (WiFi.localIP ());

Və döngə hissəsinə bu xətti əlavə edin:

ArduinoOTA.handle ();

Lövhə açıldıqdan sonra ilkin kodu yüklədikdən sonra Alətlər-> Liman hissəsindəki Arduino IDE-də iki növ limanı görməlisiniz:

Serial portlar: /dev /ttyUSB0 (məsələn)

Şəbəkə limanları: esp8266-xxxxx at 192.168.1.xxx

İndi şəbəkə limanını seçə və sketch pultunu yükləyə bilərsiniz, sizdən eskiz parol tələb olunacaq (yuxarıda sabit olaraq təyin etdiyiniz parol).

Addım 8: Nəticələr, Gələcək İş

Bu təlimat, digər növ sensorlar haqqında məlumat göndərmək üçün asanlıqla dəyişdirilə bilər:

- Sensorunuz NodeMCU tərəfindən bir kitabxana vasitəsi ilə birbaşa dəstəklənirsə, sensordan verilənləri toplayın və birbaşa MQTT -dən itələyin.

- Sensor kitabxanası NodeMCU ilə işləmirsə, ancaq Arduino üçündürsə, kodunuzu arduino -ya yükləyin, dəyəri seriya xətti ilə çıxarın və NodeMCU -da oxuyun və itələyin (eynilə geiger sayğacında etdiyimiz kimi)

Hətta birdən çox sensordan məlumat göndərmək üçün dəyişdirə bilərik:

- sensorlarınızı NodeMCU -ya qoşun

- hər bir sensordan sorğu məlumatları

- Sensorların hər biri üçün məlumatları fərqli bir mövzuya yerləşdirin

HASS -da fərqli mövzuları dinləyəcək bir çox sensorlar (geiger ilə etdiyimiz kimi) təyin edin

Tövsiyə: