Введение
Температурный датчик DS18B20 — один из самых популярных в DIY-проектах, промышленной автоматизации и системах «умного дома». Цифровой интерфейс 1-Wire, точность ±0.5°C в диапазоне от -55 до +125°C, невысокая цена и простота подключения делают его выбором номер один для мониторинга температуры в серверных, теплицах, холодильных камерах и жилых помещениях. Но ручное программирование логики опроса, записи данных и отправки уведомлений отнимает время и требует навыков. ASI Biont решает эту задачу: вы просто описываете в чате, к какому устройству подключиться и что нужно делать, а AI-агент сам пишет код интеграции, подключается к DS18B20 через один из доступных каналов и начинает управлять данными. Ниже — реальный кейс подключения DS18B20 через ESP32 и MQTT с мониторингом и уведомлениями в Telegram.
Что такое DS18B20 и почему его стоит подключать к AI-агенту?
DS18B20 — это цифровой датчик температуры с уникальным 64-битным серийным номером, что позволяет подключать несколько датчиков на одну шину 1-Wire. Он выпускается компанией Maxim Integrated (ныне Analog Devices) и поддерживается практически всеми микроконтроллерами: Arduino, ESP32, Raspberry Pi, STM32. По данным datasheet (DS18B20 datasheet, 2023), типичная погрешность не превышает 0.5°C, а разрешение — до 12 бит (0.0625°C).
Подключение к AI-агенту даёт:
- Автоматический опрос датчика по заданному интервалу.
- Анализ трендов (рост/падение температуры, прогноз достижения порога).
- Уведомления в Telegram, Slack или по email при выходе за пределы нормы.
- Интеграцию с другими устройствами: включение вентилятора, кондиционера, обогревателя по команде AI.
Как ASI Biont подключается к DS18B20: сценарий с ESP32 + MQTT
Выбранный способ подключения — MQTT через paho-mqtt. Почему именно он? ESP32 — самый доступный микроконтроллер с Wi-Fi, DS18B20 подключается к нему по 1-Wire (пин GPIO4), а данные отправляются в MQTT-брокер (например, Mosquitto или HiveMQ Cloud). ASI Biont подписывается на топик с показаниями, анализирует их и при необходимости публикует команды обратно (например, fan/control с payload ON).
Альтернативные варианты, которые также поддерживаются:
- Hardware Bridge (COM-порт): если ESP32 подключён к ПК через USB-UART, AI использует bridge.py для чтения данных с COM-порта.
- SSH на Raspberry Pi: если датчик подключён к GPIO Raspberry Pi, AI подключается по SSH, запускает скрипт чтения и забирает данные.
- HTTP API: ESP32 может поднять веб-сервер, и AI будет опрашивать его через aiohttp.
Но MQTT — самый гибкий: не требует постоянного подключения ПК, данные доступны из облака, можно легко масштабировать на десятки датчиков.
Пошаговая реализация: от описания задачи до работающей системы
Шаг 1. Сборка схемы
Подключите DS18B20 к ESP32:
- Красный провод (VDD) — 3.3V.
- Чёрный (GND) — GND.
- Жёлтый (DATA) — GPIO4. Между DATA и VDD обязательно резистор 4.7 кОм (подтяжка к питанию).
Скетч для ESP32 (Arduino IDE) — публикует температуру каждые 30 секунд в топик sensor/ds18b20/temperature:
#include <WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
#define PUBLISH_INTERVAL 30000
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const char* mqtt_server = "broker.hivemq.com";
const char* mqtt_topic = "sensor/ds18b20/temperature";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
sensors.begin();
}
void loop() {
if (!client.connected()) client.connect("ESP32DS18B20");
client.loop();
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
String payload = String(temp);
client.publish(mqtt_topic, payload.c_str());
delay(PUBLISH_INTERVAL);
}
Шаг 2. Подключение ASI Biont к MQTT-брокеру
В чате с AI-агентом ASI Biont отправьте сообщение:
Подключись к MQTT-брокеру broker.hivemq.com порт 1883. Подпишись на топик sensor/ds18b20/temperature. Читай новые сообщения, анализируй температуру. Если температура превышает 35°C или падает ниже 5°C, отправь мне уведомление в Telegram. Telegram bot token: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11, chat_id: 987654321.
AI-агент сгенерирует и выполнит Python-скрипт внутри execute_python. Пример кода, который будет выполнен (вы можете увидеть его в логах сессии):
import paho.mqtt.client as mqtt
import requests
import json
BROKER = "broker.hivemq.com"
PORT = 1883
TOPIC = "sensor/ds18b20/temperature"
TELEGRAM_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
CHAT_ID = "987654321"
TEMP_MIN = 5.0
TEMP_MAX = 35.0
def send_telegram_alert(message):
url = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": message}
requests.post(url, json=payload, timeout=10)
def on_message(client, userdata, msg):
try:
temp = float(msg.payload.decode())
if temp > TEMP_MAX:
send_telegram_alert(f"🔥 Температура превысила {TEMP_MAX}°C! Текущее значение: {temp}°C")
elif temp < TEMP_MIN:
send_telegram_alert(f"❄️ Температура упала ниже {TEMP_MIN}°C! Текущее значение: {temp}°C")
except ValueError:
pass
mqtt_client = mqtt.Client()
mqtt_client.on_message = on_message
mqtt_client.connect(BROKER, PORT, 60)
mqtt_client.subscribe(TOPIC)
mqtt_client.loop_forever(timeout=1.0) # выполняется 30 секунд в sandbox
Важно: execute_python выполняется в sandbox-окружении с таймаутом 30 секунд. Для длительного мониторинга AI использует встроенный планировщик: вы задаёте периодичность (например, «проверяй каждые 10 минут»), и AI запускает скрипт по расписанию.
Шаг 3. Автоматизация управления
Добавим обратную связь: если температура превышает 35°C, AI публикует команду в топик fan/control с payload ON, чтобы включить вентилятор. Для этого в чате допишите:
При превышении 35°C опубликуй в топик fan/control сообщение ON.
AI модифицирует скрипт, добавив строку:
fan_client.publish("fan/control", "ON")
На стороне ESP32 нужно подписаться на fan/control и при получении ON включить реле, управляющее вентилятором. Это делается добавлением в скетч:
client.subscribe("fan/control");
void callback(char* topic, byte* payload, unsigned int length) {
if (strcmp((char*)payload, "ON") == 0) digitalWrite(RELAY_PIN, HIGH);
}
Почему это выгодно? Сравнение с ручной разработкой
| Параметр | Ручная разработка | ASI Biont |
|---|---|---|
| Время настройки | 2-4 часа (написание скетча, MQTT-клиента, логики уведомлений) | 2 минуты (описание задачи в чате) |
| Навыки | Arduino C++, Python, MQTT, Telegram API | Ничего, кроме описания задачи |
| Изменение логики | Правка кода, перепрошивка ESP32 | Изменение описания в чате |
| Масштабирование | Добавление датчика — правка кода, новый топик | Просто сказать «добавь датчик в топик sensor2/temperature» |
Подводные камни и их решение
- ESP32 не подключается к Wi-Fi: проверьте имя сети и пароль, убедитесь, что роутер не блокирует устройство.
- MQTT-брокер недоступен: используйте публичный брокер (broker.hivemq.com, test.mosquitto.org) или поднимите собственный Mosquitto на Raspberry Pi.
- Данные не приходят в ASI Biont: проверьте, подписан ли AI на правильный топик. В логах сессии можно увидеть, какие сообщения получены.
- Sandbox таймаут 30 секунд: для длительного мониторинга используйте планировщик ASI Biont — AI будет запускать скрипт по расписанию (каждые 5, 10, 30 минут).
Другие способы подключения DS18B20 к ASI Biont
ASI Biont подключается к любому устройству через execute_python — AI сам пишет код интеграции под каждое устройство. Не нужно ждать, пока разработчики добавят поддержку — подключайте что угодно прямо сейчас. Пользователь просто описывает в чате, к какому устройству подключиться и какие параметры (порт, IP, baud rate, API-ключ), и AI сам пишет код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio. Всё подключение происходит через диалог в чате, никаких панелей управления и кнопок «добавить устройство» не требуется.
Рассмотрим альтернативные сценарии:
1. Hardware Bridge (COM-порт)
Если ESP32 подключён к ПК через USB-UART, AI использует bridge.py. Скачайте bridge.py из дашборда (Devices → Create API Key → Скачать bridge). Запустите:
pip install pyserial requests websockets
python bridge.py --token=ВАШ_ТОКЕН --ports=COM3 --baud=115200 --rate=10
В чате напишите: «Подключись к COM3, читай данные с датчика DS18B20, выводи температуру каждые 10 секунд». AI отправит команду через serial_write_and_read, и bridge выполнит её локально.
2. SSH на Raspberry Pi
Если DS18B20 подключён к Raspberry Pi, AI подключается по SSH:
Подключись по SSH к 192.168.1.100, логин pi, пароль raspberry. Прочитай температуру из файла /sys/bus/w1/devices/28-*/w1_slave и отправь мне в Telegram.
AI выполнит execute_python с paramiko, прочитает файл и отправит результат.
3. HTTP API (ESP32 как веб-сервер)
ESP32 может поднять HTTP-сервер, возвращающий JSON с температурой. AI опрашивает его через aiohttp:
import aiohttp
import asyncio
async def fetch_temp():
async with aiohttp.ClientSession() as session:
async with session.get("http://192.168.1.50/temperature") as resp:
data = await resp.json()
return data["temp"]
Заключение
DS18B20 + ASI Biont — это не просто считывание температуры, а полноценная интеллектуальная система мониторинга и управления. AI-агент берёт на себя рутину: подключается к брокеру, анализирует данные, отправляет уведомления и управляет устройствами. Всё, что нужно от вас — описать задачу в чате.
Попробуйте сами: зайдите на asibiont.com, создайте API-ключ, скачайте bridge (если нужно) и напишите AI: «Подключи мой DS18B20 через MQTT и пришли уведомление, если температура выйдет за пределы 10-30°C». Интеграция займёт меньше минуты.
Комментарии