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. Steven

    Support Gea

    @Shyrka973 Je suis entrain de reécrire GEA pour simplifier justement ce type de maintenance/évolution. L'idée est de faire un tableau regroupant les fonctions afin de ne pas/plus aller changer les IF dans le code. Le tableau serait décrit ainsi : _stopscenario = { "name" = function(id) return "StopScene! : " ..id[2], "" end, "action" = function(id, entry) if (fibaro:countScenes(entry[GEA.keys["PARAMS"]][i][2])) then fibaro:killScene(entry[GEA.keys["PARAMS"]][i][2]) return true else return false end end }, _enablescenario = { "name" = function(id) return "EnableScene! : " ..id[2], "" end, "action" = function(id, entry) fibaro:setSceneEnabled(entry[GEA.keys["PARAMS"]][i][2], true) return true end } _disablescenario= { "name" = function(id) return "DisableScene! : " ..id[2], "" end, "action" = function(id, entry) fibaro:setSceneEnabled(entry[GEA.keys["PARAMS"]][i][2], false) return true end } Si tu fais GEA.add({"StopScenario", 2}, ......) GEA va automatiquement cherché _stopscenario["name"] pour afficher dans le debug et _stopscenario["action"] lorsqu'il doit lancé une action (sendAction). Ainsi, il suffit juste d'ajouter une entrée de ce tableau on on a plus besoin de modifier le code inbuvable du dessous. Il y donc ceci (exemple avec {"Global", variable, valeur}) _global["condition"] qui correspond à GEA.isActivate() .. retour vrai ou faux si la variable globale a la bonne valeur _global["name"] qui correspond à GEA.getName() ... retour le nom affiché dans le debug _global["action"] qui correspond à GEA.sendActions() ... effectue l'action souhaitée setGlobal() dans ce cas. Que penses-tu de cette idée ?
  2. Moi non plus ... preuve ... 2 écrans : Un avec mon VRAI travail, le 2ème pour lire tes pathétiques excuses
  3. Oui mais le petit suisse a été nettement plus rapide J'ai gagné ... dit ... j'ai gagné ?
  4. Steven

    Support Gea

    J'ai oublié de préciser Sensor va vérifier la propriété valueSensor (si tu es en 3.x) ou power (si tu es en 4.x) Si Sensor n'est pas clair pour toi ET que tu es en 4.x, tu peux remplacer GEA.add( {"Sensor-", .....}) par GEA.add( {"Power-", .....}) mais c'est exactement la même chose pour GEA.
  5. Steven

    Support Gea

    J'ai pire ... j'ai donc gagné Si le lave-linge consomme moins de 1.0W (éteint), je coupe la prise. Variable = OFF Si sa consommation est supérieure à 3.0W (en fonctionnement), Variable = RUNNING Si sa consommation est entre 1.0 et 2.5 et que la variable = RUNNING alors Variable = Waiting ... Il ne consomme plus donc est terminé Si la variable est Waiting plus de 30mn alors je rappel qu'il faut ce bouger les fesses. -- === Lave-Linge == -- GEA.add({"Global", "Lave-Linge", "WAITING"}, 30*60, "Le lave-linge est arrêté depuis #duration#", {{"Global", "Karotz", "Le lave-linge est arrêté depuis #durationfull#"},{"VirtualDevice", id["OPENKAROTZ"],"1"},{"Repeat"}}) GEA.add({"Sensor-", id["LAVE_LINGE"], 1.5}, 2*60, "", {{"turnOff"}, {"Global", "Lave-Linge", "OFF"}}) GEA.add({"Sensor+", id["LAVE_LINGE"], 3}, 2*60, "", {{"Global", "Lave-Linge", "RUNNING"}}) GEA.add({{"Sensor+", id["LAVE_LINGE"], 1},{"Sensor-", id["LAVE_LINGE"], 2.5}, {"Global", "Lave-Linge", "RUNNING"}}, 5*60, "", {{"Global", "Lave-Linge", "WAITING"}})
  6. C'est le code suivant de l'entête de ta scène qui va démarrer la scène à chaque enregistrement de la scène et redémarrage de la box: --[[ %% autostart --]]
  7. Autre cas de figure (que j'utilise). J'ai un module virtuel avec 10 boutons ... j'ai pas envie (je suis un flemmard) de mettre un icone derrière chaque bouton. J'en met juste un sur le module virtuel lui-même. Et je met le code soit derrière chaque bouton (copier/coller), soit dans le main loop. Donc quand on clique sur un bouton, l'icone du module virtuel sera automatiquement remis au lieu de laisser un icone pas beau. Je crois que cette astuce vient de Hansolo dans son module Jours Chômé (<-- cette phrase a pour but de contrôler, si Hansolo est cérébralement décédé ou pas).
  8. Steven

    Support Gea

    Dans ton cas, j'aurais utilisé le GEA.add ({"Sensor+", ...}, .........) ou GEA.add ({"Sensor-", ...}, .........) Je ne peux plus modifier GEA pour l'instant* mais libre à toi de modifier la version GitHub disponible ICI. * GEA étant devenu une usine à gaz et à pétrole ... et à charbon, je suis entrain de tester une nouvelle façon d'écrire le code pour une plus grand maintenabilité. Edit : suppression de la fin du message qui n'avait juste rien à voir et résultait d'un coller malheureux.
  9. Steven

    Support Gea

    Le code de GEA est celui-ci : fibaro:call(<ID>, "setProperty", "currentIcon", tostring(<ICON>) ) donc on s'enfiche des guillemets englobant le 1056. Pepite à raison mais j'avais corrigé cela il y a quelque version en arrière. Par contre ... il faut être 100% sà»r du numéro de l'icone (il a pus changer lors d'une mise à jour) et du VD.
  10. Steven

    Support Gea

    J'avais fait mon analyse au plus simple et au moins consommateur de temps .. je l'avoue. Tu as 100% raison et j'approuve ta modification ... comme d'habitude d'ailleurs.
  11. @Jojo Ok merci Attention avec cela : local icone = { 99 = 105, 50 = 106, 40 = 107, 0 = 108, 20 = 109, 30 = 110 } Car cela ne fonctionne pas il faut mettre [50]=106 local icone = { [99] = 105, [50] = 106, [40] = 107, [0] = 108, [20] = 109, [30] = 110 } Info pour info
  12. deviceIcon n'existe pas en 3.x ? En 4.x j'ai ceci comme début de propriété {"deviceIcon":271,"ip":"\"\"","port":0,"currentIcon":"271" ...
  13. Steven

    Support Gea

    @Fredric C'est quoi cette syntaxe bizarre :-) Voici la bonne syntaxe : GEA.add(true, 30, "", {{"Scenario", 70},{"Time", "09:25", "09:26"},{"Days", "Monday,Tuesday,Wednesday,Thursday"}}) Les jours sont tous dans entre les mêmes guillemets.
  14. Pour le X400-CT : Tu lis cet article ... avec attention car j'ai mis un peu de temps à le comprendre mais cela fonctionne : http://www.domotique-info.fr/2014/12/x400-ajoutez-4-sondes-amperemetrique-votre-ipx800/
  15. Voici le code sans appel direct àl'API : -- On reprend l'id de l'icone du module virtuel en cours local icon_id = fibaro:get(fibaro:getSelfId(), "deviceIcon"); -- Puis on en fait ce qu'on veux fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", icon_id);
  16. Steven

    Evénements

    C'est connu. Il faut redémarrer la Home Center et les événements vont redémarrer.
  17. Steven

    Virtual Device Et Main Loop

    Je le fais sur mon module virtuel de Chauffage (cf ma signature). L'appui sur un bouton (+1, +0.5,...) va chercher une valeur visible d'un label, faire un calcul puis modifier la valeur du label. Les labels sont utilisable comme des variables globales.
  18. Steven

    Virtual Device Et Main Loop

    Malheureusement cela n'est pas possible. Vu que chacun (main loop, bouton, ...) travail de manière étanche, il n'y a pas d'autre moyen que de dupliquer le code ou de jouer sur des variables globales pour piloter le tout. Exemple le métier se trouve dans le main loop en attente qu'un variable globale change d'état (pulling) ou une scène (pour profiter des événements). Ainsi le code métier est uniquement à un endroit et les boutons ne pilotent que des variables globales. Je suis pas très clair ... désolé.
  19. Steven

    Evénements

    Il faut remettre le port 11111. En redémarrant ta box, cela devrait repartir ... mais pour combien de temps ?
  20. Steven

    Evénements

    Voici mon code que j'ai derrière le bouton Rafraichir; HC2 = Net.FHttp("127.0.0.1",11111) response = HC2:GET("/api/panels/event?last=1000&type=id") local t = json.decode(response) local j = 0 for i = 1, 1000 do local msg = fibaro:getName(t[i].deviceID) .. " | " .. t[i].oldValue .. "->" .. t[i].newValue .. " | " .. os.date("%X", t[i].timestamp) if (string.match(t[i].deviceType, "com.fibaro.*.Sensor")) then -- pas interessant else j = j + 1 pcall(function() fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label"..j..".value", msg) end) end end Je te laisse tester.
  21. Steven

    Support Gea

    Disons que c'est a utiliser avec parcimonie car on peut facilement planté tout GEA Mais lorsque cela n'est pas possible nativement avec GEA on peut, grâce à cela, éviter de faire un script trop compliquer et juste greffer une ou deux fonctions directement dans son code GEA.
  22. Steven

    Support Gea

    @Fredric -- 30 mn avant le couché du soleil on active la scène ... GEA.add(true, 30, "", {{"Time", "Sunset-31", "Sunset-30"}, {"Function", function() fibaro:setSceneEnabled(<IDSCENE>, true) end}}) -- 50 mn après le couché du soleil on DESactive la scène ... GEA.add(true, 30, "", {{"Time", "Sunset+50", "Sunset+51"}, {"Function", function() fibaro:setSceneEnabled(<IDSCENE>, false) end}}) Attention : Non testé.
  23. Steven

    Support Gea

    @Fredric Ce n'est pas un VD pour activer/désactiver l'alarme, mais un VD style réveil. http://www.domotique-fibaro.fr/index.php/topic/1211-support-gea/?p=53670 @PITP2 Tu aurais pu en profiter pour leur dire qu'on a des perf de m... depuis la 4.x C'est clair que si tu y greffes une interface style le mode bloc ... cela devient du luxe mais faut pas rêver.
  24. Steven

    Support Gea

    Pour corrigé le inc+ et le dec-, il suffit de chercher la ligne suivante : if (GEA.match(entry[GEA.keys["PARAMS"]][i][3], "inc+")) then et de remplacer le mot GEA.match par string.match idem pour cette ligne elseif (GEA.match(entry[GEA.keys["PARAMS"]][i][3], "dec-")) then
  25. Steven

    Support Gea

    Rien à voir avec les regex dans ce cas, le message contenant le + est envoyé (je suppose) dans une requête HTTP du style : http://......./text=+30 arrossage samedi Or le + en HTTP signifie un espace. Le + ne sera donc jamais transmis. Cela n'a rien à voir avec GEA. Pour le inc+, c'est une autre histoire qui, elle, est bien liée au regex et est un bug dans GEA.
×
×
  • Créer...