nmakel/solaredge_meterproxy

Starting script as a service

Closed this issue · 2 comments

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.

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

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