Rédaction scenario

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 ›
    ALORS

      SI #[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.

Merci beaucoup de viens de tester:
voici le resultat est ce normal. en désactivant ou activant

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.