Files
modborno3/SYSTEMD_INSTALL.md

3.6 KiB

Instalacja i konfiguracja systemd service

Pliki

  • read-energy.service - jednostka serwisu, która uruchamia program modborno3
  • read-energy.timer - timer uruchamiający service co 10 sekund

Instalacja

1. Skopiuj pliki do systemd

sudo cp read-energy.service /etc/systemd/system/
sudo cp read-energy.timer /etc/systemd/system/

2. Przeładuj konfigurację systemd

sudo systemctl daemon-reload

3. Włącz timer (autostart)

sudo systemctl enable read-energy.timer

4. Uruchom timer

sudo systemctl start read-energy.timer

Zarządzanie

Sprawdzenie statusu

# Status timera
sudo systemctl status read-energy.timer

# Status serwisu
sudo systemctl status read-energy.service

# Lista aktywnych timerów
systemctl list-timers --all | grep read-energy

Zatrzymanie

# Zatrzymaj timer (przestanie uruchamiać odczyty)
sudo systemctl stop read-energy.timer

# Wyłącz autostart
sudo systemctl disable read-energy.timer

Ponowne uruchomienie

sudo systemctl restart read-energy.timer

Logi

# Pokaż logi z ostatniego odczytu
sudo journalctl -u read-energy.service -n 50

# Logi w czasie rzeczywistym
sudo journalctl -u read-energy.service -f

# Logi z ostatniej godziny
sudo journalctl -u read-energy.service --since "1 hour ago"

# Logi z dzisiaj
sudo journalctl -u read-energy.service --since today

Testowanie

# Ręczne uruchomienie (test)
sudo systemctl start read-energy.service

# Sprawdź czy działa
sudo systemctl status read-energy.service

# Zobacz logi
sudo journalctl -u read-energy.service -n 100 --no-pager

Modyfikacja interwału

Aby zmienić interwał z 10s na inny:

  1. Edytuj plik /etc/systemd/system/read-energy.timer
  2. Zmień wartość OnUnitActiveSec=10s (np. OnUnitActiveSec=30s dla 30 sekund)
  3. Przeładuj i zrestartuj:
sudo systemctl daemon-reload
sudo systemctl restart read-energy.timer

Debugowanie

Sprawdź czy timer jest aktywny

systemctl is-active read-energy.timer
systemctl is-enabled read-energy.timer

Sprawdź kiedy następny odczyt

systemctl list-timers read-energy.timer

Sprawdź błędy

sudo journalctl -u read-energy.service -p err -n 50

Test połączenia Modbus

# Ręcznie uruchom program
cd /home/ms/projekty/python3/modebus/ornoserial3
./modborno3

Wymagania

  • Program modborno3 musi być skompilowany i dostępny w: /home/ms/projekty/python3/modebus/ornoserial3/modborno3
  • Użytkownik ms musi być w grupie dialout
  • Serwer MQTT musi być dostępny (10.1.1.1:1883)
  • Port /dev/ttyUSB0 musi być dostępny

Sprawdź uprawnienia

# Sprawdź czy użytkownik jest w grupie dialout
groups ms

# Jeśli nie, dodaj:
sudo usermod -a -G dialout ms

# Wyloguj i zaloguj się ponownie

Konfiguracja

Aby zmienić parametry (port, adresy Modbus, MQTT), edytuj plik: /home/ms/projekty/python3/modebus/ornoserial3/modb_orno3.c

Sekcja konfiguracji znajduje się w liniach 11-42 (#define).

Po zmianie:

cd /home/ms/projekty/python3/modebus/ornoserial3
bash cc-modb_orno3.sh
sudo systemctl restart read-energy.timer

Monitorowanie w czasie rzeczywistym

# Terminal 1: logi
sudo journalctl -u read-energy.service -f

# Terminal 2: status
watch -n 2 'systemctl status read-energy.timer && echo && systemctl list-timers read-energy.timer'

Usunięcie

sudo systemctl stop read-energy.timer
sudo systemctl disable read-energy.timer
sudo rm /etc/systemd/system/read-energy.service
sudo rm /etc/systemd/system/read-energy.timer
sudo systemctl daemon-reload