Введение
DS18B20 — один из самых популярных цифровых датчиков температуры в IoT-проектах. Диапазон измерений от –55 до +125 °C, точность ±0.5 °C, интерфейс 1-Wire, уникальный 64-битный идентификатор — всё это делает его идеальным для автоматизации климата, теплиц, серверных и умного дома. Но собранные данные становятся по-настоящему ценными только тогда, когда они анализируются в реальном времени и преобразуются в действия. Именно здесь на помощь приходит AI-агент ASI Biont.
В этой статье мы разберём практический кейс: как подключить DS18B20 к ASI Biont через ESP32 и протокол MQTT, настроить AI-агента на мониторинг температуры и отправку уведомлений в Telegram, а также на автоматическое управление нагрузкой (например, включение вентилятора или обогревателя). Никаких панелей управления — всё делается через диалог в чате.
Почему MQTT и ESP32?
ASI Biont поддерживает 13 промышленных протоколов, включая MQTT, Modbus, SSH, COM-порт и HTTP API. Для DS18B20 логичнее всего использовать пару ESP32 + MQTT:
| Компонент | Роль |
|---|---|
| DS18B20 | Датчик температуры, подключён по 1-Wire к ESP32 |
| ESP32 | Микроконтроллер, считывает данные и публикует в MQTT |
| MQTT-брокер | Промежуточное звено (например, Mosquitto, HiveMQ Cloud) |
| ASI Biont | AI-агент, подписывается на топик, анализирует данные |
ESP32 может быть заменён на любую платформу с Wi-Fi и библиотекой OneWire (например, NodeMCU или Raspberry Pi Pico W). Выбор MQTT обусловлен асинхронностью, малым потреблением трафика и простотой интеграции с облачными сервисами.
Схема подключения DS18B20 к ESP32
DS18B20 подключается по 1-Wire: вывод VCC — 3.3 В, GND — земля, DATA — любой GPIO (например, GPIO4) с подтягивающим резистором 4.7 кОм к VCC.
ESP32 DS18B20
3.3V --------------- VCC
GND --------------- GND
GPIO4 --------------- DATA
+---[4.7k]---+ VCC
Прошивка ESP32 (MicroPython)
Ниже приведён минимальный код для ESP32 на MicroPython. Он измеряет температуру каждые 10 секунд и публикует значение в топик sensors/temperature с флагом retain, чтобы AI мог получить последнее значение в любой момент.
import network
import time
import machine
import onewire
import ds18x20
from umqtt.simple import MQTTClient
# Конфигурация Wi-Fi и MQTT
SSID = "your_wifi"
PASSWORD = "your_password"
MQTT_BROKER = "mqtt.example.com"
TOPIC = b"sensors/temperature"
# Инициализация DS18B20
ds_pin = machine.Pin(4)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(SSID, PASSWORD)
while not wlan.isconnected():
time.sleep(1)
# MQTT клиент
client = MQTTClient("esp32_ds18b20", MQTT_BROKER)
client.connect()
while True:
ds_sensor.convert_temp()
time.sleep_ms(750)
for rom in roms:
temp = ds_sensor.read_temp(rom)
client.publish(TOPIC, str(temp).encode(), retain=True)
print("Published:", temp)
time.sleep(10)
Этот код рассчитан на работу в фоне. После загрузки на ESP32 данные начнут поступать в MQTT-топик.
Как AI-агент ASI Biont подключается к устройству
Пользователь не пишет код интеграции — он просто описывает задачу в чате с AI-агентом. Например:
«У меня есть ESP32 с DS18B20, данные публикуются в MQTT на брокере mqtt.example.com, топик sensors/temperature. Подпишись на топик и каждые 5 минут проверяй температуру. Если она превышает 30 °C, отправь мне уведомление в Telegram. Если температура ниже 5 °C — включи реле, отправив команду в топик actuators/heater.»
AI сам генерирует код на Python и выполняет его в безопасном sandbox-окружении (execute_python). Для работы с MQTT используется библиотека paho-mqtt, для Telegram — requests.
Пример сгенерированного AI кода
import paho.mqtt.client as mqtt
import time
import requests
TELEGRAM_BOT_TOKEN = "123456789:ABCdef..."
CHAT_ID = "123456789"
MQTT_BROKER = "mqtt.example.com"
TEMP_TOPIC = "sensors/temperature"
CMD_TOPIC = "actuators/heater"
def send_telegram(message):
url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
requests.post(url, json={"chat_id": CHAT_ID, "text": message})
def on_message(client, userdata, msg):
temp = float(msg.payload.decode())
print(f"Received temperature: {temp}")
if temp > 30.0:
send_telegram(f"⚠️ Температура превышает 30°C: {temp}°C")
elif temp < 5.0:
client.publish(CMD_TOPIC, "ON")
send_telegram(f"❄️ Температура ниже 5°C, включен обогреватель")
else:
client.publish(CMD_TOPIC, "OFF")
client = mqtt.Client()
client.on_message = on_message
client.connect(MQTT_BROKER)
client.subscribe(TEMP_TOPIC)
client.loop_start()
# Ждём 25 секунд, собираем данные (sandbox таймаут 30 секунд)
time.sleep(25)
client.loop_stop()
AI-агент выполняет этот скрипт на своих серверах (Railway). В течение ~25 секунд он получает сообщения из MQTT (ESP32 публикует каждые 10 секунд), проверяет условия и отправляет уведомления или команды. При необходимости AI может сохранить настройки и запускать такой скрипт периодически через Hardware Bridge или как отдельный сервис, но даже разовое выполнение позволяет быстро протестировать логику.
Расширенные сценарии
1. Логирование и построение графиков
AI может записывать все полученные температуры в PostgreSQL (через psycopg2) и строить график matplotlib:
# Фрагмент: сохранение данных в БД
import psycopg2
conn = psycopg2.connect(database="temps", user="user", password="pass", host="db.example.com")
cur = conn.cursor()
cur.execute("INSERT INTO measurements (time, temp) VALUES (NOW(), %s)", (temp,))
conn.commit()
2. Управление через MQTT publish
ESP32 может подписаться на топик actuators/heater и включать/выключать реле. AI публикует команду используя тот же client.publish().
3. Комбинированный сценарий с несколькими датчиками
Если в системе несколько DS18B20, ESP32 публикует каждый с уникальным идентификатором (например, sensors/temperature/28-xxxx). AI подписывается на wildcard sensors/temperature/+ и анализирует все точки.
Преимущества интеграции с ASI Biont
- Отсутствие ручного кодирования. Пользователь формулирует задачу естественным языком — AI генерирует рабочий код за секунды.
- Гибкость. Не нужно ждать обновлений или плагинов — AI использует execute_python, который поддерживает десятки библиотек: paho-mqtt, pymodbus, aiohttp, paramiko и другие.
- Единый интерфейс. Все устройства — от датчика температуры до промышленного PLC — управляются через один чат.
Как начать
- Подключите DS18B20 к ESP32 и загрузите приведённый выше MicroPython-скрипт (или используйте Arduino IDE).
- Настройте MQTT-брокер (можете использовать бесплатный HiveMQ Cloud или поднять Mosquitto на Raspberry Pi).
- Получите API-токен ASI Biont в дашборде (Devices → Create API Key). Скачайте bridge.py с той же страницы и запустите:
python bridge.py --token=XXX --ports=COM3(для локального оборудования) или просто используйте облачный execute_python. - Откройте чат с AI-агентом и опишите свою задачу. Например: «Подключись к MQTT-брокеру на mqtt.example.com, прочитай последнюю температуру из топика sensors/temperature, и если она больше 28°C, отправь мне сообщение в Telegram».
AI выполнит скрипт и вернёт результат. При необходимости он может создать повторяющуюся задачу через Hardware Bridge или настроить webhook.
Заключение
DS18B20 — недорогой и точный датчик, который вместе с AI-агентом ASI Biont превращается в интеллектуальную систему климат-контроля. Всё, что требуется — подключить датчик к ESP32, обеспечить публикацию данных в MQTT, и AI сам построит логику оповещений и управления. Никаких сложных панелей, никакой ручной интеграции — просто диалог на естественном языке.
Попробуйте интеграцию уже сегодня на asibiont.com. Создайте свой первый AI-агент, подключите DS18B20 и убедитесь, насколько быстро автоматизируется мониторинг температуры.
Комментарии