Steven Posté(e) le 9 juillet 2014 Auteur Signaler Posté(e) le 9 juillet 2014 Hummm moi et PHP cela fait 4 Il y a ici un tuto intéressant pour PHP : ICI Je te prépare quelque chose demain.
lolomail Posté(e) le 14 juillet 2014 Signaler Posté(e) le 14 juillet 2014 (modifié) Bon je fais mumuse avec la Netatmo et j'ai intégré pas mal de données via un script PHP dans la HC2. Deux questions en lien avec la Netatmp et le GEA: - Quelle est la bonne syntaxe pour appuyer sur un bouton d'un VD toutes les 5min pour récupérer les données? - Est-il possible d'avoir une notification si la valeur du CO2 stocké dans la variable NetSalCO2 est supérieure à 1000 ppm? Pour la première j'ai tenté: GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17}}) Mais cela n'appuie qu'une fois sur le bouton Puis GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17,{repeat}}}) Mais là le GEA ne faisaint plus aucune action de toutes celle qu'il a à faire Merci Modifié le 14 juillet 2014 par lolomail
Shyrka973 Posté(e) le 14 juillet 2014 Signaler Posté(e) le 14 juillet 2014 Essaie ceci: GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17},{repeat}}) 1
Steven Posté(e) le 14 juillet 2014 Auteur Signaler Posté(e) le 14 juillet 2014 Attention au majuscule/minuscule Repeat prend une majuscule, sinon, ... t'es tout bon Shyrka973 GEA.add({"Global", "", ""}, 5*60, "", {{"VirtualDevice", 209, 17},{Repeat}}) @lolomail " Est-il possible d'avoir une notification si la valeur du CO2 stocké dans la variable NetSalCO2 est supérieure à 1000 ppm?" Si NetSalCO2 est une variable globale GEA.add({"Global+", "NetSalCO2", 1000}, 5*60, "Attention le CO2 dans le salon atteint les #value#") Si NetSalCO2 est un slider GEA.add({"Slider+", <id_vd>, "NetSalCO2", 1000}, 5*60, "Attention le CO2 dans le salon atteint les #value#") 1
lolomail Posté(e) le 14 juillet 2014 Signaler Posté(e) le 14 juillet 2014 Milles merci, cela marche nickel!!! J'étais pas loin pour la première ligne
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 @Steven Salut. Cette règle se déclenche s'il n'y a pas de mouvement dans le salon depuis 30mn. GEA.add(id["MOV_SALON"], 30*60, "", {{"Inverse"}, ... Elle est évaluée toutes les 30s (valeur par défaut). C'est-à -dire que GEA vérifie la valeur de "value" de ce capteur toutes les 30s. C'est exact ? Le capteur est un DSB05 avec le paramétrage par défaut du HC2. Le paramètre 3 est à 2s. C'est qu'il est en alerte pendant 2s après avoir détecté un mouvement. Donc, entre deux vérifications de l'état du module par GEA, une détecteur peut avoir lieu sans qu'il s'en aperçoive. C'est exact ? Je devrais passer la valeur du paramètre 3 à 30s. Non ?
Steven Posté(e) le 17 juillet 2014 Auteur Signaler Posté(e) le 17 juillet 2014 En effet, tu as 100% raison, mais non, ne fait pas cela stp. GEA doit s'adapter à ta configuration et non pas l'inverse. Je corrige cela ce soir tu n'auras rien besoin de modifier dans ta configuration. GEA peux savoir si c'est un motion_sensor et dans ce cas, se baser sur l'heure de la dernière modification de sa valeur. Exemple si la dernier modification a eu lieu moins de 30 secondes, on sait qu'il y a eu alerte.
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 Trop cool. Merci. Par curiosité, comment fais-tu pour l'heure de la dernière modification de la valeur du détecteur ? C'est le "last breach" ?
Steven Posté(e) le 17 juillet 2014 Auteur Signaler Posté(e) le 17 juillet 2014 Oui, voici le code qui te permets de l'afficher local id_motion = 85 fibaro:getValue(id_motion, "lastBreached") fibaro:debug(os.date("%c", f))
Steven Posté(e) le 17 juillet 2014 Auteur Signaler Posté(e) le 17 juillet 2014 Si tu as le courage tu peux tester ceci. Je pourrais le tester moi-même mais pas avant 23h00 donc si toi ou quelqu'un peux essayer le détecteur de mouvement, ce serait super sympa. P.S: J'ai codé à l'aveugle alors si cela plante ... c'est la faute à fredo. GEA.lua
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 Merci Steven. J'ai porté tes modifications. Je n'ai pas de souci avec le DSB05 mais avec le FGMS, ça ne fonctionne pas car le "lastBreached" est toujours vide. Je crois que c'est un bug connu pour les FGMS.
Steven Posté(e) le 17 juillet 2014 Auteur Signaler Posté(e) le 17 juillet 2014 Et bien évidemment sur le mien de FGMS le lastBreached fonctionne bien ... arg, je le supporte plus ce FGMS. S'il veux jouer au con, il a trouvé plus con que lui ... moi. Pourrais-tu tester la version ci-joint. Sile FGMS est en alerte .. ou que le lastBreached est arrivé dans les 30 secondes .. OU la derniers modifications de sa valeur est arrivée dans les 30 secondes. Il y a un décalage entre le lastBreached et la date de modification ... exemple, le mien est en alerte 12 secondes ... il y aura donc 12 secondes de décalage mais cela devrait être beaucoup plus juste qu'avant. Merci d'avance pour tes tests. GEA.lua 1
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 (os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))) Quand "lastBreached" est vide, "tonumber" retourne "nil" et donc la soustraction retourne une erreur.
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 J'avais mis ceci sans inclure ton dernier ajout "figaro:getModificationTime": result = tonumber(fibaro:getValue(tonumber(id), "value")) >= 1 if fibaro:getValue(tonumber(id), "lastBreached") ~= "" and not result then result = (os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))) < GEA.checkEvery end
Shyrka973 Posté(e) le 17 juillet 2014 Signaler Posté(e) le 17 juillet 2014 Un reflexion: Ne faudrait-il pas généraliser àun certain type de sensor comme le "door_sensor" par exemple ?
Steven Posté(e) le 17 juillet 2014 Auteur Signaler Posté(e) le 17 juillet 2014 Voilà . Si tu as encore le courage de tester. J'ai appliqué le lastBreached à tout les détecteur et le lastModificationTIme à tout les autres modules pour être au plus prêt. J'ai bien évidement tester le nul comme tu me l'as fait remarquer GEA.lua
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Merci Steven. Je l’ai mis en place. à‡a fonctionne, mais je continue à tester.
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 J'ai dû remplacer cette ligne: if (fibaro:getValue(tonumber(id), "lastBreached")) then par celle-ci: if (fibaro:getValue(tonumber(id), "lastBreached")) ~= "" then pour que cela fonctionne sans erreur.
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Je constate que cette ligne: os.time() - tonumber(fibaro:getModificationTime(tonumber(id), "value")) ou celle-ci: os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached")) retourne une valeur en seconde. Pourquoi compares-tu cette valeur avec "GEA.checkEvery*1000" au lieu de "GEA.checkEvery" ? J'ai enlevé le "1000" et pour l'instant, ça fonctionne.
Steven Posté(e) le 18 juillet 2014 Auteur Signaler Posté(e) le 18 juillet 2014 Je prend déjàen compte tes modifications et j'attends ton aval. Et surtout je te remercie.
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Cette ligne: GEA.add(id["MOV_CUISINE"], 2*60, "", {{"Inverse"}, {"turnOff", id["LAMPE_CUISINE"]}, {"Global", "LumCuisine", "0"}}) ne fonctionne plus. S'il y a du mouvement, elle s'éteint quand même. C'est un FGMS. J'essaie de debugger en ajoutant cette ligne: if result then fibaro:debug("Result lastBreached: true ("..id..")") else fibaro:debug("Result lastBreached: false ("..id..")") end et celle-ci: if result then fibaro:debug("Result getModificationTime: true ("..id..")") else fibaro:debug("Result getModificationTime: false ("..id..")") end Le retour semble normal: DSB05 passe par la première et FGMS par la deuxième. On dirait que la valeur de "ModificationTime" ne bouge pas tant qu'il est en alerte. Il faut peut-être se fier à la valeur de "ModificationTime" quand le capteur n'est plus en alerte. Le config par défaut du FGMS est de 30s pour la sortie en alerte donc il peut rester en alerte dans une pièce comme la cuisine un bon moment. Avec la config du DSB05, c'est 2s. Il y a très peu de chance qu'il reste en alerte longtemps dans une pièce comme le salon sauf si on est à 20 dedans. La question est: peut-on adapter GEA pour que cela fonctionne ou dois-je modifier cette valeur ?
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 J'ai fait ces modifications: result = tonumber(fibaro:getValue(tonumber(id), "value")) >= 1 if not result and (fibaro:getValue(tonumber(id), "lastBreached")) ~= "" then result = ((os.time() - tonumber(fibaro:getValue(tonumber(id), "lastBreached"))) < GEA.checkEvery) else if not result and (fibaro:getModificationTime(tonumber(id), "value") ) then result = ((os.time() - tonumber(fibaro:getModificationTime(tonumber(id), "value"))) < GEA.checkEvery) end end J'ai fait les 100 pas dans la cuisine pendant 3mn. Elle est restée allumée. Après être sortie pendant 2mn, elle s'est éteinte. Qu'en penses-tu ?
Steven Posté(e) le 18 juillet 2014 Auteur Signaler Posté(e) le 18 juillet 2014 Que veux tu que je te dise C'est intelligent, c'est bien écrit et cela fonctionne ... c'est adopté Par contre, j'aurais vraiment voulu être là pour te voir faire les 100 pas devant ton capteur J'aurai bien voulu faire les tests moi-même mais c'est difficile car mon FGMS ne détecte pas tout le temps et quand il détecte, le lastBreached est correct donc je ne passais jamais dans la condition de getModificationTime. Donc ce code ci appliqué à tout type de détecteur, c'est top car on s'assure de répondre même a des ouvertures de porte rapides. Moi, en tout cas, cela me plait et je te remercie : pour avoir trouvé le problème ... et pour avoir trouvé la solution. Maintenant, je pense que le getModificationTime devrait aussi être généralisé avec les autres modules comme les lampes par exemple car comme tu l'as fait remarqué avec un détecteur, le soucis est le même avec une lampe que l'on peux allumer uniquement 10 secondes et dans ce cas, GEA ne verrais rien.
Shyrka973 Posté(e) le 18 juillet 2014 Signaler Posté(e) le 18 juillet 2014 Faire les 100 pas et trop tôt pour l'apéro J'attends ta nouvelle version pour tester. Merci encore pour ce script qui se bonifie avec le temps (oui, maintenant c'est l'heure de l'apéro ). On peut plus s'en passer.
Steven Posté(e) le 18 juillet 2014 Auteur Signaler Posté(e) le 18 juillet 2014 Ce soir, j'ai cinéma. Je le laisse l'installer et me dire ce que tu en penses. Je posterais la version officiel ce soir ou demain. GEA.lua
Messages recommandés