İçindekiler:
- Adım 1: Parçalar ve Araçlar
- Adım 2: Çalışma Prensibi
- 3. Adım: Cihazı Birleştirin
- 4. Adım: Kodu Yükleyin
- Adım 5: HomeAssistant'ı yapılandırın
- 6. Adım: Kendi MQTT Sunucunuzu Yapılandırma [Opsiyonel]
- 7. Adım: NodeMCU için OTA (Havadan Güncellemeler)
- Adım 8: Sonuçlar, Gelecekteki Çalışma
Video: Home Assistant Geiger Counter Entegrasyonu: 8 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
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
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
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:
DIY Akıllı Garaj Kapısı Açıcı + Ev Asistanı Entegrasyonu: 5 Adım
Kendin Yap Akıllı Garaj Kapısı Açıcı + Ev Asistanı Entegrasyonu: Bu kendin yap projesini kullanarak normal garaj kapınızı akıllı hale getirin. Home Assistant (MQTT üzerinden) kullanarak nasıl inşa edeceğinizi ve kontrol edeceğinizi ve garaj kapınızı uzaktan açıp kapatabileceğinizi göstereceğim. Wemos adında bir ESP8266 kartı kullanacağım
DIY Akıllı Kapı Zili: Kod, Kurulum ve HA Entegrasyonu: 7 Adım (Resimlerle)
Kendin Yap Akıllı Kapı Zili: Kod, Kurulum ve HA Entegrasyonu: Bu projede, mevcut işlevleri değiştirmeden veya kabloları kesmeden normal kapı zilinizi nasıl akıllı hale getirebileceğinizi göstereceğim. Wemos D1 mini adlı bir ESP8266 kartı kullanacağım.ESP8266'da yeni misiniz? Tanıtımımı izleyin
ESP8266, Google Home ve Openhab Entegrasyonu ve Webcontrol ile Panjur Kontrolü: 5 Adım (Resimlerle)
ESP8266, Google Home ve Openhab Entegrasyonu ve Webcontrol ile Panjur Kontrolü: Bu Eğitilebilir Tabloda size panjurlarıma nasıl otomasyon eklediğimi gösteriyorum. Otomasyonu ekleyip çıkartabilmek istedim, bu yüzden tüm kurulum klipsli. Ana parçalar: Step motor Step sürücü kontrollü bij ESP-01 Dişli ve montaj
3D Baskılı Omuz Zırhı EL Tel Entegrasyonu: 5 Adım
3D Baskılı Omuz Zırhı EL Tel Entegrasyonu: Bir omuz zırhını ve içine entegre EL telini 3B yazdırdım. Bu tekniği, çizgi roman kostümü yapılarındaki karakterler için kullanabilirsiniz
Raspberry Pi Linux Motion Google Fotoğraflar Entegrasyonu: 5 Adım
Raspberry Pi Linux Motion Google Fotoğraflar Entegrasyonu: Buradaki fikir, dosyaları bir buluta yüklemek için Raspberry Pi'ye bağlı hareketle etkinleştirilen kamera ile yapılan fotoğrafları ve videoları yüklemektir. "Hareket" yazılımı, PyDrive aracılığıyla Google Drive'a yüklemeyi destekler. Bu yazıda Google P'ye yüklemek için 'Motion' kullanılıyor