forcer un script timer pour reset

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

forcer un script timer pour reset

Message 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
denis_brasseur
Messages : 898
Inscription : 24 déc. 2018, 17:05
Localisation : (26)

Re: forcer un script timer pour reset

Message 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.
Pi3 + DD PiDrive - RFXtrx433 - AEON Labs ZW090
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: forcer un script timer pour reset

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: forcer un script timer pour reset

Message par pierrotori »

Je viens de penser si je declenche un httpresponses qui serait gere par le script qui doit faire le reset
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: forcer un script timer pour reset

Message 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.
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

forcer un script timer pour reset

Message 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
Dernière modification par pierrotori le 10 oct. 2021, 21:37, modifié 1 fois.
Keros
Messages : 6638
Inscription : 23 juil. 2019, 20:57

Re: forcer un script timer pour reset

Message 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')
Comment bien utiliser le forum : Poser une question, Mettre un script, un fichier, une image ou des logs
Mes petits guides : Débuter en programmation, Le débogage, Le choix de matériel, Les sauvegardes
Ma présentation - Mes Tutos
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: forcer un script timer pour reset

Message par pierrotori »

merci en effet , je vais etudier ca
https://www.domoticz.com/forum/viewtopic.php?t=31330
pierrotori
Messages : 821
Inscription : 29 févr. 2016, 12:11

Re: forcer un script timer pour reset

Message 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
},
boum
Messages : 233
Inscription : 18 janv. 2019, 11:34
Localisation : France

Re: forcer un script timer pour reset

Message 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
Domoticz v2022.2 sur linux-mint / Z-Wave-JS / RFXCom / Zigbee2MQTT
Répondre