Введение
Температурный мониторинг — одна из самых востребованных задач в IoT: от серверных и теплиц до умных домов и промышленных холодильников. Датчик DS18B20 — это цифровой термометр с интерфейсом 1-Wire, который позволяет измерять температуру в диапазоне от –55 до +125 °C с точностью ±0,5 °C. Он дёшев, прост в подключении и поддерживается практически всеми микроконтроллерами.
Но как превратить сырые показания датчика в умную систему, которая не только собирает данные, но и принимает решения: включает вентиляцию при перегреве, отправляет аварийные уведомления в Telegram или ведёт историю температур для анализа трендов? Ответ — интеграция DS18B20 с AI-агентом ASI Biont.
ASI Biont — это AI-агент, который умеет подключаться к любому устройству через диалог в чате. Вам не нужно писать код вручную: достаточно описать задачу, передать параметры подключения, и AI сам создаст Python-скрипт для сбора данных, анализа и автоматизации. В этой статье мы разберём конкретный сценарий: ESP32 + DS18B20 → ASI Biont через MQTT, с оповещениями и управлением.
Что такое DS18B20 и зачем подключать его к AI-агенту?
DS18B20 — это цифровой датчик температуры на шине 1-Wire. Его главные особенности:
- Уникальный 64-битный идентификатор — можно подключать несколько датчиков на один провод.
- Цифровой выход — не требует АЦП, данные передаются по протоколу 1-Wire.
- Питание по паразитной линии — может работать без отдельного провода питания.
Подключение DS18B20 к микроконтроллеру (например, ESP32) даёт локальное измерение температуры. Но без облачного AI-агента эти данные остаются «сырыми» — вы можете читать их через последовательный порт или выводить на дисплей, но не можете:
- получать уведомления на телефон при выходе за пределы нормы;
- анализировать тренды и предсказывать поломки оборудования;
- автоматически управлять исполнительными устройствами (вентиляцией, обогревом);
- вести централизованную историю показаний.
ASI Biont решает все эти задачи: он подключается к ESP32 по MQTT, собирает данные, анализирует их и выполняет действия по заданным правилам. При этом AI-агент не требует предустановленных драйверов или плагинов — он пишет код интеграции «на лету» под конкретное устройство.
Какой способ подключения используется и почему?
Для интеграции DS18B20 с ASI Biont мы используем MQTT (протокол publish/subscribe). Почему именно он?
| Способ подключения | Преимущества | Недостатки | Для DS18B20? |
|---|---|---|---|
| COM-порт (Hardware Bridge) | Прямое чтение с микроконтроллера | Требует ПК с bridge.py, проводное соединение | Да, но менее удобно для удалённого мониторинга |
| SSH | Управление Raspberry Pi или Orange Pi | Требует одноплатника с Linux | Да, если ESP32 заменён на Pi |
| MQTT | Лёгкий, асинхронный, масштабируемый, идеален для ESP32 | Нужен MQTT-брокер (например, Mosquitto) | Рекомендуемый |
| Modbus/TCP | Промышленные контроллеры (PLC) | Избыточен для простого датчика | Нет |
| HTTP API | Устройства с REST-интерфейсом | Требует HTTP-сервера на ESP32 | Возможно, но сложнее |
| OPC-UA | Промышленные OPC-серверы | Избыточен | Нет |
MQTT — стандарт де-факто для IoT-устройств. ESP32 с библиотеками PubSubClient или umqtt.simple легко подключается к брокеру и публикует показания температуры. ASI Biont подписывается на нужный топик, получает данные и обрабатывает их.
Конкретный сценарий: ESP32 + DS18B20 + ASI Biont с оповещениями в Telegram
Шаг 1. Аппаратная часть
Подключите датчик DS18B20 к ESP32:
- VDD (красный) → 3.3 В
- GND (чёрный) → GND
- DQ (жёлтый) → GPIO4 (или любой цифровой пин) + подтягивающий резистор 4.7 кОм к 3.3 В
Шаг 2. Прошивка ESP32 (MicroPython)
Установите MicroPython на ESP32 (официальная прошивка с micropython.org). Затем загрузите скрипт, который читает DS18B20 и публикует данные в MQTT:
import machine
import onewire
import ds18x20
import network
import time
from umqtt.simple import MQTTClient
# Конфигурация Wi-Fi и MQTT
WIFI_SSID = "ваш_ssid"
WIFI_PASS = "ваш_пароль"
MQTT_BROKER = "test.mosquitto.org" # или ваш брокер
MQTT_TOPIC = b"home/temperature/ds18b20"
# Подключение к Wi-Fi
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
while not wlan.isconnected():
time.sleep(1)
# Инициализация DS18B20 на GPIO4
ds_pin = machine.Pin(4)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
roms = ds_sensor.scan()
print("Найдено датчиков:", len(roms))
# Подключение к 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)
payload = f"{{\"temperature\": {temp}, \"timestamp\": {time.time()}}}"
client.publish(MQTT_TOPIC, payload)
print("Опубликовано:", payload)
time.sleep(60) # раз в минуту
Шаг 3. Подключение ASI Biont к MQTT-брокеру
Теперь переходим к AI-агенту. В чате с ASI Biont (на asibiont.com) отправьте сообщение:
«Подключись к MQTT-брокеру test.mosquitto.org, подпишись на топик home/temperature/ds18b20 и читай данные температуры. Если температура превышает 35 °C, отправь мне уведомление в Telegram через мой бот @MyTempBot. Также каждые 10 минут сохраняй среднюю температуру за последний час в CSV-файл и присылай его мне в чат.»
AI-агент выполнит следующие действия:
1. Напишет Python-скрипт в execute_python, используя библиотеку paho-mqtt для подписки на топик.
2. Обработает входящие данные (парсинг JSON).
3. Создаст правило: если температура > 35 °C → отправка HTTP-запроса к Telegram Bot API (через requests.post).
4. Запустит фоновую задачу (в рамках таймаута sandbox) для агрегации данных и записи в CSV.
5. Отправит CSV-файл пользователю в чат (через вложение).
Вот как выглядит сгенерированный AI-код (пример, упрощён):
import paho.mqtt.client as mqtt
import json
import time
import csv
import io
import requests
from collections import deque
# Конфигурация
BROKER = "test.mosquitto.org"
TOPIC = "home/temperature/ds18b20"
TELEGRAM_BOT_TOKEN = "ваш_токен"
TELEGRAM_CHAT_ID = "ваш_chat_id"
TEMPERATURE_THRESHOLD = 35.0
# Буфер для хранения показаний за последний час (60 записей с интервалом 1 мин)
buffer = deque(maxlen=60)
def on_message(client, userdata, msg):
payload = msg.payload.decode()
data = json.loads(payload)
temp = data["temperature"]
timestamp = data["timestamp"]
# Добавляем в буфер
buffer.append((timestamp, temp))
# Проверка порога
if temp > TEMPERATURE_THRESHOLD:
message = f"⚠️ Внимание! Температура {temp}°C превышает порог {TEMPERATURE_THRESHOLD}°C!"
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage",
json={"chat_id": TELEGRAM_CHAT_ID, "text": message}
)
# Каждые 10 минут (600 секунд) — формируем CSV и отправляем
if int(timestamp) % 600 < 60: # упрощённая проверка
# Создаём CSV в памяти
output = io.StringIO()
writer = csv.writer(output)
writer.writerow(["timestamp", "temperature"])
for ts, t in buffer:
writer.writerow([ts, t])
csv_content = output.getvalue()
# Отправляем через Telegram как документ
files = {"document": ("temperature_log.csv", csv_content)}
requests.post(
f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendDocument",
data={"chat_id": TELEGRAM_CHAT_ID},
files=files
)
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, 1883, 60)
client.subscribe(TOPIC)
client.loop_forever()
Важно: sandbox ASI Biont имеет таймаут 30 секунд, поэтому loop_forever() не подходит для долгоживущих задач. В реальной интеграции AI использует industrial_command с MQTT publish/subscribe через bridge или создаёт фоновый скрипт на сервере пользователя через SSH. Но для демонстрации логики код корректен.
Шаг 4. Автоматизация управления
ASI Biont может не только уведомлять, но и управлять исполнительными устройствами. Например, если температура в серверной превышает 30 °C, AI может:
- отправить команду на ESP32 через MQTT publish: client.publish("home/relay/ventilation", "ON");
- включить вентиляцию;
- через 15 минут проверить температуру снова и выключить вентиляцию, если температура снизилась.
Это реализуется добавлением второго топика и ответного publish в скрипте ESP32:
# В коде ESP32
def callback(topic, msg):
if msg == b"ON":
machine.Pin(5).value(1) # включить реле
elif msg == b"OFF":
machine.Pin(5).value(0)
client.set_callback(callback)
client.subscribe(b"home/relay/ventilation")
Как подключить DS18B20 к ASI Biont: пошаговая инструкция
- Подготовьте ESP32 с прошивкой MicroPython и загрузите скрипт чтения DS18B20 с MQTT-публикацией.
- Запустите MQTT-брокер (или используйте публичный test.mosquitto.org).
- Перейдите в чат ASI Biont на asibiont.com.
- Опишите задачу естественным языком, например: «Подключись к MQTT брокеру по адресу 192.168.1.100:1883 без пароля, подпишись на топик home/temperature/ds18b20, читай JSON с полем temperature, и если температура выше 30°C, опубликуй в топик home/relay/ventilation сообщение ON. Также отправляй мне уведомление в Telegram каждый раз, когда значение превышает порог.»
- AI-агент сгенерирует и выполнит код — вы получите подтверждение в чате.
Всё! Никаких панелей управления, никаких кнопок «добавить устройство» — только диалог.
Почему это выгодно?
- Экономия времени: не нужно писать код вручную, AI делает это за секунды.
- Гибкость: можно подключить любое устройство с любым протоколом (MQTT, Modbus, HTTP, COM-порт, SSH) без ожидания обновлений платформы.
- Интеллектуальная обработка: AI может анализировать тренды, выявлять аномалии, предсказывать отказы.
- Единый интерфейс: все уведомления и управление через Telegram или дашборд.
Сравнение альтернатив
| Параметр | ASI Biont (AI-агент) | Классическая IoT-платформа (Home Assistant, Node-RED) |
|---|---|---|
| Подключение устройства | Через диалог, AI пишет код сам | Ручная настройка интеграций, скрипты, YAML-конфиги |
| Гибкость протоколов | Любые: MQTT, Modbus, HTTP, COM, SSH, OPC-UA | Ограничен набором поддерживаемых интеграций |
| Анализ данных | AI-модели для трендов, аномалий, прогнозов | Только правила if-then, без машинного обучения |
| Время настройки | Минуты | Часы или дни |
| Порог входа | Низкий (нужен только чат) | Требует знаний программирования и DevOps |
Заключение
DS18B20 — простой и надёжный датчик температуры, но его истинная ценность раскрывается только в связке с AI-агентом, который может анализировать данные, уведомлять и управлять. ASI Biont делает эту интеграцию доступной каждому: вам не нужно быть программистом или DevOps-инженером. Просто опишите задачу в чате, и AI-агент сам напишет код, подключится к вашему устройству и начнёт работать.
Попробуйте интеграцию уже сегодня: подключите ваш DS18B20 к ASI Biont на asibiont.com и получите умный температурный мониторинг с оповещениями в Telegram и автоматическим управлением вентиляцией или отоплением.
Комментарии