54 lines
2.3 KiB
Markdown
54 lines
2.3 KiB
Markdown
# systemd-службы сетевого моста
|
|
|
|
Автозапуск `tools/bridge.py` как служб: `cart-bridge-tx` (отправитель, рядом с
|
|
пультом) и `cart-bridge-rx` (приёмник, рядом с тележкой). На каждой машине
|
|
включается ровно одна роль.
|
|
|
|
## Установка
|
|
|
|
На машине-отправителе:
|
|
|
|
```sh
|
|
sudo ./install-bridge.sh tx
|
|
```
|
|
|
|
На машине-приёмнике:
|
|
|
|
```sh
|
|
sudo ./install-bridge.sh rx
|
|
```
|
|
|
|
Установщик подставляет в юнит реальные пути (python из `.venv` проекта, если
|
|
есть, иначе системный `python3`; `bridge.py`; рабочий каталог) и пользователя
|
|
(того, кто вызвал `sudo`). Юниты кладутся в `/etc/systemd/system/`, конфиги —
|
|
в `/etc/cart-bridge/{tx,rx}.env` (создаются из примеров, существующие не
|
|
перезаписываются). Без аргумента (`none`) — только установка, без включения.
|
|
|
|
Интерпретатор можно задать явно: `sudo PYTHON=/usr/bin/python3 ./install-bridge.sh rx`.
|
|
В выбранном python должен быть `pyserial`.
|
|
|
|
## Настройка
|
|
|
|
Отредактировать конфиг под свою сеть и ключ:
|
|
|
|
```sh
|
|
sudoedit /etc/cart-bridge/tx.env # peer = адрес приёмника, общий ключ
|
|
sudoedit /etc/cart-bridge/rx.env # bind, тот же ключ
|
|
sudo systemctl restart cart-bridge-tx # применить
|
|
```
|
|
|
|
Ключ `CART_BRIDGE_KEY` на обеих сторонах должен совпадать (HMAC-аутентификация
|
|
пакетов; обязателен для интернета).
|
|
|
|
## Эксплуатация
|
|
|
|
```sh
|
|
systemctl status cart-bridge-tx
|
|
journalctl -u cart-bridge-tx -f # логи; на отправителе видно «приёмник отвечает/НЕ отвечает»
|
|
sudo systemctl restart cart-bridge-tx
|
|
sudo systemctl disable --now cart-bridge-tx
|
|
```
|
|
|
|
Служба перезапускается при падении (`Restart=always`). Доступ к USB-порту STM
|
|
даётся группами `dialout`/`plugdev` (прописаны в юните).
|