EZL70 systemd

Discussioni relative al software per il monitoraggio fotovoltaico 123SOLAR
Avatar utente
Flane
Messaggi: 2470
Iscritto il: 16/01/2016, 15:02

Re: EZL70 systemd

Messaggioda Flane » 27/04/2018, 8:53

Controlla nel log di sistema che errore ti dà all'avvio del servizio, oppure prova ad avviare a mano il servizio e vedi l'errore.
Questo potrebbe aiutare a capire quale è il problema.


Avatar utente
Flane
Messaggi: 2470
Iscritto il: 16/01/2016, 15:02

Re: EZL70 systemd

Messaggioda Flane » 29/04/2018, 18:29

Credo di aver capito quale potrebbe essere il problema.
Nel service è necessario anche specificare l'interprete di python.

La corretta riga di avvio del service dovrebbe essere:

Codice: Seleziona tutto

ExecStart=/usr/bin/python /var/www/MyScripts/EZL.sh


A me con un'altro script python, il service scritto in questo modo funziona.

caripit
Messaggi: 9
Iscritto il: 21/04/2018, 23:02

Re: EZL70 systemd

Messaggioda caripit » 30/04/2018, 19:35

apr 30 19:29:16 raspberry systemd[1]: Starting 123Solar...
apr 30 19:29:17 raspberry python[1408]: File "/usr/bin/EZL", line 3
apr 30 19:29:17 raspberry python[1408]: while true; do socat pty,link=/dev/ttyEZL0,raw,echo=0,waitslave tcp
apr 30 19:29:17 raspberry python[1408]: ^
apr 30 19:29:17 raspberry python[1408]: SyntaxError: invalid syntax
apr 30 19:29:17 raspberry systemd[1]: 123solar.service: Main process exited, code=exited, status=1/FAILURE
apr 30 19:29:17 raspberry systemd[1]: Failed to start 123Solar.
apr 30 19:29:17 raspberry systemd[1]: 123solar.service: Unit entered failed state.
apr 30 19:29:17 raspberry systemd[1]: 123solar.service: Failed with result 'exit-code'.


Nemmeno a dirlo se lancio manualmente EZL tutto funziona ancora

Codice: Seleziona tutto

[Unit]
Description=123Solar
Requires=network.target
After=network.target apache2.service php-fpm.service

[Service]
Type=oneshot

ExecStart=/usr/bin/python /usr/bin/EZL
ExecStart=/bin/sleep 10
ExecStart=/usr/bin/curl http://localhost/123solar/scripts/boot123s.php

[Install]
WantedBy=default.target

Avatar utente
Flane
Messaggi: 2470
Iscritto il: 16/01/2016, 15:02

Re: EZL70 systemd

Messaggioda Flane » 02/05/2018, 8:47

Come vedi ti segnala un errore di sintassi in questa riga dello script EZL:

Codice: Seleziona tutto

while true; do socat pty,link=/dev/ttyEZL0,raw,echo=0,waitslave tcp:192.168.x.x:1470; done &

A me aveva dato problemi eseguire dei servizi con la & finale nei comandi
Un servizio e demone, viene già eseguito in background e pertanto credo che mettere la & finale crei dei problemi.

caripit
Messaggi: 9
Iscritto il: 21/04/2018, 23:02

Re: EZL70 systemd

Messaggioda caripit » 02/05/2018, 9:14

Già tolta anche la & ma stesso risultato.

Alla fine ho risolto... aggirando l' ostaolo. Ho messo come nelle vecchie versione in rc.local, ed abilitato tramite systemd... e tutto funziona

Avatar utente
Flane
Messaggi: 2470
Iscritto il: 16/01/2016, 15:02

Re: EZL70 systemd

Messaggioda Flane » 02/05/2018, 9:58

OK.
Tanto per avere delle info complete puoi riportare nel dettaglio come hai fatto ed i contenuti corretti degli script in modo che resti traccia per chi volesse fare la stessa cosa?
Grazie ;)

caripit
Messaggi: 9
Iscritto il: 21/04/2018, 23:02

Re: EZL70 systemd

Messaggioda caripit » 02/05/2018, 11:07

Certamente, allora ho seguito la guida fino a creare rc.local in /etc . Poi ho abilitato il lancio dell'rc.local tramite systemd

Codice: Seleziona tutto

systemctl unmask systemd-rc.local



se può esser utile stasera posto anche il contenuto di rc.local

Anonimo
Messaggi: 2
Iscritto il: 01/05/2018, 6:49

Re: EZL70 systemd

Messaggioda Anonimo » 09/05/2018, 18:07

Salve sono possessore di una interfaccia rs485 ethernet CSEH55N2 della Sollae Systems
La mia confgigurazione è questa:
il file rc.local è il seguente:

Codice: Seleziona tutto

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
sudo /var/www/MyScripts/EZL.sh
exit 0


Ho poi creato il service, sudo nano /etc/systemd/system/rc-local.service con il seguente codice:

Codice: Seleziona tutto

[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99

[Install]
WantedBy=multi-user.target


Il file poi deve essere eseguibile dando il seguente comando:

Codice: Seleziona tutto

sudo chmod +x /etc/rc.local


Infine ho attivato il service con il seguente comando:

Codice: Seleziona tutto

sudo systemctl enable rc-local


Rivviare il raspberry

Per controllare lo stato digitare il seguente comando :

Codice: Seleziona tutto

sudo systemctl status rc-local.service


Questo è tutto, spero possa essere di aiuto.

Avatar utente
Flane
Messaggi: 2470
Iscritto il: 16/01/2016, 15:02

Re: EZL70 systemd

Messaggioda Flane » 21/05/2018, 9:08

A me il service funziona. :D

Questo è il contenuto del file EZL.sh come di seguito (contiene anche le istruzioni d'uso):

Codice: Seleziona tutto

#!/bin/bash
# Utilizzo di convertitore RS485-LAN tipo EZL70 o altri in sostituzione del convertitore RS485-USB
#
# /var/www/MyScripts/EZL.sh
#
# Prerequisti:
# - installare socat con:
#      apt-get update
#      apt-get install socat
#
# Creare il symlink con:
# ln -s /var/www/MyScripts/EZL.sh /usr/bin/EZL
#
# Per abilitare il servizio:
# sudo systemctl enable EZL.service
# reboot
#
# Per disabilitare il servizio:
# sudo systemctl disable EZL.service
# reboot
#
# Il servizio crea la porta ttyEZL0 da utilizzare in MeterN o/e 123Solar
#
# Impostare nella riga seguente l'indirizzo IP e la porta del proprio adattatore
while true; do socat pty,link=/dev/ttyEZL0,raw,echo=0,waitslave tcp:192.168.1.99:1470; done
exit

Permessi e proprietario del file EZL.sh sono 755 e pi-pi
Ovviamente va modificato l'indirizzo IP 192.168.1.99 con l'IP del vostro adattatore LAN-RS485

Questo è il contenuto del file /etc/systemd/system/EZL.service:

Codice: Seleziona tutto

[Unit]
Description=EZL
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/bin/EZL

[Install]
WantedBy=multi-user.target

Permessi e proprietario del file EZL.service sono 644 e root-root

Nella nuova immagine SolarStretch che stò per pubblicare ho già inserito anche questo servizio. ;)

caripit
Messaggi: 9
Iscritto il: 21/04/2018, 23:02

Re: EZL70 systemd

Messaggioda caripit » 21/05/2018, 19:27

Idolooooooooooo


Torna a “123Solar”

Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti