Введение: почему Edge AI и ASI Biont — идеальная пара
Современные IoT- и промышленные системы всё чаще требуют обработки данных на месте — на границе сети (edge). Raspberry Pi в паре с оптимизированными фреймворками TensorFlow Lite или ONNX Runtime позволяет запускать модели машинного обучения локально: детекция объектов, классификация звуков, прогнозирование температуры. Но как управлять этим зоопарком устройств, собирать результаты инференса и автоматически реагировать на события без написания сотен строк кода?
Здесь на помощь приходит ASI Biont — AI-агент, который умеет подключаться к любому оборудованию по SSH, MQTT, HTTP API и другим протоколам. В этой статье я, как инженер-embedded-разработчик, покажу на конкретных примерах, как развернуть модель ONNX на Raspberry Pi, подключить её к ASI Biont через SSH и научить AI-агента самостоятельно анализировать результаты, отправлять уведомления и управлять периферией. Всё взаимодействие происходит через обычный чат — вы описываете задачу, а AI пишет и выполняет код за секунды.
Что такое Raspberry Pi + TensorFlow Lite / ONNX Runtime и зачем подключать к AI-агенту?
Raspberry Pi — это одноплатный компьютер (SBC) с ARM-процессором, который давно стал стандартом для Edge AI. TensorFlow Lite и ONNX Runtime — это легковесные рантаймы, оптимизированные для работы на ограниченных ресурсах. Они позволяют выполнять инференс обученных моделей (например, MobileNet, YOLO, BERT) прямо на устройстве, без отправки данных в облако.
Проблема: после того как Raspberry Pi выдала результат (например, «на конвейере бракованная деталь»), нужно что-то с этим делать — отправить оповещение в Telegram, включить тревожный светодиод, записать событие в базу данных. Без AI-агента вам пришлось бы писать отдельный скрипт для каждого сценария, настраивать MQTT-брокер или Webhook. С ASI Biont вы просто говорите в чате: «Если модель обнаружила дефект, отправь мне уведомление и включи красный светодиод на GPIO 17». AI сам подключается к Raspberry Pi, запускает инференс, анализирует результат и выполняет нужные действия.
Как ASI Biont подключается к Raspberry Pi?
Из списка доступных способов интеграции для Raspberry Pi оптимальны два:
| Способ | Когда использовать | Комментарий |
|---|---|---|
| SSH (через execute_python + paramiko) | Есть прямой доступ по SSH к Raspberry Pi | Самый гибкий: AI запускает любые скрипты, читает/пишет GPIO, получает результаты |
| MQTT (paho-mqtt) | На Raspberry Pi уже работает MQTT-клиент, публикующий результаты инференса | Хорошо для асинхронной передачи данных, но требует предварительной настройки брокера |
| HTTP API (aiohttp/requests) | На Raspberry Pi запущен веб-сервер, отдающий результаты инференса | Подходит, если нужно интеграция со сторонними сервисами |
В этой статье мы сфокусируемся на SSH как на самом универсальном методе. Пользователь передаёт в чате IP-адрес, логин, пароль или SSH-ключ (можно описать текстом). AI генерирует Python-скрипт с библиотекой paramiko, который подключается к Raspberry Pi, копирует на неё скрипт инференса (если нужно), запускает его и забирает stdout. Всё это выполняется в sandbox-окружении ASI Biont (execute_python).
Важно: ни ASI Biont, ни bridge.py не имеют прямого доступа к GPIO Raspberry Pi — только через SSH-команды или скрипты, запущенные на самой Raspberry Pi.
Сценарий 1: Детекция объектов с камеры и уведомление в Telegram
Представим типичную задачу: на Raspberry Pi установлена камера (CSI или USB), запущена модель YOLOv5 в ONNX Runtime. Когда модель обнаруживает человека в кадре, нужно отправить фото в Telegram и включить зелёный светодиод. Без AI-агента пришлось бы писать скрипт, который запускает инференс, затем отправляет запрос к Telegram API, затем управляет GPIO. С ASI Biont пользователь просто формулирует запрос:
«Подключись к Raspberry Pi по SSH (IP: 192.168.1.100, user: pi, password: raspberry), выполни инференс модели ONNX из файла /home/pi/yolov5.onnx на текущем кадре с камеры, если обнаружен человек — отправь мне фото в Telegram и включи светодиод на GPIO 17»
AI-агент ASI Biont, используя execute_python, пишет код, который:
- Через paramiko подключается к Raspberry Pi.
- Запускает Python-скрипт
/home/pi/detect.py(который уже есть на устройстве) или генерирует его на лету и передаёт по SCP. - Читает stdout — результат инференса (например, JSON с bounding boxes).
- Если есть класс «person» с уверенностью > 0.5 — выполняет два действия:
- Отправляет изображение в Telegram через
requests.postкhttps://api.telegram.org/bot<TOKEN>/sendPhoto. - Отправляет команду на Raspberry Pi для включения GPIO:
python3 -c "import RPi.GPIO as GPIO; GPIO.setmode(GPIO.BCM); GPIO.setup(17, GPIO.OUT); GPIO.output(17, GPIO.HIGH)".
Пример реального кода, который генерирует AI (выполняется в sandbox):
import paramiko
import json
import requests
# Параметры подключения (берутся из диалога с пользователем)
host = "192.168.1.100"
port = 22
username = "pi"
password = "raspberry"
# Скрипт для запуска на Raspberry Pi
remote_script = """
import cv2
import onnxruntime as ort
import numpy as np
# Захват кадра с камеры
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
cap.release()
if not ret:
print('no_frame')
exit()
# Инференс ONNX
session = ort.InferenceSession('/home/pi/yolov5.onnx')
input_name = session.get_inputs()[0].name
# Предобработка кадра (упрощённо)
input_data = cv2.resize(frame, (640, 640)).astype(np.float32) / 255.0
input_data = np.expand_dims(input_data.transpose(2,0,1), axis=0)
outputs = session.run(None, {input_name: input_data})
# Анализ результатов... (здесь парсинг выходных тензоров)
# Для примера - допустим, outputs[0] содержит классы
# Если найден человек с уверенностью > 0.5 - записываем информацию
result = {'person_detected': True, 'confidence': 0.85}
print(json.dumps(result))
"""
# Подключение по SSH
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username=username, password=password)
# Запуск скрипта
stdin, stdout, stderr = client.exec_command(f"python3 << 'EOF'\n{remote_script}\nEOF")
output = stdout.read().decode().strip()
error = stderr.read().decode().strip()
if error:
print("Ошибка:", error)
else:
result = json.loads(output)
if result.get('person_detected'):
# Отправка уведомления в Telegram
telegram_token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
message = f"Обнаружен человек! Уверенность: {result['confidence']:.2f}"
requests.post(f"https://api.telegram.org/bot{telegram_token}/sendMessage",
json={"chat_id": chat_id, "text": message})
# Включение GPIO
client.exec_command("python3 -c \"import RPi.GPIO as GPIO; GPIO.setmode(GPIO.BCM); GPIO.setup(17, GPIO.OUT); GPIO.output(17, GPIO.HIGH)\"")
print("Светодиод включён, уведомление отправлено.")
else:
print("Человек не обнаружен.")
client.close()
Обратите внимание: AI не пишет бесконечные циклы — скрипт однократный, выполняется быстро. Вся логика управления GPIO и отправки сообщений реализована через SSH-команды и библиотеки, доступные в sandbox (paramiko, requests).
Сценарий 2: Классификация звуков для предиктивной диагностики
Другой распространённый кейс — анализ звуков работающего оборудования. На Raspberry Pi запущена модель на TensorFlow Lite, которая классифицирует звук: норма, аномалия, критический сбой. Результат публикуется в MQTT-топик. ASI Biont подписывается на этот топик и при аномалии отправляет email и записывает событие в базу данных.
Как это работает:
- Пользователь указывает: «Подключись к MQTT-брокеру по адресу 192.168.1.50:1883, подпишись на топик
factory/machine_sound, при получении значения"anomaly"отправь мне email на admin@example.com и запиши event в файл /home/pi/log.txt». - AI генерирует execute_python-скрипт с paho-mqtt, который подписывается на топик и в callback проверяет payload.
- При аномалии — через SSH (если нужно записать локально) или через email (используя smtplib из стандартной библиотеки).
Пример кода (фрагмент):
import paho.mqtt.client as mqtt
import json
import paramiko
def on_message(client, userdata, msg):
data = json.loads(msg.payload.decode())
if data.get('status') == 'anomaly':
# Отправка email
import smtplib
from email.message import EmailMessage
email_msg = EmailMessage()
email_msg.set_content('Обнаружена аномалия звука!')
email_msg['Subject'] = 'Machine alert'
email_msg['From'] = 'alerts@example.com'
email_msg['To'] = 'admin@example.com'
with smtplib.SMTP('smtp.example.com', 587) as server:
server.starttls()
server.login('user', 'pass')
server.send_message(email_msg)
# Запись в файл на Raspberry Pi по SSH
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.100', username='pi', password='raspberry')
ssh.exec_command('echo "anomaly at $(date)" >> /home/pi/log.txt')
ssh.close()
print('Уведомление отправлено, лог записан.')
client = mqtt.Client()
client.on_message = on_message
client.connect('192.168.1.50', 1883, 60)
client.subscribe('factory/machine_sound')
client.loop_forever(timeout=1.0) # timeout для предотвращения блокировки >30s
Важно: так как sandbox имеет таймаут 30 секунд, AI-агент ограничивает количество итераций или использует однократное чтение с loop_start()/loop_stop(), либо делает один опрос. В нашем случае пользователь может запросить «подпишись на MQTT на 10 секунд и покажи последние 5 сообщений». AI скорректирует код.
Сценарий 3: ONNX Runtime — прогноз температуры и управление кулером
Ещё один практический пример: Raspberry Pi получает данные с датчика температуры DS18B20, подаёт их на вход ONNX-модели, обученной предсказывать перегрев. Если прогноз температуры > 70°C, AI включает кулер через GPIO и отправляет предупреждение.
Пошаговое описание:
- Пользователь: «Raspberry Pi по SSH IP 192.168.1.100, логин pi, пароль raspberry. Есть скрипт /home/pi/read_temp.py — он выводит температуру. Модель /home/pi/predict_temp.onnx. Если прогноз > 70, включи GPIO 18 и отправь Telegram.»
- AI пишет execute_python-скрипт, который:
- По SSH запускает
python3 /home/pi/read_temp.pyи считывает температуру (например, 65.2). - Создаёт JSON и по SCP отправляет на Raspberry Pi для инференса (или запускает второй скрипт).
- Читает результат прогноза.
- Если > 70, выполняет SSH-команду включения GPIO и отправляет Telegram.
Код (упрощённо):
import paramiko
import json
client = paramiko.SSHClient()
client.connect('192.168.1.100', username='pi', password='raspberry')
# Текущая температура
stdin, stdout, stderr = client.exec_command('python3 /home/pi/read_temp.py')
temp = float(stdout.read().decode().strip())
print(f"Температура: {temp}")
# Запуск инференса
inference_cmd = f"python3 -c \"
import onnxruntime
import numpy as np
sess = onnxruntime.InferenceSession('/home/pi/predict_temp.onnx')
input_array = np.array([{temp}], dtype=np.float32).reshape(1,1)
pred = sess.run(None, {{'input': input_array}})[0][0][0]
print(pred)
\""
stdin, stdout, stderr = client.exec_command(inference_cmd)
pred_temp = float(stdout.read().decode().strip())
print(f"Прогноз: {pred_temp}")
if pred_temp > 70:
# Включение кулера
client.exec_command('python3 -c "import RPi.GPIO as GPIO; GPIO.setmode(GPIO.BCM); GPIO.setup(18, GPIO.OUT); GPIO.output(18, GPIO.HIGH)"')
# Telegram
import requests
requests.post('https://api.telegram.org/botTOKEN/sendMessage',
json={'chat_id': '...', 'text': f'Прогноз перегрева: {pred_temp:.1f}°C, кулер включён!'})
print('Кулер включён.')
else:
print('Температура в норме.')
client.close()
Выводы: почему интеграция с ASI Biont меняет правила игры
- Никакого ручного кодирования. Вам не нужно писать бэкенд для обработки инференса, настраивать очереди, писать отдельные обработчики для каждого сценария. Вы просто описываете задачу на естественном языке.
- Универсальность. AI подключается к Raspberry Pi через SSH, MQTT, HTTP API — что угодно. Если нужно добавить новый датчик или модель, достаточно изменить запрос.
- Мгновенная автоматизация. Результат инференса может сразу триггерить действия: уведомления, управление GPIO, запись в базу данных, интеграция с Telegram/Slack. Всё через существующие библиотеки в sandbox.
- Безопасность. SSH-ключи и пароли передаются только в диалоге, код выполняется в изолированном sandbox bridge.
Как начать прямо сейчас?
- Зайдите в дашборд ASI Biont, скачайте bridge.py (Devices → Create API Key).
- Запустите bridge на своём компьютере (где есть доступ к Raspberry Pi по сети).
- В чате напишите: «Подключись к моей Raspberry Pi по SSH (IP: ..., user: pi) и выполни инференс модели...»
- AI сам сгенерирует и выполнит код, а вы получите результат.
Никаких настроек, никакой ручной компиляции — только диалог с AI-агентом. Попробуйте уже сегодня на asibiont.com и убедитесь, как легко управлять Edge AI-устройствами с помощью искусственного интеллекта.
Комментарии