Это страница микроволновки с экраном в хакспейсе Xecut, присылайте пулл реквесты ;)
  • HTML 55.2%
  • Python 37%
  • JavaScript 3.1%
  • Shell 2.6%
  • CSS 1.8%
  • Other 0.3%
Find a file
enovikov11@yandex.ru a6bcfcefa2 bot wip
2026-02-08 18:39:10 +01:00
ai-bot-wip bot wip 2026-02-08 18:39:10 +01:00
docs документация 2026-01-25 13:24:05 +01:00
harddver old harddver stuff moved 2026-01-25 13:13:08 +01:00
keyboard MacCyrillic support 2026-02-02 12:01:42 +01:00
linux kiosk linux info 2026-02-08 00:33:24 +01:00
wave-v1 plugins docs 2026-02-08 18:04:48 +01:00
wave-v2 wave v1 and v2 2026-02-08 00:21:17 +01:00
.gitignore vertical design 2025-06-08 20:56:58 +02:00
README.md helper functions & doc 2026-02-08 01:30:43 +01:00

HardWave - микроволновка-экран


Арт-объект хакспейса Xecut — экран в корпусе микроволновки, отображающий медиа из Telegram-чата в реальном времени.

Отображает фото, видео и GIF, присланные в xexecut_chat. Кнопки на панели микроволновки работают как USB-клавиатура, а 4-разрядный дисплей показывает текст.

История

Этот девайс раньше был ноутбуком, но у него умерла клавиатура после чистки. Тогда он стал харддверью (harddver — от слов hardware и дверь) и висел на двери в спейс.

Потом у харддвери умер аккумулятор — она стала вырубаться от щелчка замком и переехала на стеллаж. Затем умерла подсветка экрана — тот был заменён. Теперь снова в строю во фрейме от микроволновки.

Харддверь — самый часто перерождавшийся в хакспейсе артефакт.

Архитектура

Работает максимально просто: Alpine Linux в RAM + Chromium в режиме киоска + статическая HTML-страница.

Никакого бэкенда — браузер напрямую long-poll'ит Telegram Bot API и отображает медиа. SSD на устройстве барахлит, поэтому система работает в эфемерном режиме (всё в RAM, диск почти не трогается).

Текущая версия в продакшене: wave-v1

hardwave/
├── wave-v1/           # Веб-страница (текущая версия в продакшене)
├── wave-v2/           # Новая версия (в разработке)
├── keyboard/          # Прошивка микроконтроллера (CircuitPython)
├── linux/             # Системные конфиги Alpine Linux
├── harddver/          # [АРХИВ] Старая версия на Python/Selenium
└── docs/              # Фото проекта

wave-v1/ — Веб-страница (текущая версия)

Standalone HTML, который напрямую работает с Telegram Bot API. Отображает фото, видео, GIF и видеозаметки. По умолчанию растягивает изображения на весь экран.

Параметры URL:

Параметр Обязателен Описание
api_key Да Токен Telegram-бота
chat_id Да ID чата для фильтрации
admin_ids Да ID администраторов через запятую (могут использовать /killswitch)
respect_aspect_ratio Нет Сохранять пропорции (по умолчанию растягивает)
require_username Нет Показывать медиа только от пользователей с username

Возможности:

  • Отображение фото, GIF, видео и видеозаметок
  • Имя и username отправителя в левом верхнем углу
  • Автовоспроизведение видео (без звука, зацикленное)
  • Игнорирование медиа со спойлерами
  • Нажатие Enter переключает режим сохранения пропорций
  • WebHID интеграция с клавиатурой (синхронизация времени, команда /display <текст>)
  • Команда /killswitch для остановки бота

Deploy: https://hardwave.tgr.rs/

wave-v2/ — Новая версия (в разработке)

Следующая версия системы.

Блокеры:

  • Ловит реконнекты (нестабильное соединение)
  • Проблемы с WebHID интеграцией

keyboard/ — USB-клавиатура

Прошивка на CircuitPython для микроконтроллера, превращающая панель управления микроволновки в USB HID-устройство.

Маппинг кнопок:

Кнопка Клавиша
COOK C
DEFROST D
REHEAT R
START Enter
STOP Esc
PLUS/MINUS Numpad +/-

4-разрядный дисплей принимает текст по кастомному HID-интерфейсу.

Подробнее: keyboard/README.md

linux/ — Системные конфиги

Конфигурация Alpine Linux для режима киоска:

  • Эфемерный режим (работа в RAM)
  • Автологин пользователя kiosk
  • Автозапуск X11 + Chromium

Железо

Компьютер Бывший 16.5" ноутбук (материнка + экран)
ОС Alpine Linux (эфемерный режим)
Микроконтроллер nRF52840-based (CircuitPython)
Корпус Панель от микроволновки

Энергопотребление: idle 8.5-9W, под нагрузкой 15-18W

Ссылки

Фото



Архив: harddver/

Старая версия системы на Python + Selenium. Не используется — оставлена для истории.

Включала Telegram-бота с командами /display, /screenshot, /deploy и управление Chromium через Selenium. Сейчас всё это не нужно, т.к. браузер сам справляется.

Подробнее: harddver/README.md