3.6 KiB
3.6 KiB
Instalacja i konfiguracja systemd service
Pliki
read-energy.service- jednostka serwisu, która uruchamia program modborno3read-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:
- Edytuj plik
/etc/systemd/system/read-energy.timer - Zmień wartość
OnUnitActiveSec=10s(np.OnUnitActiveSec=30sdla 30 sekund) - 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
modborno3musi być skompilowany i dostępny w:/home/ms/projekty/python3/modebus/ornoserial3/modborno3 - Użytkownik
msmusi być w grupiedialout - Serwer MQTT musi być dostępny (10.1.1.1:1883)
- Port
/dev/ttyUSB0musi 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