Retour état incorrect si enchainé après action?

Bonjour,

Le retour d’état après un appel d’action on ou off n’est que rarement correct car l’appel se fait juste après l’action. C’est en zigbee.

Exemple :

    var url = 'https://xxx.eu.jeedom.link/core/api/jeeApi.php?apikey=xxx&type=cmd&id=';
    var id_on = 69;
    var id_etat = 42;

    fetch(url+id_etat).then(function (r) {
        r.text().then(function (txt) {
            // renvoi 0 on est bien à off
            console.log('etat avant off : ' + txt); 
            fetch(url + id_on).then(function () {
                console.log('ok on a fait on');
                fetch(url + id_etat).then(function (r) {
                    r.text().then(function (txt) {
                        // Renvoi aussi 0 et aléatoirement 1 car appel trop rapide !!
                        console.log('etat après off : ' + txt);
                    })
                })
            })
        })
    })

Concrètrement dans jeedom la variable d’état n’est pas mise à jour AVANT le retour API ?
C’est asynchrone ?
C’est lié à jeedoom ou au plugin zigbee ou au protocole zigbee ? Je n’ai que du zigbee, je ne peux pas tester sur du zwave ou autre afin de voir d’ou ça provient.

Comment corriger cela autrement qu’en bidouillant avec une temporisation avant de demander l’état ? (durée de temp surement variable en fonction du matos et protocole…)

Merci pour vos pistes :grinning:
PS : Le code est crado mais c’est pour faire un exemple simple :innocent:

La variable état est mise à jour quand l’état du module revient … c’est pas Jeedom qui change l’état mais le module qui lui dit de changer d’état. Ça peu prendre 1ms ou 1 minute …

OK merci. Je n’ai pas trouvé dans Jeedom d’url « trigger » qui serait appelé lorsque le retour d’un changement demandé revient ou de paramètre dand l’API qui lui imposerait de ne pas répondre tant que le retour n’est pas connu (synchrone donc).

Seule méthode : Interroger à intervalle régulier pour savoir si un truc à changé ?
Pour cela j’appelle type=cmd&id=[12,24,65,76,…] en passant tout les id d’état de tous les équipements. Ca marche mais je trouve cela vraiment pas propre.

J’ai jamais eu a vérifier un ordre après envoi, tu demande une action elle est faite. Que ce soit scenario, script etc sur 85 modules zwave ou des changements de params sur d’autres site qui enregistrent en db etc.

Au pire tu fait un scenario qui sur trigger de ton etat appel ton url. ou une action sur valeur. Sinon tu stocke un array d’états a vérifier et 2mins tu check chaque état. Y’a que des solutions tout dépend de ce que tu fais. Mais est-ce vraiment utile …

Merci pour les pistes de réflexion, je vais tester tout ça :+1:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.