Rumah pintar di atas roda ... Alice. Bagian 2. ZIGBEE

Kelanjutan epik dengan kontrol suara


Di bagian sebelumnya, melalui Alice, suara itu dikendalikan oleh pengontrol MiLight. Tetapi pengendali seperti itu sama sekali tidak ada di setiap rumah, yang sangat membatasi kemampuan kami. Oleh karena itu, saya mulai memperluas kontrol suara ke lampu biasa, lampu, lampu gantung, dan sebagainya, tetapi dengan perubahan minimal dari sistem pencahayaan standar. Semua yang diperlukan untuk sistem semacam itu adalah penggantian sakelar konvensional dengan sakelar cerdas yang beroperasi sesuai dengan protokol ZigBee dan pemasangan koordinator USB ZigBee CC2531. Tentu saja, dari artikel sebelumnya, kami sudah memiliki kolom Yandex yang pintar dan kekacauan yang disesuaikan.

Biaya CC2531 biaya 250 rubel, programmer untuk itu CC-Debugger Texas Instrument - 500 rubel. Sakelar pintar sentuh Livolo VL-C701Z-11 adalah yang paling mahal - sekitar 2.000 rubel masing-masing, dan beberapa saat kemudian sakelar tombol Aqara Wall Switch Zigbee juga ditambahkan sekitar tahun 2000.

Awalnya, saya berencana untuk mengontrol sakelar melalui router gateway ZigBee, Livolo C700ZW-12, menghubungkannya ke hub terbuka dan mengarahkan menggunakan Alice melalui yandex2mqtt. Saya menghubungkan kelenjar ke listrik, mengatur aplikasi dari Livolo di telepon. Saya melihat gateway beralih, terhubung, dan semuanya bekerja dengan baik dari telepon. Tetapi hub terbuka dengan router tidak dapat digabungkan karena kurangnya fungsionalitas yang diperlukan di hub terbuka.

Saya harus meninggalkan gateway dan menggabungkan switch secara langsung dengan dongle CC2531. Dan di sini proyek zigbee2mqtt dari teman Koenkk membantu dengan ini . Sebagai hasilnya, kami berhasil menghubungkan koordinator ZigBee dengan sakelar cerdas, pertama memeriksa operasinya melalui kueri dalam topik mqtt untuk dianalisis, dan kemudian mengonfigurasi kontrol menggunakan Alice.

Jadi, bagaimana pengaturannya:

1. Jalankan sniffer CC2531 dengan firmware koordinator dan hubungkan ke port usb. Untuk menghindari pesan tentang kekurangan daya, lebih baik untuk menghubungkan setidaknya 2A ke catu daya 5V. Kami memeriksa bahwa tongkat dalam sistem didefinisikan dengan benar: ls -l / dev / serial / by-id akan menampilkan sesuatu seperti usb-Texas_Instruments_TI_CC2531_USB_CDC ___ 0X00124B0458ED3DDF-if00 -> ../../ttyACM0. Kehadiran bagian terakhir dari output "-> ../../ttyACM0" sangat penting jika itu. Tongkat dapat memutuskan tanpa bagian ini dan tidak ada yang akan berhasil. Memutar tongkat membantu saya dengan masalah seperti itu.

2. Instal Zigbee2mqtt , tetapi jangan mulai.

3. Sangat penting untuk mengkonfigurasi /opt/zigbee2mqtt/data/configuration.yaml dengan benar. Faktanya adalah Livolo smart switches beroperasi pada saluran 26, jadi saluran ini harus secara eksplisit diatur dalam file. Dan juga penting untuk memperhatikan jumlah spasi di awal baris file. Untuk memeriksa sintaks file konfigurasi, Anda dapat menggunakan validator YAML .

4. Setelah file konfigurasi terdaftar dengan benar dan dongle macet, jalankan zigbee2mqtt. Kemudian kita menginjak sakelar, mulai memasangkan dan melihat output konsol. Akan ada garis pertukaran data, saling rassharkivaniya antara perangkat dan akhirnya sesuatu seperti ini: MQTT publish: topic 'zigbee2mqtt/0x001*********a8c9', payload '{"state_left":"OFF","state_right":"OFF","linkquality":60}'. Ini berarti bahwa sakelar terhubung dan mengirimkan statusnya. Jika Anda menjalankan beberapa konsol lagi, maka Anda dapat mengontrol cahaya melalui topik mqtt: matikan- mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m OFF -u a**** -P *****dan putar - mosquitto_pub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -m ON -u a**** -P *****dan Anda juga dapat memeriksa tim di Topeka mosquitto_sub -d -h localhost -t zigbee2mqtt/0x001*********a8c9/left/set -u a**** -P *****. Omong-omong, untuk Livolo dan Aqara, topik tidak hanya berbeda dalam pengidentifikasi 0x0 ..., tetapi juga dalam struktur. Struktur topik untuk perangkat yang didukung dapat ditemukan di sini .

5. Setelah kami memverifikasi bahwa kami dapat mengelola perangkat melalui mqtt, kami akan memasangkan semuanya dengan Yandex. Beberapa nuansa telah muncul di sini. Perintah untuk mengendalikan perangkat melalui zigbee2mqtt datang ke topik dalam bentuk ON / OFF, dan yandex2mqtt ternyata memberikan 1/0. Solusi untuk masalah ini adalah mengedit di yandex2mqtt file /mnt/data/root/yandex2mqtt/device.js. Apakah Anda perlu mengganti int = val di sakelar pada case "on"? ke 'on': 'off' bukannya '1': '0'. Secara alami, perintah switching harus diperbaiki di hub terbuka di topik yang sesuai. Tanpa ini, cahaya pada Milight akan berhenti bekerja. Dan hal yang paling menarik terungkap di sana - karena yandex2mqtt dan zigbee2mqtt menerbitkan semuanya di server mqtt lokal, tampaknya perangkat zenbee tidak memerlukan hub terbuka untuk mengelola perangkat.Bundel bekerja secara langsung - yandex (Alice) -yandex2mqtt-mqtt-zigbee2mqtt-device zigbee. Bahkan entah bagaimana caranya. Tapi mari kita lanjutkan. Kami akan mengajukan topik kontrol perangkat di file konfigurasi /mnt/data/root/yandex2mqtt/config.js ke perangkat virtual baru, perbarui daftar perangkat di sistem dialog Yandex dan Anda dapat menendang Alice untuk menyalakan lampu.

6. Dimungkinkan juga untuk menghubungkan sepasang sensor Xiaomi, sensor kebocoran dan sensor suhu / kelembaban / tekanan ke sistem. Mereka bekerja pada baterai 2032. Secara alami, mereka tidak dikontrol, tetapi mereka secara berkala menjatuhkan informasi seperti #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:12:21: MQTT publish: topic 'zigbee2mqtt/0x0015************', payload '{"battery":91,"voltage":2985,"temperature":26.2,"humidity":28.65,"pressure":1006.9,"linkquality":52}' - # #033[32mzigbee2mqtt:info #033[39m 2020-05-04 21:21:07: MQTT publish: topic 'zigbee2mqtt/0x001************7', payload '{"battery":100,"voltage":3025,"linkquality":0,"water_leak":true}' sensor kebocoran dalam segelas air ke dalam topik . Sejauh ini, tidak ada manfaat khusus, tetapi jika semua ini otparsit dan melakukan sesuatu yang reaktif seperti mengirim SMS atau digit ke beberapa moncong web, maka itu akan sangat baik.

Dan sedikit video:



All Articles