Введение
PIR-датчик (Passive Infrared sensor) — один из самых распространённых сенсоров в IoT. Он фиксирует движение за счёт изменения инфракрасного излучения и применяется в системах охраны, умном освещении, климат-контроле. Однако стандартный PIR-датчик — это просто «пассивный» переключатель: он даёт сигнал «есть движение / нет движения». Чтобы сделать его частью интеллектуальной системы, нужен AI-агент, который анализирует поток данных, принимает решения и управляет исполнительными устройствами (реле, лампы, уведомления). ASI Biont — это AI-агент, который подключается к PIR-датчику через MQTT, COM-порт, HTTP API или другие протоколы. В этой статье мы на практике разберём, как интегрировать PIR-сенсор с ASI Biont, какие сценарии автоматизации открываются и почему это выгоднее, чем писать код вручную.
Зачем подключать PIR-датчик к AI-агенту?
PIR-датчик сам по себе — это «сырой» сигнал. Без AI-анализа он может вызывать ложные срабатывания (ветки деревьев, домашние животные), не учитывать время суток или контекст. ASI Biont решает эти проблемы:
- Умная фильтрация — AI анализирует паттерны движения и отличает человека от животного или помехи.
- Автоматизация по сценариям — включение света только в тёмное время суток, отправка уведомлений при обнаружении движения в запрещённой зоне.
- Интеграция с другими устройствами — при срабатывании PIR-датчика AI может отправить команду на умную розетку, камеру или реле через тот же MQTT или HTTP API.
- Логирование и аналитика — AI записывает данные о времени и частоте движений, строит графики и предсказывает пиковые нагрузки.
Какой способ подключения используется и почему?
Для интеграции PIR-датчика с ASI Biont наиболее универсальным и надёжным способом является MQTT. PIR-датчики часто подключаются к микроконтроллерам (ESP32, ESP8266, Raspberry Pi), которые публикуют данные в MQTT-брокер. ASI Biont подписывается на соответствующий топик и анализирует данные в реальном времени. Альтернативы:
| Протокол | Когда использовать | Ограничения |
|---|---|---|
| MQTT | ESP32/ESP8266 с PIR-датчиком, умный дом (Home Assistant, Node-RED) | Требуется MQTT-брокер |
| COM-порт (Hardware Bridge) | Arduino, подключённый к ПК через USB | Нужен bridge.py на ПК |
| HTTP API | Умные розетки/камеры с REST API | Зависит от производителя |
| SSH | Raspberry Pi с GPIO | Требуется статический IP/SSH-доступ |
В нашем примере выберем MQTT, так как он лёгкий, асинхронный и поддерживается большинством IoT-устройств.
Конкретный сценарий: PIR-датчик на ESP32 + MQTT + ASI Biont
Проблема: Пользователь хочет, чтобы при обнаружении движения в гостиной в тёмное время суток автоматически включался свет (через реле), а в Telegram приходило уведомление. При этом AI должен игнорировать движение днём и отсеивать ложные срабатывания от домашних животных.
Решение:
1. Подключение PIR-датчика к ESP32. Пин OUT датчика подключается к GPIO13 ESP32, питание — 5V, земля — GND.
2. ESP32 публикует данные в MQTT-брокер. Микроконтроллер отправляет сообщение в топик home/livingroom/motion со значением 1 (движение) или 0 (нет движения).
3. ASI Biont подписывается на топик. AI-агент получает данные, анализирует время суток (через API времени или локальное время), проверяет порог ложных срабатываний и при выполнении условий публикует команду в топик home/livingroom/light.
4. ESP32 подписывается на топик управления светом. При получении команды on реле замыкается, свет включается.
Пример кода для ESP32 (MicroPython)
import network
import time
from machine import Pin
from umqtt.simple import MQTTClient
# Настройки Wi-Fi
SSID = "your_ssid"
PASSWORD = "your_password"
# Настройки MQTT
MQTT_BROKER = "192.168.1.100" # IP брокера
CLIENT_ID = "esp32_pir"
TOPIC_MOTION = b"home/livingroom/motion"
# Пин PIR-датчика
pir = Pin(13, Pin.IN)
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(0.5)
# Подключение к MQTT
client = MQTTClient(CLIENT_ID, MQTT_BROKER)
client.connect()
prev_state = pir.value()
while True:
current_state = pir.value()
if current_state != prev_state:
client.publish(TOPIC_MOTION, b"1" if current_state else b"0")
prev_state = current_state
time.sleep(0.1)
Как ASI Biont подключается к этому MQTT-топику
Пользователь описывает задачу в чате с ASI Biont:
«Подключись к MQTT-брокеру 192.168.1.100, подпишись на топик home/livingroom/motion. Если обнаружено движение и время суток между 20:00 и 6:00, опубликуй в топик home/livingroom/light команду "on". При этом отправь уведомление в Telegram: chat_id = 123456789, токен бота = bot123:ABC. Игнорируй одиночные срабатывания короче 3 секунд (ложные срабатывания).»
AI-агент генерирует и выполняет Python-скрипт на сервере ASI Biont (через execute_python) с использованием paho-mqtt и aiohttp. Пример сгенерированного кода:
import paho.mqtt.client as mqtt
import requests
import time
from datetime import datetime
# Настройки MQTT
BROKER = "192.168.1.100"
TOPIC_MOTION = "home/livingroom/motion"
TOPIC_LIGHT = "home/livingroom/light"
# Настройки Telegram
TELEGRAM_TOKEN = "bot123:ABC"
CHAT_ID = "123456789"
# Переменные для фильтрации
last_motion_time = 0
motion_detected = False
def on_message(client, userdata, msg):
global last_motion_time, motion_detected
payload = msg.payload.decode()
now = time.time()
if payload == "1":
if not motion_detected:
last_motion_time = now
motion_detected = True
# Фильтр: игнорируем, если прошло меньше 3 секунд
if now - last_motion_time >= 3:
# Проверка времени суток
hour = datetime.now().hour
if hour >= 20 or hour < 6:
# Включаем свет
client.publish(TOPIC_LIGHT, "on")
# Отправляем уведомление в Telegram
requests.post(
f"https://api.telegram.org/{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": "Движение в гостиной! Свет включён."}
)
else:
motion_detected = False
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC_MOTION)
client.loop_forever()
Важно: execute_python работает в облаке ASI Biont с таймаутом 30 секунд. Для долгоживущих подписок AI использует асинхронный режим или перезапускает скрипт при необходимости. В реальном сценарии AI может запустить скрипт в фоновом режиме через client.loop_start().
Результаты интеграции
После настройки пользователь получает:
- Автоматическое включение света при движении в тёмное время (с фильтром ложных срабатываний).
- Уведомления в Telegram с указанием времени и места.
- Логирование всех событий в БД (AI может записывать данные в PostgreSQL или MongoDB).
- Возможность расширения — например, добавить камеру и при движении делать фото.
Почему это выгодно?
Обычно интеграция PIR-датчика с AI-агентом потребовала бы написания десятков строк кода, настройки MQTT-клиента, фильтров, уведомлений — это часы работы. С ASI Biont пользователь просто описывает задачу на естественном языке, и AI сам генерирует и выполняет код. Никаких панелей управления — всё через диалог в чате. При этом ASI Biont поддерживает любой протокол: если устройство использует не MQTT, а Modbus, COM-порт или HTTP API — AI адаптируется под него.
Заключение
PIR-датчик — это базовый элемент умного дома, но его потенциал раскрывается только в связке с AI-агентом. ASI Biont позволяет подключить PIR-сенсор за минуты, настроить умные сценарии автоматизации и получать уведомления. Не нужно ждать, пока разработчики добавят поддержку вашего устройства — AI сам пишет код под любую периферию.
Попробуйте интеграцию прямо сейчас на asibiont.com. Опишите в чате ваше устройство и задачу — AI подключится, проанализирует данные и автоматизирует процессы. Умный дом становится действительно умным.
Комментарии