Notification doublée

Bonjour,

Je ne comprends pas pourquoi je reçois systématiquement sur mon mobile 2 notifications après déclenchement de l’évènement d’ouverture. Ces notifications sont espacées d’une minute (ex. 16:13 et 16:14).

------------------------------------
[2023-04-06 16:13:31][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-06 16:13:31][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 ET (#time# >= 0930 ET #time# <= 1900)
[2023-04-06 16:13:32][SCENARIO] Evaluation de la condition : [1 == 1 ET (1613 >= 0930 ET 1613 <= 1900)] = Vrai
[2023-04-06 16:13:32][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-06 16:13:32][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-06 16:13:32][SCENARIO] Exécution de la commande [Maison][partout][Faire parler Alexa] avec comme option(s) : {"background":"0","message":"Le facteur est pass\u00e9","volume":"60"}
[2023-04-06 16:13:32][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-04-06 16:14:31][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-06 16:14:31][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 ET (#time# >= 0930 ET #time# <= 1900)
[2023-04-06 16:14:31][SCENARIO] Evaluation de la condition : [1 == 1 ET (1614 >= 0930 ET 1614 <= 1900)] = Vrai
[2023-04-06 16:14:31][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-06 16:14:32][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-06 16:14:32][SCENARIO] Exécution de la commande [Maison][partout][Faire parler Alexa] avec comme option(s) : {"background":"0","message":"Le facteur est pass\u00e9","volume":"60"}
[2023-04-06 16:14:32][SCENARIO] Fin correcte du scénario
------------------------------------

Merci pour votre entraide.

1 « J'aime »

Sans le log complet dur a dire

Est-il possible de rendre le log plus verbeux ?

Non mais la il nest pas complet. La tout est ok. Dc ss le log entier on ne peut rien dire
Tu parles de 16h13 et 16h14. Or on ne voit que 16h14 ds la partie de log

1 « J'aime »

En effet, je viens de corriger. J’ai posté dans la précipitation.
Le scénario s’exécute 2 fois à 16:13 et 16:14 car les conditions sont remplies. Toutefois, l’évènement (présence captée après ouverture de la BAL) ne s’est produit qu’une fois.

Dc si ton capteur envoie son etat toutes les minutes ben cest sur que le scenario va se déclencher

Donc mettre la non repetition sur valeur identique peut etre la solutionmais faut spliter le Si
Avec la capteur seul et en non repet puis tester la plage horaire je pense

Et si il reçoit 2 courriers?
Le mieux ( je pense) lors du passage à 1 de la commande de la boite aux lettres ajouter
Action → event → commande boite -->0
C’est juste l’avis d’un vieux :wink:

time_between(#time#,930,1900)

Moins moche

Ben si il releve le courrier ca repasse a 0 non ?

Donc qu il en recoive 1 ou 10 en 1 ou 10fois… y a du courrier.

Il faut juste remettre a zero qd il releve le courrier.
Et ne pas mettre de repetition pr eviter que le capteur declenche le scenario a chaque envoit de son status.

Le besoin c est de savoir si il a du courrier ou compter le nombre de fois ou facteur livreur passe ?

Capteur de présence donc en fonction du module il repasse quand à 1? après 1 minute 3 minutes?
Il faut qu’il mette en déclencheur
[Boite aux lettres][Capteur de presence IH012-RT01][Presence] ==1 et ce sera réglé.

Si le capteur repasse a 0 apres 3 minutes et qu il envoie son statut toutes les minutes ca ne reglera pas son souci

Merci @anon53349806 et @Furaxworld pour vos contributions :+1:. Je vais tester vos propositions de correction et je reviens vers vous.

Action → event → commande boite -->0 => NOK
Déclencheur [Boite aux lettres][Capteur de presence IH012-RT01][Presence] == 1 => NOK

------------------------------------
[2023-04-07 18:31:35][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-07 18:31:35][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 ET time_between(#time#,930,1900)
[2023-04-07 18:31:35][SCENARIO] Evaluation de la condition : [1 == 1 ET 1] = Vrai
[2023-04-07 18:31:35][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-07 18:31:35][SCENARIO] Changement de [Boîte aux lettres][Capteur de présence IH012-RT01][Présence] à 0
[2023-04-07 18:31:35][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-07 18:31:35][SCENARIO] Exécution de la commande [Maison][partout][Faire parler Alexa] avec comme option(s) : {"background":"0","message":"Le facteur est pass\u00e9","volume":"60"}
[2023-04-07 18:31:35][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-04-07 18:32:35][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-07 18:32:35][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 ET time_between(#time#,930,1900)
[2023-04-07 18:32:35][SCENARIO] Evaluation de la condition : [1 == 1 ET 1] = Vrai
[2023-04-07 18:32:35][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-07 18:32:35][SCENARIO] Changement de [Boîte aux lettres][Capteur de présence IH012-RT01][Présence] à 0
[2023-04-07 18:32:35][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-07 18:32:35][SCENARIO] Exécution de la commande [Maison][partout][Faire parler Alexa] avec comme option(s) : {"background":"0","message":"Le facteur est pass\u00e9","volume":"60"}
[2023-04-07 18:32:35][SCENARIO] Fin correcte du scénario
------------------------------------

Salut,

Ce retour à 1 une 2eme fois à 1mn pile après le premier événement mais plus ensuite est quand même curieux.

Moi je n’arrive pas à expliquer ce phénomène que ce soit via la répétition de valeur ou via le comportement du capteur.

Est-ce que tu peux montrer la configuration (basique et avancée) de ta commande ?

On dirait qu’il y a un paramétrage pour un retour à une certaine valeur au bout de 1mn.

Peut etre ajouter dans le si

&& lastChangeStateDuration(#ta_cmd_presence#,1) > 60

?

Comme ca ta 2nd notif ne sera pas executee

Ce n’est de toute facon pas un pb de scenario, mais un pb lié à la commande ou à l’équipement. il serait don interessant de connaitre le plugin utilisé, screenshot du paramétrage de l’équipement et de la commande basique et avancé. Bref, plus d’infos comme aussi demandé par @bison.
Voir aussi pour mettre l’historique sur la commande (ou la mettre en timeline pour voir de quelle manières les valeurs evoluent.

pour info les commandes dispo sur zigbee2mqtt :

Occupancy (binary)

Indicates whether the device detected occupancy. Value can be found in the published state on the occupancy property. It’s not possible to read (/get) or write (/set) this value. If value equals true occupancy is ON, if false OFF.

#Battery_low (binary)

Indicates if the battery of this device is almost empty. Value can be found in the published state on the battery_low property. It’s not possible to read (/get) or write (/set) this value. If value equals true battery_low is ON, if false OFF.

#Tamper (binary)

Indicates whether the device is tampered. Value can be found in the published state on the tamper property. It’s not possible to read (/get) or write (/set) this value. If value equals true tamper is ON, if false OFF.

#Battery (numeric)

Remaining battery in %, can take up to 24 hours before reported… Value can be found in the published state on the battery property. It’s not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

#Voltage (numeric)

Voltage of the battery in millivolts. Value can be found in the published state on the voltage property. It’s not possible to read (/get) or write (/set) this value. The unit of this value is mV.

#Sensitivity (enum)

PIR sensor sensitivity. Value can be found in the published state on the sensitivity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"sensitivity": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"sensitivity": NEW_VALUE}. The possible values are: low, medium, high.

#Keep_time (enum)

PIR keep time in seconds. Value can be found in the published state on the keep_time property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"keep_time": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"keep_time": NEW_VALUE}. The possible values are: 30, 60, 120.

#Linkquality (numeric)

Link quality (signal strength). Value can be found in the published state on the linkquality property. It’s not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 255. The unit of this value is lqi.

Peut-etre quelque chose à creuser du coté de keep_time + répétition des valeurs à oui …
Ou un autre scenario à coté qui force à 1 la commande presence au bout d’1min avec comme declencheur cette commande présence (ou une autre commande liée à cette commande presence), bref un truc tout con qui se mord la queue ?

Norbert

L’équipement WhatsApp est un appel à l’API callmebot depuis le plugin Script et une commande de type HTTP. Les notifications me parviennent 1 seule fois pour mes autres scénarios et autres évènements déclencheur.

[2023-04-07 18:31:35][INFO] : Exécution de la commande [Maison][WhatsApp][NOTIF] avec les paramètres {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-07 18:32:35][INFO] : Exécution de la commande [Maison][WhatsApp][NOTIF] avec les paramètres {"background":"0","title":"","message":"Le facteur est pass\u00e9"}

*** // infos masquées

C’est la configuration de la commande #[Boite aux lettres][Capteur de presence IH012-RT01][Presence]# qui est intéressante puisque c’est elle qui revient apparemment à 1 au bout d’une minute

2 « J'aime »

Une seule notification avec l’ajout de la condition « && lastChangeStateDuration(#[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]#,1) > 60 » comme l’a suggéré @tomitomas

Dans les logs, j’ai :

------------------------------------
[2023-04-07 19:39:28][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-07 19:39:28][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 && lastChangeStateDuration(#[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]#,1) > 60
[2023-04-07 19:39:28][SCENARIO] Evaluation de la condition : [1 == 1 && 61 > 60] = Vrai
[2023-04-07 19:39:28][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-07 19:39:29][SCENARIO] Changement de [Boîte aux lettres][Capteur de présence IH012-RT01][Présence] à 0
[2023-04-07 19:39:29][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-07 19:39:29][SCENARIO] Exécution de la commande [Maison][partout][Faire parler Alexa] avec comme option(s) : {"background":"0","message":"Le facteur est pass\u00e9","volume":"60"}
[2023-04-07 19:39:29][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-04-07 19:39:33][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (0).
[2023-04-07 19:39:33][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 && lastChangeStateDuration(#[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]#,1) > 60
[2023-04-07 19:39:33][SCENARIO] Evaluation de la condition : [0 == 1 && 66 > 60] = Faux
[2023-04-07 19:39:33][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-04-07 19:39:33][SCENARIO] Fin correcte du scénario

J’ai laissé à tord ou à raison Action → event → #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# -->0 avant la notif.

C est donc la 2nd notif que tu recois, plus la 1ere

J’ai modifié le scénario pour me replacer en situation de dysfonctionnement.

------------------------------------
[2023-04-08 16:53:43][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-08 16:53:43][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 && time_between(#time#,930,1900)
[2023-04-08 16:53:44][SCENARIO] Evaluation de la condition : [1 == 1 && 1] = Vrai
[2023-04-08 16:53:44][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-08 16:53:44][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-08 16:53:44][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-04-08 16:54:43][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (1).
[2023-04-08 16:54:43][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 && time_between(#time#,930,1900)
[2023-04-08 16:54:43][SCENARIO] Evaluation de la condition : [1 == 1 && 1] = Vrai
[2023-04-08 16:54:43][SCENARIO] Exécution du sous-élément de type [action] : then
[2023-04-08 16:54:44][SCENARIO] Exécution de la commande [Maison][WhatsApp][NOTIF] avec comme option(s) : {"background":"0","title":"","message":"Le facteur est pass\u00e9"}
[2023-04-08 16:54:44][SCENARIO] Fin correcte du scénario
------------------------------------
[2023-04-08 16:54:52][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Boite aux lettres][Capteur de presence IH012-RT01][Presence] (0).
[2023-04-08 16:54:52][SCENARIO] Exécution du sous-élément de type [condition] : if #[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]# == 1 && time_between(#time#,930,1900)
[2023-04-08 16:54:52][SCENARIO] Evaluation de la condition : [0 == 1 && 1] = Faux
[2023-04-08 16:54:52][SCENARIO] Exécution du sous-élément de type [action] : else
[2023-04-08 16:54:52][SCENARIO] Fin correcte du scénario

J’ai utilisé le code suivant pour observer les valeurs :

$debut = date("Y-m-d H:i:s", strtotime("Today"));
$fin = date("Y-m-d H:i:s", strtotime("Now")); 

$cmdId = cmd::byString("#[Boîte aux lettres][Capteur de présence IH012-RT01][Présence]#")->getId();
$historys = history::all($cmdId, $debut, $fin);
$i = 0;
foreach ($historys as $key => $history) {
  if (is_object($historys[$key+1])) {
    $scenario->setLog($historys[$key+1]->getDatetime() . ' ' . $historys[$key+1]->getValue());
    if ($history->getValue() === $historys[$key+1]->getValue()) {
      $i++;
    }
}
}

=> 2 notifications et logs suivants :

[2023-04-08 16:58:26][SCENARIO] 2023-04-08 16:53:42 1
[2023-04-08 16:58:26][SCENARIO] 2023-04-08 16:54:42 1
[2023-04-08 16:58:26][SCENARIO] 2023-04-08 16:54:51 0

Il est vrai que le capteur de présence (Tuya Zigbee IH012-RT01) retourne une valuer d’état = 1, deux fois avec 1 minute d’intervalle.