Raspberry Pi'de Zigbee2MQTT Çalıştırma

Bu yazı, PiMyLifeUp - Running Zigbee2MQTT on your Raspberry Pi kaynağından Türkçe'ye çevrilerek hazırlanmıştır.

Bu eğitimde, Raspberry Pi'nizde Zigbee2MQTT'yi nasıl kurup çalıştıracağınızı göstereceğiz.

Raspberry Pi Zigbee2MQTT

Zigbee2MQTT, Zigbee ve MQTT protokolleri arasında köprü kuran son derece kullanışlı ve güçlü bir yazılımdır.

Zigbee, düşük maliyetli ve düşük güçlü olmak üzere tasarlanmış popüler bir kablosuz teknolojidir, bu da onu birçok akıllı cihaz için mükemmel kılar. Örneğin, popüler Philips Hue ışık serisi, kablosuz iletişimi için Zigbee kullanır.

Öte yandan, MQTT bir konuya (topic) göre kolayca abone olmanızı ve mesaj göndermenizi sağlayan bir mesajlaşma protokolüdür.

Zigbee2MQTT yazılımı, bu iki protokol arasında köprü kurar. Bu, Raspberry Pi'nizin bağlı bir Zigbee USB üzerinden mesajlar almasını ve bunları MQTT protokolü üzerinden çıktı vermesini sağlar.

Raspberry Pi bir Zigbee alıcı-vericisiyle (transceiver) birlikte gelmediğinden, takmak için bir USB tanesini satın almanız gerekecek. Bunları nispeten ucuza edinebilirsiniz, ancak yatırım yapmadan önce Zigbee2MQTT web sitesindeki desteklenen cihazlar listesine bakın.

Aşağıdaki bölümün sonunda, Raspberry Pi'nizde Zigbee2MQTT köprüsü çalışıyor olacak.

Raspberry Pi'de Zigbee2MQTT Kurulumu ve Ayarlanması

Bu bölüm, Raspberry Pi'nize Zigbee2MQTT kurulumunu ve ayarlanmasını ele alacak. Tüm bunların çalışması için birkaç yazılım parçası gerektiğinden bu süreç biraz kapsamlı olabilir.

Raspberry Pi'nizi Hazırlama

1. Devam etmeden önce, aşağıdaki iki komutu kullanarak paket listesini güncellemeli ve güncel olmayan tüm paketleri yükseltmeliyiz.

İlk komut paket listesi önbelleğini günceller, ikincisi ise eski paketleri yükseltir.

sudo apt update
sudo apt upgrade -y

2. Raspberry Pi'mize kurmamız gereken temel şey Docker'dır.

Docker, Raspberry Pi'nizde Zigbee2MQTT'yi çalıştırmayı kolay ve basit hale getirir. Ayrıca bir MQTT sunucusunu da kolayca kurmamızı sağlayacak.

Zigbee Adaptör Portunuzu Bulma

3. Docker kurulduktan sonra, Zigbee2MQTT için hazırlığa devam edebiliriz.

Bir sonraki adımımız, Zigbee adaptörünüzün Raspberry Pi'nizde nereye bağlandığını belirlemektir. Bir sonraki adıma geçmeden önce, Zigbee adaptörünüzü takın. Zaten takılıysa, çıkarıp tekrar takın.

4. Bir sonraki adımımız, kernel tamponunu (buffer) çıktı vermek için dmesg komutunu kullanmaktır. Bunu kullanarak, bu cihazın nereye bağlandığını kolayca bulabiliriz.

sudo dmesg

5. Aşağıda, Raspberry Pi'mizin adaptörü cihazımızda algılayıp bağladığını görebilirsiniz.

Özellikle, aradığımız satır sonuncusudur, çünkü bize bağlantı adını veren odur.

[1067876.235950] usb 1-1.3: new full-speed USB device number 6 using xhci_hcd
[1067876.352763] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=55d4, bcdDevice= 4.42
[1067876.352780] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[1067876.352786] usb 1-1.3: Product: SONOFF Zigbee 3.0 USB Dongle Plus V2
[1067876.352792] usb 1-1.3: Manufacturer: ITEAD
[1067876.352797] usb 1-1.3: SerialNumber: 20231031163548
[1067876.360193] cdc_acm 1-1.3:1.0: ttyACM0: USB ACM device

6. Son satıra bakıldığında, istediğiniz şey "USB ACM device"den önceki isimdir. Bizim durumumuzda, bu cihaz adımızın "ttyACM0" olduğu anlamına gelir.

Bu cihaz adını not edin, çünkü bu rehberde ilerleyen kısımlarda ihtiyacınız olacak.

[1067876.360193] cdc_acm 1-1.3:1.0: **ttyACM0** : USB ACM device

Raspberry Pi'de Zigbee2MQTT İçin Bir Dizin Oluşturma

7. Bir sonraki adımımız, Zigbee2MQTT'nin Compose dosyasını ve yapılandırmasını saklamak için bir dizin oluşturmayı gerektiriyor.

Bu dizini terminalde mkdir komutunu kullanarak oluşturabilirsiniz.

sudo mkdir -p /opt/stacks/zigbee2mqtt

8. Dizini oluşturduktan sonra, aşağıdaki cd komutunu kullanarak dizine geçin.

cd /opt/stacks/zigbee2mqtt

Zigbee2MQTT İçin Bir Docker Compose Dosyası Yazma

9. Artık Raspberry Pi'mizde Zigbee2MQTT'yi çalıştıracak Compose dosyasını çalıştırmaya başlayabiliriz.

Bu aynı compose dosyasını bir MQTT sunucusu başlatmak için de kullanacaksınız. MQTT'yi aynı Compose dosyası içinde çalıştırmak, Zigbee2MQTT yazılımının kendi konteynerinden onunla konuşması daha kolay olduğundan daha kolaydır.

Bu Compose dosyasını yazmaya nano metin editörünü kullanarak başlayabilirsiniz.

sudo nano compose.yaml

11. Bu compose dosyasının içine, aşağıdaki satırları girin.

Bu satırları yazarken, hızlıca üzerinden geçeceğimiz iki şeyi değiştirmeniz gerekiyor.

  • <TIMEZONE>: Öncelikle saat dilimini değiştirmelisiniz. Bunun bir TZ Tanımlayıcısı kullanılarak belirtilmesi gerekir. Wikipedia'yı ziyaret ederek yerel saat diliminiz için ilgili olanı bulabilirsiniz. Bu sayfa size her saat diliminin ve TZ Tanımlayıcısının bir listesini verir.

  • <DEVICENAME>: Bu değeri, bu rehberde daha önce aldığınız cihaz adıyla değiştirmeniz gerekiyor. Buraya girdiğiniz değer "ttyACM0" veya "ttyUSB0" gibi görünmelidir.

    version: '3.8'
    services:
    mqtt:
    image: eclipse-mosquitto:2
    restart: unless-stopped
    volumes:
    - "./mosquitto-data:/mosquitto"
    ports:
    - "1883:1883"
    - "9001:9001"
    command: "mosquitto -c /mosquitto-no-auth.conf"
    zigbee2mqtt:
    container_name: zigbee2mqtt
    restart: unless-stopped
    image: koenkk/zigbee2mqtt
    volumes:
    - ./zigbee2mqtt-data:/app/data
    - /run/udev:/run/udev:ro
    ports:
    - 8080:8080
    environment:
    - TZ=
    devices:
    - /dev/:/dev/

12. Yukarıdaki satırları yazdıktan sonra, CTRL + X, ardından Y ve son olarak ENTER tuşuna basarak kaydedip çıkabilirsiniz.

Zigbee2MQTT İçin Yapılandırma Dosyasını Yazma

13. Bir sonraki adımımız, Raspberry Pi'mizde Zigbee2MQTT yapılandırmasını saklamak için bir dizin oluşturmayı gerektiriyor.

Bu yapılandırma, onu Zigbee cihazımıza ve MQTT sunucusuna nasıl yönlendireceğimizdir.

sudo mkdir /opt/stacks/zigbee2mqtt/zigbee2mqtt-data

14. Aşağıdaki komut, yapılandırma dosyasını terminalde yazmanızı sağlar.

sudo nano /opt/stacks/zigbee2mqtt/zigbee2mqtt-data/configuration.yaml

15. Bu dosyanın içine, aşağıdaki satırları yazmanız gerekiyor. MQTT konteynerini aynı Compose dosyası içinde çalıştırdığımızdan, bu yapılandırma dosyasında ona "mqtt" ana bilgisayar adını kullanarak referans verebiliriz.

"<DEVICENAME>" kısmını Zigbee adaptörünüz için bu rehberde aldığınız isimle değiştirmelisiniz.

permit_join: true

mqtt:
  base_topic: zigbee2mqtt
  server: mqtt://mqtt

serial:
  port: /dev/<DEVICENAME>

frontend:
  port: 8080

advanced:
  network_key: GENERATE

16. Bu yapılandırma dosyasını yazmayı bitirdikten sonra, CTRL + X, ardından Y ve son olarak ENTER tuşuna basarak kaydedip çıkın.

Raspberry Pi'nizde Zigbee2MQTT'yi Başlatma

17. Compose dosyası oluşturulduktan sonra, aşağıdaki komutu çalıştırarak Raspberry Pi'mizde Zigbee2MQTT sunucusunu başlatabiliriz.

Docker, konteynerleri indirecek ve önceki bölümde yazdığımız yapılandırmaya göre başlatacaktır.

docker compose up

Bu Docker konteynerlerini yönetmeyi zahmetsiz hale getirmek için Raspberry Pi'nize Dockge kurmanızı şiddetle tavsiye ederiz.

Web Arayüzüne Erişim

18. Zigbee2MQTT web arayüzüne erişmek için, Pi'nizin IP adresine ve ardından "8080" portuna gidin.

Raspberry Pi'nizin IP adresini bilmiyorsanız, hostname komutunu kullanarak hızlıca alabilirsiniz.

http://<IPADRESI>:8080

19. Web arayüzü açıkken, Zigbee2MQTT köprüsünü kolayca kontrol edebilirsiniz.

Sağ üst köşedeki düğmeye tıklayarak cihazların katılmasını devre dışı bırakabilir ve tekrar etkinleştirebilirsiniz.

Zigbee2MQTT Raspberry Pi Web Arayüzü

20. Bu noktada, Zigbee cihazlarınızı Zigbee2MQTT köprüsüyle eşleştirmek isteyeceksiniz.

Bu süreç Zigbee uyumlu cihazlar arasında önemli ölçüde farklılık gösterdiğinden, bunu nasıl yapacağınızı ele almayacağız. Çoğu cihaz, fabrika ayarlarına sıfırlandıktan sonra eşleştirme moduna girecektir.

Cihazları nasıl eşleştireceğinize dair adımlar için Zigbee2MQTT'nin uyumlu cihazlar listesine başvurabilirsiniz.

Sonuç

Bu aşamada, artık Raspberry Pi'nizde Zigbee2MQTT köprüsü çalışıyor olmalıdır.

Bu köprü, Zigbee cihazlarınızı Home Assistant gibi hizmetlerle kolayca bağlamanızı sağlar.

Bu köprüyü Pi'nizde çalışır hale getirirken herhangi bir sorunla karşılaşırsanız, aşağıya yorum bırakmaktan çekinmeyin.