Menambahkan Perangkat ZigBee ke Homebridge Menggunakan CC2531

Sudah ada artikel tentang Habr tentang cara membuat perangkat ZigBee dari berbagai produsen dengan sistem kontrol rumah pintar, tanpa menggunakan hub bermerek, seperti Xiaomi Gateway. Namun, saya tidak menemukan petunjuk untuk pembalap rumah tidak hanya di Habré, tetapi juga di ruang terbuka Internet lainnya. Karena itu, saya ingin berbagi pengalaman menambahkan perangkat ZigBee ke homebridge. Banyak terima kasih harus diungkapkan kepada pencipta sumber daya zigbee2mqtt.io , metode untuk mem-flash modem CC2531 dan menghubungkan ke sistem kontrol rumah pintar seperti Asisten Rumah , Domoticz dan Majordomo sudah dijelaskan di sana . Artikel ini ditujukan untuk pengguna yang sudah menginstal dan mengonfigurasi homebridge.


Semua tindakan dalam artikel akan dilakukan dengan set peralatan berikut:

  • Raspberry Pi 3 B + (Raspbian OS)
  • CC2531 Dongle ( Dijahit )
  • Perangkat Xiaomi (sakelar nirkabel, sensor suhu & kelembaban ...)
  • MacBook Pro (OSX 10.14)

Petunjuk untuk firmware CC2531 dalam bahasa Rusia ada di sini (melalui Pi) dan di sini (melalui CCDebuger) .

Secara skematis, seluruh rantai kerja dapat direpresentasikan sebagai berikut:



Sekarang sudah beres.

Setelah menginstal modem, Anda harus menginstal broker MQTT (jika belum diinstal).

Saya menggunakan Mosquitto, diinstal seperti ini:

sudo apt install -y mosquitto mosquitto-clients # sudo services mosquitto start #  sudo systemctl enable mosquitto.service # 

Petunjuk konfigurasi lebih rinci dapat ditemukan di sini .

Sekarang Anda perlu menginstal layanan zigbee2mqtt, yang berinteraksi dengan modem CC2531 dan mentransfer data ke Mosquitto:

 sudo git clone https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt sudo chown -R pi:pi /opt/zigbee2mqtt cd /opt/zigbee2mqtt npm install 

Untuk menjalankan zigbee2mqtt sebagai layanan, Anda perlu membuat file:
/etc/systemd/system/zigbee2mqtt.service

dengan konten berikut:
 [Unit] Description=zigbee2mqtt After=network.target [Service] ExecStart=/usr/bin/npm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always User=pi [Install] WantedBy=multi-user.target 


Jika Anda sudah menginstal broker MQTT, maka Anda harus mendaftarkan parameter yang benar untuk menghubungkannya dalam file:

 /opt/zigbee2mqtt/data/configuration.yaml 

Kami memulai layanan dan menambahkannya ke autorun:

 sudo systemctl start zigbee2mqtt sudo systemctl enable zigbee2mqtt.service 

Kami melihat log:

 sudo journalctl -u zigbee2mqtt.service -f 

Jika semuanya dikonfigurasi dengan benar, Anda akan melihat baris berikut:
 `permit_join` set to `true` in configuration.yaml. Allowing new devices to join. Set `permit_join` to `false` once you joined all devices. Zigbee: allowing new devices to join. Connecting to MQTT server at mqtt://localhost zigbee-shepherd ready Connected to MQTT server 


Anda dapat memulai integrasi dengan homebridge. Sumber daya zigbee2mqtt.io memiliki daftar perangkat yang didukung dan instruksi untuk membuat pasangan. Misalnya, pertimbangkan untuk menambahkan Sakelar Nirkabel Xiaomi.



Untuk melihat acara di Mosquitto, gunakan program MQTT Explorer . Kita mulai, masukkan alamat server MQTT, dalam kasus saya ini terletak di 192.168.1.104 . Jika semuanya diinstal dengan benar, maka di dalam pohon kita akan melihat cabang zigbee2mqtt. Kami melewati itu. Sekarang pada Sakelar Nirkabel Xiaomi, tahan tombol Reset hingga dioda berkedip (sekitar 5 detik). Setelah sekitar 10 detik di cabang zigbee2mqtt, kita akan melihat perangkat kita dan data yang ditransmisikan.

Jika ini tidak terjadi, maka setelah dioda berkedip, coba tekan Reset sekali dengan frekuensi per detik. Seharusnya seperti ini:



Mari kita menganalisis data:

 { "linkquality":110, "battery":100, "voltage":3052, "click":"single" } 

Bidang Klik berisi jenis klik, bisa ada lima di antaranya:
Click, double click, triple click, long, long_release

Kami belajar cara menerima data, sekarang tambahkan Xiaomi Wireless Switch ke homebrdige. Untuk berinteraksi dengan MQTT, kita akan menggunakan modul homebridge-mqttthing . Menginstal dengan cara yang sama seperti yang lain:

 (sudo) npm install -g homebridge-mqttthing 

Modul ini mendukung sejumlah besar kelas perangkat mulai dari sakelar hingga termostat. Untuk Xiaomi Wireless Switch, kelas StatelessProgramableSwitch paling cocok. Untuk menambahkan, Anda perlu tahu Topik (0x00158d00022c85ea) dan nama-nama perintah. Ternyata konfigurasi seperti ini:

 { "accessory": "mqttthing", "type": "statelessProgrammableSwitch", "name": "Xiaomi Single Button", "topics": { "getSwitch": { "topic": "zigbee2mqtt/0x00158d00022c85ea", "apply": "return JSON.parse(message).click;" } }, "switchValues": [ "single", "double", "long_release" ] } 

Dengan analogi, saya menambahkan:

sensor suhu dan kelembaban, sensor sentuh, sensor keberadaan dan sakelar.
 "accessories": [ { "accessory": "mqttthing", "type": "occupancySensor", "name": "Xiaomi Occupancy Sencor", "topics": { "getOccupancyDetected": { "topic": "zigbee2mqtt/0x00158d000236b492", "apply": "return JSON.parse(message).occupancy;" } }, "integerValue": true }, { "accessory": "mqttthing", "type": "contactSensor", "name": "Xiaomi Contatc Sencor", "topics": { "getContactSensorState": { "topic": "zigbee2mqtt/0x00158d000278db8c", "apply": "return !JSON.parse(message).contact;" } }, "integerValue": true }, { "accessory": "mqttthing", "type": "statelessProgrammableSwitch", "name": "Xiaomi Single Button", "topics": { "getSwitch": { "topic": "zigbee2mqtt/0x00158d00022c85ea", "apply": "return JSON.parse(message).click;" } }, "switchValues": [ "single", "double", "long_release" ] }, { "accessory": "mqttthing", "type": "temperatureSensor", "name": "Xiaomi Temperature Sencor", "topics": { "getCurrentTemperature": { "topic": "zigbee2mqtt/0x00158d000201842c", "apply": "return parseFloat(JSON.parse(message).temperature);" } }, "history": true }, { "accessory": "mqttthing", "type": "humiditySensor", "name": "Xiaomi Humidity Sencor", "topics": { "getCurrentRelativeHumidity": { "topic": "zigbee2mqtt/0x00158d000201842c", "apply": "return parseFloat(JSON.parse(message).humidity);" } }, "history": true } ] 


Kami memeriksa:



Saya biasa menggunakan modul homebridge-mi-aqara, yang menambahkan perangkat ZigBee, berinteraksi dengan Xiaomi Gateway. Ketika Gateway ditolak, waktu respons perangkat menurun, selain itu saya menyingkirkan perangkat yang duduk di WiFi saya dan terus-menerus merangkak di Internet.

Source: https://habr.com/ru/post/id462459/


All Articles