deploy examples
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
# 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` (прописаны в юните).
|
||||
Reference in New Issue
Block a user