neliger Posté(e) le 27 mars 2015 Signaler Posté(e) le 27 mars 2015 Bonjour, Actuellement occupé à créer quelques modules virtuels, je me pose quelques question de débutant dans cet environnement : 1) De base, le module virtuel a deux paramètres : une IP et un port. Est-il possible d'ajouter d'autres paramètres ? De masquer ceux-là pour les modules où ils ne sont pas pertinents ? 2) Pour les icônes, je travaille actuellement avec les Id numériques d'icônes que j'importe. Existe-il un moyen de packager les icônes dans le module virtuel afin de pouvoir distribuer et importer l'ensemble sans forcer l'utilisateur à manipuler les Id ? 3) Pour provoquer l'appui sur un bouton de l'interface depuis la boucle principale, j'utilise ceci : fibaro:call(fibaro:getSelfId(), "pressButton", "11") où "11" est la position du bouton dans l'interface. Est-il possible d'utiliser à la place l'Id renseigné sur ce bouton (je trouverais ça plus propre) ? Merci d'avance pour vos réponses
jojo Posté(e) le 27 mars 2015 Signaler Posté(e) le 27 mars 2015 1) ces champs IP/Port sont (je pense) utilisés pour accéder à des sites autres que ta box. Moi je les utilise pour paramétrer mon VD ou transférer des infos d'un bouton à l'autre (ou depuis le mainloop) sans devoir passer par une variable globale 2) pas à ma connaissance, mais si c'est possible, je suis preneur 3) pas à ma connaissance, je trouve cela également ridicule, car si tu changes l'ordre (rajoute un label, ...) tu dois changer ton "pressButton" 1
neliger Posté(e) le 27 mars 2015 Auteur Signaler Posté(e) le 27 mars 2015 L'IP/Port, je m'en sert pour un module virtuel que je suis en train de créer pour gérer ma box Wimax. Par contre, je suis surpris de voir que ces champs sont là par défaut et ne semblent pas modifiables. En tout cas, je vois que mes questions n'ont pas l'air si idiotes finalement, merci pour tes réponses !
neliger Posté(e) le 27 mars 2015 Auteur Signaler Posté(e) le 27 mars 2015 J'ai oublié une question : existe-il un moyen d'utiliser une variable de la boucle principale dans le code d'un bouton ?
jojo Posté(e) le 27 mars 2015 Signaler Posté(e) le 27 mars 2015 tu peux faire ce genre de transfert via les champs Port ou IP, ou via une variable globale (fibaro:setGlobal('NomVariableGlobale', 'abc') / fibaro:getGlobal('NomVariableGlobale') oui, il sont modifiables. le champ IP est de type CHAR et le champ TCP est de type NUM pour mettre à jour la valeur du Port : -- action = 1 local HC2 = Net.FHttp("127.0.0.1",11111) local action = ('{"id":'.. fibaro:getSelfId() ..',"properties":{"port":1}}') HC2:PUT(fibaro:getGlobal("GETvirtualDevices") .. fibaro:getSelfId() , action) pour la lire : local action = fibaro:get(fibaro:getSelfId(),"TCPPort") action = tonumber(action) 1
neliger Posté(e) le 27 mars 2015 Auteur Signaler Posté(e) le 27 mars 2015 Par "modifiable" je voulais dire que l'on puisse ajouter d'autres champs et supprimer IP/Port. Merci pour les instructions concernant les variables globales, je vais voir si ce sont des globales au niveau du système ou au niveau du module, car je n'ai pas besoin de sortir du module dans le cas qui m'occupe actuellement, et j'utilise déjà IP/Port pour leur but originel. Je veux juste éviter de poser des variables que l'utilisateur devra modifier hors de la boucle principale.
jojo Posté(e) le 27 mars 2015 Signaler Posté(e) le 27 mars 2015 il y a seulement deux types de variables (àma connaissance) : local : au niveau d'un mainloop ou d'un bouton ou d'une scène global : utilisable partout pour échanger des infos simples et courtes au sein d'un VD, j'utilise quand je peux les champ Port ou IP, ce qui rend mon VD plus portable, car il ne faut pas créer manuellement de variable globale 1
mprinfo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 Local n est pas obligatoire Mais si tu ne le mets pas local elle sera global juste dans le bouton Pour envoyer des valeurs de variables a un autre bouton j utilise un json vers une variable globale est je récupérer dans l'autre bouton Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 Vers une variables globale que tu aurras créé dans le panneau des variables Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 C'est impossible au niveau du module certains mettent la variable dans l étiquette a toi de voir Envoyé de mon SM-G900F en utilisant Tapatalk
mprinfo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 Le port 11111 c'est pour utiliser le serveur local en local et donc pas besoin de user et password Envoyé de mon SM-G900F en utilisant Tapatalk
jojo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 Local n est pas obligatoire Mais si tu ne le mets pas local elle sera global juste dans le bouton Pour envoyer des valeurs de variables a un autre bouton j utilise un json vers une variable globale est je récupérer dans l'autre bouton Envoyé de mon SM-G900F en utilisant Tapatalk 2 questions : Quelle est la différence entre local et global au niveau du bouton ? je sais sauver un json (une table) dans une variable globale, mais comment la relire et la récupérer sous forme de table/json ? avec fibaro:getGlobal, je récupère un champ texte Merci
mprinfo Posté(e) le 30 mars 2015 Signaler Posté(e) le 30 mars 2015 @jojo je t'ai envoyé un MP pas trop temps ce soir je t'expliquerai demain car il y a plusieurs solution
mprinfo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 @jojo voici un exemple simple, les termes que je vais employer ne sont peut être pas exact. Car il date .... local test1 = "bonjour" for i=1,1 do local test2 = test1 fibaro:debug("Affiche boucle = "..test2) end fibaro:debug("Affiche Apres la boucle = "..test2) dans ce script il va y avoir une erreur car la variable local a été déclarer dans la boucle donc lorsque tu quittes la boucle elle est détruite local test1 = "bonjour" for i=1,1 do test2 = test1 fibaro:debug("Affiche boucle = "..test2) end fibaro:debug("Affiche Apres la boucle = "..test2) la il n'y aura pas d'erreur car la variable test2 et déclarer global donc elle ne sera détruit que lorsque tu quittes le script on aurai aussi pu la déclarer en local au début du script Il vaut mieux lorsque c'est possible de déclarer les variables en local 1
mprinfo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 voici un exemple pour sauver des ID dans une variable global systéme local Var_Id = {"RDC 3 Volets", 5, 7, 9} fibaro:setGlobal('VoletsZone',json.encode(Var_Id)); Var_Id=json.decode((fibaro:getGlobal('VoletsZone'))); Voici le code pour récuperer dans un tableau j'utilise aussi un bout de code que steven a posté mais la c'est un peu usine a gaz -- traitement de la varialble globale Merci Steven function split(text, sep) local sep, fields = sep or ":", {} local pattern = string.format("([^%s]+)", sep) text:gsub(pattern, function(c) fields[#fields+1] = c end) return fields end local mon_tableau = fibaro:getGlobal('V_Zone1'); local V_Id = split(mon_tableau, ",") -- fin du traitement de la varialble globale ce bout de code récupere un texte est le converti en tableau mais c'est usine a gaz
PITP2 Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 @jojo, ta question est étrange concernant l'utilisation pour les json car c'est la méthode utilisée dans le VD pour le chauffage je préfère donc utiliser ce type de code vu que le json est "formaté" on aurait tort de s'en priver local HC2 = Net.FHttp("127.0.0.1",11111) local GETheating = "" -- détermination de la version du firmware payload = "/api/settings/info" response, status, errorCode = HC2:GET(payload) if tonumber(status) == 200 then jsonTable = json.decode(response) if tonumber(jsonTable.softVersion) >= 4 on voit qu'une fois la table chargée on peut accéder aux hamps désirés avec jsonTable.lenomduchamp et en utilisant une boucle qu iva balayer tous les champs du json voili voilou PS : je n'ai peut etre pas compris la question aussi
mprinfo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 @pitp2 J'ai essayer de lui donner une version simple et un version Usine a gaz Effectivement vu le code que tu as donné je mis perds dans sa question
jojo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 @mprinfo : félicitations Gourou merci pour les explications local/global variables dans un bouton pour la lecture des tableaux stockés dans des variables globales, il me semblait déjàavoir essayé cela sans succès. Je vais réessayer. Merci. @pitp2 : Merci pour ton retour, mais c'était mprinfo qui avait bien compris ma question tordue ...
mprinfo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 @jojo j'ai l'impression qu'on ce ressemble un peu j'ai le chic pour les questions tordues. La lorraine n'est pas très loin de la Belgique c'est peu être du a notre situation géographique ou parce que j'ai pas mal bossé en Belgique
PITP2 Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 Bah mince 15 ans que j'habite en Belgique maintenant .. faut que j'y reste encore combien de temps pour être tordu comme vous ?
mprinfo Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 Ca dépend du nombres de bière que tu bois par jour
PITP2 Posté(e) le 31 mars 2015 Signaler Posté(e) le 31 mars 2015 mince .. il faut en boire tous les jours alors ? moi je concentre tout sur le week end voila mon erreur
Messages recommandés