Files
toros 12e6a453de feat: atxpi — server power & console manager (core, CLI, deploy)
- core/hardware: драйверы real (atxctl/pyserial) + mock, ATXPI_DRIVER
- core/power, console, mock: операции питания и RS232-консоли
- cli/atxpi: status/on/off/reset/cycle/console (stdlib, без deps)
- install.sh: one-shot curl|bash, идемпотентный, хост-агностичный
- deploy: systemd-юнит, шаблон env, update.sh
- README, AGENTS.md: документация и проектные решения
- AGENTS.md и доки очищены от внутренних хостов/адресов (публичный репо)
2026-09-08 21:54:11 +05:00

2.6 KiB

atxpi

Управляющая плоскость для сервера на базе Raspberry Pi: питание (ATX)

  • RS232-консоль + статус. Цель — компактный «бедняцкий IPMI».

Проект: репозиторий на внутреннем git-хостинге (ветка main). Хост в публичном репо не указываем.

Состав (в репо)

Модуль Назначение
atxctl/ питание: I2C-expander HAT (кнопки PWRBTN/RESET, статус) — существующий
lcd/ статусный OLED (52pi, luma.core) — существующий
ups/ защита от просадки батареи (INA219) — существующий
atxpi/ новый управляющий слой: web-UI + REST + консоль + MCP + CLI

Слои atxpi/

atxpi/
├── core/
│   ├── hardware.py   # абстракция + реальные драйверы (atxctl subprocess, pyserial)
│   ├── mock.py       # фейки для разработки без железа (ATXPI_DRIVER=mock)
│   ├── power.py      # высокоуровневые операции питания
│   └── console.py    # высокоуровневые операции консоли
├── cli/
│   └── atxpi         # CLI: status/on/off/reset/cycle/console
├── webui/            # (далее) FastAPI: REST + WebSocket-консоль + статика
├── mcp/              # (далее) MCP-сервер (stdio) для агентов
├── deploy/           # (далее) systemd-юниты + setup.sh
└── README.md

CLI (шаг ① — готово, без внешних зависимостей)

cd atxpi
export ATXPI_DRIVER=mock        # mock: без железа; по умолчанию real
./cli/atxpi status
./cli/atxpi on | off | reset | cycle
./cli/atxpi console --cmd "uptime" --read

Драйверы

  • ATXPI_DRIVER=real (по умолчанию): питание через atxctl/main.py, консоль через pyserial на SERIAL_PORT (по умолчанию /dev/ttyUSB0, 115200).
  • ATXPI_DRIVER=mock: фейковое питание (состояние в atxpi/tmp/) и консоль-эхо.

Жёсткие требования

  • Работает на Raspberry Pi 2B (armv7, 1 ГБ) — без node/тяжёлых БД.
  • Никаких реальных проверок питания на «живых» серверах — только стенд.