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 :

Code : Tout sélectionner

Error: Error accessing automatic backup directories
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 :mrgreen:

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 ??