İçindekiler:

Home Assistant Geiger Counter Entegrasyonu: 8 Adım
Home Assistant Geiger Counter Entegrasyonu: 8 Adım

Video: Home Assistant Geiger Counter Entegrasyonu: 8 Adım

Video: Home Assistant Geiger Counter Entegrasyonu: 8 Adım
Video: Home assistant geiger counter integration 2024, Kasım
Anonim
Image
Image
Çalışma Prensibi
Çalışma Prensibi

Bu derste, HASS'a (ev asistanı) daha spesifik olarak bir geiger sayacına nasıl özel sensörler ekleyeceğinizi göstereceğim, ancak süreç diğer sensörler için de benzer.

NodeMCU kartını, arduino tabanlı bir geiger sayacını ve önceden kurulmuş bir ev asistanını kullanacağız.

Entegrasyon bir MQTT sunucusuna (genel veya özel) dayalı olacak ve sizi bununla adım adım izleyeceğim.

Ev asistanının ne olduğunu bilmiyorsanız, lütfen https://www.home-assistant.io/ sayfasını ziyaret edin. Çok iyi korunan ve son derece özelleştirilebilir, iyi bilinen bir ev otomasyon platformudur.

Şunları öğreneceksiniz:

- Ev Asistanı için gelişmiş yapılandırma

- NodeMCU (geliştirme panosu) ve Arduino IDE ile nasıl programlanacağı

- NodeMCU kartı için Arduino IDE kullanan OTA (havadan güncellemeler)

- NodeMCU'ya bir seri cihaz nasıl bağlanır

- linux üzerinde bir MQTT sunucusunu manuel olarak kurma (isteğe bağlı)

Temel varsayımlar:

- Ev Asistanınız çalışıyor ve çalışıyor

- elektronik hakkında biraz bilgin var

- Arduino IDE'niz kurulu

Adım 1: Parçalar ve Araçlar

Parçalar:

1. NodeMCU kartı

2. ekmek tahtası

3. erkek-erkek ve erkek-dişi jüper teller

3. usb'den mikro usb'ye kablo

4. seri arayüzlü arduino geiger sayacı

("arduino geiger couter" için Ebay'de arama yapın)

5. radyoaktif malzeme (isteğe bağlı küçük bir test örneği)

Aletler:

1. Arduino IDE'si

2. Ev Asistanı kuruldu

Adım 2: Çalışma Prensibi

Amacımız, HomeAssistat'ta (HASS) geiger sayacından alınan değerleri göstermektir. Bir tarafta bir ahududu pi veya başka bir cihaz olabilir ve bir yerde çalışan bir HASS sunucumuz var ve diğer tarafta geiger sayacımız var.

Geiger sayacının bir seri bağlantı noktası vardır, bir çözüm, seri bağlantı noktasını doğrudan HASS'ın üzerinde çalıştığı RaspberryPi'ye bağlamak olacaktır.

Bunun iyi bir fikir olmamasının bazı nedenleri:

- orada fiziksel alan yok

- seri bağlantı noktasında başka bir cihazımız var

- geiger sayacı yerine dışarıya yerleştirilmesi gereken bir çevresel sensör takmak istiyoruz

Tamam, bu yüzden başka bir olasılığı keşfedeceğiz WIFI üzerinden bağlantı kurun:

HASS, sensör verilerinin okunmasını ve bir MQTT sunucusu aracılığıyla, bu tür bir sunucunun küçük cihazlar için hafif bir bağlantı olduğunu görüntülemeyi destekler, bir cihaz bir "konu" üzerinde bir mesaj yayınlar, diğeri mesajı almak için o konuyu dinler. Yani HASS dinleyecek ve mesajı yayınlayacak bir şeye ihtiyacımız var.

Sensörümüz sadece seri hat üzerinden konuşmayı biliyor, bu yüzden seri hat okuyabilen ve WIFI üzerinden bağlanabilen ve MQTT sunucusuyla konuşabilen bir kart kullanacağız. Bunu yapan ucuz bir tahta NodeMCU'dur.

NodeMCU, Arduino IDE ile programlanabilir. Kroki oldukça basittir, aşağıdakileri yapar:

- WIFI'a bağlanır

- sunucuyla bir MQTT bağlantısı sürdürür ve başarısız olduğunda veya bağlantı kesildiğinde bağlantıyı yeniden dener

- seri gelen verileri bir dizi tamsayı olarak dinler

- bir tamsayı geldiğinde onu MQTT aracılığıyla belirli bir konuya gönderir

3. Adım: Cihazı Birleştirin

Cihazı Birleştirin
Cihazı Birleştirin

Breadboard ve teller kullanacağız, bu yüzden oldukça basit, birkaç adımımız var:

- NodeMCU'yu devre tahtasına koyun

- geiger tüpünü geiger sayacına bağlayın (kutupluluğa dikkat edin)

- VIN geiger sayacına gider +

- GND geiger sayacına gitti -

- NodeMCU D7 (pin 13) geiger TX'e gider

- NodeMCU D8 (pin 15) geiger RX'e gider

- bilgisayardan mikro USB aracılığıyla NodeMCU'ya güç verin

4. Adım: Kodu Yükleyin

Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle

Arduino IDE kullanacağız ve NodeMCU kartının kurulu olduğundan ve Adafruit_MQTT kitaplığının kurulu olduğundan emin olacağız.

1. github deposunu klonlayın:https://github.com/danionescu0/arduino ve taslağı projelerden/HASSGeigerIntegration arduino eskiz defteri konumunuza kopyalayın

2. Arduino IDE'yi açın ve NodeMCU'yu kurun

- Dosya -> Tercihler'e gidin, Ek Kurullar Yöneticisi URL'lerinde https://arduino.esp8266.com/stable/package_esp8266com_index.json ekleyin, eğer orada zaten bir şey varsa, önüne bir koma koyun ve Tamam'ı tıklayın.

- Araçlar -> Pano -> Pano Yöneticisi'nden "nodemcu" yazın ve esp8266 by ESP8266 Community girişini seçin ve kur'a basın

3. Adafruit_MQTT'yi kurun

- Araçlar -> Kitaplıkları Yönet -> "Adafruit_MQTT" yi arayın ve "Arduino MQTT kitaplığını" yükleyin

4. USB kablosunu bilgisayarınıza takın ve kartı yapılandırın:

- Araçlar -> Pano -> seçeneğine gidin ve NodeMcu 1.0'ı seçin

- Araçlar -> Bağlantı Noktası -> USB bağlantı noktanız

- diğer ayarları değiştirmeden bırakın

4. Çizimde WIFI kimlik bilgilerinizi kendinize uygun olacak şekilde değiştirin:

#define STASSID "ssid" // WIFI SSID'nizle değiştirin

#define STAPSK "pass" // WIFI şifrenizle değiştirin

5. Krokiyi panonuza yükleyin ve yükledikten sonra panoyu butondan sıfırlayın

6. Seri monitörü açın, her şey yolunda gittiyse, bunun gibi bir çıktı görmelisiniz:

Önyükleme

IP adresi: 192.168.1.168 OTA etkin MQTT'ye bağlanılıyor… MQTT Bağlandı! {"radyasyon": 0.03}..

Adım 5: HomeAssistant'ı yapılandırın

HomeAssistant'ı Yapılandır
HomeAssistant'ı Yapılandır
HomeAssistant'ı Yapılandır
HomeAssistant'ı Yapılandır

Ev asistanınızın hazır ve çalışır durumda olduğunu varsayacağız. Sistemimde RaspberryPi'de HASSOS sürüm 3.12 var. Ev asistanı sürümünüz çok eski veya çok yeniyse bazı özellikler farklılık gösterebilir. Bu eğitim, 3.12 sürümü ile kesin olarak çalışır.

Ev Asistanınız kurulu değilse, resmi kurulum kılavuzlarına bakın:

Kuruluma geçmeden önce NodeMCU'nun takılı olduğundan ve verileri yayınladığından emin olun.

Tamam, burada da yapılandırma için bir dizi adımımız olacak:

1. Menüde yoksa "dosya düzenleyici"yi kurun, işte resmi öğretici:

2. "/config/configuration.yaml" dosyasını düzenleyin ve aşağıdakini ekleyin ve kaydedin

- zaten yoksa mqtt bölümü

mqtt:

komisyoncu: broker.hivemq.com discovery: true discovery_prefix: ha

- sensörler bölümü

sensör:

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

3. Konfigürasyon -> Sunucu kontrollerinden: "Yapılandırmayı kontrol et"e basın, yaml yapılandırma dosyasında hatalar olup olmadığını kontrol edin ve ardından "yeniden başlat"a basın ve yeniden başlatılana kadar bekleyin

4. Genel Bakış -> Sağ üst köşe menüsünden -> Kullanıcı Arayüzü Yapılandır -> sağ alttan + düğmesine basın

5. Listeden "sensör"ü seçin -> "varlık" alanında "sensor.radiation" arayın, ad alanına "Radyasyon" yazın ve Tamam'a tıklayın, şimdi ana sayfada olmalıdır

6. Adım: Kendi MQTT Sunucunuzu Yapılandırma [Opsiyonel]

MQTT hakkında biraz tartışalım

“MQTT, bir İstemci Sunucusu yayınlama/abone olma mesajlaşma aktarım protokolüdür. Hafif, açık, basit ve uygulanması kolay olacak şekilde tasarlanmıştır. Bu özellikler, küçük bir kod ayak izinin gerekli olduğu ve/veya ağ bant genişliğinin yüksek olduğu Makineler Arası (M2M) ve Nesnelerin İnterneti (IoT) bağlamlarında iletişim gibi kısıtlı ortamlar da dahil olmak üzere birçok durumda kullanım için ideal hale getirir.”

Resmi MQTT 3.1.1 spesifikasyonundan alıntı.

Yani temelde bir tarafta bir yerde bir mesaj yayınlayabiliriz ve diğer tarafta bu mesajları dinleyebilir ve verilerle bir şeyler yapabiliriz. MQTT "konuları" destekler, konular, aracının her istemci için mesajları filtrelemek için kullandığı dizelerdir, bu nedenle "/radiation" konusuna bir mesaj yayınlarsak, bir dinleyicinin gönderdiğimiz mesajları almak için aynı konuya abone olması gerekir.

İşte MQTT hakkında ayrıntılı bir öğretici:

Ücretsiz kovan sunucusunu kullanmanın bazı dezavantajları vardır:

- konunuzu dinleyen herkes mesajlarınızı alacak

- düşerse veya daha sonra ödeme gerektirirse kullanamazsınız (ödemediğiniz sürece)

- aynı konuya mesaj gönderen herhangi biri de mesajlarını alırsa, uyumsuz mesajlar yayınlayabilir ve HASS grafiklerinizi bozabilir

Özel bir sunucu kullanma

Herkese açık ücretsiz sunucuyu kullanmak istemiyorsanız, özel sunucu seçeneğiniz vardır. Mosquitto MQTT'yi ahududu pi veya bilgisayar gibi bir ubuntu/debian sunucusuna kuracağız.

Mosquitto, MQTT protokolünü uygulayan bir sunucudur ve ücretsizdir.

Yüklemek için raspnerry pi veya diğer debian tabanlı sunucunuza giriş yapın ve şunu çalıştırın:

sudo uygun güncelleme

sudo apt install -y mosquitto sivrisinek istemcileri sudo systemctl mosquitto.service'yi etkinleştir

Bu, depoyu güncelleyecek, mosquiito sunucusunu ve istemcisini kuracak ve başlangıçta bir hizmetin çalışmasını sağlayacaktır.

Sunucu ipinin yürütülmesini sağlamak için:

ana bilgisayar adı -I

ve şöyle bir çıktı verecektir:

192.168.1.52 172.17.0.1 172.18.0.1

Yani benim ipim 192.168.1.52, aşağıdaki komutlarda onu kendi ipiniz ile değiştirin

MQTT sunucusunu bir mesaj yayınlayarak ve konsol aracıyla alarak test edebilirsiniz, bunun için biri mesajı dinleyen, diğeri mesajı yayınlayacak olan iki terminalin açılması gerekir.

İlk önce bir terminalde "/some-topic" ile ilgili bir mesajı dinlemek için bu komutu çalıştırın.

mosquitto_sub -h 192.168.1.52 -t /bir konu

Başka bir terminal açın ve bu konuya bir mesaj yayınlayın:

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

İlk terminalde ' {"nem": 74.0}' çıktısını görmelisiniz.

Özel dikkat:

- bu kurulum, HASS, Mosquitto ve NodeMCU'nun aynı WIFI ağına bağlı olduğunu ve güvenlik duvarı kuralı olmadığını ve serbestçe iletişim kurabileceklerini varsayar.

- Mosquitt MQTT sunucusunun kullanıcı adı/şifresi yok, kimlik bilgilerini ayarlamak istiyorsanız şunu kontrol edin: https://www.steves-internet-guide.com/mqtt-username-password-example/ Ayrıca yapılandırmanız gerekir Home Assistant ve arduino çizimindeki kimlik bilgileri

7. Adım: NodeMCU için OTA (Havadan Güncellemeler)

Kablosuz güncellemeler, geliştirme kartının fiziksel bir kabloya ihtiyaç duymadan kablosuz olarak yanıp sönebileceği anlamına gelir.

Arduino IDE, ESP8266 serisi ve diğer bazı kartlar için bu işlevselliği destekler:

- USB kablosu üzerinden ilk flaş gerektirir

- WIFI üzerinden sanal bir bağlantı noktası oluşturur ve yalnızca Arduino IDE'den görülebilir

- Seri hata ayıklama bilgisi yok

- şifre ile korumayı destekler

Bir ESP8266 çiziminde OTA'yı etkinleştirmek için önce kitaplığı ekleyin:

#include "ArduinoOTA.h"

Ayrıca bu çizim şifresi sabitini tanımlayın:

#define SKETCHPASS "some_password"

Kurulum bölümünde şu satırları ekleyin:

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

Serial.println("Bağlantı Başarısız! Yeniden Başlatılıyor…"); gecikme (5000); ESP.restart(); } ArduinoOTA.setPassword(SKETCHPASS); ArduinoOTA.onStart(() { String type; if (ArduinoOTA.getCommand() == U_FLASH) { type = "sketch"; } else { // U_FS type = "filesystem"; } Serial.println("Güncellemeye başla " + tipi); }); ArduinoOTA.onEnd(() { Serial.println("\nEnd"); }); ArduinoOTA.onProgress((işaretsiz int ilerleme, işaretsiz int toplam) { Serial.printf("İlerleme: %u%%\r", (ilerleme / (toplam / 100))); }); ArduinoOTA.onError((ota_error_t error) { Serial.printf("Error[%u]: ", error); if (error == OTA_AUTH_ERROR) { Serial.println("Auth Failed"); } else if (error == OTA_BEGIN_ERROR) { Serial.println("Başlama Başarısız"); } else if (error == OTA_CONNECT_ERROR) { Serial.println("Bağlantı Başarısız"); } else if (error == OTA_RECEIVE_ERROR) { Serial.println(" Alma Başarısız"); } else if (hata == OTA_END_ERROR) { Serial.println("Son Başarısız"); } }); ArduinoOTA.begin(); Serial.print("IP adresi:"); Serial.println(WiFi.localIP());

Ve döngü bölümüne şu satırı ekleyin:

ArduinoOTA.handle();

Kart açıldıktan sonra ilk kod yüklemenizden sonra Arduino IDE'de Araçlar-> Bağlantı Noktası bölümünde iki tür bağlantı noktası görmelisiniz:

Seri bağlantı noktaları: /dev/ttyUSB0 (örneğin)

Ağ bağlantı noktaları: 192.168.1.xxx'te esp8266-xxxxx

Artık ağ bağlantı noktasını seçebilir ve çizim uzaktan kumandasını yükleyebilirsiniz, sizden çizim şifresi istenir (yukarıda bir sabitte tanımladığınız şifre)

Adım 8: Sonuçlar, Gelecekteki Çalışma

Bu öğretici, diğer sensör türleri hakkında veri göndermek için kolayca değiştirilebilir:

- sensörünüz bir kitaplık aracılığıyla NodeMCU tarafından doğrudan destekleniyorsa, sensörden gelen verileri toplayın ve doğrudan MQTT'ye aktarın

- sensör kütüphanesi NodeMCU ile çalışmıyor ancak sadece Arduino içinse, kodunuzu arduino'ya yükleyin, değeri seri hattan çıktı alın ve NodeMCU'da okuyun ve itin (tıpkı geiger sayacında yaptığımız gibi)

Hatta şunun gibi birden fazla sensörden veri göndermek için değiştirebiliriz:

- sensörlerinizi NodeMCU'ya bağlayın

- her sensörden anket verileri

- sensörlerin her biri için verileri farklı bir konuya yayınlayın

- HASS'ta farklı konuları dinleyecek birden fazla sensör tanımlayın (geiger ile yaptığımız gibi)

Önerilen: