Page 1 sur 3
Redémarage automatique de Domoticz
Publié : 02 mars 2023, 20:16
par Limousin19
Bonjour,
Je viens de réinstaller Domoticz sur un Rasberry Pi avec la dernière version Raspian light et je suis confronté au problème du redémarrage automatique de Domoticz après coupure du secteur.
Pourriez-vous m'indiquer un script fiable avec les indications pour l'installer svp ?
Re: Redémarage automatique de Domoticz
Publié : 02 mars 2023, 20:26
par Keros
Tu peux expliquer un peu plus le problème que tu rencontres ?
Re: Redémarage automatique de Domoticz
Publié : 03 mars 2023, 01:30
par Limousin19
Les coupures de courant étant fréquentes chez moi, je cherche un script fiable pour relancer Domoticz, car le programme va gérer mon chauffage. J'ai finalement trouvé deux scripts sur cette page :
https://www.dekloo.net/arduino-raspberr ... oticz/2530.
- Je ne vois pas où il faut télécharger le premier script qui s'appelle "auto_reboot_domoticz.sh".
- Le deuxième script est peut-être mieux, mais il faut modifier le fichier domoticz, et comme un des commentateurs le dit : "
ce n’est pas un fichier domoticz que j’ai dans /etc/init.d/, mais un fichier domoticz.sh".
Donc je suis dans le brouillard et je cherche toujours un script qui correspondrait à ma configuration. Je précise que je ne connais ni Raspian, ni les variantes de Domoticz...
Re: Redémarage automatique de Domoticz
Publié : 03 mars 2023, 08:25
par Chrominator
Redémarrer ton domoticz ne devrait pas te soucier autant que ces coupures de courant ;
Les systèmes à base d’Unix n'aiment pas ces interruptions.
Tu risques de te retrouver avec un système de fichier non montable et là ça ne démarrera plus du tout jusqu'à ce que tu corriges ce système de fichier sur un autre ordinateur Unix.
Cherche un
onduleur en parallèle de ce script si ces coupures sont fréquentes.
Pour redémarrer, je te conseille monit, fiable et peu gourmand.
Il y a une discussion à ce sujet
ici.
Re: Redémarage automatique de Domoticz
Publié : 03 mars 2023, 15:51
par Neutrino
Je valide ce duo de mon côté depuis plusieurs années.
Onduleur + monit et plus de problème

Re: Redémarage automatique de Domoticz
Publié : 03 mars 2023, 20:07
par Limousin19
Merci beaucoup pour ces réponses.
- J'ai effectivement un onduleur pour mon PC et mon NAS, je vais également y connecter le Rasberry, suite à vos sages conseils.
- J'ai installé
monit sans problème.
Ensuite je vois qu'il y a pas mal de paramètres à renseigner dans
monitrc. Il me semble aussi qu'il faut ajouter ce code indiqué sur la page officielle pour lancer Domoticz.
- Mais à quel endroit du script l'ajoute-t-on ? A la fin tout simplement ?
Code : Tout sélectionner
check process domoticz with pidfile /var/run/domoticz.pid
start program = "/usr/bin/sudo /bin/systemctl start domoticz.service"
stop program = "/usr/bin/sudo /bin/systemctl stop domoticz.service"
# use below start/stop command for older systems not using systemctl
# start program = "/etc/init.d/domoticz.sh start"
# stop program = "/etc/init.d/domoticz.sh stop"
if failed
url http://127.0.0.1:8080/json.htm?type=command¶m=getversion
and content = '"status" : "OK"'
for 2 cycles
then restart
if 5 restarts within 5 cycles then exec "/sbin/reboot"
Re: Redémarage automatique de Domoticz
Publié : 03 mars 2023, 20:19
par Chrominator
Oui, à la fin de monitrc ça va marcher.
Perso je fais pas comme ça.
Je mets les configs dont j'ai potentiellement besoin dans le répertoire monit/conf-available et je crée un lien dans le répertoire monit/conf-enabled vers la config que je veux utiliser.
Ça paraît sûrement compliqué en le lisant mais c'est pratique, si je ne veux plus utiliser une config je supprime le lien mais la config est toujours présente dans monit/conf-available.
Re: Redémarage automatique de Domoticz
Publié : 04 mars 2023, 02:06
par Limousin19
D'accord, merci. Je vois l'idée en gros mais je ne suis pas sûr de comprendre toute la mise en oeuvre :
Je mets les configs dont j'ai potentiellement besoin dans le répertoire monit/conf-available
Ce que tu appelles "les configs", dans mon cas, ce serait un fichier texte avec un nom quelconque où je colle le bout de script ?
je crée un lien dans le répertoire monit/conf-enabled vers la config que je veux utiliser.
Concrètement, ce lien est un fichier vide dont le nom est celui de la config précédé de "@" ?
Par exemple, je crée un fichier
domoticz_autoboot avec le script dans monit/conf-available,
puis je crée un autre fichier vide
@domoticz_autoboot dans monit/conf-enabled.
OK ?
Il n'y aurait pas de commande pour initialiser tout ça au final ? Monit regarde systématiquement les fichiers de conf-enabled ?
Re: Redémarage automatique de Domoticz
Publié : 04 mars 2023, 07:04
par Chrominator
Limousin19 a écrit : 04 mars 2023, 02:06
Ce que tu appelles "les configs", dans mon cas, ce serait un fichier texte avec un nom quelconque où je colle le bout de script ?
En effet, c'est bien cela.
je crée un lien dans le répertoire monit/conf-enabled vers la config que je veux utiliser.
Concrètement, ce lien est un fichier vide dont le nom est celui de la config précédé de "@" ?
Non c'est l'outil que j'utilise qui montre que c'est un lien en mettant un "@" en initiale.
Par exemple, je crée un fichier domoticz_autoboot avec le script dans monit/conf-available,
puis je crée un autre fichier vide @domoticz_autoboot dans monit/conf-enabled.
OK ?
Pas un fichier vide mais un lien.
Ca se crée en étant dans le répertoire monit/conf-enabled et en tapant ensuite
Code : Tout sélectionner
ln -s ../monit/conf-available/domoticz_autoboot domoticz_autoboot
Monit regarde systématiquement les fichiers de conf-enabled ?
En effet, normalement tu vas trouver ce qui suit dans le fichier monit/monitrc.
Ca lui indique de prendre en compte les config qui figurent dans les répertoires désignés après le mot-clé
include.
Code : Tout sélectionner
###############################################################################
## Includes
###############################################################################
##
## It is possible to include additional configuration parts from other files or
## directories.
#
include /etc/monit/conf.d/*
include /etc/monit/conf-enabled/*
Mais encore une fois, tu peux te contenter d'ajouter le texte dans le fichier monit/monitrc, ça fonctionne aussi.
Re: Redémarage automatique de Domoticz
Publié : 04 mars 2023, 09:44
par pierrotori
à l'époque j'avais ce script dans le crontab, quand il y a une coupure de courant le rpi redémarre et le service domoticz est en statut exited. j'avais ajouté aussi le check du serveur apache suite à la montée de version
Code : Tout sélectionner
#!/bin/bash
# Script check service de domoticz et qui relance si off ou crash
now=$(date) # récupération de la date et heure pour les logs
applog=$(date +%d" "%b" "%X)" "$(hostname)" ("$(whoami)"): "
appmsg=$(date +%d" "%b" "%X)":"
debug=N # Y/N mode debug
res=1 # si >0 erreur
f_dry_run=N # on simule la commande
path_log=/home/pi/exploit/log
cd $path_log
#Récupération du retour de la commande de status
# Active: active (failed)
domoticz=$(sudo service domoticz.sh status|egrep -i '(failed)|(dead)')
if [ $? == 0 ] # Si le service arrete
then
if [ ! -f "failed.txt" ]
then
touch failed.txt
relance=$(sudo service domoticz.sh start) # On le lance
echo "$applog relance service" >> /home/pi/exploit/log/exp_domoticz.log
res=1
else
if [ ! -f stopped.txt ]
then
touch stopped.txt
curl -s "https://platform.clickatell.com/messages/http/send?apiKey=xx==&to=+33&content=Reboot_serveur_domotique"
echo "$applog reboot" >> /home/pi/exploit/log/exp_domoticz.log
res=2 # ne sert pas car reboot
relance=$(sudo reboot) #On reboot
else
res=3
fi
fi
else
#Récupération erreur cas coupure de courant ou crash database
# Active: active (exited)
domoticz=$(sudo service domoticz.sh status|grep -i '(exited)')
if [ $? == 0 ] # Si le service est stoppped
then
if [ ! -f "exited.txt" ]
then
touch exited.txt
curl -s "https://platform.clickatell.com/messages/http/send?apiKey=xx==&to=+33&content=Reboot_serveur_domotique-1"
echo "$applog reboot(1)" >> /home/pi/exploit/log/exp_domoticz.log
res=1 # ne sert pas car reboot
relance=$(sudo reboot) #On reboot
else
if [ ! -f stopped.txt ]
then
touch stopped.txt
curl -s "https://platform.clickatell.com/messages/http/send?apiKey=xx==&to=+33&content=Reboot_serveur_domotique-2"
echo "$applog reboot(2)" >> /home/pi/exploit/log/exp_domoticz.log
res=2 # ne sert pas car reboot
relance=$(sudo reboot) #On reboot
else
res=3
fi
fi
else
res=0
fi
fi
# check service apache up
# Active 0
domoticz=$(curl -m 25 -s -i "http://127.0.0.1:8080/json.htm?type=command¶m=getversion")
if [ $? != 0 ] #
then
if [ ! -f "apache.txt" ]
then
touch apache.txt
curl -s "https://platform.clickatell.com/messages/http/send?apiKey=xx==&to=+33&content=Reboot_serveur_domotique-3"
echo "$applog reboot(3)" >> /home/pi/exploit/log/exp_domoticz.log
res=4 # ne sert pas car reboot
relance=$(sudo reboot) #On reboot
else
res=3
fi
fi
if [ $res == 0 ]
then
if [ $debug == Y ]
then
echo "$applog Domoticz est démarré" #On log l'état normal
fi
if [ -f failed.txt ]
then
curl -s "https://platform.clickatell.com/messages/http/send?apiKey=xxx==&to=+33&content=Redemarrage_service_domotique"
rm failed.txt
fi
if [ -f exited.txt ]
then
rm exited.txt
if [ $f_dry_run == Y ]
then
echo "$applog EXITED on allume la prise wifi" >> /home/pi/exploit/log/exp_domoticz.log
else
echo "$applog EXITED on allume la prise wifi" >> /home/pi/exploit/log/exp_domoticz.log
curl -s 'http://127.0.0.1:8080/json.htm?type=command¶m=switchlight&idx=8&switchcmd=On'
sleep 2 # Waits 2 seconds
fi
fi
if [ -f stopped.txt ]
then
rm stopped.txt
if [ $f_dry_run == Y ]
then
echo "$applog STOPPED on allume la prise wifi" >> /home/pi/exploit/log/exp_domoticz.log
else
echo "$applog STOPPED on allume la prise wifi" >> /home/pi/exploit/log/exp_domoticz.log
curl -s 'http://127.0.0.1:8080/json.htm?type=command¶m=switchlight&idx=8&switchcmd=On'
sleep 2 # Waits 2 seconds
fi
fi
if [ -f apache.txt ]
then
rm apache.txt
if [ $f_dry_run == Y ]
then
echo "$applog APACHE down" >> /home/pi/exploit/log/exp_domoticz.log
else
echo "$applog APACHE down" >> /home/pi/exploit/log/exp_domoticz.log
fi
fi
fi
if [ $res == 3 ]
then
if [ $debug == Y ]
then
echo "$applog Domoticz problème service ou database" #On log l'état normal
fi
fi
if [ $res == 4 ]
then
if [ $debug == Y ]
then
echo "$applog Domoticz problème service apache" #On log l'état normal
fi
fi
exit 0