J3R3M Posté(e) le 6 décembre 2018 Signaler Posté(e) le 6 décembre 2018 (modifié) Bonjour, Aujourd'hui, je me demande s'il existe une possibilité de tuer les autres instances d'une scène à certaines conditions. Il est effectivement possible de tuer les autres instances d'une scène automatiquement grâce à l'utilisation de %% killOtherInstances dans l'en-tête d'une scène. Seulement, j'aimerais pouvoir tuer les autres instances d'une scène si certaines conditions sont vérifiées. J'ai bien connaissance des fonctions fibaro:countScenes() et fibaro:killScene(), mais elles n'ont pas grand intérêt dans l'utilisation recherchée, puisque la seconde fonction tuera toutes les instances de la scène, y compris celle en cours. Si ce n'est vraiment pas possible, je pourrai bien évidemment me débrouiller en utilisant deux scènes différentes et les fonctions citées ci-dessus, mais si une fonction existait, ce serait top! Merci! Modifié le 6 décembre 2018 par J3R3M
jojo Posté(e) le 6 décembre 2018 Signaler Posté(e) le 6 décembre 2018 Mais il faut d'abord se poser la question pourquoi tu as plusieurs instances.,et pourquoi vouloir en tuer seulement certaines. Pour moi ce n'est pas un fonctionnement normal
J3R3M Posté(e) le 6 décembre 2018 Auteur Signaler Posté(e) le 6 décembre 2018 Je comprends la logique, mais j'ai mené la mienne sur un autre point de vue où c'est effectivement nécessaire. Je souhaite contrôler les délais de refresh de ma scène Netatmo : Si le mode absence est sur ON, refresh = 30mn Si mode absence récemment quitté et personne n'est identifié, refresh = 5s pendant 2mn (avant déclenchement alarme) Si quelqu'un est connu, refresh = 5mn Le refresh s'effectuant via setTimeout(), la scène doit obligatoirement être redémarrée pour que la nouvelle valeur de refresh soit prise en compte. Mon mode absence est géré par une VG et celle-ci se met automatiquement sur "ON" lorsque c'est nécessaire. Lorsque ce mode est quitté, ma scène gérant les pièces (trigger = mouvements) met simplement à jour cette VG avec le timestamp. Ainsi, si je mets la VG Absence en trigger, je dois pouvoir vérifier le contenu de celle-ci avant de redémarrer la scène, puisque sinon, la scène s'exécutera à chaque nouveau mouvement. Le but étant d'optimiser l'utilisation de la NetAtmo en fonction du nombre maximum de requêtes autorisées sur l'API. Le fait que la scène tourne toutes les 10s lorsqu'il y a personne au domicile n'a aucun intérêt. Par contre, lorsqu'une "intrusion" est détectée, il est plus important de remonter très régulièrement les informations de l'API pour une meilleure réactivité de la domotique.
jojo Posté(e) le 7 décembre 2018 Signaler Posté(e) le 7 décembre 2018 Je comprends mieux maintenant le pourquoi du comment. Mais pourquoi ne pas laisser toujours le taux de refresh maximum ?) c'est une machine qui travaille)
J3R3M Posté(e) le 7 décembre 2018 Auteur Signaler Posté(e) le 7 décembre 2018 (modifié) Je suis tout à fait d'accord avec toi. Si le script pouvait être exécuté toutes les 5 secondes, ça simplifierait grandement la problématique, bien que ça puisse charger quelques peu le CPU de la HC2 à mon avis. Malheureusement, l'API NetAtmo est bridée en nombre de requêtes par heure. Netatmo annonce un délai maximal de 2000 requêtes par heure pour chaque compte. Cependant, des tests ont démontré qu'il y avait souvent des problèmes au-dessus de 1000 requêtes par heure et le compte développeur NetAtmo était ensuite temporairement bloqué. La scène NetAtmo faisant deux appels API par cycle, il n'est pas possible de descendre en-dessous des 8 secondes, à condition de n'utiliser que l'API de la Welcome! C'est pourquoi je souhaite privilégier un petit taux de refresh lorsqu'il est nécessaire de reconnaître quelqu'un rapidement puis d'espacer ces vérifications ensuite, afin de ne surtout pas dépasser la limite imposée par NetAtmo Modifié le 7 décembre 2018 par J3R3M
jojo Posté(e) le 7 décembre 2018 Signaler Posté(e) le 7 décembre 2018 Merci pour ces explications, je comprends bien la problématique. Idée stupide (peut être). Et si tu faisais une scène par taux de refresh souhaité, et tu en as une master, qui déclenche celle que tu veux (à la fréquence souhaitée) et tue toutes les autres ?
pepite Posté(e) le 7 décembre 2018 Signaler Posté(e) le 7 décembre 2018 Bonjour, Je ne sais pas quel est le délai de mise à jour côté API pour la Welcome, mais pour la station Meteo c'est toutes les 10 ou 15 minutes. Pour la Welcome, t'es en direct sur l'API, je sais, mais la seule limitation est donc le nombre de requetes ? PAs de limitation de mise à jour de leur côté ? Si oui, elle me tente de plus en plus cette welcome ;-) Ok, tu fais un GetGlobalmodificationTime sur ta VG Absence c'est ca ? Pourquoi ne pas faire qu'avec une seule instance et jouer avec la valeur du refresh ? Du genre local refresh = xx if VG == ON then refresh =xx elseif Vgmodiftime < 30 then refresh = xxx else refresh = xxx end PAs possible ?
J3R3M Posté(e) le 10 décembre 2018 Auteur Signaler Posté(e) le 10 décembre 2018 Le 07/12/2018 à 17:23, jojo a dit : Idée stupide (peut être). Pas du tout! Le 07/12/2018 à 17:23, jojo a dit : Et si tu faisais une scène par taux de refresh souhaité, et tu en as une master, qui déclenche celle que tu veux (à la fréquence souhaitée) et tue toutes les autres ? En fait, c'est effectivement le plan B que j'ai en tête. À vrai dire, je pensais avoir une scène en autostart et une autre avec ma VG en trigger afin que chacune puisse arrêter l'autre en fonction de la situation. Dans un premier temps, je trouve cela dommage d'avoir deux scènes parfaitement similaires, à une condition près, mais si c'est la seule solution, je partirai pour ça! Le 07/12/2018 à 17:24, pepite a dit : PAs de limitation de mise à jour de leur côté ? Ecoute, je n'en ai pas l'impression jusqu'à maintenant. Ou alors, chacune de mes vérifications était effectuée peu après la mise à jour! Je vais voir si je trouve des informations à ce sujet, puisque je ne pense pas qu'ils différencient les comptes développeur en fonction du produit acheté, cela me semble peu probable. Le 07/12/2018 à 17:24, pepite a dit : Pourquoi ne pas faire qu'avec une seule instance et jouer avec la valeur du refresh ? Ça ne fonctionnera pas pour ce que je souhaite faire, puisque la prochaine vérification de la condition n'aura lieu que lors du prochain cycle du setTimeout(). Si le Mode absence est sur ON : La scène s'éxécute toutes les 20mn. Un mouvement est détecté. Mais la prochaine vérification de la valeur n'aura lieu qu'à la fin de ce délai de 20mn. Et je cherche à ce que le délai change dès la détection d'un nouveau mouvement 1
pepite Posté(e) le 10 décembre 2018 Signaler Posté(e) le 10 décembre 2018 Bonjour, Ah ok, je comprends mieux.
J3R3M Posté(e) le 14 décembre 2018 Auteur Signaler Posté(e) le 14 décembre 2018 J'ai fini par bidouiller ma scène pour qu'elle ne soit plus en autostart et qu'elle soit executée par les mouvements de mon domicile. Ainsi, je n'ai plus besoin d'interrompre un setTimeout, j'ai simplement ajouté une condition qui vérifie le nécessaire avant d'exécuter ou tuer la scène. Mais, si un jour, une personne passant par là a la solution à la question originale, ça pourrait être intéressant de nous en informer, merci
Steven Posté(e) le 4 janvier 2019 Signaler Posté(e) le 4 janvier 2019 Si je peux me permettre une petite suggestion. Il suffit que ta scène tourne toutes les 5s tout le temps. Mais qu'elle ne fasse sont travail QUE selon tes critères. En pseudo code : i = i + 5 -- incrément d'un compteur toutes les 5 secondes if (mode == "ON" and i => 1800) then -- 30 minutes refresh() else if (connu = "ON" and i => 300) then -- 5 minutes refresh() else --- end function refresh() --- son travail i = 0 end
J3R3M Posté(e) le 6 février 2019 Auteur Signaler Posté(e) le 6 février 2019 (modifié) Le 04/01/2019 à 09:26, Steven a dit : Si je peux me permettre une petite suggestion. Il suffit que ta scène tourne toutes les 5s tout le temps. Mais qu'elle ne fasse sont travail QUE selon tes critères. En effet Steven, c'est ce que j'ai fini par faire. En fait, je ne voulais pas modifier considérablement ma scène NetAtmo pour pouvoir la partager en cas de modification majeure pouvant être utile à la communauté. Mais, finalement, c'était plus simple à gérer de directement modifier cette scène pour qu'elle gère elle-même quand elle doit se connecter à l'API, à commencer par ne pas tourner s'il n'y a pas eu de mouvement récent dans la maison, ça économise jusqu'à plusieurs milliers de connexions inutiles à l'API NetAtmo, dans ce cas précis. Merci de ton retour et désolé de ce délai d'un mois pour répondre... Modifié le 6 février 2019 par J3R3M
Messages recommandés