E-Ink Waveshare + ASI Biont: умный дашборд своими словами — AI сам пишет код интеграции

E-Ink Waveshare — это не просто «дорогая закладка». Это дисплеи на электронных чернилах, которые потребляют энергию только при обновлении экрана. Именно поэтому они идеальны для дашбордов: показатели разработки, метрики сервиса, статус CI/CD, расписание дежурств. Но у каждого такого дисплея есть свой интерфейс (SPI, HDMI, GPIO) и свой SDK. Раньше написание интеграции занимало часы, а поддержка — вечность. С AI-агентом ASI Biont всё иначе: вы описываете задачу в чате, а агент сам пишет код, деплоит его на целевое устройство и поддерживает в актуальном состоянии.

В этой статье разберу реальный сценарий: E-Ink Waveshare 7.5\" на Raspberry Pi показывает метрики CI/CD. Вы увидите, как ASI Biont подключается к дисплею через SSH, генерирует Python-скрипт для обновления картинки и автоматизирует весь процесс. Заодно поговорим о других способах подключения и о том, почему AI-агент делает интеграцию за секунды, а не за дни.

Что такое E-Ink Waveshare и зачем его подключать к AI-агенту

Waveshare выпускает линейку E-Ink дисплеев разных диагоналей: от 1.54\" до 7.5\" и даже 9.7\". Они поддерживают работу через SPI, а для Raspberry Pi есть готовые HAT-платы, которые устанавливаются прямо на GPIO. Разрешение 7.5\" — 800×480, что достаточно для компактного дашборда. Главная фишка E-Ink — нулевое потребление при статичной картинке: дисплей не тратит энергию на поддержание изображения, только на его смену.

Но чтобы дисплей показывал актуальные данные, нужно написать скрипт, который:
- получает данные из источника (API, БД, MQTT);
- формирует изображение (текст, графики, таблицы);
- отправляет команды дисплею через библиотеку производителя.

Обычно это отдельный микросервис с кучей кода. ASI Biont умеет генерировать такой код на лету и запускать его на нужном хосте. Агент может работать с E-Ink через:
- SSH (paramiko) — если дисплей подключён к Raspberry Pi или другому Linux-устройству;
- MQTT (paho-mqtt) — если дисплеем управляет микроконтроллер (ESP32, Arduino), который подписан на топик;
- HTTP API (aiohttp) — если у дисплея есть локальный веб-интерфейс;
- последовательный порт (pyserial) — при прямом подключении к COM-порту через Hardware Bridge.

В моём примере используется SSH: это самый простой и надёжный способ для Raspberry Pi.

Как ASI Biont подключается к E-Ink через execute_python

Ключевая особенность ASI Biont — универсальная функция execute_python. Она выполняет код на Python в песочнице на стороне агента, и именно через неё происходит вся интеграция. Вы не ищете в документации «поддержку E-Ink» — она не нужна. Агент сам генерирует скрипт под ваше устройство, используя существующие библиотеки.

Последовательность подключения:

  1. Пользователь пишет в чат ASI Biont: «У меня на Raspberry Pi по адресу 192.168.1.100 висит E-Ink Waveshare 7.5\". Подключи его и покажи статус нашего CI/CD».
  2. AI-агент спрашивает параметры: SSH-логин, пароль или ключ, путь к библиотеке Waveshare, URL GitLab CI (если это нужно).
  3. Агент формирует Python-скрипт с помощью paramiko и subprocess, который подключится к Pi, установит зависимости и запустит обновление дисплея.
  4. Скрипт отправляется на выполнение через execute_python, и агент получает результат.

Всё — дисплей обновлён. При этом агент сохраняет контекст: в следующий раз он просто спросит «Обновить данные?» или сделает это по расписанию.

Пример кода: обновляем E-Ink с метриками CI/CD

Допустим, у вас есть Raspberry Pi с установленным Waveshare e-Paper HAT. На Pi крутится локальный сервер, который отдаёт метрики в JSON (например, загрузка CPU, RAM и статус последнего билда). Задача ASI Biont — раз в 5 минут забирать эти метрики и рисовать их на дисплее.

Вот как выглядит код, который генерирует и выполняет ASI Biont:

import paramiko
import textwrap

# Данные для SSH (агент запрашивает у пользователя или берёт из .env)
ssh_host = \"192.168.1.100\"
ssh_user = \"pi\"
ssh_password = \"raspberry\"  # в реальности — через SSH-ключ

client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ssh_host, username=ssh_user, password=ssh_password)

# Скрипт, который выполнится на Raspberry Pi
script = \'\'\'
import sys
sys.path.insert(0, \"/home/pi/e-Paper/RaspberryPi_JetsonNano/python\")
from lib.waveshare_epd import epd7in5_V2
from PIL import Image, ImageDraw, ImageFont
import requests
import json

epd = epd7in5_V2.EPD()
epd.init()
epd.Clear()

# Получаем данные с локального API
try:
    r = requests.get(\"http://localhost:8000/metrics\", timeout=5)
    data = r.json()
except Exception as e:
    data = {\"cpu\": \"N/A\", \"ram\": \"N/A\", \"build\": \"N/A\", \"error\": str(e)}

# Формируем строки для дашборда
lines = [
    \"🚀 CI/CD Status\",
    f\"CPU: {data.get('cpu', 'N/A')}%\",
    f\"RAM: {data.get('ram', 'N/A')}%\",
    f\"Last build: {data.get('build', 'N/A')}\",
]

if \"error\" in data:
    lines.append(f\"ERROR: {data['error']}\")

image = Image.new('1', (epd.width, epd.height), 255)  # 1-bit, white
draw = ImageDraw.Draw(image)
font = ImageFont.truetype(\"/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf\", 28)

y = 20
for line in lines:
    draw.text((20, y), line, font=font, fill=0)
    y += 50

epd.display(epd.getbuffer(image))
epd.sleep()
\'\'\'

# Выполняем скрипт на Pi
stdin, stdout, stderr = client.exec_command(f\"python3 -c {textwrap.dedent(script)}\")
exit_code = stdout.channel.recv_exit_status()
print(\"STDOUT:\", stdout.read().decode())
print(\"STDERR:\", stderr.read().decode())
client.close()

Важно: библиотека Waveshare для Python (waveshare-epd) доступна на GitHub и встроена в их официальный wiki. Для работы ей требуются пакеты Pillow и spidev. Код выше предполагает, что библиотека уже установлена на Pi; если нет — ASI Biont добавит в скрипт pip install.

Сам код написан самим AI-агентом: вы не пишете его руками, а просто описываете задачу. Это и есть суть интеграции с ASI Biont.

Другие варианты подключения E-Ink

Не у всех есть Raspberry Pi. Если вы используете ESP32 с E-Ink модулем Waveshare, то логично использовать MQTT. ASI Biont с помощью paho-mqtt публикует сообщение в топик, а прошивка на ESP32 (написанная один раз) подписывается на него и выводит текст на экран.

import paho.mqtt.client as mqtt

# Публикуем данные в топик, который слушает ESP32
client = mqtt.Client()
client.connect(\"192.168.1.50\", 1883)
client.publish(\"eink/dashboard\", \"CPU: 42% | Build: PASS\")
client.disconnect()

Код для ESP32 предоставляется Waveshare в виде примеров для Arduino или MicroPython. ASI Biont не заменяет прошивку — он лишь отправляет данные. Поэтому такой вариант быстрее внедрить, если прошивка уже готова.

Почему «execute_python» — это убийца SDK

Мы привыкли, что для каждого устройства нужно ждать официальный SDK или плагин. ASI Biont решает эту проблему радикально: агент подключается к любому устройству через execute_python. Не нужно ждать, пока разработчики добавят поддержку — подключайте что угодно прямо сейчас. Просто опишите в чате, к какому устройству подключиться и какие параметры указать (порт, IP, baud rate, API-ключ). AI сам пишет код на Python с использованием pyserial, paramiko, paho-mqtt, pymodbus, aiohttp или opcua-asyncio.

Всё подключение происходит через диалог в чате. Никаких панелей управления, кнопок «Добавить устройство» и сложных настроек. Это особенно полезно для прототипирования: вчера вы делали дашборд на E-Ink, сегодня — собираете данные с Modbus-контроллера, завтра — отправляете команды на робота через CAN bus. Один агент, сотни устройств.

Подводные камни при работе с E-Ink и как ASI Biont их обходит

  • Обновление E-Ink занимает 2-5 секунд. Не стоит вызывать epd.display() чаще, чем раз в минуту. ASI Biont умеет планировать задачи через cron, поэтому можно настроить обновление раз в 5 минут.
  • Сон дисплея. После обновления нужно вызвать epd.sleep(), иначе дисплей будет потреблять лишний ток. В примере выше это уже учтено.
  • Таймаут execute_python — 30 секунд. Если скрипт работает дольше, агент прервёт его. Поэтому не запускайте бесконечные циклы (while True) в коде. Вместо этого используйте планировщик или запустите фоновый процесс через SSH.
  • Права доступа. Для работы с GPIO на Raspberry Pi нужны права sudo. ASI Biont спросит пароль или предложит настроить sudo без пароля. Это нормальная практика для IoT-устройств.

Что дальше?

Возможности ограничены только вашей фантазией. E-Ink Waveshare — это лишь один из примеров. Подключите погодную станцию, статус серверов, курс валют или расписание встреч — ASI Biont сделает это за вас. Хотите попробовать? Переходите на asibiont.com и начинайте интеграцию прямо в чате. Никаких SDK и недель разработки — только описание задачи и результат.

← Все статьи

Комментарии