Введение
Протокол 1-Wire десятилетиями остаётся стандартом де-факто для подключения недорогих датчиков температуры, влажности и других параметров. DS18B20, DHT22 (хотя последний не чисто 1-Wire), датчики уровня — все они передают данные по одному проводу, что упрощает монтаж, но усложняет сбор и анализ в реальном времени. Традиционно для опроса таких датчиков используют одноплатники (Raspberry Pi) или USB-адаптеры, а данные отправляют в облако через сторонние сервисы. Но что, если сам AI-агент сможет не только собирать показания, но и прогнозировать тренды, выявлять аномалии и автоматически реагировать на нештатные ситуации?
ASI Biont — AI-агент, который подключается к любому оборудованию через чат. Пользователь описывает задачу, и AI сам пишет код интеграции, выполняет его в защищённом sandbox и управляет устройствами через Hardware Bridge или другие протоколы. В этой статье мы разберём, как подключить классическую шину 1-Wire к ASI Biont и построить систему предиктивного мониторинга температуры.
Что такое 1-Wire и зачем его подключать к AI-агенту
1-Wire (Dallas Semiconductor, ныне Maxim Integrated) — последовательный протокол, использующий всего один сигнальный провод плюс землю. Каждое устройство имеет уникальный 64-битный идентификатор (ROM), что позволяет подключать до нескольких сотен датчиков на одну шину. Основные датчики:
- DS18B20 — цифровой термометр с точностью ±0.5 °C (датчик)
- DS2413 — 2-канальный дискретный ввод/вывод
- DS2438 — смарт-батарейный монитор
Подключение 1-Wire к AI-агенту даёт:
- Непрерывный мониторинг — AI опрашивает датчики каждые N секунд
- Прогнозирование отказов — по трендам температуры AI определяет, что вентилятор скоро выйдет из строя
- Автоматизация — при превышении порога AI отправляет команду на реле (через тот же 1-Wire или MQTT)
- Интеграция с другими системами — данные можно сохранять в PostgreSQL, отправлять в Telegram, строить графики
Как ASI Biont подключается к 1-Wire: выбор способа
У ASI Biont есть девять способов взаимодействия с оборудованием (см. документацию). Для 1-Wire оптимальны два:
| Способ | Когда использовать | Преимущества |
|---|---|---|
| Hardware Bridge (COM-порт) | USB-адаптер 1-Wire (например, DS9490R) подключен к ПК | Простота, не требует сетевого стека на стороне датчика |
| SSH + GPIO | Датчик напрямую подключен к Raspberry Pi / Orange Pi по GPIO (пин 4) | Можно совместить с другими задачами на одноплатнике |
Почему Hardware Bridge чаще всего проще:
Пользователь запускает bridge.py (скачивается из дашборда ASI Biont) на своём ПК, указывает COM-порт (например, COM5) и скорость 9600 бод (стандарт для USB-адаптеров 1-Wire). Bridge соединяется с облачным AI-агентом через WebSocket. AI отправляет команды serial_write_and_read — bridge пишет в COM-порт и возвращает ответ.
Для 1-Wire используется AT-команды? Нет. В современных библиотеках (например, DigiTemp, OWFS) адаптер представляется как виртуальный COM-порт с определённым протоколом: отправляешь команду на чтение датчика и получаешь сырые данные. Но AI может написать Python-скрипт для считывания через pyserial?
Важно: по условию, AI использует industrial_command tool, а не выполняет скрипт на стороне пользователя напрямую. Поэтому процедура:
1. Пользователь в чате сообщает: "Подключи датчик DS18B20 на COM5, скорость 9600"
2. AI отправляет команду industrial_command(protocol='bridge://', command='serial_write_and_read', data='...')
3. Bridge выполняет операцию и возвращает результат
4. AI парсит ответ, извлекает температуру
Но что писать в data? Для USB-адаптера DS9490R, работающего в режиме "serial-over-USB", команда чтения датчика — это бинарный пакет (например, 0xCC, 0x44, 0xBE). AI может сформировать hex-команду.
Пример: для DS18B20 последовательность:
- Сброс шины, отправка команды Skip ROM (0xCC)
- Команда Convert T (0x44) — начать измерение
- Ожидание 750 мс
- Сброс, Skip ROM (0xCC)
- Команда Read Scratchpad (0xBE) — чтение 9 байт
Но реализовывать этот протокол с нуля — сложно. Намного эффективнее использовать готовый драйвер на стороне bridge или через SSH-подключение к ОС, где установлен OWFS.
Реальный сценарий: SSH + OWFS на Raspberry Pi
Рекомендую именно этот путь для production. Пользователь устанавливает на Raspberry Pi пакет owfs (файловая система для 1-Wire), подключает датчик к GPIO (пин 4, земля, подтяжка 4.7 кОм). После установки OWFS создаёт виртуальные файлы: /mnt/1wire/28-XXXXXXXXXXXX/temperature.
ASI Biont подключается к Raspberry Pi по SSH с помощью execute_python (параметры: IP, логин, пароль или ключ). AI пишет Python-скрипт с paramiko, который читает файл температуры и возвращает значение. Никаких сложных протоколов — просто cat файла.
Почему это надёжнее:
- OWFS обрабатывает все тайминги и коллизии на шине
- Скрипт выполняется в sandbox ASI Biont (таймаут 30 секунд), но чтение файла занимает миллисекунды
- AI может агрегировать данные за период, строить тренды и отправлять уведомления
Конкретный сценарий: мониторинг температуры в серверной с DS18B20
Задача: в серверной стоят три стойки. На каждой — датчик DS18B20 (адреса 28-00001, 28-00002, 28-00003). AI должен каждые 5 минут опрашивать датчики, вычислять среднюю температуру, и если она превышает 30 °C — отправлять уведомление в Telegram и включать дополнительное охлаждение (через MQTT-реле).
Шаг 1. Пользователь описывает в чате:
"Подключись к Raspberry Pi 192.168.1.100 по SSH (логин pi, пароль raspberry). Установлен OWFS, датчики в /mnt/1wire. Читай три датчика, вычисляй среднюю, если >30 — уведоми в Telegram @mybot, токен xxx. Повторяй каждые 5 минут."
Шаг 2. AI генерирует код и выполняет его через execute_python:
import paramiko
import requests
import time
# Параметры
host = "192.168.1.100"
user = "pi"
password = "raspberry"
sensors = ["/mnt/1wire/28-00001/temperature",
"/mnt/1wire/28-00002/temperature",
"/mnt/1wire/28-00003/temperature"]
telegram_token = "xxx"
chat_id = "123456"
# Подключение по SSH
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(host, username=user, password=password)
temp_values = []
for sensor_path in sensors:
stdin, stdout, stderr = ssh.exec_command(f"cat {sensor_path}")
value = stdout.read().decode().strip()
if value:
temp_values.append(float(value))
ssh.close()
if temp_values:
avg = sum(temp_values) / len(temp_values)
if avg > 30:
message = f"⚠️ Средняя температура в серверной: {avg:.1f}°C! Включено доп. охлаждение."
requests.post(f"https://api.telegram.org/bot{telegram_token}/sendMessage",
json={"chat_id": chat_id, "text": message})
# Команда на MQTT-реле (через industrial_command или дополнительный MQTT-клиент)
# Для простоты используем industrial_command в следующем цикле
Шаг 3. AI проверяет результат. Если команда выполнилась успешно, AI говорит: "Температура сейчас 28.5 °C. Всё в норме. Я установил интервал 5 минут и буду мониторить."
Важно: поскольку sandbox не поддерживает долгоиграющие процессы (while True), AI использует механизм pseudo-планировщика: он запоминает задачу и будет повторять её по команде пользователя или через внешний cron. В реальной архитектуре ASI Biont можно попросить AI создать Python-скрипт, который запускается периодически через планировщик ОС на Raspberry Pi. Но это уже выходит за рамки sandbox.
Шаг 4. Выход за пределы нормы. Если позже AI замечает сильный рост температуры, он может предложить проверить вентиляторы или сообщить об аномалии.
Преимущества интеграции 1-Wire с ASI Biont
- Никакого ручного кода. Пользователь описывает задачу на естественном языке — AI пишет скрипт с paramiko, paho-mqtt или pymodbus.
- Готовые библиотеки. Sandbox содержит все популярные библиотеки (paramiko, pyserial, pymodbus, opcua-asyncio, bac0, snap7, python-can).
- Безопасность. Код выполняется в изолированной среде без доступа к сети пользователя (кроме как по SSH/MQTT).
- Гибкость. AI может комбинировать данные с 1-Wire, Modbus, MQTT и отправлять результаты в Telegram, базы данных, HTTP API.
- Прогностика. Используя библиотеки scikit-learn или transformers, AI может построить модель тренда температуры и предсказать отказ вентилятора за 2 дня до события.
Заключение
1-Wire — надёжный и дешёвый способ сбора данных, а ASI Biont превращает его в интеллектуальную систему мониторинга. Вам не нужно писать код или настраивать сложные панели — достаточно описать задачу в чате, и AI-агент сам подключится к оборудованию, начнёт собирать данные и принимать решения.
Попробуйте интеграцию 1-Wire с ASI Biont прямо сейчас: подключите датчик DS18B20, скажите в чате "Подключи датчик температуры по SSH" и наблюдайте, как AI берёт управление на себя.
Комментарии