Page 1 sur 2

forcer un script timer pour reset

Publié : 10 oct. 2021, 14:50
par pierrotori
Bonjour
Suite à une restauration de la base domoticz dans la journée quel est le moyen le plus simple pour forcer un script timer qui est censé s'exécuter à 00H05 et de le déclencher via l'interface ?
Pierrotori

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 17:19
par denis_brasseur
S'agissant d'un script time, il ne peux pas être déclencher par un devicechanged, donc difficile directement depuis l'interface.
Et si tu changeais tout simplement l'heure d'exécution ?
Tu peux aussi modifier ton script en type device, l'associer à un device type push on button, bouton pour lequel tu paramètres le planning pour qu'il change d'état à 00h05.
N'oublie pas de paramétrer ton bouton avec un Délai d'extinction à 1 seconde afin qu'il revienne à Off après un changement d'état.
Tu n'as plus, dans ton script, qu'a remplacer ton

Code : Tout sélectionner

 if time.hour==0 and time.min==5 then
par

Code : Tout sélectionner

if devicechanged['mon_bouton'] then
Un peu lourd pour un simple test, mais cela te permet d'exécuter ton script quand tu le souhaites, en plus du paramétrage de l'heure d'exécution via la fonction planning du device.

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 20:25
par Keros
Je viens de déplacer ton sujet dans la section script.

Je suis aussi d'avis pour la proposition de Denis d'utiliser le planning d'un device pour gérer l'exécution du script.

Sinon, tu peux aussi jouer sur le fait que le script est exécuter toutes les minutes pour prendre en compte le passage d'un widget à On et le remettre à Off :

Code : Tout sélectionner

if time.hour==0 and time.min==5 and otherdevices['Bouton'] = "On" then
 
 if otherdevices['Bouton'] == "On" then commandArray['Bouton']='Off' end
 
 La suite du script...
 
 end
 
Tu as par contre une prise en compte de ton appui sur le bouton à la prochaine minute.


Dernière possibilité, regarder le DzVent qui permet de gérer les multiple déclencheurs.

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 21:17
par pierrotori
Je viens de penser si je declenche un httpresponses qui serait gere par le script qui doit faire le reset

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 21:23
par Keros
Le httpresponses me fait penser à du DzVents. C'est ce langage-là que tu utilises ou du LUA ?

Si tes scripts sont en DzVents, je pense qu'effectivement qu'un httpresponses pourrait être déclenché dans plusieurs scripts en même temps.

forcer un script timer pour reset

Publié : 10 oct. 2021, 21:37
par pierrotori
je suis en full dzvents
je créé une device reset rattaché à un script qui fera un
domoticz.openURL({
url = URLGetReset,
method = 'GET',
callback = 'RetourReset',
})
RetourReset qui sera géré par le script qui calcul la total (jour de la semaine,jour férié , vacances .....) ca devrait être réalisable et synchronisable sachant que ce script tourne une fois par jour à 00H05 pour mettre à jour le calendrier et le planning

je ne sais pas si c'est la meilleur solution, mais pas facile de forcer un script timer qui s'execute une fois par jour, et de relancer sans le dupliquer ou d'aller modifier son timer

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 21:43
par Keros
Tu as encore plus simple sans faire appel à une url :

Code : Tout sélectionner

customEvents = { 'RetourReset', },
Et pour le lancer :

Code : Tout sélectionner

domoticz.emitEvent('RetourReset')

Re: forcer un script timer pour reset

Publié : 10 oct. 2021, 23:10
par pierrotori
merci en effet , je vais etudier ca
https://www.domoticz.com/forum/viewtopic.php?t=31330

Re: forcer un script timer pour reset

Publié : 11 oct. 2021, 13:49
par pierrotori
donc je mets une device switch on/off avec un script dzvent qui se déclenche sur la device

Code : Tout sélectionner

return {
	on = {
		devices = { 'reset' }
	},
	execute = function(domoticz, mySensor)
		-- déclenche un script timer
		domoticz.emitEvent('init', 'statut' = 1)
	end
}
dans le script qui détermine Jour ouvré, jour week-end en fonction des vacances, Jour férié et week-end

Code : Tout sélectionner

on = {
{ 	timer = { 'at 00:05'} },
	on = { customEvent = { 'init' }},
	
	execute = function(domoticz, trigger)
	if (triggeredItem.data.statut = 1  )
		domoticz.log('Déclenchement et execution sctipt')
	else
		domoticz.log('Pas de déclenchement du script)
	end
},

Re: forcer un script timer pour reset

Publié : 11 oct. 2021, 14:28
par boum
Oui. Par contre, pour tester le déclenchement forcé, ce n'est pas tout à fait ça. = 1 -> assignation, == 1 -> test.

Aussi, pas besoin de donnée supplémentaire juste pour ça :

Code : Tout sélectionner

execute = function(domoticz, trigger)
	if (trigger.isCustomEvent)
		domoticz.log('Déclenchement reset')
	else
		domoticz.log('Pas de déclenchement forcé')
	end
end