add systemd services and handlers pipeline

This commit is contained in:
2026-01-30 12:20:34 +03:00
parent 056c12580d
commit dc7fd19022
22 changed files with 2875 additions and 3 deletions

14
systemd/can0-link.service Normal file
View File

@@ -0,0 +1,14 @@
[Unit]
Description=CAN0 Interface Setup (500kbps for OBD2)
After=network.target
Before=carpibord.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/ip link set can0 type can bitrate 500000
ExecStart=/sbin/ip link set can0 up
ExecStop=/sbin/ip link set can0 down
[Install]
WantedBy=multi-user.target

21
systemd/carpibord.service Normal file
View File

@@ -0,0 +1,21 @@
[Unit]
Description=Carpibord OBD2 Client with Flipper Zero
After=network-online.target can0-link.service
Wants=network-online.target
Requires=can0-link.service
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/carpibord/obd2_client
ExecStart=/usr/bin/python3 -m src.main --interface can0 --flipper /dev/serial0
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
# Переменные окружения
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target

48
systemd/install.sh Normal file
View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Скрипт установки systemd сервисов для Carpibord
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
echo "=== Установка Carpibord сервисов ==="
# Проверка root
if [ "$EUID" -ne 0 ]; then
echo "Запусти с sudo: sudo ./install.sh"
exit 1
fi
# Копируем сервисы
echo "[1/4] Копирование сервисов..."
cp "$SCRIPT_DIR/can0-link.service" /etc/systemd/system/
cp "$SCRIPT_DIR/carpibord.service" /etc/systemd/system/
# Обновляем путь к проекту в сервисе
echo "[2/4] Настройка путей..."
sed -i "s|/home/pi/carpibord|$PROJECT_DIR|g" /etc/systemd/system/carpibord.service
# Определяем пользователя (кто запустил sudo)
ACTUAL_USER="${SUDO_USER:-pi}"
sed -i "s|User=pi|User=$ACTUAL_USER|g" /etc/systemd/system/carpibord.service
# Перезагружаем systemd
echo "[3/4] Перезагрузка systemd..."
systemctl daemon-reload
# Включаем сервисы
echo "[4/4] Включение сервисов..."
systemctl enable can0-link.service
systemctl enable carpibord.service
echo ""
echo "=== Готово! ==="
echo ""
echo "Команды управления:"
echo " sudo systemctl start carpibord # Запустить (can0 поднимется автоматически)"
echo " sudo systemctl stop carpibord # Остановить"
echo " sudo systemctl status carpibord # Статус"
echo " journalctl -u carpibord -f # Логи в реальном времени"
echo ""
echo "Сервисы запустятся автоматически при следующей загрузке."

27
systemd/uninstall.sh Normal file
View File

@@ -0,0 +1,27 @@
#!/bin/bash
# Скрипт удаления systemd сервисов Carpibord
set -e
echo "=== Удаление Carpibord сервисов ==="
if [ "$EUID" -ne 0 ]; then
echo "Запусти с sudo: sudo ./uninstall.sh"
exit 1
fi
echo "[1/3] Остановка сервисов..."
systemctl stop carpibord.service 2>/dev/null || true
systemctl stop can0-link.service 2>/dev/null || true
echo "[2/3] Отключение автозапуска..."
systemctl disable carpibord.service 2>/dev/null || true
systemctl disable can0-link.service 2>/dev/null || true
echo "[3/3] Удаление файлов..."
rm -f /etc/systemd/system/carpibord.service
rm -f /etc/systemd/system/can0-link.service
systemctl daemon-reload
echo ""
echo "=== Сервисы удалены ==="