Введение
Banana Pi — это мощный одноплатный компьютер с открытой архитектурой, который часто используется для создания серверов, систем умного дома, медиацентров и IoT-шлюзов. Однако, несмотря на его гибкость, ручное программирование интеграций с внешними сервисами (Telegram, базы данных, облачные AI) требует времени и знаний. AI-агент ASI Biont решает эту проблему: он подключается к Banana Pi через SSH, MQTT или HTTP API, пишет код интеграции сам и управляет устройством по вашему описанию. В этой статье мы разберём, как настроить Banana Pi как IoT-шлюз с ASI Biont, используя MQTT для сбора данных с датчиков и отправки команд.
Что такое Banana Pi и зачем его подключать к AI?
Banana Pi (на базе Allwinner A20/A33/H3/H5/H6/H7/H8/H10/H616) — это аналог Raspberry Pi, но с более широкими возможностями ввода-вывода (GPIO, I2C, SPI, UART, USB, SATA, Gigabit Ethernet). Он работает под управлением Linux (Armbian, Ubuntu, Debian). Подключение к ASI Biont позволяет:
- Автоматически собирать данные с подключённых датчиков (температура, влажность, давление, движение) и отправлять их в облачную аналитику.
- Управлять реле, светодиодами, моторами по командам из Telegram.
- Создавать сложные сценарии: например, AI анализирует погоду через API и включает/выключает кондиционер.
Как ASI Biont подключается к Banana Pi?
ASI Biont поддерживает несколько способов подключения к одноплатникам. Для Banana Pi оптимальны два:
| Способ | Протокол | Когда использовать |
|---|---|---|
| SSH | paramiko (Python) | Для управления GPIO, запуска скриптов, сбора файлов |
| MQTT | paho-mqtt | Для обмена данными с датчиками и исполнительными устройствами в реальном времени |
Почему MQTT? Banana Pi часто работает как MQTT-брокер (Mosquitto) или MQTT-клиент. AI подключается к тому же брокеру, подписывается на топики датчиков и публикует команды управления. Это даёт асинхронную, надёжную связь без необходимости держать SSH-сессию постоянно.
Конкретный сценарий: мониторинг температуры и управление вентилятором через Telegram
Задача
У вас есть Banana Pi с подключённым датчиком DS18B20 (температура) и реле для включения вентилятора. Нужно:
- Читать температуру каждые 10 секунд.
- Если температура превышает 30°C — включать вентилятор.
- Отправлять уведомление в Telegram при превышении порога.
Что делает AI-агент?
Вы пишете в чат ASI Biont:
«Подключись к моему Banana Pi по SSH (IP: 192.168.1.100, логин: pi, пароль: mypass). На Banana Pi установлен Mosquitto MQTT-брокер на порту 1883. Создай Python-скрипт, который читает температуру с датчика DS18B20 (файл /sys/bus/w1/devices/28-*/w1_slave), публикует её в MQTT-топик sensors/temperature, подписывается на топик commands/fan. При получении команды "on" включает реле через GPIO, при "off" — выключает. Также отправляй уведомление в Telegram через мой бот (токен: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11, chat_id: 987654321), если температура > 30°C.»
AI генерирует код на Python с использованием библиотек paho-mqtt, RPi.GPIO (или gpiozero) и requests для Telegram. Скрипт загружается на Banana Pi через SCP (встроено в execute_python с paramiko) и запускается.
Примерный код (сгенерированный AI)
import paho.mqtt.client as mqtt
import RPi.GPIO as GPIO
import time
import requests
# Конфигурация
MQTT_BROKER = "localhost"
FAN_PIN = 18
TELEGRAM_TOKEN = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
CHAT_ID = "987654321"
def read_temp():
with open("/sys/bus/w1/devices/28-00000xxxxx/w1_slave", "r") as f:
lines = f.readlines()
if "YES" in lines[0]:
pos = lines[1].find("t=")
temp = float(lines[1][pos+2:]) / 1000.0
return temp
return None
def on_message(client, userdata, msg):
command = msg.payload.decode()
if command == "on":
GPIO.output(FAN_PIN, GPIO.HIGH)
client.publish("status/fan", "on")
elif command == "off":
GPIO.output(FAN_PIN, GPIO.LOW)
client.publish("status/fan", "off")
GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN_PIN, GPIO.OUT)
client = mqtt.Client()
client.on_message = on_message
client.connect(MQTT_BROKER, 1883, 60)
client.subscribe("commands/fan")
client.loop_start()
try:
while True:
temp = read_temp()
if temp is not None:
client.publish("sensors/temperature", f"{temp:.2f}")
if temp > 30:
requests.post(f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": f"Температура {temp:.2f}°C! Включаю вентилятор."})
GPIO.output(FAN_PIN, GPIO.HIGH)
time.sleep(10)
except KeyboardInterrupt:
GPIO.cleanup()
client.loop_stop()
Как пользователь это делает?
- Убедитесь, что на Banana Pi установлен Mosquitto (
sudo apt install mosquitto mosquitto-clients). - Подключите датчик DS18B20 к GPIO4 (пин 7) и реле к GPIO18 (пин 12).
- В чате ASI Biont опишите задачу (как в примере выше).
- AI сгенерирует код, загрузит его на Banana Pi через SCP и запустит.
- Готово! Вы получаете уведомления в Telegram и можете управлять вентилятором, публикуя
on/offв MQTT-топикcommands/fan.
Почему это выгодно?
- Экономия времени: написание такого скрипта вручную занимает от 30 минут до нескольких часов. AI делает это за 10-20 секунд.
- Гибкость: вы можете менять логику простым текстом — «добавь логгирование в CSV», «отправляй данные в InfluxDB».
- Никаких панелей: подключение происходит через диалог в чате, не нужно искать кнопки «добавить устройство».
Заключение
Banana Pi и ASI Biont — идеальная пара для быстрого прототипирования и автоматизации. AI-агент берёт на себя всю рутину: написание кода, подключение к MQTT/SSH, работу с GPIO и Telegram. Попробуйте сами — опишите свою задачу в чате на asibiont.com и получите готовую интеграцию за секунды.
Комментарии