Введение
Environmental sensors — это датчики окружающей среды, которые измеряют температуру, влажность, концентрацию CO2, качество воздуха, атмосферное давление и другие параметры. Они широко применяются в умных домах, офисах, теплицах, складах и на производстве. Однако просто установить датчики недостаточно: чтобы данные приносили пользу, их нужно собирать, анализировать и использовать для автоматизации. Именно здесь на помощь приходит AI-агент ASI Biont.
Интеграция Environmental sensors с AI-агентом позволяет:
- Автоматически отслеживать микроклимат в реальном времени.
- Настраивать уведомления при выходе параметров за пределы нормы (например, Telegram-бот предупредит, если в серверной поднялась температура выше 30°C).
- Управлять исполнительными устройствами (вентиляция, кондиционер, увлажнитель) на основе показаний датчиков.
- Строить графики и логировать данные для анализа трендов.
ASI Biont подключается к Environmental sensors без необходимости писать сложный код вручную — достаточно описать задачу в чате, и AI сам сгенерирует скрипт интеграции, используя один из поддерживаемых протоколов: MQTT, HTTP API, SSH, COM-порт или Modbus. В этой статье мы разберём два самых популярных сценария: подключение датчиков через ESP32 и MQTT, а также прямое считывание данных с Arduino через COM-порт с помощью Hardware Bridge.
1. Что такое Environmental sensors и зачем их подключать к AI-агенту
Environmental sensors — это класс IoT-устройств, которые измеряют физические параметры окружающей среды. Наиболее распространённые датчики:
| Датчик | Измеряемые параметры | Типичное применение |
|---|---|---|
| DHT22 / AM2302 | Температура (-40..80°C), влажность (0..100%) | Умный дом, теплицы, серверные |
| BME280 | Температура, влажность, давление (300..1100 гПа) | Метеостанции, офисы |
| MH-Z19 / SCD30 | CO2 (0..5000 ppm), температура | Офисы, школы, склады |
| PMS5003 / SDS011 | PM1.0, PM2.5, PM10 (качество воздуха) | Мониторинг загрязнения |
| CCS811 / SGP30 | VOC (летучие органические соединения), eCO2 | Умные дома, офисы |
Подключение таких датчиков к AI-агенту ASI Biont превращает их из простых измерительных приборов в интеллектуальную систему мониторинга и управления. AI может:
- Анализировать исторические данные и предсказывать изменения (например, предупреждать о скором превышении CO2).
- Автоматически запускать сценарии: открывать окна, включать вентиляцию, регулировать кондиционер.
- Интегрировать данные в корпоративные системы (через REST API, базы данных).
2. Как ASI Biont подключается к Environmental sensors
ASI Biont поддерживает несколько способов подключения к устройствам. Для Environmental sensors наиболее актуальны:
- MQTT — через paho-mqtt. Идеально для ESP32 и других Wi-Fi-микроконтроллеров, которые публикуют данные в топики MQTT-брокера.
- COM-порт (RS-232/RS-485) — через Hardware Bridge. Подходит для Arduino, подключенных к ПК по USB.
- SSH — через paramiko. Для Raspberry Pi или одноплатников, на которых запущены скрипты сбора данных.
- HTTP API — через aiohttp. Для датчиков с собственным REST API.
- Modbus/TCP — через pymodbus. Для промышленных датчиков и ПЛК.
Пользователь не выбирает способ из меню — он просто описывает в чате, к какому устройству и как подключиться. AI сам определяет оптимальный протокол и пишет код.
3. Сценарий 1: ESP32 + DHT22 + MQTT → ASI Biont
Этот сценарий — классика умного дома. ESP32 с датчиком DHT22 измеряет температуру и влажность, публикует данные в MQTT-брокер (например, Mosquitto, HiveMQ Cloud или локальный), а AI-агент ASI Biont подписывается на топик, анализирует данные и при необходимости отправляет команды или уведомления.
3.1. Прошивка ESP32 (MicroPython)
Для ESP32 пишем простую прошивку на MicroPython, которая каждые 10 секунд отправляет показания в топик sensors/temperature и sensors/humidity.
import network
import time
import dht
import machine
from umqtt.simple import MQTTClient
# Настройки Wi-Fi
SSID = "YourWiFi"
PASSWORD = "YourPassword"
# Настройки MQTT
MQTT_BROKER = "broker.hivemq.com" # или ваш локальный брокер
CLIENT_ID = "esp32_dht22"
TOPIC_TEMP = b"sensors/temperature"
TOPIC_HUM = b"sensors/humidity"
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print("Connected to Wi-Fi")
# Инициализация датчика DHT22
dht_pin = machine.Pin(4) # GPIO4
dht_sensor = dht.DHT22(dht_pin)
# Подключение к MQTT-брокеру
client = MQTTClient(CLIENT_ID, MQTT_BROKER)
client.connect()
print("Connected to MQTT broker")
while True:
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
client.publish(TOPIC_TEMP, str(temp).encode())
client.publish(TOPIC_HUM, str(hum).encode())
print(f"Published: temp={temp}°C, hum={hum}%")
except Exception as e:
print("Error:", e)
time.sleep(10)
3.2. Подключение ASI Biont к MQTT-брокеру
Теперь в чате с ASI Biont пишем запрос:
«Подключись к MQTT-брокеру broker.hivemq.com, подпишись на топики sensors/temperature и sensors/humidity. Каждые 10 секунд проверяй, не превышает ли температура 30°C или влажность 70%. Если превышает, отправь мне уведомление в Telegram. Также логируй все показания в файл sensors_log.csv на сервере.»
AI генерирует и выполняет Python-скрипт в sandbox-окружении (execute_python):
import paho.mqtt.client as mqtt
import json
import csv
import time
from datetime import datetime
import requests
# Конфигурация
BROKER = "broker.hivemq.com"
TOPIC_TEMP = "sensors/temperature"
TOPIC_HUM = "sensors/humidity"
TELEGRAM_BOT_TOKEN = "YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID = "YOUR_CHAT_ID"
LOG_FILE = "sensors_log.csv"
# Инициализация CSV с заголовками
with open(LOG_FILE, mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow(["timestamp", "temperature", "humidity"])
# Хранилище последних значений
last_temp = None
last_hum = None
def on_message(client, userdata, msg):
global last_temp, last_hum
topic = msg.topic
payload = msg.payload.decode()
try:
value = float(payload)
now = datetime.now().isoformat()
if topic == TOPIC_TEMP:
last_temp = value
elif topic == TOPIC_HUM:
last_hum = value
# Если оба значения получены, логируем и проверяем
if last_temp is not None and last_hum is not None:
# Логирование в CSV
with open(LOG_FILE, mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([now, last_temp, last_hum])
# Проверка порогов
if last_temp > 30.0:
msg = f"⚠️ Температура превысила 30°C! Сейчас {last_temp}°C"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": msg})
if last_hum > 70.0:
msg = f"⚠️ Влажность превысила 70%! Сейчас {last_hum}%"
requests.post(f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": msg})
print(f"{now}: temp={last_temp}, hum={last_hum}")
last_temp = None
last_hum = None
except ValueError:
pass
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe([(TOPIC_TEMP, 0), (TOPIC_HUM, 0)])
client.loop_forever()
Важно: sandbox ASI Biont имеет таймаут 30 секунд для execute_python, поэтому для постоянного мониторинга AI использует industrial_command с MQTT-подпиской или запускает скрипт на внешнем сервере через SSH. В данном примере скрипт предназначен для выполнения на Raspberry Pi или VPS, где нет ограничения по времени. AI может сгенерировать такой код и предложить запустить его на вашем сервере через SSH.
3.3. Результаты
- Данные с датчика поступают в ASI Biont в реальном времени.
- При превышении температуры или влажности AI отправляет уведомление в Telegram.
- Все показания логируются в CSV-файл для последующего анализа.
- Пользователь может в любой момент запросить в чате: «Покажи график температуры за последние 24 часа» — AI построит его с помощью matplotlib.
4. Сценарий 2: Arduino + датчики + COM-порт → ASI Biont через Hardware Bridge
Если у вас Arduino Uno (или любой другой микроконтроллер) с датчиками, подключенный к ПК через USB, ASI Biont может читать данные напрямую через COM-порт с помощью Hardware Bridge.
4.1. Прошивка Arduino
Загружаем на Arduino скетч, который каждые 2 секунды отправляет в Serial данные в формате JSON:
#include <DHT.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
}
void loop() {
float temp = dht.readTemperature();
float hum = dht.readHumidity();
if (isnan(temp) || isnan(hum)) {
Serial.println("{\"error\":\"sensor_error\"}");
} else {
Serial.print("{\"temp\":");
Serial.print(temp);
Serial.print(",\"hum\":");
Serial.print(hum);
Serial.println("}");
}
delay(2000);
}
4.2. Запуск Hardware Bridge
Пользователь скачивает bridge.py из дашборда ASI Biont (Devices → Create API Key → Скачать bridge) и запускает его на своём ПК:
pip install pyserial requests websockets
python bridge.py --token=YOUR_API_TOKEN --ports=COM3 --baud 115200
Bridge подключается к облаку ASI Biont через WebSocket и открывает COM3 на скорости 115200 бод.
4.3. Команда в чате ASI Biont
Пользователь пишет:
«Подключись к Arduino через bridge по протоколу serial://, порт COM3, скорость 115200. Каждые 10 секунд читай данные с датчика (температура и влажность). Если температура выше 28°C, включи красный светодиод на пине 13 через команду LED_ON. Если влажность ниже 30%, отправь мне уведомление в Telegram. Логируй все данные в PostgreSQL базу sensors_db.»
AI использует industrial_command с протоколом serial://:
industrial_command(protocol='serial://', command='serial_write_and_read', data='{"port":"COM3","baud":115200,"data":"48454c500a"}', description='Проверка связи с Arduino')
После подтверждения связи AI генерирует скрипт для непрерывного мониторинга. Поскольку bridge работает локально, а AI в облаке, для постоянного чтения используется комбинация: AI периодически (каждые 10 секунд) отправляет команду на чтение через industrial_command, bridge читает последнюю строку из Serial и возвращает её.
4.4. Пример ответа bridge
При каждом запросе bridge возвращает последние данные из порта:
{"port":"COM3","data":"{\"temp\":25.4,\"hum\":45.2}","timestamp":"2026-07-19T14:30:00Z"}
AI парсит JSON, проверяет условия и выполняет действия:
- Если temp > 28 → отправляет команду LED_ON\n в порт через serial_write_and_read.
- Если hum < 30 → отправляет сообщение в Telegram через requests.post.
- Записывает данные в PostgreSQL с помощью psycopg2.
4.5. Результаты
- Данные с Arduino читаются без написания кода на стороне ПК.
- Управление светодиодом (или реле) происходит по командам AI.
- Все показатели хранятся в базе данных для аналитики.
- Пользователь может запросить: «Построй график температуры за неделю» — AI выполнит SQL-запрос и сгенерирует график.
5. Сценарий 3: Промышленный датчик CO2 (MH-Z19) через Modbus/TCP
Для офисов и производственных помещений часто используются датчики CO2 с интерфейсом Modbus. ASI Biont подключается к ним через Modbus/TCP.
5.1. Подключение
Пользователь пишет в чате:
«Подключись к датчику CO2 по Modbus TCP, IP 192.168.1.100, порт 502, slave ID 1. Читай регистр holding register 0x100 (значение CO2 в ppm). Каждые 5 минут проверяй, не превышает ли CO2 1000 ppm. Если превышает, включи реле вентиляции через Modbus coil 0x01 (write coil True). Логируй данные в InfluxDB.»
AI использует industrial_command:
industrial_command(protocol='modbus/tcp', command='read_holding_registers', data={"host":"192.168.1.100","port":502,"slave":1,"address":256,"count":1})
После получения значения AI проверяет условие и при необходимости записывает coil:
industrial_command(protocol='modbus/tcp', command='write_coil', data={"host":"192.168.1.100","port":502,"slave":1,"address":0,"value":True})
5.2. Результаты
- Автоматическое управление вентиляцией на основе уровня CO2.
- Данные сохраняются в InfluxDB для построения дашбордов.
- AI может предсказывать превышение CO2 на основе тренда и включать вентиляцию заранее.
6. Почему это выгодно: AI-агент вместо ручного кода
Традиционная интеграция Environmental sensors требует:
- Написания кода для каждого датчика и протокола.
- Настройки брокеров, баз данных, систем уведомлений.
- Доработок при изменении оборудования.
С ASI Biont весь процесс сводится к описанию задачи на естественном языке. AI:
- Самостоятельно выбирает протокол (MQTT, Modbus, COM-порт и т.д.).
- Генерирует рабочий код на Python с использованием проверенных библиотек.
- Выполняет его в защищённом sandbox-окружении или через Hardware Bridge.
- Обеспечивает логирование, уведомления и визуализацию.
Примеры задач, которые AI решает за секунды:
- «Собери данные с трёх датчиков BME280 по I2C на Raspberry Pi через SSH и отправь их в InfluxDB каждые 30 секунд.»
- «Подключись к датчику PM2.5 через COM5, скорость 9600, парси данные в формате SDS011 и отправь в Telegram, если PM2.5 > 50.»
- «Настрой MQTT-брокер на локальном сервере, подпишись на топик sensors/#, сохраняй все данные в MongoDB и строй графики в Grafana.»
7. Как начать: пошаговая инструкция
- Зарегистрируйтесь на asibiont.com и получите API-токен.
- Подготовьте устройство:
- Для ESP32: загрузите MicroPython-прошивку с MQTT-публикацией.
- Для Arduino: загрузите скетч с выводом в Serial.
- Для Raspberry Pi: установите Python и необходимые библиотеки.
- Установите Hardware Bridge (если используете COM-порт): скачайте bridge.py из дашборда и запустите с флагами --token и --ports.
- Опишите задачу в чате:
- «Подключись к ESP32 по MQTT, брокер 192.168.1.50, топик sensors/temperature.»
- «Прочитай данные с Arduino через COM3, скорость 115200, парси JSON.»
- «Подключись к датчику CO2 по Modbus TCP 192.168.1.100.»
- AI выполнит интеграцию — вы получите данные, уведомления и автоматические сценарии.
Заключение
Environmental sensors — это глаза и уши вашего умного пространства. Но без интеллектуальной обработки они остаются просто цифрами на экране. ASI Biont превращает их в полноценную систему мониторинга и управления, которая работает 24/7, реагирует на изменения и принимает решения.
Не нужно изучать документацию по MQTT, Modbus или Modbus TCP — достаточно описать, что вы хотите получить, и AI сделает всё сам. Попробуйте интеграцию уже сегодня на asibiont.com и убедитесь, насколько это просто.
Комментарии