Введение: почему Zigbee и AI — идеальная пара для умного дома
Zigbee — один из самых популярных протоколов для умного дома. По данным Connectivity Standards Alliance, в мире уже установлено более 4 миллиардов Zigbee-совместимых устройств. Лампочки, датчики температуры, движения, открытия дверей, реле, термостаты — всё это работает через единый координатор и mesh-сеть.
Но большинство систем автоматизации Zigbee имеют ограниченную логику: «включи свет при движении», «выключи при превышении температуры». С AI-агентом ASI Biont вы получаете интеллектуальное принятие решений: анализ трендов, прогнозирование, голосовые и текстовые команды на естественном языке без единой строки кода.
В этой статье я покажу, как подключить Zigbee-устройства к ASI Biont через два популярных моста — Zigbee2MQTT и ZHA (Zigbee Home Automation) — и настроить умную автоматизацию.
Как ASI Biont подключается к Zigbee-устройствам
ASI Biont использует MQTT — де-факто стандарт для IoT. Когда вы запускаете Zigbee2MQTT или ZHA, они уже публикуют все события (включение лампы, изменение температуры, движение) в MQTT-брокер (обычно Mosquitto). AI-агент подключается к тому же брокеру, подписывается на топики устройств и может публиковать команды управления.
Схема подключения:
Zigbee-устройство <--Zigbee--> Zigbee2MQTT/ZHA <--MQTT--> Mosquitto <--MQTT--> ASI Biont
AI пишет Python-скрипт с библиотекой paho-mqtt, который выполняется в sandbox-окружении ASI Biont и обеспечивает двустороннюю связь.
Вариант 1: Подключение через Zigbee2MQTT
Что такое Zigbee2MQTT? Это open-source мост, который подключает Zigbee-адаптер (например, CC2531, Sonoff ZBDongle-P, Conbee II) к вашему компьютеру или Raspberry Pi и публикует все устройства в MQTT.
Настройка:
1. Установите Zigbee2MQTT (инструкция на zigbee2mqtt.io).
2. Настройте MQTT-брокер (Mosquitto) — обычно на localhost:1883.
3. Запустите Zigbee2MQTT. Он создаст топики вида:
- zigbee2mqtt/bridge/state — состояние моста
- zigbee2mqtt/0x00158d0002d12345 — состояние каждого устройства
Как ASI Biont подключается:
Пользователь пишет в чат ASI Biont:
«Подключись к MQTT-брокеру по адресу 192.168.1.100:1883, подпишись на топик zigbee2mqtt/+/ и управляй лампочкой в гостиной через топик zigbee2mqtt/0x00158d0002d12345/set»
AI автоматически генерирует и выполняет следующий код (пользователь видит только диалог, код скрыт):
import paho.mqtt.client as mqtt
import json
import time
BROKER = "192.168.1.100"
PORT = 1883
TOPIC_LAMP_STATE = "zigbee2mqtt/0x00158d0002d12345"
TOPIC_LAMP_SET = "zigbee2mqtt/0x00158d0002d12345/set"
def on_message(client, userdata, msg):
print(f"Received: {msg.payload.decode()}")
data = json.loads(msg.payload)
# AI может анализировать и принимать решения
if data.get("brightness", 0) > 200:
client.publish(TOPIC_LAMP_SET, json.dumps({"state": "OFF"}))
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe(TOPIC_LAMP_STATE)
client.publish(TOPIC_LAMP_SET, json.dumps({"state": "ON", "brightness": 150, "color": {"r": 255, "g": 100, "b": 50}}))
client.loop_start()
time.sleep(10)
client.loop_stop()
Что делает AI после подключения:
- Постоянно слушает топики всех устройств
- При изменении состояния лампочки (включили вручную) AI может скорректировать яркость
- По команде «Сделай свет в гостиной тёплым» AI публикует {"color_temp": 350} в топик set
Вариант 2: Подключение через ZHA (Home Assistant)
Что такое ZHA? Это встроенная интеграция Zigbee в Home Assistant, которая также использует MQTT, но с более высокоуровневым API.
Настройка:
1. Установите Home Assistant на Raspberry Pi или ПК.
2. Подключите Zigbee-адаптер через ZHA Integration.
3. Убедитесь, что MQTT-брокер настроен (через аддон Mosquitto broker).
Как ASI Biont подключается:
Пользователь пишет:
«Подключись к MQTT-брокеру в Home Assistant на 192.168.1.50:1883, обрабатывай события из топика homeassistant/+/+/+/state и отправляй команды в homeassistant/+/+/+/set»
AI генерирует следующий скрипт:
import paho.mqtt.client as mqtt
import json
BROKER = "192.168.1.50"
PORT = 1883
USER = "mqtt_user"
PASS = "mqtt_pass"
def on_connect(client, userdata, flags, rc):
print("Connected to MQTT broker")
client.subscribe("homeassistant/+/+/+/state")
def on_message(client, userdata, msg):
payload = msg.payload.decode()
print(f"State update: {msg.topic} -> {payload}")
# AI может парсить и реагировать
# Например, если датчик движения сработал ночью — включить свет
client = mqtt.Client()
client.username_pw_set(USER, PASS)
client.on_connect = on_connect
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.loop_start()
# Пример команды: включить лампу через Home Assistant
# Топик: homeassistant/light/living_room_lamp/set
client.publish("homeassistant/light/living_room_lamp/set", json.dumps({"state": "ON"}))
import time
time.sleep(15)
client.loop_stop()
Конкретный сценарий: умный климат-контроль
Ситуация: У вас есть Zigbee-датчик температуры (Aqara WSDCGQ11LM) и Zigbee-реле (Sonoff BasicZBR3), управляющее обогревателем.
Задача: AI должен поддерживать температуру 22°C в комнате, автоматически включая/выключая обогреватель, а также учитывать прогноз погоды (через HTTP API) и время суток.
Как это работает:
-
Пользователь описывает задачу в чате ASI Biont:
«Подключись к MQTT на 192.168.1.100:1883, читай температуру из топика zigbee2mqtt/0x00158d0002d12345, управляй реле через zigbee2mqtt/0x00158d0002d67890/set. Поддерживай 22°C, но ночью понижай до 18°C. Если на улице -10°C, подними до 24°C»
-
AI генерирует единый скрипт, который:
- Подписывается на топик датчика температуры
- Получает текущее время (через
datetime.now()) - Делает HTTP-запрос к OpenWeatherMap API для получения температуры на улице
- Вычисляет целевую температуру
- Публикует команду
{"state": "ON"}или{"state": "OFF"}в топик реле
Пример фрагмента кода (AI скрывает его от пользователя):
import paho.mqtt.client as mqtt
import requests
import json
from datetime import datetime
BROKER = "192.168.1.100"
TOPIC_TEMP = "zigbee2mqtt/0x00158d0002d12345"
TOPIC_RELAY = "zigbee2mqtt/0x00158d0002d67890/set"
WEATHER_API_KEY = "your_key_here"
def get_outdoor_temp():
url = f"http://api.openweathermap.org/data/2.5/weather?q=Moscow&appid={WEATHER_API_KEY}&units=metric"
resp = requests.get(url)
return resp.json()["main"]["temp"]
def on_message(client, userdata, msg):
data = json.loads(msg.payload)
current_temp = data.get("temperature", 20)
hour = datetime.now().hour
outdoor_temp = get_outdoor_temp()
if hour >= 23 or hour <= 6:
target = 18
elif outdoor_temp < -10:
target = 24
else:
target = 22
if current_temp < target - 0.5:
client.publish(TOPIC_RELAY, json.dumps({"state": "ON"}))
elif current_temp > target + 0.5:
client.publish(TOPIC_RELAY, json.dumps({"state": "OFF"}))
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC_TEMP)
client.loop_start()
import time
time.sleep(30)
client.loop_stop()
Безопасность: сценарии с датчиками
Пример с Zigbee-датчиком дыма (Heiman HS1SA) и AI:
Пользователь:
«Подключись к MQTT, читай состояние датчика дыма из топика zigbee2mqtt/0x00158d0002d11111. Если сработал — включи все лампы в красный цвет, отправь уведомление в Telegram и включи сирену через реле»
AI генерирует код, который:
- Подписывается на топик датчика
- При получении {"smoke": true} выполняет цепочку действий
- Публикует команды для ламп (цвет, яркость)
- Отправляет Telegram-сообщение через requests.post к API Telegram
- Включает реле сирены
Пример отправки Telegram (реальный код):
import requests
def send_telegram_alert(message):
bot_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
requests.post(url, json={"chat_id": chat_id, "text": message})
Почему это проще, чем писать код вручную?
Традиционный подход:
1. Установить Node-RED или Home Assistant
2. Настроить MQTT-интеграцию
3. Написать скрипты на JavaScript или YAML
4. Отлаживать неделями
С ASI Biont:
1. Опишите задачу на русском языке в чате
2. AI сам пишет Python-код с paho-mqtt
3. Подключение занимает секунды
4. Вы можете менять логику новым сообщением: «Добавь ещё условие: если влажность > 80%, включи вентилятор»
Ограничения и рекомендации
- Таймаут sandbox: 30 секунд. Для долгоживущих подключений используйте
industrial_commandс подпиской MQTT (AI может запустить фоновый процесс). - Безопасность: Не передавайте API-ключи и пароли в открытом виде. Используйте переменные окружения (через
os.environ). - Надёжность: Для критических сценариев (пожар, утечка газа) используйте локальный Raspberry Pi с Home Assistant как fallback.
Заключение
Интеграция Zigbee-устройств с ASI Biont через MQTT открывает безграничные возможности для умного дома. Вы получаете:
- Единый интерфейс управления через голосовые и текстовые команды
- Интеллектуальную автоматизацию с учётом погоды, времени суток, трендов
- Возможность быстро менять логику без программирования
- Поддержку любых Zigbee-устройств через Zigbee2MQTT или ZHA
Попробуйте сами: подключите свою Zigbee-лампочку или датчик к ASI Biont на asibiont.com — просто опишите в чате, что хотите сделать.
Комментарии