1. Подготовка
Устройство: Tuya Smart Zigbee датчик (модель: ZY-ZTH02 / TS0201)
Без кнопок. Включение в режим сопряжения — через двойную вставку батарейки.
2. Добавление датчика в Zigbee2MQTT
- Открыть конфигурацию:
~/zigbee2mqtt/data/configuration.yaml - Установить:
permit_join: true - Перезапустить Zigbee2MQTT:
cd ~/zigbee2mqtt && npm start - Активировать датчик:
- Вынуть батарейку
- Подождать 3 секунды
- Вставить → вынуть → вставить (2–3 раза подряд)
- Держать датчик рядом с USB-координатором
- Дождаться в логах:
Device '0xa4c1...' joined - После добавления: вернуть
permit_join: false
3. Проверка подключения
В веб-интерфейсе (порт 8080) появилось устройство:
- Адрес IEEE: 0xa4c138ab3129730c
- Модель: ZY-ZTH02 (TS0201)
- Производитель: Tuya
Статус "Доступность: Выключен" — норма (датчик на батарейке, спит между отправками).
4. Проверка данных в MQTT
Выполнить:
mosquitto_sub -h localhost -u iotuser -P 123456 -t "zigbee2mqtt/#" -v
Пример вывода:
zigbee2mqtt/0xa4c138ab3129730c {"temperature":29.82,"humidity":36.82,"battery":100}
5. Сохранение данных в MySQL
Создан скрипт ~/mqtt_to_mysql.py, который:
- Подключается к MQTT
- Читает данные с топиков
zigbee2mqtt/# - Фильтрует служебные сообщения
- Сохраняет температуру, влажность и батарейку в таблицу
sensor_data
6. Автозагрузка Zigbee2MQTT
Создан systemd-сервис:
sudo nano /etc/systemd/system/zigbee2mqtt.service
Содержимое:
[Unit] Description=Zigbee2MQTT After=network.target [Service] Type=simple User=mazzick WorkingDirectory=/home/user/zigbee2mqtt ExecStart=/usr/local/bin/npm start Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Активация:
sudo systemctl daemon-reload sudo systemctl enable zigbee2mqtt.service sudo systemctl start zigbee2mqtt.service
7. Автозагрузка скрипта сохранения в MySQL
Создан сервис:
sudo nano /etc/systemd/system/mqtt-to-mysql.service
Содержимое:
[Unit] Description=MQTT to MySQL Logger After=network.target mysql.service zigbee2mqtt.service Wants=zigbee2mqtt.service Wants=mysql.service [Service] Type=simple User=mazzick WorkingDirectory=/home/user ExecStart=/home/user/mqtt-env/bin/python /home/user/mqtt_to_mysql.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
Активация:
sudo systemctl daemon-reload sudo systemctl enable mqtt-to-mysql.service sudo systemctl start mqtt-to-mysql.service
8. Ограничение частоты отправки данных
Чтобы датчик не отправлял данные каждую минуту, установлен интервал 10 минут:
mosquitto_pub -h localhost -u iotuser -P 123456 \
-t "zigbee2mqtt/0xa4c138ab3129730c/set" \
-m '{"reporting": {"temperature": {"minimum_report_interval": 600, "maximum_report_interval": 600}, "humidity": {"minimum_report_interval": 600, "maximum_report_interval": 600}}}'
600 секунд = 10 минут.
9. Проверка данных в базе
Подключение к MySQL:
mysql -u iot_user -p (пароль: 123456)
Запрос:
USE iot_db; SELECT * FROM sensor_data ORDER BY id DESC LIMIT 10;
Результат: данные по температуре и влажности сохраняются раз в 10 минут.
Итог
Создана автономная система мониторинга температуры и влажности:
- Датчик Tuya добавлен в Zigbee2MQTT
- Данные передаются по MQTT
- Сохраняются в MySQL
- Все службы работают в автозагрузке
- Частота обновления — раз в 10 минут
Комментарии
Пока нет комментариев. Будьте первым!