Введение
Датчики температуры и влажности — базовый элемент любой IoT-системы. DHT22 и его бюджетный аналог DHT11 используются повсеместно: от умных теплиц и серверных до складских помещений и жилых комнат. Однако просто считывать показания недостаточно — гораздо ценнее, когда система сама анализирует данные, предсказывает изменения и принимает решения. Именно здесь на помощь приходит AI-агент ASI Biont. Вместо того чтобы вручную писать длинные скрипты обработки и логирования, вы описываете задачу на естественном языке, и AI за секунды генерирует готовый код интеграции. В этой статье мы разберём реальный кейс: подключение DHT22 к ESP32 и передачу данных на ASI Biont через MQTT с автоматическим уведомлением в Telegram при выходе температуры за пределы нормы.
Что такое DHT22 и зачем подключать его к AI?
DHT22 — цифровой датчик температуры и влажности с диапазоном от -40 до +80 °C и точностью ±0.5 °C. В отличие от DHT11, он стабильнее работает в промышленных условиях и выдаёт показания раз в 2 секунды. Подключение к AI-агенту превращает простой сенсор в интеллектуальный узел мониторинга: AI может анализировать тренды, сравнивать данные с разных датчиков, отправлять оповещения и даже управлять исполнительными механизмами (например, включать вентиляцию или обогреватель).
Как ASI Biont подключается к DHT22?
ASI Biont не имеет прямого доступа к GPIO — он работает в облаке. Поэтому для связи с физическим датчиком используется промежуточное устройство (ESP32, Arduino с Ethernet- или Wi-Fi-модулем), которое отправляет данные по протоколу MQTT. AI-агент подписывается на нужный топик, получает показания и обрабатывает их. Всё подключение настраивается через диалог в чате: вы описываете, какой у вас микроконтроллер, какие пины задействованы, какие параметры MQTT-брокера (IP, порт, логин/пароль), и AI сам пишет код прошивки для ESP32 и скрипт для облачного sandbox.
Почему именно MQTT?
MQTT — лёгкий, надёжный и широко распространённый протокол для IoT. Он идеально подходит для устройств с ограниченными ресурсами (ESP32, Arduino). ASI Biont использует библиотеку paho-mqtt, которая доступна в sandbox-окружении. Для быстрой проверки связи можно воспользоваться инструментом industrial_command с протоколом mqtt и командой publish.
Реальный сценарий: контроль температуры в серверной
Представьте: вы отвечаете за серверную в небольшой компании. Оборудование чувствительно к перегреву, и при превышении 35 °C нужно срочно реагировать. Вы устанавливаете ESP32 с DHT22 рядом со стойкой, подключаетесь к локальному MQTT-брокеру (например, Mosquitto) и просите ASI Biont:
«Подключись к MQTT-брокеру по адресу 192.168.1.100:1883, подпишись на топик sensor/temperature. Если температура превышает 35 °C или влажность падает ниже 20%, отправь уведомление в Telegram. Также логируй все показания раз в 5 минут в CSV-файл на сервере.»
AI-агент выполняет команду industrial_command(protocol='mqtt', command='subscribe', topic='sensor/temperature', broker='192.168.1.100', port=1883) для проверки связи, а затем генерирует Python-скрипт, который выполняется в sandbox.
Пример кода для ESP32 (MicroPython)
import network
import time
import dht
from machine import Pin
from umqtt.simple import MQTTClient
# Конфигурация Wi-Fi
SSID = 'YourWiFi'
PASSWORD = 'YourPassword'
# MQTT брокер
BROKER = '192.168.1.100'
TOPIC_TEMP = 'sensor/temperature'
TOPIC_HUM = 'sensor/humidity'
# Датчик DHT22 на пине 4
dht_pin = Pin(4, Pin.IN)
dht_sensor = dht.DHT22(dht_pin)
def connect_wifi():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
print('Wi-Fi connected')
def main():
connect_wifi()
client = MQTTClient('esp32_dht22', BROKER)
client.connect()
while True:
try:
dht_sensor.measure()
temp = dht_sensor.temperature()
hum = dht_sensor.humidity()
client.publish(TOPIC_TEMP, str(temp))
client.publish(TOPIC_HUM, str(hum))
print('Published: T={}, H={}'.format(temp, hum))
time.sleep(10) # раз в 10 секунд
except Exception as e:
print('Error:', e)
time.sleep(5)
Пример скрипта для sandbox ASI Biont (анализ и уведомление)
import paho.mqtt.client as mqtt
import requests
import json
import csv
import os
from datetime import datetime
# Конфигурация
BROKER = '192.168.1.100'
PORT = 1883
TOPIC_TEMP = 'sensor/temperature'
TOPIC_HUM = 'sensor/humidity'
TELEGRAM_BOT_TOKEN = '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11'
TELEGRAM_CHAT_ID = '123456789'
CSV_FILE = '/tmp/sensor_log.csv'
TEMP_THRESHOLD = 35.0
HUM_THRESHOLD = 20.0
# Инициализация CSV (если файла нет)
if not os.path.isfile(CSV_FILE):
with open(CSV_FILE, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['timestamp', 'temperature', 'humidity'])
def on_message(client, userdata, msg):
topic = msg.topic
value = float(msg.payload.decode())
timestamp = datetime.now().isoformat()
# Логирование в CSV
with open(CSV_FILE, 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow([timestamp, topic, value])
# Проверка порогов
if topic == TOPIC_TEMP and value > TEMP_THRESHOLD:
message = f'⚠️ Температура превысила {TEMP_THRESHOLD}°C: {value}°C'
requests.post(f'https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage',
json={'chat_id': TELEGRAM_CHAT_ID, 'text': message})
elif topic == TOPIC_HUM and value < HUM_THRESHOLD:
message = f'⚠️ Влажность упала ниже {HUM_THRESHOLD}%: {value}%'
requests.post(f'https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage',
json={'chat_id': TELEGRAM_CHAT_ID, 'text': message})
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe([(TOPIC_TEMP, 0), (TOPIC_HUM, 0)])
client.loop_forever() # Внимание: в sandbox таймаут 30 секунд, поэтому используйте loop_start() и time.sleep()
Важно: В sandbox-окружении ASI Biont действует ограничение времени выполнения (до 30 секунд). Для долгоживущих подписок используйте
client.loop_start()в отдельном потоке и периодическую проверку, либо настройте MQTT-мост на внешнем сервере.
Альтернативные способы подключения
Если у вас нет Wi-Fi или вы хотите более низкоуровневое управление, можно использовать Hardware Bridge. Запустите bridge.py на ПК, подключите ESP32 или Arduino через USB (COM-порт), и AI сможет читать данные с датчика напрямую через industrial_command(protocol='serial://COM3', command='read', baud=115200). Этот способ удобен для прототипирования, когда устройство подключено к тому же компьютеру.
Почему это выгодно?
Без AI вам пришлось бы:
1. Писать код прошивки для ESP32.
2. Настраивать MQTT-брокер вручную.
3. Писать скрипт для подписки и анализа данных.
4. Настраивать Telegram-бота.
5. Отлаживать всё вместе.
С ASI Biont вы просто описываете задачу на русском или английском языке, AI генерирует и выполняет код за секунды. Никаких панелей управления, кнопок «добавить устройство» — только диалог в чате. При этом AI поддерживает десятки библиотек: pyserial, pymodbus, paramiko, aiohttp, opcua-asyncio и другие. Вы можете подключить практически любое устройство — от простого датчика до промышленного PLC.
Заключение
Интеграция DHT22 с ASI Biont через MQTT — это быстрый способ создать умную систему мониторинга климата. Вы получаете не просто сбор данных, а интеллектуального помощника, который анализирует показания, предупреждает об аномалиях и может управлять исполнительными устройствами. Попробуйте сами: подключите ESP32 с DHT22, опишите задачу в чате на asibiont.com и увидите, как AI за пару минут настроит всё необходимое.
Комментарии