Aller au contenu

Steven

Membres confirmés
  • Compteur de contenus

    4 434
  • Inscription

  • Dernière visite

  • Jours gagnés

    201

Tout ce qui a été posté par Steven

  1. Moi j'ai qu'un poà«le a pellets donc un seul module mais je l'utilise à fond. J'y ai même rajouté une estimation des pellets restants basés sur la consommation .. il est fou ce Steven
  2. Steven

    Support Gea

    Même instance, même débat. Imaginons comme le propose sebcbien é module GEA alarme, le 1er indique 20:00, le 2eme 08:00. Maintenant, on mélange VOS idées et on a un truc du genre. GEA.add({"Alarm", <ID 1er MV>}, 30, "", {{"Global", "TEMP_A", "1"}}) GEA.add({"Alarm", <ID 2eme MV>}, 30, "", {{"Global", "TEMP_A", "0"}}) GEA.add({{"SceneActivation", id["VOLET_PRINCIPAL"] , 24}, {"Global", "TEMPS_A", "1"}}, -1, "", {{"Global", "jour_nuit", "1"}})
  3. Steven

    Support Gea

    --[[ %% autostart %% properties 377 value -----> détecteur de mouvement %% globals jour_nuit -----> variable <<------ INUTILE --]] Accolade en trop englobant id["DETECTEUR_MOUVE"]. GEA.add({id["DETECTEUR_MOUVE"], {"Global", "jour_nuit", "1"}}, -1, "detec", {{"turnOn", id["LAMPE_SALON"]}}) La variable jour_nuit dans l'entête n'est pas utile dans ce cas. Ce n'est pas le changement de valeur de cette variable qui va lancer la commande, c'est le changement d'état du détecteur.
  4. Voici le code que j'ai derrière le bouton [-1] et qui fonctionne. L'idée est de rajouter " " à la fin et non pas "°" ainsi il est aisé de convertir la valeur en numérique. local oldCorr = fibaro:getValue(fibaro:getSelfId(), "ui.lblCorr.value") if (oldCorr ~= nil) then local undef = "" .. oldCorr if (undef == "") then oldCorr = 0 fibaro:debug("nil" .. oldCorr) else oldCorr = tonumber(oldCorr) end else oldCorr = 0 end oldCorr = tonumber(oldCorr) - 1 fibaro:call(fibaro:getSelfId(), "setProperty", "ui.lblCorr.value", oldCorr.." ") fibaro:call(fibaro:getSelfId(), "pressButton", "2")
  5. Steven

    Support Gea

    @everybody Comment on fait pour BANNIR un utilisateur ?
  6. Steven

    Support Gea

    @971jmd Ton code me semble correcte, tu peux laisser ou enlever le {"Time", "20:00", "8:40"} a ta convenance. Si tu veux faire ce que propose @pepite il faut mettre ce code : GEA.add(true, 30, "", {{"Time", "08:40", "08:40"}, {"Global", "Nuit_jour", "0"}}) Donc si je comprends bien, c'est quand tu fermes les volets que tu passes en mode nuit ? Cela a un sens. Par contre, si tu fermes pas les volets tu restes en mode jour ?
  7. Steven

    Support Gea

    Elles est stable parce qu'elle ne fait rien ... bien que "A NOUVEAU", je n'arrive plus détecté si mes RGB sont allumés ou non. ? Il y a une direction chez Fibaro ? @971jmd, @pepite, @hansolo Pourquoi vérifier la variable globale "Nuit_jour" si de toute façon il y a "{"Time", "20:00", "8:40"}", c'est un non sens qu'il faudrait commencer par expliquer. Donc tant que l'esprit n'est pas clair, le code ne pourra l'être. De plus la question va à l'encontre de la proposition. Nuit_jour=1 alors que Global! ... en bref ... @971jmd Que veux-tu faire exactement ?
  8. Steven

    Support Gea

    @pepite J'espère qu'elle va te reconnaître dès le 1er coup. Ok,
  9. Steven

    Support Gea

    Chaque fois que GEA est déclenché par quelque chose qui se trouve dans le header ( sous %%properties ou %%global ), le système instancie une nouvelle instance de GEA qui va faire son travail puis mourir. Par contre l'instance qui, elle, tourne toujours "autostart" (toutes les 30 secondes) est unique ne s'arrête jamais (sauf si on redémarre la box ou si on sauve le scénario). Donc on peux l'utiliser pour y mettre plein de truc. GEA.add(..., 30, ...) --> Instance 1 de GEA GEA.add(..., 90, ...) --> Instance 1 de GEA GEA.add(..., -1, ...) --> Nouvelle instance de GEA soit instance 2 GEA.add(..., 60, ...) --> Instance 1 de GEA GEA.add(..., -1, ...) --> Nouvelle instance de GEA soit instance 3 Le seul moyen de communiquer entre ces instances sont les variables globales (ou un module virtuel) ... d'où l'existence de GEA_Tasks dans laquelle je stocke les RestartTask, StopTask, MaxTime, ... car ce sont des instructions qui doivent être disponible depuis n'importe quel instance. Voilà ... vous savez tous .. bien que ... à la relecture de mon texte, moi-même je n'y comprends plus rien :-) Si vous avez des questions ... profitez .. je suis là aujourd'hui :-) Edit : pas pour Hansolo car il a toujours des questions tordues ;-) Edit 2 : dans le cas précédent la variable wasAlwaysOn n'est visible que dans l'instance 1
  10. Steven

    Support Gea

    Tant qu'on est sur la même instance de GEA (pas de -1), on peux faire des variables dans une scène je vais pas me lancer sur le sujet car pas le temps de tester mais imaginons : wasAlwaysOn = false GEA.Add ({"Global","present_state","away"}, 30*60, "", {{"function",function() wasAlwaysOn = true end}}) GEA.Add ({{"Global","present_state","atHome"},{"function",function() return wasAlwaysOn end}}, 30, "",{{ACTION},{"function",function() wasAlwaysOn=false end}}) Edit : C'est la même chose que ce que propose Hansolo mais sans la variable globale. Par contre, c'est plus du -1 mais 30 secondes pour la 2ème instruction.
  11. Un vieux téléphone Android avec tasker. Le téléphone est connecté au secteur et dès qu'il bascule en mode batterie (plus d'électricité) il envoi un SMS si la box internet n'est pas sur onduleur, sinon il est possible d'envoyer un pushbullet, email, ....
  12. J'ai le même cas, une des pile était morte, j'ai remplacé la pile sans succès (toujours affiché en rouge). J'ai supprimé/réinclus le module aimant éloigné. Depuis, il est toujours en rouge et indique toujours que la porte est ouverte bien qu'elle soit fermée. J'ai une sonde sur ce module, la température remonte correctement. J'ai pas eu le temps de pousser plus loin les tests mais pour l'instant ce module est inutilisable hormis pour la température. Edit : le remplacement de la pile a eu lieu éloigné de l'aimant de mémoire.
  13. Steven

    Support Gea

    J'avoue que la création de cette variable n'est pas des plus documentée. La prochaine version sera plus parlante, promis.
  14. Steven

    Support Gea

    RestartTask utilise la variable globale GEA_Tasks ... cette dernière est-elle bien présente ?
  15. Steven

    Support Gea

    Tu as donc un soucis avec un SceneActivation, c'est comme si fibaro n'arrive pas trouver le nom de ton module ... vérifie que le module lié àun SceneActivation n'a pas changer d'ID stp.
  16. Steven

    Support Gea

    Tu as quoi à la ligne 626 de ton GEA ? Fibaro a enfin compris comment utiliser les Error() :-) et au lieu de remonter l'erreur que cela provoque dans leur code, il remonte l'erreur qui est à l'origine ... c'est vraiment plus pratique. [ fatal] Runtime error: /opt/fibaro/scenes/767.lua:626: attempt to concatenate a nil value[0m
  17. Steven

    Jour Chômé

    Il existe sà»rement d'autre solution pour traiter ce genre de cas ... perso, j'ai encore quelques while loop qui traine sinon je n'utilise que GEA. Pour tout ce qui est de durée inférieur à 30 minutes, il suffit de terminer par un fibaro:sleep() et le tour est joué, le problème ne se pose qu'au delà des 40mn (de mémoire) ou le "main loop" se casse la figure et ne fonctionne plus.
  18. Steven

    Pluviométrie Avec Netatmo

    Je viens de voir le post ... désolé. Perso, je ferais une scène (en mode bloc) qui s'exécute toutes les 10 minutes et qui va lancer la scène souhaitée. Ainsi tu pourras rafraîchir ainsi plusieurs scènes en les ajoutant simplement à celle ci. Simple non ?
  19. Steven

    Jour Chômé

    @pepite J'ai ajouté des commentaires dans le post précédent pour une meilleure compréhension ... c'est vrai que j'avais un peu "jetter" le code, désolé.
  20. Steven

    Jour Chômé

    Il y a aussi la méthode barbare mais moins coà»teuse car on ne compare pas de date et on joue sur le fait que le main loop est lancé toutes les 3 secondes. Attention, Fibaro a déjà changer cette valeur une fois. On compte simplement chaque exécution du main loop if (not instance) then instance = { index = 0 } end instance.index = instance.index + 1 -- 600 = 30 minutes (soit 1800 secondes) / 3 car le main loop est exécuté toutes les 3 sec. if (instance.index >= 600) then fibaro:call(fibaro:getSelfId(), "pressButton", "26") instance.index = 0 end code non testé
  21. Steven

    Jour Chômé

    Si tu ne fais pas de boucle, ton code va s’exécuter toutes les 3 secondes. Dans certain cas cela ne dérange pas du tout. Dans le cas ou tu fais des appels externe (http) cela devient désagréable (consommation de la bande passante) voir catastrophique si tu as un nombre d'appels journalier limités (par exemple les API Wundergroud ou Netatmo). Alors comment faire pour faire un appel toutes les 30 minutes par exemple ? A l'époque, de mémoire, chaque déclenchement du main loop était une nouvelle instance de ce dernier, il n'y avait donc aucun état mémorisable entre chaque exécution (hormis une variable globale). On utilisait donc une boucle pour ralentir l'exécution du main loop selon nos besoins. Aujourd'hui, c'est différent (ou ce l'était depuis le début mais j'avais pas fait attention) et on pourrait mettre un code du style : -- 1ère fois que le main loop s'exécute, on crée une variable nommée "instance" car elle n'existe pas. Elle existera au 2ème passage donc ne sera pas recrée. if (not instance) then -- on indique la fréquence d'execution souhaitée instance = { lastrun = 0, every = 30 } fibaro:debug("first run") end -- on vérifie la différence entre cette exéction et la dernière (stocké dans instance.lastrun) diff = os.date("*t", os.difftime(os.time(), instance.lastrun)) -- si la différence en minutes et supérieure ou égale à la fréquence souhaitée (instance.every) if (diff.min >= instance.every) then -- TON CODE --- fibaro:call(fibaro:getSelfId(), "pressButton", "26") -- FIN DE TON CODE --- -- on stock l'heure de la nouvelle exécution instance.lastrun = os.time() fibaro:debug("pressed") end NB : Ne pas oublier que le main loop est executé toutes les 3 secondes (aujourd'hui), donc avec ce genre de code, il est impossible de lui dire de s'exécuté après 5 secondes puisque la prochaine exécution du main loop aura lieu à la 6ème secondes.
  22. Arrives-tu me transmettre le résultat du générateur v2 stp ... par pm si possible.
  23. Steven

    Support Gea

    Petite précision sur la ligne : local TypeNotification = {Karotz=6, Pushbullet=2, Email=3, Free=4, Imperihome=8} C'est simplement que j'ai un module virtuel qui me permet soit d'envoyer la notification sur mon Karotz, ou par email, pushbullet, Imperihome ... le numéro correspond simplement au numéro du bouton qu'il faut appuyer. Après je l'utilise ainsi : GEA.add({{"Global+", "Poele", 20},{"Sensor+", 176, 5.0}}, 30*60, "Vérifier les pellets #value#", {{"Global", "Notification", "Veuillez vérifier les pellets"},{"VirtualDevice", id["NOTIFICATION_CENTER"], TypeNotification.Karotz},{"Repeat"}}) Je met mon message dans la variable global "Notification" J'appuie sur le bouton TypeNotification.Karotz ... soit le 6 afin de faire dire à mon Karotz le message contenu dans la variable. En bref, rien à voir avec les notfications de GEA.
  24. Pull request envoyé :-) Merci pour tes explications.
  25. Afin de savoir si une beta apporte ou non quelque chose, il faut la tester. C'est seulement en la testant que l'on peut confirmé ou affirmé un problème/une solution. Nous avons, à ce jour, une quantité impressionnante de modules, VD, à notre disposition, que Fibaro ne peux pas tester dans son intégralité. Il est donc aussi de notre devoir de tester ... MAIS ... un grand MAIS ... pour cela, il faut qu'on nous propose une solution de retour en arrière fiable (backup/restore) et sur ce point, Fibaro nous a prouvé que cela n'était pas 100% fonctionnel. Peux-ton faire revivre le lapin si on passe la marche arrière ? Personnellement, j'ai fait en sorte que ma domotique soit un bonus et non pas une nécessité .. donc je peux prendre le risque de tout casser. Par contre, j'en connais qui on 6 Zibases, + de 300 modules et qui ont domotisé le Vatican .. eux ne peuvent pas prendre le risque . Bon d'un autre côté, s'ils sont sur Zibase, ils s'en fichent de nos soucis. "Saurez vous vivre dangereusement? ;-)" Oui, je suis marié (pour la 2ème fois) ... j'ai re-cliqué sur le bouton "nouveauté" @q.philippe Voir quoi puisque justement, on voit rien de plus
×
×
  • Créer...