Серійний релеювальник Heartbeat

Цей репозиторій містить невеликий Pythonскрипт, який слухає серійний порт, шукає JSONheartbeat повідомлення та відповідає {"hb": 2} на {"hb": 1}. Його можна запускати як звичайну програму або як сервіс systemd із підтримкою watchdog.

Вимоги

  • Python 3.10+
  • pyserial
  • sdnotify (необов’язково, але потрібен для інтеграції з systemd)

Встановіть залежності в оточення:

python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt

Ручний запуск

python3 serial_heartbeat.py --port /dev/ttyUSB0 --baudrate 115200 --log-level DEBUG

Аргументи:

  • --port (обов’язково): шлях до серійного пристрою (наприклад, /dev/ttyUSB0).
  • --baudrate: за замовчуванням 9600.
  • --log-level: будь-який рівень logging, типово INFO.

Сервіс systemd

  1. Скопіюйте serial-heartbeat.service в /etc/systemd/system/serial-heartbeat.service.
  2. Відкоригуйте шляхи, швидкість та пристрій за потреби.
  3. Перезавантажте systemd і увімкніть сервіс:
sudo systemctl daemon-reload
sudo systemctl enable --now serial-heartbeat

Сервіс використовує Type=notify, тож systemd очікує сигнал готовності і контролює watchdog з таймаутом 20 секунд.

Heartbeat behaviour

  • На {"hb": 1} або {"cmd": "status"} в?дпов?дає {"hb": 2, "VPN": <0|1>, "APP": <0|1>}.
  • VPN = 1, якщо ?нтерфейс tun0 ?снує ? (operstate = up / carrier = 1 / unknown, але ?нтерфейс присутн?), ?накше 0.
  • APP = 1, якщо systemctl is-active --quiet watcher_application.service повертає усп?х, ?накше 0.
  • Увесь вх?дний JSON журналюється на р?вн? INFO для видимост?.

Розробка

  • python3 -m py_compile serial_heartbeat.py — швидка перевірка синтаксису.
  • Увімкніть рівень журналювання DEBUG, щоб переглядати JSONтрафік у серійному каналі.
Description
No description provided
Readme 38 KiB
Languages
Python 100%