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. De manière très simpliste. Si on prend un retour en json : local response = json.encode({token="ABCDEFG", result=true, deviceStatus="IDLE", data={}}) Et qu'on veux chercher simplement la valeur (un string) d'un élément, il suffit de faire ainsi : local key = "token" print(response:match("\""..key.."\":.(%w+).")) Il ne faut pas d'espace dans la valeur mais pour un token, il n'y en a jamais :-)
  2. Si tu appuie sur "Démarrer" tu auras automatiquement une erreur car il cherche l'ID du déclencheur de la scène et il n'y en a pas quand tu cliques sur "Démarrer"
  3. Je ne faisais que de répondre à une question sans même regarder le contexte de cette dernière. Au lieu de jouer sur le VD, ce qui ne semble pas fonctionner correctement, voici une proposition qui me semble plus propre. Si j'ai plusieurs instances d'une même scène qui sont appelées trop fréquemment, je les mettrais en attente le temps que la précédente se termine. Je garanti ainsi un traitement séquentiel. Le code est des plus basique : while fibaro:countScenes() > 1 do fibaro:sleep(100) end Cela devrait empiler les instances de scène et les libérer une par une. Fini ta scène par un petit fibaro:sleep(200) pour t'assurer que ton VD a bien eu le temps de transmettre les données.
  4. Steven

    Fibaro Marketplace

    Tout le monde pompe tout le monde ... le 1er à avoir mis de la couleur dans le debug est @Krikroff à ma connaissance. Perso, j'ai pompé l'idée sur lui pour GEA. Après je n'ai pas recopié son code mais j'ai copié le principe.
  5. Steven

    Heating Manager

    Je ne doute pas de l'utilité de cela pour des radiateurs mais pour un poêle c'est moins transcendent. On arrête pas un poêle à l'ouverture d'une fenêtre, le temps de chauffe d'un poêle est trop long pour utiliser la gestion de présence (il doit chauffer avant qu'on arrive). Perso, mon poêle est le seul moyen de chauffage de toute la maison, je n'ai qu'une seule zone. Je modifie le mode de chauffe (éco/normal) (en pilotant les turnOn/turnOff*) selon l'état de la TV ou autre. Donc dans mon cas bien précis, mes besoins ne correspond malheureusement pas à ce développement. Par contre, je plussoie à 1000% pour un usage électrique à 90% pour du poêle. * Si mon poêle détecte un "ON" constant, il est en mode NORMAL ... un "ON" de 2-3 secondes toutes les 5 minutes il passe en mode ECO
  6. Steven

    Google Home

    Tu devrais avoir dans le log : [DEBUG] XX:XX:XX Device reconnu : ....... Si tu n'as pas cela c'est que dans ta commande lilli tu n'as pas tout à fait la même chose (parfoit un espace qui traine)
  7. Je viens du monde Java ou les NullPointer exception son mon clavaire quotidien donc au début de l'histoire de GEA j'avais ajouté ce code. D'ailleurs, je code toujours en LUA avec les pieds et tu n'as rien à apprendre de moi, je te l'assure. Je fourni juste des scripts qui fonctionnent et qui, avec un peu de chance, sont utiles mais je n'ai aucune expertise en LUA.
  8. Steven

    Support Gea

    Bientôt C'est juste que Fibaro a des soucis avec les notifications ou que tu n'as pas mis ton GEA.portables = {} à jour, mais le code à bien fonctionné.
  9. Heuuu ok, tu ne parles pas de VG mais de variable globale au sens programmation. Donc c'est le if (not GEA) then GEA = {} end qui te dérange ? En effet, il ne sert à plus rien ... mais il ne coûte rien non plus.
  10. Ben non, c'est juste que tu n'as pas bien du lire le code Il n'y a qu'une seule variable globales GEA_Tasks et elle ne stocke que des R12, S23, ... qui permet de savoir si la tache #12 doit être redémarrée la #23 stoppée ... ce qui permet d'avoir un traitement entre les instances de GEA. En aucun cas les functions sont stockées dans des VG,. @Lazer D'ailleurs, oublie pas de tirer la chasse d'eau un peu plus souvent ton CO2 est en augmentation
  11. Steven

    Heating Manager

    Oui c'est bien cela, j'utilise juste un hysteresis de +/- 0.7 degré et c'est parfait. Je suis sûr que l'on peut mieux faire mais je ne me suis jamais posé la question.
  12. Steven

    Google Home

    Bien sûre que l'on peux se passer de lili, d'ailleurs mon script est faire pour puisque dans les synonymes tu peux directement mettre une function. ["allume le salon"] = function() ... end mais cela nécessite de TOUT faire manuellement ce qui n'est pas le but original de ce script.
  13. Steven

    Support Gea

    A ben ça cela me plaît : [DEBUG] 15:51:08: Ajout immédiat : #5 [DEBUG] 15:51:08: -------------------------------------------------------------------------------- [DEBUG] 15:51:08: @0s [Validation*] #5 [DEBUG] 15:51:08: @0s [Démarrage] #5 C'est que cela fonctionne correctement :-)
  14. Steven

    Support Gea

    T'inquiète pas, ce code vient de @pepite alors c'est normal qu'il y aille des bugs ... tout le monde sais que moi je n'en fais JAMAIS ... je dis bien JAMAIS ... sauf parfois, peut-être un petit ou deux, par-ci par-là, de temps en temps, par inadvertance ou par fatigue ... bref, ok, très très souvent Mais que ne fais rien n'a rien.
  15. Steven

    Support Gea

    Ben c'est simple, vu que le froid n'est pas mon ami, tu vas modifier le code de GEA pour me donner l'information que j'ai besoin Cherche dans le code ces lignes : centralsceneevent = {name="CentralSceneEvent", ... getValue=function(id, key, attribute) return (GEA.source.event.data.id==tonumber(id) and tostring(GEA.source.event.data.keyId)==tostring(key) and tostring(GEA.source.event.data.keyAttribute)==tostring(attribute)) end c'est le getValue= qui m'intéresse et que tu vas remplacer par ces lignes : centralsceneevent = {name="CentralSceneEvent", ... getValue=function(id, key, attribute) tools.warning("Id : " .. GEA.source.event.data.id) tools.warning("KeyId : " .. GEA.source.event.data.keyId) tools.warning("keyAttribute : " .. GEA.source.event.data.keyAttribute) return (GEA.source.event.data.id==tonumber(id) and tostring(GEA.source.event.data.keyId)==tostring(key) and tostring(GEA.source.event.data.keyAttribute)==tostring(attribute)) end En suite, tu appuies sur le bouton et dans le debug, en jaune, devrait apparaître ces 3 lignes supplémentaires que tu voudrais bien me communiquer stp Courage
  16. Steven

    Support Gea

    @971jmd J'insiste mais pour moi l'id : id["CLIMCHAMI"] n'est pas correct
  17. Steven

    Support Gea

    @Gandalf @pepite L’événement arrive bien à GEA [DEBUG] 14:18:42: Démarrage par évenement de GEA 6.00beta5 (mode event [nil]) [DEBUG] 14:18:42: Chargement du code utilisateur setEvents() ... [DEBUG] 14:18:42: -------------------------------------------------------------------------------- [DEBUG] 14:18:42: Ajout immédiat : #5 Mais GEA n'est pas capable de faire le lien entre l'événement et le code suivant {"CentralSceneEvent", 169, 1, "Pressed"} Ce qui veux dire qu'il y a un bug dans cette version de GEA mais je n'ai rien à la maison capable de me fournir du CentralSceneEvent pour tester :-(
  18. math.randomseed(os.time() + fibaro:countScenes()) devrait le faire proprement. Le soucis est que os.time() ne prend en compte que les secondes et non pas les centièmes
  19. Steven

    Support Gea

    Dans 99% des cas, cela est du à l'ID qui n'existe pas.
  20. Steven

    Zibase et HC2

    Essaie de jeter un oeil ici : http://www.domotique-info.fr/2013/11/google-script-au-service-de-votre-zibase/
  21. Steven

    RIP

    @OJC :
  22. deviceId est utilisé par Fibaro pour la recherche d'un module. As-tu bien contrôler les numéros d'id des tes détecteurs ?
  23. Steven

    Google Home

    Ton exemple n'est pas un synonyme mais une utopie.
  24. Steven

    Google Home

    Je n'ai rien vu de tel dans les paramètres.
  25. Non testé Si détection, on démarre une attente de X minutes. A la fin de cette attente, si on est toujours le dernier détecteur à avoir été activé alors on modifier les variables globales en conséquence. Je pense difficile de faire plus optimisé. Ce scénario ne peut être exécuté que par le déclenchement d'un détecteur. L'appui sur le bouton [Play] du scénario va le faire planté --[[ %% properties 1 value 2 value ]]-- local duree_attente = 15 -- 15 minutes local detecteurs = { -- [<id_detecteur>], <variable globale> [1] = "MOI_DEHORS", [2] = "MOI_DODO" } -- --------------------------------------- -- Est-il bien le dernier déclenché -- --------------------------------------- function isLast(id) local lastBreached = tonumber(fibaro:getValue(id, "lastBreached")) for k, _ in pairs(detecteurs) do if (lastBreached < tonumber(fibaro:getValue(k, "lastBreached"))) then return false end end return true end -- --------------------------------------- -- Modifie les variables globales -- --------------------------------------- function setGlobal(id) for _, v in pairs(detecteurs) do fibaro:setGlobal(v, "0") end fibaro:setGlobal(detecteurs[id], "1") end -- ------- Programme principal ----------- local id_declencheur = tonumber(fibaro:getSourceTrigger().deviceID) if (fibaro:getValue(id_declencheur, "value") ~= "0") then setTimeout(function() if (isLast(id_declencheur)) then setGlobal(id_declencheur) end end, duree_attente*60*1000) end
×
×
  • Créer...