add systemd services and handlers pipeline
This commit is contained in:
14
systemd/can0-link.service
Normal file
14
systemd/can0-link.service
Normal 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
21
systemd/carpibord.service
Normal 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
48
systemd/install.sh
Normal 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
27
systemd/uninstall.sh
Normal 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 "=== Сервисы удалены ==="
|
||||
Reference in New Issue
Block a user