Files
watch-watch-server/README.md

59 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Серійний релеювальник Heartbeat
Цей репозиторій містить невеликий Pythonскрипт, який слухає серійний порт,
шукає JSONheartbeat повідомлення та відповідає `{"hb": 2}` на `{"hb": 1}`.
Його можна запускати як звичайну програму або як сервіс systemd із підтримкою
watchdog.
## Вимоги
- Python 3.10+
- `pyserial`
- `sdnotify` (необов’язково, але потрібен для інтеграції з systemd)
Встановіть залежності в оточення:
```bash
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
```
## Ручний запуск
```bash
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 і увімкніть сервіс:
```bash
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трафік у серійному каналі.