Как подключить Raspberry Pi с TensorFlow Lite и ONNX Runtime к AI-агенту ASI Biont: Edge AI под управлением нейросети

Введение: почему 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, пишет код, который:

  1. Через paramiko подключается к Raspberry Pi.
  2. Запускает Python-скрипт /home/pi/detect.py (который уже есть на устройстве) или генерирует его на лету и передаёт по SCP.
  3. Читает stdout — результат инференса (например, JSON с bounding boxes).
  4. Если есть класс «person» с уверенностью > 0.5 — выполняет два действия:
  5. Отправляет изображение в Telegram через requests.post к https://api.telegram.org/bot<TOKEN>/sendPhoto.
  6. Отправляет команду на 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 и записывает событие в базу данных.

Как это работает:

  1. Пользователь указывает: «Подключись к MQTT-брокеру по адресу 192.168.1.50:1883, подпишись на топик factory/machine_sound, при получении значения "anomaly" отправь мне email на admin@example.com и запиши event в файл /home/pi/log.txt».
  2. AI генерирует execute_python-скрипт с paho-mqtt, который подписывается на топик и в callback проверяет payload.
  3. При аномалии — через 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 и отправляет предупреждение.

Пошаговое описание:

  1. Пользователь: «Raspberry Pi по SSH IP 192.168.1.100, логин pi, пароль raspberry. Есть скрипт /home/pi/read_temp.py — он выводит температуру. Модель /home/pi/predict_temp.onnx. Если прогноз > 70, включи GPIO 18 и отправь Telegram.»
  2. AI пишет execute_python-скрипт, который:
  3. По SSH запускает python3 /home/pi/read_temp.py и считывает температуру (например, 65.2).
  4. Создаёт JSON и по SCP отправляет на Raspberry Pi для инференса (или запускает второй скрипт).
  5. Читает результат прогноза.
  6. Если > 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.

Как начать прямо сейчас?

  1. Зайдите в дашборд ASI Biont, скачайте bridge.py (Devices → Create API Key).
  2. Запустите bridge на своём компьютере (где есть доступ к Raspberry Pi по сети).
  3. В чате напишите: «Подключись к моей Raspberry Pi по SSH (IP: ..., user: pi) и выполни инференс модели...»
  4. AI сам сгенерирует и выполнит код, а вы получите результат.

Никаких настроек, никакой ручной компиляции — только диалог с AI-агентом. Попробуйте уже сегодня на asibiont.com и убедитесь, как легко управлять Edge AI-устройствами с помощью искусственного интеллекта.

← Все статьи

Комментарии

Читайте также

6 мощных ИИ, которые построят сайт за вас в 2026 году: обзор и сравнение

30 июля 2026

Фундаментальный изъян делает LLM уязвимыми для атак: что обнаружили исследователи

30 июля 2026

From Basel to VaR: How the FRM Certification Prepares You for Financial Risk Management (Part I + Part II) – Asibiont AI Course

30 июля 2026

Vibe Coding и экономика рефакторинга: почему переписывать ИИ-код выгодно

30 июля 2026

Немецкий с ИИ: Практическая дорожная карта к успешной сдаче Goethe-Zertifikat B1 с помощью персонализированного ИИ-репетитора

30 июля 2026

USB-to-Serial (FTDI, CH340, CP2102) + AI-агент ASI Biont: интеграция COM-порта для сбора данных и управления микроконтроллерами

30 июля 2026

Платформы Low-Code / No-Code: Автоматизация обработки счетов с помощью n8n – практическое исследование

30 июля 2026

Интеграция GPS/GLONASS трекера (NMEA) с AI-агентом ASI Biont: мониторинг транспорта через COM-порт

30 июля 2026

Vibe-кодинг для бизнеса: как Prized (YC S26) позволяет не-инженерам создавать безопасные внутренние инструменты

30 июля 2026