Script PHP utilisé dans un scénario déclenché pour supprimer les faux états d'un capteur

Bonjour,

Je débute avec Jeedom et je cherche à écrire un script PHP qui sera utilisé dans un scénario déclenché par le changement d’état d’un capteur ILS (contact de porte)

En effet, ce capteur me renvoie très souvent des faux états dû à des rebonds du contact ILS :

L’idée est d’écrire un script en PHP pour inhiber les rebonds indésirables et obtenir l’état réel du contact après les quelques millisecondes où ces rebonds pourraient apparaitre.

Un code en C pour Arduino est disponible ici : https://www.aranacorp.com/fr/implementation-de-la-logique-anti-rebond-sur-arduino/

Comment fait on pour récupérer l’état d’un capteur afin de le placer dans une variable PHP qui pourra ensuite être interprétée en PHP ?

Existe il un compte de temps en millisecondes ou en second quel que EPOCH
En effet, je cherche à transposer le code en C ci dessous en PHP :

//Variables
bool didStatus  = false;
bool oldDidStatus  = false;

// initialisation d'un compteur de temps
unsigned long lastDebounceTime  = 0;

// temps en Millisecondes de la tempo souhaitée
unsigned long debounceDelay  = 50;
// Fonction lancée dès que le capteur change d'état :
void debounceDid( ) 

  int reading = digitalRead(didPin);  // état du capteur à monitorer

  if (reading != oldDidStatus) 
 {
    lastDebounceTime = millis();
 }
 

  // millis() correspond à la prise du timestamp du temps actuel ( à transposer en PHP) si ce timestamp est supérieur à la tempo définie : ici 50 ms puis on reteste l'état du capteur.

 if ((millis() - lastDebounceTime)>= debounceDelay)   
 {
    if (reading != didStatus) {
      didStatus = reading;
  }

}

  oldDidStatus = reading;
}

Je vous remercie pour votre aide,

Bonjour,
un peut de filtrage a la source :wink:
bonne journée

Bonjour, tu peut aussi directement filtrer garce a un virtuel et un scénario sans code php :

tu créer un virtuel avec juste une info binaire.

puis tu creer un scenario comme ceci :
Déclencheur ton info binaire de ton équipement.

Ce qui a pour effet d’aller mettre a jour l’info binaire de ton virtuel que 2 secondes après.
Attention a ne pas trop augmenter la tempo, au risque de louper un vrai évènement.

Bonne journée.

Merci, je vais m’orienter vers vos méthodes qui semblent plus simples à mettre en œuvre.

@Phpvarious :

Lorsque je créé un virtuel, je le paramètre comme ceci ?

Oui tout simplement, c’est ton scénario qui viendra créer un event sur cette info binaire.

C’est étrange l’état du virtuel reste sans cesse à 1 :

[2021-07-29 08:18:38][SCENARIO] Lancement du scénario en mode synchrone
[2021-07-29 08:18:38][SCENARIO] Start : Scénario lancé manuellement.
[2021-07-29 08:18:38][SCENARIO] Exécution du sous-élément de type [action] : action
[2021-07-29 08:18:38][SCENARIO] Pause de 1 seconde(s)
[2021-07-29 08:18:39][SCENARIO] Changement de [Virtuels][Virtuel capteur Garage Emilie][etat_déclenchement] à 1
[2021-07-29 08:18:39][SCENARIO] Fin correcte du scénario

Voici mon capteur réel :

Voici mon virtuel :

Voici mon scénario :

Normale tu déclenche toi même le scénario, essai de passer ta tempo à 2s puis fait un essai ouverture de plus de 2s, ton virtuel devrait basculer, puis test une ouverture/fermeture en moins de 2secondes, ton virtuel ne devrait pas bouger.

Je vois aussi dans tes log que tu utilise le mode synchrone, désactive cette option sauf si tu as une raison valable d’utiliser cette option.

Salut Icn,

C’est quoi ton matériel derrière ton capteur qui envoi l’info vers jeedom?

Quand c’est évitable, je pense qu’il est préférable de ne pas charger jeedom pour un truc aussi alakon que ça, qui est souvent pris en charge par les matériels qui gèrent les capteurs.
soit physiquement, soit filtrer logiciellement.

image

—>[]

Ou un test
stateDuration(#… #) <1
ou
stateChanges (taken, period)
il est possible de tester si c’est le premier changement pendant une periode ou filter les rebonds

Mes capteurs sont des capteurs de portes ILS avec aimants Aqara de Xiaomi.
Utilisées avec le plugin Xiaomi Home.

Ce qui est étrange c’est que sur l’appli Xiaomi sur smartphone, les rebonds sont ne jamais visibles et l’état du capteur renvoyé est bon.
J’ai ce soucis uniquement sur mes 2 portes de garages, tous mes autres capteurs de ce types ne posent pas de problème.

Mince! j’ai eu une petite dizaine chez moi (modèle MCCGQ11LM), et jamais constaté ce pb.
Je passe par une clé zigbee et plugin deconz pour ma part.

Est ce que tu as essayé ces capteurs hors de tes portes de garages et constaté le même phénomène ?