Page 1 sur 2
Lancer une action suite à une erreur.
Publié : 03 mars 2017, 17:09
par pigloox
Bonjour,
Petite question, savez vous si il est possible actuellement de lancer un script suivant une erreur remontée par Domoticz.
En fait je voudrais lancer un script par rapport à cette erreur :
Peu importe la méthodesi ça marche.
Merci de votre aide
Re: Lancer une action suite à une erreur.
Publié : 03 mars 2017, 20:02
par Chrominator
Tu ne dis pas d'où vient cette erreur (script perso ou Domoticz lui-même), mais dans ce dernier cas si ça concerne la sauvegarde automatique faite dans /home/pi/domoticz/backups/, je me préoccuperais d'abord à ta place de savoir pourquoi j'ai le message (carte sd pleine, système de fichiers corrompu, carte défaillante...).
Programmer quelque-chose sur une base aussi peu stable ne sert à rien.
Si c'est un script perso, tu auras certainement le loisir d'intercepter le code retour de la fonction qui provoque le message.
Si c'est Domoticz qui envoie le message, ne reste pas dans cet état trop longtemps et trouve la cause avant qu'il ne soit trop tard.
Re: Lancer une action suite à une erreur.
Publié : 03 mars 2017, 20:58
par pigloox
En fait je sais d'ou provient cette erreur :
Mon système est sur un raspberry et je fait la sauvegarde de ma base de donnée sur un disque réseau car pour moi faire une sauvegarde sur le même support ça peut être risqué.
Domoticz enregistre lui même cette sauvegarde sur le disque en reseau car le dossier backup est créé en "lien symbolique".
Ca fonctionne bien sauf dans le cas d'un redémarrage du raspberry, à mon avis, la partie réseau n'étant pas opérationnelle lors du montage des volumes, le montage du disque réseau est zappé, du coup domoticz ne peux plus faire sa sauvegarde d'où l'erreur.
Afin de palier à ça, je voulais déclencher un "mount" si cette erreur était présente.
J'espère m'être fait comprendre
Re: Lancer une action suite à une erreur.
Publié : 07 mars 2017, 10:35
par vil1driver
Salut,
j'utilise ceci pour relancer mosquitto quand domoticz ne parvient plus à s'y connecter.
tu peux probablement t'en inspirer
script_time_mqttRestart.lua
Code : Tout sélectionner
--[[
domoticz/scripts/lua/script_time_mqttRestart.lua
chaque minute,
parcours les 3 dernières minutes de logs et relance mosquitto si down
--]]
-- chargement des modules
dofile('/home/pi/domoticz/scripts/lua/modules.lua')
local debug = true -- true pour voir les logs dans la console log Dz ou false pour ne pas les voir
local msg = "broker allready started"
for n, line in ipairs(lastLogEntry()) do
if string.match(line['message'], "MQTT: Subscribed") then
msg = "broker allready started"
break
elseif string.match(line['message'], "MQTT: Failed to start") then
msg = "broker down > restarting"
os.execute('su - vil1driver -c "/usr/sbin/mosquitto -c /etc/mosquitto/conf.d/monitor.conf -d" &')
break
end
end
log(msg,debug)
commandArray = {}
return commandArray
nécessite la création d'un fichier modules.lua dans votre dossier lua (voir ma signature)
résultat
2017-03-10 09:51:00.394 (rfxcom) Lighting 2 (radiateur douche)
2017-03-10 09:51:04.014 Error: MQTT: Failed to start
2017-03-10 09:51:23.489 (rfxcom) Lighting 2 (radiateur douche)
2017-03-10 09:51:26.092 Hardware Monitor: Fetching data (System sensors)
2017-03-10 09:51:46.287 User: Admin initiated a switch command (488/led_2/Off)
2017-03-10 09:51:46.233 (Zwave) Light/Switch (mv bureau)
2017-03-10 09:51:46.352 EventSystem: Script event triggered: /home/vil1driver/domoticz/scripts/lua/script_device_sendTwice.lua
2017-03-10 09:51:46.296 (rfxcom) Lighting 1 (led_2)
2017-03-10 09:51:46.402 (rfxcom) Temp (salon)
2017-03-10 09:51:47.353 (rfxcom) Lighting 1 (led_2)
2017-03-10 09:51:56.115 Hardware Monitor: Fetching data (System sensors)
2017-03-10 09:51:57.475 (Zwave) Light/Switch (mv bureau)
2017-03-10 09:52:00.462 EventSystem: Script event triggered: /home/vil1driver/domoticz/scripts/lua/script_time_chauffageDouche_PID.lua
2017-03-10 09:52:00.521 LUA: broker down > restarting
2017-03-10 09:52:00.476 (rfxcom) Lighting 2 (radiateur douche)
2017-03-10 09:52:22.618 (rfxcom) Lighting 2 (radiateur douche)
2017-03-10 09:52:26.145 Hardware Monitor: Fetching data (System sensors)
2017-03-10 09:52:26.483 MQTT: Connecting to 192.168.22.100:1883
2017-03-10 09:52:26.584 MQTT: re-connected to: 192.168.22.100:1883
2017-03-10 09:52:26.684 MQTT: Subscribed
2017-03-10 09:52:36.229 (rfxcom) Temp + Humidity (salle de bain)
2017-03-10 09:52:55.825 (rfxcom) Temp + Humidity (chambre)
2017-03-10 09:52:56.171 Hardware Monitor: Fetching data (System sensors)
2017-03-10 09:53:00.073 EventSystem: Script event triggered: /home/vil1driver/domoticz/scripts/lua/script_time_chauffageDouche_PID.lua
2017-03-10 09:53:00.168 LUA: broker allready started
2017-03-10 09:53:00.077 (rfxcom) Lighting 2 (radiateur douche)
enjoy

Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 20:41
par sphinxou
bonsoir
à quoi sert le break ??
merci
Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 20:58
par vil1driver
Sert à lui dire, pas la peine de lire les lignes suivantes, celle que tu cherches est trouvée
Sortir prématurément de la boucle for
Léger gain de temps
Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 21:01
par sphinxou
merci
pour toi ceci est bon :
Code : Tout sélectionner
local msg = "detection d'erreur d'envoie de SMS"
for n, line in ipairs(lastLogEntry()) do
if string.match(line['message'], "Error opening url: 192.168.1.2:1200/SMS&GRP=PATJUL&MSG=la%20porte%20d'entrer%20est%20ouverte") then
smsput('ADMIN',"error")
break
end
end
log(msg,debug)
commandArray = {}
return commandArray
Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 21:08
par vil1driver
Par exemple oui..
Mais tu est le mieux placé pour valider son bon fonctionnement
Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 21:09
par sphinxou
je rajoute oui
merci pour ton aide
Re: Lancer une action suite à une erreur.
Publié : 23 janv. 2018, 21:24
par sphinxou
par contre comment tu fait pour les 3 dernières minute ??