190 lines
3.6 KiB
Markdown
190 lines
3.6 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
sudo cp read-energy.service /etc/systemd/system/
|
|
sudo cp read-energy.timer /etc/systemd/system/
|
|
```
|
|
|
|
### 2. Przeładuj konfigurację systemd
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
```
|
|
|
|
### 3. Włącz timer (autostart)
|
|
|
|
```bash
|
|
sudo systemctl enable read-energy.timer
|
|
```
|
|
|
|
### 4. Uruchom timer
|
|
|
|
```bash
|
|
sudo systemctl start read-energy.timer
|
|
```
|
|
|
|
## Zarządzanie
|
|
|
|
### Sprawdzenie statusu
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Zatrzymaj timer (przestanie uruchamiać odczyty)
|
|
sudo systemctl stop read-energy.timer
|
|
|
|
# Wyłącz autostart
|
|
sudo systemctl disable read-energy.timer
|
|
```
|
|
|
|
### Ponowne uruchomienie
|
|
|
|
```bash
|
|
sudo systemctl restart read-energy.timer
|
|
```
|
|
|
|
### Logi
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl restart read-energy.timer
|
|
```
|
|
|
|
## Debugowanie
|
|
|
|
### Sprawdź czy timer jest aktywny
|
|
|
|
```bash
|
|
systemctl is-active read-energy.timer
|
|
systemctl is-enabled read-energy.timer
|
|
```
|
|
|
|
### Sprawdź kiedy następny odczyt
|
|
|
|
```bash
|
|
systemctl list-timers read-energy.timer
|
|
```
|
|
|
|
### Sprawdź błędy
|
|
|
|
```bash
|
|
sudo journalctl -u read-energy.service -p err -n 50
|
|
```
|
|
|
|
### Test połączenia Modbus
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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:
|
|
```bash
|
|
cd /home/ms/projekty/python3/modebus/ornoserial3
|
|
bash cc-modb_orno3.sh
|
|
sudo systemctl restart read-energy.timer
|
|
```
|
|
|
|
## Monitorowanie w czasie rzeczywistym
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
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
|
|
```
|