Welcome to Domotique-fibaro

 

Inscrivez-vous maintenant pour accéder à toutes nos fonctionnalités. Une fois inscrit et connecté, vous serez en mesure de contribuer à ce site en soumettant votre propre contenu ou en répondant au contenu existant. Vous serez en mesure de personnaliser votre profil, de recevoir des points de réputation comme une récompense pour la soumission de contenu, tout en communiquant avec d'autres membres via votre boîte de réception privée, et bien plus encore! Ce message sera supprimé une fois que vous vous êtes connecté.

 

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Felig

Membres confirmés
  • Compteur de contenus

    31
  • Inscription

  • Dernière visite

Réputation sur la communauté

2 Neutral

À propos de Felig

  • Rang
    Nouveau

Profile Information

  • Sexe :
    Homme
  • Ville :
    Le Vesinet - Ile de France
  • Box
    Home Center 2
  • Version
    4.12
  1. J'avais déjà essayé et ça ne marchait pas. Mais je crois que j'ai compris pourquoi: le temps que la 2ème instance se déclenche, la 1ère était terminée, et le nb d'instance restait à 1. En mettant un sleep à la fin de la scène ça marche beaucoup mieux. La j'ai countscene + le sleep à la fin et ça roule. En limitant le nb d'instance à 1 ça devrait marcher aussi j'imagine maintenant.
  2. Pas bien compris le coup de faire un autre test, mais le countscene bonne idée, je vais tester ! je connaissais pas fibaro:abort Une autre solution que j'ai trouvée entre temps c'est de diviser ma scène en 2 scènes: une qui détecte, l'autre qui est appelée par la première et qui désactive la scène qui détecte. Mais bon 2 scènes au lieu d'une c'est pas super optimisé.
  3. Bonjour, Je travaille sur une scène qui est déclenchée quand on modifie l'icone d'un VD. Le déclencheur est donc du type %% properties 105 currentIcon Jusque là tout va bien. Par contre, dans le script de la scène je modifie de nouveau l'icone, ce qui conduit la scène à s'auto appeler dans une nouvelle instance, ce que je ne souhaite pas. Est-ce qu'il y a une commande qui permet de suspendre le déclenchement automatique d'une scène ? J'ai essayé d'utiliser fibaro:setSceneEnabled(xx, false) , mais le problème c'est que ça interrompt complètement le script quand je l'applique sur la scène en cours, alors que je souhaite qu'il continue à s'exécuter. Je veux juste suspendre le trigger "%% properties" pendant une commande, puis le réactiver à la fin du script. J'ai aussi essaye de limiter le nombre d'instances à 1, mais ça ne marche pas : j'ai l'impression que l'instance qui est "tuée" est la première, pas la nouvelle. Quelqu'un a une idée ?
  4. Merci pour vos encouragements, j'ai bien conscience que je suis au pire moment de mon apprentissage. Mais je me disais que ça pouvait aussi rassurer ou aider d'autres qui passeront par les mêmes étapes. Je n'arrive même pas à citer quelqu'un proprement sur le forum, donc encore beaucoup à apprendre ... Et la V3 a l'air d'aller dans le bon sens effectivement (clics droit sur le design, etc.) @chris6783: t'es fou, le look c'est le plus important ! sinon je serai passé sur eedomus (entre parenthèses, box moche mais qui a l'air super simple à apprendre par contre)
  5. J'avais utilisé cette méthode pour changer le nom de mes zones de panneaux de chauffage (je suis toujours en 4.12 par contre): local HC2 = Net.FHttp("127.0.0.1",11111) hpid = xxx -- id du panneau de chauffage response = HC2:GET("/api/panels/heating/"..hpid) hpname = json.decode(response).name -- ancien nom fibaro:debug("Ancien nom: " .. hpname) hpname = yyyyyy -- nouveau nom newhp = ('{"id":'.. hpid ..',"name":"'.. hpname .. '"}') HC2:PUT("/api/panels/heating/".. hpid, newhp)
  6. Bon j'ai franchi le pas il y a un peu plus d'une semaine, pour contrôler mes volets Somfy RTS, et plus si affinités. Pour le 1er objectif, pas de problème, je contrôle tous les volets de la maison à partir de la Jeedom, et de la HC2, grâce aux commandes apiKey. Pour le 2ème objectif, j'ai démarré avec beaucoup d'enthousiasme, mais je commence à être déçu. Absolument rien n'est intuitif dans l'interface, la documentation ne répond jamais à mes questions, le forum est très frustrant (aucun tuto, et on trouve des questions anciennes laissées sans réponse). Je donne quelques exemples de mes premiers pas: Une fois mes modules volets paramétrés, j'ai essayé de rendre l'écran de départ plus joli, comme sur les copies d'écran de @sebcbien. Il y a 3 modes pour l'interface: dashboard, design et vue. Devinez dans lequel on change la couleur du fond d'écran ? Aucun. C'est dans ... le profil admin (oui, là où on change le mot de passe). Ça a l'air un détail, mais j'ai perdu un temps fou pour le trouver. Ensuite j'essaie de changer la couleur et la transparence de mes modules (toujours en mode édition). J'essaie clic droit, clic gauche, double clic, peine perdue, je n'ai pas trouvé. En fait, il faut aller en fait dans les paramètres de la Jeebox. Ok c'est pas grave, mais vous trouvez ça intuitif vous ? Bon ensuite, j'essaie de disposer mes modules bien alignés sur la page. Pour cela je passe en mode édition sur le Dashboard, je les dispose, je sors du mode édition. Et bien raté, quand je quitte et reviens, ils sont de nouveau disposés à la façon Jeedom. Apparemment, il faut être en mode Design pour que les positions soient mémorisées (mais à quoi sert le mode édition du Dashboard alors ?). Bon, j'arrête l'esthétique, et me lance dans le plugin Agenda, pour l'ouverture et la fermeture des volets. Je créé un événement qui démarre à 22:00 et finit à 22:01 (comme sur GEA), et tout fier préviens la famille que les volets vont se fermer tous seuls. Encore raté. Je recommence avec un délai plus long (22:00 à 22:15) et là ça marche. Faut-il un délai minimum pour les taches agenda ? Est-ce que ça veut dire que l'heure de démarrage est très imprécise ? Pas trouvé de réponse dans le forum. Par contre je trouve des messages qui se plaignent de bugs dans le plugin Agenda, et du fait que seuls les jours fériés français sont pris en compte. Oups, j'abandonne et programme tout sur GEA. Il me faut quand même une commande pour fermer tous les volets à la fois. Je comprend que le mieux est de créer un module virtuel (avec le plugin Virtuel) pour regrouper toutes les commandes. Le regroupement des commandes se fait facilement, je met des petites icônes, c'est pas très joli, mais prend moins de place que sur la HC2. Pour créer des textes (le nom de chaque volet) il faut insérer des variables. Là aussi, pas très intuitif (si on donne une valeur à la variable et qu'ensuite on l'efface, elle ne sera pas effacée sur le module, en fait il faut un taper un espace pour la faire disparaitre), mais c'est comme sous HC2 (les labels), donc pas de pb. Par contre la galère commence quand je veux créer une commande pour actionner tous les volets en même temps. Je veux insérer un délai entre chaque commande, pour éviter les conflits. Impossible de mettre tout ça derrière un bouton d'un module virtuel apparemment, il faut créer un scenario (l'équivalent de la scène sous HC2). Je crée donc mon premier scenario. C'est assez rapide et on est bien guidés. Juste un point: ceux qui disent que c'est facile de déplacer des instructions d'un bloc à l'autre ne doivent pas le faire sous firefox, c'est tellement galère que deux fois sur trois, la commande n’atterrit pas du tout là où je veux. Bref, in fine mon scenario est prêt. Il n'y a plus qu'à l'appeler de mon module virtuel. Et bien j'ai tout essayé, impossible. Un bouton de module virtuel ne peut commander qu'un équipement, ou changer une variable. Le coup de la variable, il faut chercher sur internet pour comprendre: c'est le même champ pour actionner un équipement ou pour donner le nom de la variable, mais aucune indication dans l'interface. Je comprend in fine que la seule solution est donc d'utiliser une variable, et de déclencher le scenario quand la variable change... Bon, je suis au début, probablement que ça ira mieux quand je maitriserai les différentes interfaces. J'ai sans doute écrit des bêtises, parce que je n'ai pas trouvé la bonne manière de faire, et je suis preneur de conseils et solutions. Bien sûr que je ne vais pas abandonner, c'est toujours amusant de découvrir une nouvelle box. Mais je pense que le design s'est totalement raté sur le côté intuitif. Et ça c'est pas bon au moment ou Apple se lance. Ce sera peut-être une box plus fiable que la HC2, mais à mon avis pas la box de référence qui va démocratiser la domotique. Et la fiabilité des plugins ne semble pas aussi parfaite que j'espérais quand on se promène un peu sur les forums.
  7. La question n'est plus d'actualité depuis le temps, mais si d'autres ont la même question, voici la réponse: -- tous les arguments doivent être saisis en format nombre (pas de " ") local idVD = xx -- id du VD local ligne = y -- ligne du VD où se trouve le bouton (toutes les lignes comptent, y compris celles où il y a des Label) local ordre = z -- numéro du bouton sur la ligne (1 = 1er bouton, etc.) local reponse = api.get("/virtualDevices/"..idVD) local libelleBouton = reponse.properties.rows[ligne].elements[ordre].caption Sur l'exemple ci-dessous, ligne = 2 et ordre = 3 donnera "Arrêt"
  8. Votre avis ?

    Bonsoir, Désolé de ressortir un sujet vieux de 2 ans, mais le code proposé par @Steven est très utile je trouve, pour restaurer facilement les icones des VD, sans avoir à les noter. Par contre j'ai eu un problème en voulant l'utiliser dans une scene. Après beaucoup de tests, je me suis aperçu que c'était lié à un bug de la fonction json.encode: quand on récupère un tableau avec cette fonction, et qu'on essaie d'actualiser une entrée existante du tableau, ça la duplique parfois au lieu de l'écraser. Donc j'avais plusieurs icones pour le même module, et la scene ne restaurait pas toujours la bonne icone. J'ai trouvé une solution de contournement: je transfère les valeurs du json.encode (tableau t1) une par une dans un nouveau tableau (tableau t2), et le nouveau tableau lui se comporte normalement, sans duplication de valeurs. Bref, voici le code qui fonctionne chez moi: --[[ %% autostart %% properties 145 currentIcon 195 currentIcon 105 currentIcon 138 currentIcon 139 currentIcon --]] -- code inspiré de Steven (avril 2015) mais beaucoup moins beau, désolé! local variableGlobale = "listicones" local trigger = fibaro:getSourceTrigger() if (trigger.type == "property") then local prop = trigger.propertyName local device = trigger.deviceID local val = fibaro:getValue(device, prop) local t2 = {} -- tableau dans lequel seront transférées les valeurs du json.decode -- mémorisation de l'icone qui vient d'être changée if tonumber(val)>999 then -- test pour éviter de mémoriser l'icone bleue fibaro:debug(string.format("Module Virtuel %s (%d) propriété %s = %s", fibaro:getName(device), device, prop, val)) local icones = fibaro:getGlobalValue(variableGlobale) -- vérificaion que la variable globale n'est pas vide ni ne contient une valeur incorrecte if icones ~= nil then if string.sub(tostring(icones),1,1) ~= "{" then icones = "{}" end end -- si la variable globle n'est pas vide on transfère les entrées Vd,icones dans le nouveau tableau t2 if icones ~= nil then -- pour ce test "{}" semble équivalent à nil fibaro:debug("Liste précédente: " .. icones) local t1 = json.decode(icones) for k,v in pairs(t1) do if tonumber(k) ~= tonumber(device) then t2[k] = v end end end -- Ajout ou modification de l'icone du device trigger t2[device] = val -- réencodage de la variable globale icones = json.encode(t2) fibaro:debug("Liste actualisée: " .. icones) fibaro:setGlobal(variableGlobale, icones) fibaro:debug(" ") end elseif (trigger.type == "autostart" or trigger.type == "other") then -- restauration des icones précédemment enregistrées if trigger.type == "autostart" then fibaro:sleep(10*1000) end fibaro:debug("==== Mise à jour des icones sur les VD ====") local icones = json.decode(fibaro:getGlobalValue(variableGlobale)) for k,v in pairs(icones) do fibaro:debug(string.format("Module : %s - currentIcon %s", k, v)) fibaro:call(tonumber(k), "setProperty", "currentIcon", v) end end
  9. Besoin daide

    @pepite Oui, j'ai résolu mon pb comme ça effectivement, merci. Mais j'aurais bien aimé savoir faire quand même (le boulet qui lâche pas ). Ca permettrait d'éviter le double changement d'icone (appui sur le bouton -> icone vierge -> code lua pour mettre la bonne), sachant que j'utilise un module de Steven qui se déclenche à chaque changement d'icone pour les enregistrer et les restaurer ensuite. On pourrait aussi utiliser les icones des boutons pour remplacer des variables globales (en fonction de l'icone du bouton, action différente pour le bouton) et ... euh ... ok, rien de tout ça est super utile, j'avoue PS: Mais si quelqu'un trouve ... (ok, je sors vraiment) Edit: lien du module de Steven (et non pas Lazer, pardon!) https://www.domotique-fibaro.fr/topic/4135-test-icone-utilisã©e-dans-un-vd/?do=findComment&comment=68049
  10. Besoin daide

    Bon je me rapproche: le code ci-dessous donne le numéro de l'icone du bouton 1 sur la 6ème ligne du VD. local reponse = api.get("/virtualDevices/"..195) numicone = reponse.properties.rows[6].elements[1].buttonIcon
  11. Besoin daide

    Oui mais ça c'est l'icone du VD, pas du bouton ? Mais ça me donne une idée. Edit: Voilà, j'ai trouvé ça en avec un json.encode sur le VD: {"type":"button","elements":[{"lua":true,"empty":false,"msg":"local mode = \"Auto\"\nlocal glob = \"chaufssol\" -- variable globale\nlocal self = fibaro:getSelfId()\nfibaro:setGlobal(glob,mode)\nfibaro:call(self,\"setProperty\",\"ui.LbAuto.value\",mode)\n\n-- passage en Auto sera détecté par GEA qui prend le relais","caption":"Auto","name":"Button2","main":false,"favourite":false,"buttonIcon":1013,"id":2,"waitForResponse":false} Vous voyez le "buttonIcon":1013 à la fin ? C'est ça que je veux modifier. Comment je fais en évitant de me planter dans le réencodage de l'API (pas le moment de planter ma HC2 vu que suis à plusieurs milliers de km de distance ...)
  12. Besoin daide

    Madame dort dans la pièce à côté et n'a aucune demande, le wifi est peu encombré la nuit (hotel oblige) ... trop tentant !
  13. Besoin daide

    @Cardane Je te rassure, je sais que ta méthode est la plus logique, et c'est comme ça que j'avais commencé. Mais comme je suis dans "l'optimisation outrancière du à une oisiveté excessive", je voulais réduire le nombre de boutons sur le VD, sachant qu'il y en déjà beaucoup pour l'utilisateur. Donc si j'en ajoute aussi plein juste pour GEA, le VD va être brouillon.
  14. Besoin daide

    Ah ça j'aime, c'est élégant sans être tordu, et c'est une syntaxe que je n'utilise pas encore. Merci Pépite! PS: Si quelqu'un connait le moyen de changer l'icone du bouton directement par une API ou autre, ça m'intéresse quand même, juste par curiosité! Edit: voici pour info le code de mon bouton "avant Pépite". Avec une variable icone{} et une variable modefp{} ca sera beaucoup mieux local self = fibaro:getSelfId() local conf = fibaro:get(self,"ui.LbConf.value") if conf == "Confort -1°" then local modefp = "50" -- fil pilote 41-50 fibaro:call(self,"setProperty","currentIcon",1015) elseif conf == "Confort -2°" then local modefp = "35" -- fil pilote 31-40 fibaro:call(self,"setProperty","currentIcon",1016) else local modefp = "100" -- mode confort par défaut 51-100 fibaro:call(self,"setProperty","currentIcon",1014) end fibaro:call(170,"setValue",modefp) fibaro:call(177,"setValue",modefp)
  15. Besoin daide

    Oui ca marche aussi, mais il faut une variable globale juste pour ca. Edit: Merci pour votre aide, je sais que c'est tordu et que je peux résoudre mon pb facilement de différentes manières. J'étais juste curieux de savoir si on pouvait accéder à la propriété "icone" d'un bouton de VD. Je suis en vacances alors je cherche des trucs compliqués pour m'occuper je suppose...