Page 1 sur 1
Script pour redémarrage auto domoticz
Publié : 04 déc. 2022, 13:30
par badaboum76
Bonjour, mon domoticz version 2021.1 installé sur un pi3b ( sur un ssd ) me fait des siennes depuis quelques temps; je n'arrive plus à y avoir accès et il semble se bloquer( 3 fois en 2 semaines ) ==> obligé de faire un sudo service domoticz.sh stop , puis start pour que ça revienne.
Donc , et étant complètement ignare sur les scripts , y a t'il un script très simple à mettre en oeuvre pour que domoticz fasse un redémarrage automatique toutes les nuits par exemple , pour ne plus avoir ce genre de pbs ?
Et pendant que l'on y est , commant faire pour accéder en extérieur depuis mon smartphone , à mon pi3 ? j'ai réussi à paramétrer la chose pour accéder à domoticz mais je sèche pour cette partie là ,et quelle appli android me recommandez vous pour ce job ?
Merci d'avance pour vos réponses et bon dimanche
Re: Script pour redémarrage auto domoticz
Publié : 04 déc. 2022, 13:48
par Keros
Il aurait été mieux de créer des sujets séparés dans les différentes sections du forum.
Pour faire un redémarrage de DomoticZ tous les jours, tu peux utiliser la crontab pour lancer la commande service domoticz.sh restart
Tu peux également regarder Monit pour redémarrer DomoticZ en automatique s'il ne répond pas.
Pour la partie prise en main à distance, cela dépend aussi ce que tu souhaites avoir : un accès au bureau ou un accès ssh (ligne de commande) serait suffisant ?
Attention à la partie sécurisation des accès.
Re: Script pour redémarrage auto domoticz
Publié : 04 déc. 2022, 14:09
par jojomul1983
Re: Script pour redémarrage auto domoticz
Publié : 04 déc. 2022, 16:59
par Chrominator
J'ai un fait script analogue, mais qui supprime en plus tous les jobs qui contiennent des appels à l'API json de Domoticz et qui utilisent les ports tcp/ip dont il aura besoin au démarrage (8080 et 443 par défaut).
En effet en cas de plantage de Domoticz, ces jobs "attendent" leur tour pour accéder et maintiennent les ports ouverts, ce qui interdit le redémarrage correct de Domoticz.
Code : Tout sélectionner
#!/bin/bash
chk_ltn_job () {
JOB=`netstat -tunlp |grep -w "8080\|443" | awk -FLISTEN '{print $2}'`
if [[ $JOB == *"domoticz"* ]]; then
echo "domoticz : no action"
LOOP=0
else
PID=`echo ${JOB} | awk -F/ '{print $1}'`
if [[ "1"$PID == "1" ]]; then
echo "No other listening process, DZ can start."
service domoticz.sh restart
LOOP=0
else
echo "kill job #"$PID
kill $PID
fi
fi
}
LOOP=1
while [[ $LOOP -eq 1 ]]
do
chk_ltn_job
done
Evidemment, à lancer par root, perso je m'en sers en tant que commande de démarrage de Domoticz dans Monit.
D'ailleurs, voici les settings Domoticz pour Monit
Code : Tout sélectionner
# Domoticz
check process domoticz with pidfile /var/run/domoticz.pid
start program = "/home/pi/bin/cnl_ltn_jobs.sh"
stop program = "/etc/init.d/domoticz.sh stop"
if failed
url http://127.0.0.1:8080/json.htm?type=command¶m=getversion with timeout 60 seconds
and content = '"status" : "OK"'
for 2 cycles then restart
if cpu usage > 90% for 3 cycles then restart
check file domoticz_log with path /var/log/domoticz.log
if match "thread seems to have ended unexpectedly" then restart
Re: Script pour redémarrage auto domoticz
Publié : 05 déc. 2022, 10:27
par pierrotori
Avant de mettre en place un reboot, il faudrait regarder dans la syslog pourquoi le service est instable ?
De mon côté Je vérifie si le statut du service domotique est up et je reboot une fois par semaine le Raspberry
Le check du service quand tout va bien est très stable. cela arrive qu'il se déclenche après un redémarrage post coupure de courant
Re: Script pour redémarrage auto domoticz
Publié : 12 déc. 2022, 18:40
par Southmind
Pourquoi ne pas installer Monit ?
https://lindevs.com/install-monit-on-raspberry-pi
J'ai eu aussi le problème dans cette version. C'était lié au redémarrage des plugins qui sortaient en timeout quand ils ne recevaient pas de data dans le temps spécifié. Bug corrigé dans la beta et maintenant dans la version 2022.2.
Re: Script pour redémarrage auto domoticz
Publié : 13 déc. 2022, 18:44
par lost
Southmind a écrit : 12 déc. 2022, 18:40
Pourquoi ne pas installer Monit ?
Je ne sais pas si je suis un cas général, mais dans le passé (< versions 2021) j'ai eu juste l'interface web plantée et le service domoticz running. Pas certain qu'un truc qui surveille au niveau service fasse alors le job.
J'avais donc fait un script appelé toutes les 30mn par un cron root:
Code : Tout sélectionner
#!/bin/bash
# Check domoticz (from a crontab) is up a restart whole PI if needed...
domoticzUrl=localhost:8080
BN=`basename $0`
WHOCOUNT=$(who | wc -l)
if [ ${WHOCOUNT} -ne 0 ]
then
logger $BN: Someone is logged on, no check.
exit 0
fi
httping -c 5 -i 0 -t 1 --ts -v -Wsqg $domoticzUrl
STATUS=$?
if [ ${STATUS} -ne 0 ]
then
logger $BN: Domoticz httping-ed KO, retry after 1mn...
sleep 1m
# Retry once
httping -c 5 -i 0 -t 1 --ts -v -Wsqg $domoticzUrl
STATUS=$?
if [ ${STATUS} -ne 0 ]
then
logger $BN: Still KO. Get last logs and try service restart then wait...
tail -n 20 /tmp/domoticz.txt | logger
service domoticz restart
sleep 1m
logger $BN: Check after service restart...
httping -c 5 -i 0 -t 1 --ts -v -Wsqg $domoticzUrl
STATUS=$?
if [ ${STATUS} -ne 0 ]
then
logger $BN: Still KO. Get last logs and REBOOT...
tail -n 20 /tmp/domoticz.txt | logger
/sbin/shutdown --no-wall -r now
STATUS=$?
else
logger $BN: Service restart OK !
fi
else
logger $BN: Retry OK !
fi
else
logger $BN: Domoticz ALIVE !
fi
wait
logger $BN: DONE, status= ${STATUS} !!!
exit ${STATUS}
Il faut au besoin installer les outils utilisés, tel httping (qui vérifie qu'un serveur http est up).
En 1er on essaie de redémarrer le service... mais là aussi, j'ai parfois eu au redémarrage des pb de bind sur les ports utilisés par le serveur http de Domoticz car un process restait vivant. Là j'ai fait moins fin qu'au dessus avec un redémarrage alors complet (après sauvegarde de la fin du log domoticz chez moi sous /tmp, perdus sur reboot, afin de pouvoir faire du debug post-mortem).
Si qqun est loggué, pas de check: Un jour j'ai crouillé un upgrade raspbian+domoticz car le script a déclenché un reboot, service domoticz volontairement arrêté, en plein dans l'upgrade raspbian... avec un PI ne redémarrant pas à la clef

Re: Script pour redémarrage auto domoticz
Publié : 13 déc. 2022, 21:58
par Keros
Il me semble que Monit permet de surveiller également la réponse de l'API http :
https://www.domoticz.com/wiki/Monitorin ... f_programs
Re: Script pour redémarrage auto domoticz
Publié : 16 déc. 2022, 07:09
par Southmind
Dans la version précédente, j'avais des crash réguliers mais aléatoires (entre 1 et 4 jours). J'ai fini par comprendre que ca se produisait lorsque des plugins étaient redémarrés (par exemple , en cas d'absence de réponse d'un device pendant un laps de temps). C'était uniquement Domoticz qui se bloquait, le RPI continuait de fonctionner. Du coup Monit fonctionnait parfaitement et relançait Domoticz. Il faut simplement ne pas oublier que si on fait un stop des services Domoticz pour une raison quelconque , Monit le relancera automatiquement au bout du temps programmé...
Re: Script pour redémarrage auto domoticz
Publié : 04 janv. 2023, 18:52
par pierrotori
De mon côté je teste le service domoticz pour redémarrer le service ou rebooter
sudo service domoticz.sh status|egrep -i '(failed)|(dead)'
et
sudo service domoticz.sh status|grep -i '(exited)'
et aussi l'interface web de domoticz car j'ai en ce moment cette erreur avec mon MQTT
pi@raspberrypi:~ $ mosquitto -v
1672854658: mosquitto version 1.5.7 starting
1672854658: Using default config.
1672854658: Opening ipv4 listen socket on port 1883.
1672854658: Error: Address already in use
curl -m 25 -s -i "
http://127.0.0.1:8080/json.htm?type=com ... getversion