demarrage domoticz à la mise sous tension

Photographie ultra-rapide, pilotage d'imprimante 3D ou de CNC, fabrication de bière.... Enfin tout ce que le Raspberry peut gérer trouvera sa place dans cette rubrique

Modérateur : Francois

piper
Raspinaute
Messages : 641
Enregistré le : sam. 5 juin 2021 18:57

Re: demarrage domoticz à la mise sous tension

Message par piper » sam. 27 août 2022 01:49

Bonjour,
En regardant domoticz.sh sur internet (je ne connais pas domoticz)
Je vois que c'est un script de démarrage par daemon :
C'est incompatible avec systemctl

domoticz.sh lance le script correspondant à SCRIPTNAME
Il faut ouvrir domoticz.sh pour voir à quoi cela correspond
Mais apparement ce serait /etc/init.d/domoticz (pas de SH)

A vérifier. et il faut donc remplacer ça dans le fichier de service (ligne ExecStart=) : remplacer /etc/init.d/domoticz.sh par ce à quoi correspond SCRIPTNAME dans /etc/init.d/domoticz.sh

Après que sudo /etc/init.d/docmoticz.sh start ne fonctionne pas ?
Je n'ai pas demandé à modifier ce script.

A oui au fait, l'erreur "path is not absolute" c'est parce que dans ExecStart, on doit met un nom de fichier qui existe suivit éventuellement d'arguments
Hors sudo n'est pas un fichier
Ex :
ExecStart=sudo /home/blablabla ===========>>>> ne fonctionnera jamais
ExecStart=/home/blablabla ===========>>>> fonctionnera pourvu que le user qui lance le service a les droits qui va bien d'où la variable User= qu'on peut renseigner dans le fichier de service (Ex User=root si ça doit démarrer avec les droits de root... comme tu mets sudo c'est que ce doit être le cas)
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

dou_dou_69
Messages : 53
Enregistré le : sam. 23 juil. 2022 11:36

Re: demarrage domoticz à la mise sous tension

Message par dou_dou_69 » dim. 28 août 2022 12:09

* voici mon fichier /etc/init.d/domoticz.sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DESC="Domoticz Home Automation System"
NAME=domoticz
USERNAME=linaro
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

DAEMON=/home/$USERNAME/domoticz/$NAME
DAEMON_ARGS="-daemon"
#DAEMON_ARGS="$DAEMON_ARGS -daemonname $NAME -pidfile $PIDFILE"
DAEMON_ARGS="$DAEMON_ARGS -www 8080"
DAEMON_ARGS="$DAEMON_ARGS -sslwww 443"
DAEMON_ARGS="$DAEMON_ARGS -log /tmp/domoticz.txt"
#DAEMON_ARGS="$DAEMON_ARGS -syslog"

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

pidof_domoticz() {
# if there is actually a domoticz process whose pid is in PIDFILE,
# print it and return 0.
if [ -e "$PIDFILE" ]; then
if pidof domoticz | tr ' ' '\n' | grep -w $(cat $PIDFILE); then
return 0
fi
fi
return 1
}

#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --chuid $USERNAME --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
}

#
# Function that stops the daemon/service
#
do_stop()
{
# Return
# 0 if daemon has been stopped
# 1 if daemon was already stopped
# 2 if daemon could not be stopped
# other if a failure occurred
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
# Wait for children to finish too if this is a daemon that forks
# and if the daemon is only ever run from this initscript.
# If the above conditions are not satisfied then add some other code
# that waits for the process to drop all resources that could be
# needed by services started subsequently. A last resort is to
# sleep for some time.
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}

case "$1" in
start)
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
reload)
log_daemon_msg "Reloading $DESC" "$NAME"
PID=$(pidof_domoticz) || true
if [ "${PID}" ]; then
kill -HUP $PID
log_end_msg 0
else
log_end_msg 1
fi
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
case "$?" in
0|1)
do_start
case "$?" in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart|reload}" >&2
exit 3
;;
esac

:

* le fichier /etc/init.d/domoticz (pas de SH) n'existe pas

* quand tu parles de fichier service, de quel fichier parles-tu?

* quand tu dis
Après que sudo /etc/init.d/docmoticz.sh start ne fonctionne pas ?
Je n'ai pas demandé à modifier ce script.
je ne comprends pas.

* linaro@linaro-alip:~$ sudo service domoticz.sh start
Failed to start domoticz.service: Unit domoticz.service is not loaded properly: Invalid argument.
See system logs and 'systemctl status domoticz.service' for details.

* j'ai essayé ExecStart=/home/linaro/domoticz/domoticz mais même résultat

piper
Raspinaute
Messages : 641
Enregistré le : sam. 5 juin 2021 18:57

Re: demarrage domoticz à la mise sous tension

Message par piper » dim. 28 août 2022 22:34

Ceci doit exister :
DAEMON=/home/$USERNAME/domoticz/$NAME
Rappel :
NAME=domoticz
USERNAME=linaro

Et être l'exe de domiticz.

Le fichier service est domiticz.service
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

dou_dou_69
Messages : 53
Enregistré le : sam. 23 juil. 2022 11:36

Re: demarrage domoticz à la mise sous tension

Message par dou_dou_69 » mer. 31 août 2022 20:42

la ligne DAEMON=/home/$USERNAME/domoticz/$NAME est présente dans le fichier /etc/init.d/domoticz.sh
le fichier /etc/init.d/domoticz existe aussi
mais le fichier /etc/init.d/domoticz.service n'est pas présent dans ce dossier je n'ai qu'un domoticz.sh dans /etc/init.d mais est présent dans le fichier /lib/systemd/system/domoticz.service
j'ai recopié le fichier /lib/systemd/system/domoticz.service dans /etc/init.d/domoticz.service
mais j'ai beau faire ctrl+O overwrite yes ca n'inscrit rien malgré avoir lancé nano avec sudo

pour lancer domoticz je dois lancer cd domoticz puis ./domoticz
ce qui doit correspondre au fichier /home/linaro/domoticz/domoticz donc est cohérent avec la ligne DEAMON du fichier domoticz.sh

après on/off
linaro@linaro-alip:~$ sudo /etc/init.d/domoticz.sh status ● domoticz.service
Loaded: loaded (/lib/systemd/system/domoticz.service; bad; vendor preset: ena bled)
Active: inactive (dead)

Nov 03 17:16:59 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Aug 31 18:31:36 linaro-alip systemd[1]: [/lib/systemd/system/domoticz.servic…ng.
Hint: Some lines were ellipsized, use -l to show in full.

piper
Raspinaute
Messages : 641
Enregistré le : sam. 5 juin 2021 18:57

Re: demarrage domoticz à la mise sous tension

Message par piper » jeu. 1 sept. 2022 23:32

systemd n'est pas fait pour s'intéresser pas à ce qui se trouve dans /etc/init.d/ c'est SYSV qui s'en charge.
systemd Il n'est pas fait pour lancer un daemon de service mais pour gérer son propre demon qui lancera un exécutable en tâche de fond et va le surveiller.
Hors domoticz.sh est un daemon de service, donc ce n'est pas lui qui doit être lancé par systemd
Le fichier service décrit le service (quel exécutable à lancer ? à quel moment ? etc...)
Ce fichier doit impérativement existé et c'est lui dont je suggérais la création.

Quand on fait un ls d'un dossier sans préciser le chemin complet, on obtient une information partielle ex :

Code : Tout sélectionner

ls /var/toto/tata/titi.txt 
/var/toto/tata/titi.txt 
(notes le 1er caractère du chemin qui est /) Ca veut dire que /var/toto/tata/titi.txt existe : je connais le chemin complet

Code : Tout sélectionner

ls tata/titi.txt 
tata/titi.txt 
(notes que le 1er caractère n'est pas /)
Ca veut juste dire que dans le dossier en cours (que je ne connais pas) , se trouve un sous-dossier tata, lequel contient titi.txt

Donc en fait, je ne sais pas du tout dans quelle état est la configuration.
MAis je n'aurais pas mis le fichier service dans /etc/init.d
A chaque modif du fichier service, il faut faire sudo systemctl reload-daemon pour que la modification soit prise en compte au prochain sudo systemctl start nomduservice

Et lorsque nano refuse de sauvegarder un fichier, il précise pourquoi, quel est le message ?
Ex : le message est clair :
[ Erreur lors de l'écriture de toto.txt : Permission non accordée ]
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

dou_dou_69
Messages : 53
Enregistré le : sam. 23 juil. 2022 11:36

Re: demarrage domoticz à la mise sous tension

Message par dou_dou_69 » sam. 3 sept. 2022 18:09

je suis perdu

vu que domoticz fonctionne avec un daemon systemctl n'est d'aucune utilité c'est ca?
donc il faut intervenir dans /etc/init.d

pour lancer domoticz je dois être dans le répertoire /home/linaro/domoticz et taper ./domoticz
ls /etc/init.d
me donne
domoticz.service et domoticz.sh
entre autre

serait il possible de me dire quoi faire pour essayer de résoudre mon problème?

piper
Raspinaute
Messages : 641
Enregistré le : sam. 5 juin 2021 18:57

Re: demarrage domoticz à la mise sous tension

Message par piper » sam. 3 sept. 2022 23:44

Ton problème est que domoticz plante lors de la 1ère mise à l'heure (lorsque l'heure initiale du raspberry n'est pas la bonne)
systemd permettrait de ne démarrer domoticz qu'après que le raspi se soit mis à l'heure.

Pour utilise systemd, d'après ce que tu viens de dire, il faut mettre dans le fichier service comme programme a démarrer :
/home/linaro/domoticz/domoticz
(vérifies avant que /home/linaro/domoticz/domoticz existe et est exécutable)

ET SURTOUT PAS ton domoticz.sh start

Sinon, n'utilises pas systemd mais avec l'ancien système, je ne sais pas comment faire pour que au boot, domoticz ne se lance qu'après la mise à l'heure du système par internet.
Donc ça va planter comme au début.
Remarques bien que je ne comprends pas qu'un tel bug existe sur domoticz : en tant que développeur, on s'assure qu'un service puisse être en cours d'exécution sans planter pendant que l'utilisateur met l l'heure du système à jour quitte à être temporairement en mode dégradé le temps de revenir sur ses pattes.
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32

dou_dou_69
Messages : 53
Enregistré le : sam. 23 juil. 2022 11:36

Re: demarrage domoticz à la mise sous tension

Message par dou_dou_69 » mar. 6 sept. 2022 20:26

à l’installation de domoticz il me semble que ça mise en route fonctionnait bien j'ai du faire quelque chose de mauvais.

je verrais quand j'en prendrais le temps si une réinstallation propre résout le soucis

Répondre

Retourner vers « Les applications spécialisées du Raspberry Pi »