nmakel / solaredge_meterproxy

Modbus proxy for SolarEdge inverters and unsupported kWh meters
MIT License
29 stars 20 forks source link

Starting script as a service #25

Closed elngejw closed 1 year ago

elngejw commented 1 year ago

Hi all,

I have an issue with starting this script semp-rtu.py as a service. See below steps I have taken.

Anybody knows what step(s) are missing?

openhabian@rpizero:~ $ cd /lib/systemd/system/ openhabian@rpizero:/lib/systemd/system $ sudo nano solaredge_meterproxy.service

**[Unit] Description=solaredge_meterproxy After=multi-user.target

[Service] Type=simple ExecStart=/usr/bin/python3 /home/openhabian/shared/solaredge_meterproxy/semp-rtu.py Restart=on-abort

[Install] WantedBy=multi-user.target**

openhabian@rpizero:/lib/systemd/system $ sudo chmod 644 /lib/systemd/system/solaredge_meterproxy.service openhabian@rpizero:/lib/systemd/system $ chmod +x /home/openhabian/shared/solaredge_meterproxy/semp-rtu.py openhabian@rpizero:/lib/systemd/system $ sudo nano solaredge_meterproxy.service openhabian@rpizero:/lib/systemd/system $ sudo systemctl daemon-reload openhabian@rpizero:/lib/systemd/system $ sudo systemctl enable solaredge_meterproxy.service

chmod +x /home/openhabian/shared/solaredge_meterproxy/.

When starting the service the log gives the error below

sudo journalctl -f -u solaredge_meterproxy.service

Nov 18 15:53:10 rpizero systemd[1]: Started solaredge_meterproxy. Nov 18 15:53:15 rpizero python3[31057]: Traceback (most recent call last): Nov 18 15:53:15 rpizero python3[31057]: File "/home/openhabian/shared/solaredge_meterproxy/semp-rtu.py", line 153, in Nov 18 15:53:15 rpizero python3[31057]: address = confparser[meter].getint("dst_address", fallback=default_config["meters"]["dst_address"]) Nov 18 15:53:15 rpizero python3[31057]: File "/usr/lib/python3.9/configparser.py", line 960, in getitem Nov 18 15:53:15 rpizero python3[31057]: raise KeyError(key) Nov 18 15:53:15 rpizero python3[31057]: KeyError: '' Nov 18 15:53:15 rpizero systemd[1]: solaredge_meterproxy.service: Main process exited, code=exited, status=1/FAILURE Nov 18 15:53:15 rpizero systemd[1]: solaredge_meterproxy.service: Failed with result 'exit-code'. Nov 18 15:53:15 rpizero systemd[1]: solaredge_meterproxy.service: Consumed 2.287s CPU time.

elngejw commented 1 year ago

Ok, found out that when changing the next line (#104 in semp-rtu.py) with full path this error is solved

argparser.add_argument("-c", "--config", type=str, default="/home/openhabian/shared/solaredge_meterproxy/semp-rtu.conf")

But in some way running the script as a service, the serial port is not accessable

2022-11-18 17:57:36 INFO: Starting <Thread(t_update_2, started 3035092032)> 2022-11-18 17:57:36 DEBUG: Using selector: EpollSelector 2022-11-18 17:57:36 DEBUG: Exception while create - name 'create_serial_connection' is not defined

also following is generating same error sudo python3 /home/openhabian/shared/solaredge_meterproxy/semp-rtu.py

without sudo is working fine python3 /home/openhabian/shared/solaredge_meterproxy/semp-rtu.py

elngejw commented 1 year ago

Found another solution by using crontab...and this is working :D

@reboot sleep 30 && /home/openhabian/shared/solaredge_meterproxy/semp-rtu.py

I added a delay to be sure that reboot is finished before starting the script