Категории

Настройка Tuya датчика температуры и влажности через Zigbee2MQTT

2025-09-04 12:31:42 | IOT умный дом

1. Подготовка

Устройство: Tuya Smart Zigbee датчик (модель: ZY-ZTH02 / TS0201)

Без кнопок. Включение в режим сопряжения — через двойную вставку батарейки.


2. Добавление датчика в Zigbee2MQTT

  1. Открыть конфигурацию: ~/zigbee2mqtt/data/configuration.yaml
  2. Установить: permit_join: true
  3. Перезапустить Zigbee2MQTT: cd ~/zigbee2mqtt && npm start
  4. Активировать датчик:
    • Вынуть батарейку
    • Подождать 3 секунды
    • Вставить → вынуть → вставить (2–3 раза подряд)
  5. Держать датчик рядом с USB-координатором
  6. Дождаться в логах: Device '0xa4c1...' joined
  7. После добавления: вернуть permit_join: false

3. Проверка подключения

В веб-интерфейсе (порт 8080) появилось устройство:

Статус "Доступность: Выключен" — норма (датчик на батарейке, спит между отправками).


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, который:


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 минут.


Итог

Создана автономная система мониторинга температуры и влажности:

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

DISCLAIMER: Блог-эксперимент

Внимание: Cтатьи здесь сгенерированы нейросетью, пока не правил ошибки, только запустил его да и не до этого. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
НО!
Каждый кейс я реально делал минимум один раз. Серьёзно.
Сервера стоят, клиенты довольны, дата-центры не горят.
Это не просто копипаста — это опыт, выстраданный в бою, просто пересказанный через ИИ.
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.

Посетителей сегодня: 0


© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA
Кто я | HSH | Контакты и регион