Bonjour,
Je sollicite votre aide concernant la rédaction d’un scenario.
situation actuel : scenario mode maison en NUI si présence (tel, nut etc… et time apres 22h) => coupe les lumières modification du chauffage etc…
Le souci que je rencontre c’est que hier je suis rentré après 22h et la jai vu les limite de mon scénario . Car du coup arrivé dans la maison , tel détecté nut detecté… heure passé de 22h donc jeedom est passé en nuit mais du coup plus de lumière dans les pièces de vie. Avez vous une idée quel élément je pourrais rajouter pour me permettre d’avoir la lumière dans ces moment là. comme par ex: si tel ou nut pas détecté depuis XX min alors il autorise les lumières pendant XX temps par exemple avant de passé en nuit.
Merci de votre aide et vos conseils
A toi de gérer tous les cas dans le scénario
Je vois pas quoi dire d’autre…
Tu ne nous montres même pas ce dernier pour qu’on voit ce qui peut être amélioré
" - Nom du scénario : Gestion des modes
-
Mode du scénario : provoke
- Evènement : #[Equipement Mobile][Présence tous les tel][Etat]#
- Evènement : #[Douche][Capteur Douche][Mouvement]#
- Evènement : #[Couloir][Présence Couloir][Presence Couloir]#
- Evènement : #[Salon][Présence salon][Présence salon]#
SI #[Equipement Mobile][Présence tous les tel][Etat]# == ‹ 1 ›
ALORSSI #[Douche][Capteur Douche][Mouvement]# == 1 ET #time#>=2200 ET #time#<=2359 OU #time#>=0000 ET #time#<=0614 ET #[Chambre][mi box chambre][power_state]# == 1 ET #[Maison][Freebox][power_state]# == 0 ET #[Douche][Capteur Douche][Mouvement]# == 1 ALORS SI #[Maison][Mode Jour-Nuit-Absence][Etat]# != '2' ALORS #[Maison][Mode Jour-Nuit-Absence][Nuit]# - Options : {"enable":"1","background":"0"} (scenario) start de [Maison][Maison][Mode nuit] #[Equipement Mobile][FreeSMS][Ben]# - Options : {"enable":"1","background":"0","title":"Changement Etat Maison","message":"La maison est pass\u00e9 en mode: NUIT"} SINON SINON SI #time#>0615 ET #time#<=1000 ET #[Couloir][Présence Couloir][Presence Couloir]# == 1 ET #[Salon][Présence salon][Présence salon]# == 1 ALORS SI #[Maison][Mode Jour-Nuit-Absence][Etat]# != '1' ALORS #[Maison][Mode Jour-Nuit-Absence][Jour]# - Options : {"enable":"1","background":"0"} (scenario) start de [Maison][Maison][Mode Matin] #[Equipement Mobile][FreeSMS][Ben]# - Options : {"enable":"1","background":"0","title":"Changement Etat Maison","message":"La maison est pass\u00e9 en mode : MATIN"} SINON SINON SI #time#>=1000 et #time#<=2200 ALORS SI #[Maison][Mode Jour-Nuit-Absence][Etat]# != '1' ALORS #[Maison][Mode Jour-Nuit-Absence][Jour]# - Options : {"enable":"1","background":"0"} (scenario) start de [Maison][Aucun][Maison ON] #[Equipement Mobile][FreeSMS][Ben]# - Options : {"enable":"1","background":"0","title":"Changement Etat Maison","message":"La maison est pass\u00e9 en mode: JOUR"} SINON SINON
SINON
SI #[Equipement Mobile][Présence tous les tel][Etat]# == '0' OU #[Nuts][Nut minou][Présence]# == 0 OU #[Nuts][Nut bébé chat][Présence]# == 0 ALORS SI #[Maison][Mode Jour-Nuit-Absence][Etat]# != '0' ALORS #[Maison][Mode Jour-Nuit-Absence][Absence]# - Options : {"enable":"1","background":"0"} (scenario) start de [Maison][Aucun][Maison OFF] #[Equipement Mobile][FreeSMS][Ben]# - Options : {"enable":"1","background":"0","title":"Changement Etat Maison","message":"La maison est pass\u00e9 en mode : ABSENCE"} SINON SINON"
Salut,
Il vaudrait mieux que tu envoies ton scénario sous forme de fichier texte.
Ceci étant, dès le premier SI, le résultat sera totalement aléatoire. C’est très mauvais de mélanger des ET et des OU sans mettre de parenthèses. Tu peux être sûr que le résultat du test sera à peu près n’importe quoi.
Autre chose, remplaces tes ET par des && et tes OU par des ||.
Conclusion, tu réécris tes tests en prenant garde à la préséance (parenthésage des blocs à l’intérieur d’un test).
Quand ce sera fait, regardes le résultat et dis-nous ce que ça donne avant d’aller plus loin.
comme conseillé, voici le scenario mis en meilleur forme: Merci de me dire si la syntaxe est bonne. Et si tel est le cas. je réitère ma question initiale. Comment définir au scenario que l’lorsque je rentre après 22h il regarde dans l’historique des présence si le tel était présent ou non il y a qq minute. cela me permettrai de dire que si le/les tel n’était pas présent il y ’ a XX minutes alors il rajouter un temps de 10 minute avant d’activé le mode de nuit (mode qui éteint toute les lumières et désactive les déclenchement auto, oui j’ai un chien donc la désactivation la nuit est indispensable)
Merci d’avance pour votre aide
scenario gestion des modes.txt (3,2 Ko)
Salut,
lastChangeStateDuration(commande,valeur)
: Donne la durée en secondes depuis le dernier changement d’état à la valeur passée en paramètre. -1 : Aucun historique n’existe ou la valeur n’existe pas dans l’historique. -2 La commande n’est pas historisée
Tu pourrais utiliser cette fonction dans le scénario ou dans 2 commandes virtuel pour connaître depuis combien de temps les nuts étaient à 0 (absence) et en déduire ce que tu veux derrière.
Etant donné la complexité de ton scénario, les indentations des blocs SI sont assez floues.
Le mieux est finalement d’envoyer une copie d’écran de ton scénario la plus lisible possible.
J’ai quand même essayé de le corriger en simplifiant certains blocs et remplacant certains tests par des fonctions faites pour.
Je te répète, il me faudrait une copie d’écran pour que je puisse valider mes modifs.
En attendant voici ce que j’ai pu faire.
A+
scenario gestion des modes.txt (2,6 Ko)
Bonsoir.
Vous avez écrit :
time_op(#time#,2200,2359) OU (time_op(#time#,0000,0614)
Ce qui n’est pas bon, en revanche, il faut utiliser la fonction time_between(#time#,2200,0600)
Tu as totalement raison, je suis à la ramasse.
Il faut effectivement remplacer tous les time_op par time_between.
So sorry.
scenario gestion des modes.txt (2,6 Ko)
Ceci étant, comme je le disais plus haut, compte tenu du peu de lisibilité de son scénario, j’attends la copie d’écran pour valider mes modifs.
La commande renvoie -1 pour avoir ce nombre divisé par 60. Ce qui signifie qu’il n’y a pas d’historique sur cette commande.
Évite de diviser par 60 déjà, c’est pas bien grave d’avoir le nombre en seconde dans la commande et tu géreras dans le scénario si besoin de l’interpréter en minutes.