Did Posté(e) le 8 janvier 2014 Signaler Posté(e) le 8 janvier 2014 J'essaie dans mon module virtuel pour l'ouverture du portail, d'avoir l'état sous forme d'icônes actif (comme si j'avais deux boutons Ouvre et Ferme avec 2 icônes qui change l'état). J'utilise une sortie de mon IPX 800 pour l'impulsion et un FGBS-001 pour le retour de la position (2 contacts reed ouvert et fermé). Merci.
Krikroff Posté(e) le 8 janvier 2014 Signaler Posté(e) le 8 janvier 2014 Pour changer l’icône tu peux utiliser cela fibaro:call(ID_VD, "setProperty", "currentIcon", ID_ICON) Pour le reste du code ouverture/fermeture c'est bon ou pas ?
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 Bizarre, ça me remet le cube bleu malgré des n° d'icônes différents. 1
Krikroff Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Et avec "ID_ICON", ID de l'icône mais entre guillemets ?
BenjyNet Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Je confirme, ID_ICON est entre guillemet !
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 Bonjour,Non, j'ai essayé d'enlever l'espace juste avant, aussi id d'autre icônes mais toujours le cube. Pour le script, peut-on réunir les 2 scènes qui proviennent de blocs convertis en Lua? local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(65, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118, "setProperty", "currentIcon", "1014") end ------et------- local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(66, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118, "setProperty", "currentIcon", "1013") end ou peut être n'utiliser qu'un seul contact pour l'état Fermé (et faire if contact différent de fermé). Je n'ai pas trouver comment mettre mes scripts sur un cadre avec numérotation des lignes pour la présentation sur le site. Merci.
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 ou peut être n'utiliser qu'un seul contact pour l'état Fermé (et faire if contact différent de fermé). Si c'est le cas, tu peux utiliser cette solution local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(65, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118,"setProperty","currentIcon",1014) else fibaro:call(118,"setProperty","currentIcon",1013) end Pour "mettre mes scripts sur un cadre avec numérotation des lignes pour la présentation sur le site" : - sélectionner l'ensemble des lignes concernées - cliquer sur le symbole "insérer un extrait de code" suivant : <> Et pour ce qui me concerne je ne mets pas l'identifiant de l'icone entre guillemets ... et bien vérifier le numéro de cet ID, car il n'y aura pas de message d'erreur dans le debug
Krikroff Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Personnellement je ne mets pas non plus de guillemets, c’était juste au cas ou
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 J'ai compris le problème... @Did utilise un numéro d'ID d'icone de scène et qui n'existe pas pour ses modules virtuels J'avais remarqué que nous n'avons pas la même liste d'images entre scènes et modules virtuels J'en déduis que deux listes d'icones sont gérées indépendamment
BenjyNet Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Ah bah moi j'ai ai mis et ça marche aussi... l'avantage du LUA c'est que c'est moins sensible au format (int, boolean, string...) que le C/C++. Dans la doc fibaro ils mettent des guillemets ou pas ?
Krikroff Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Quelle doc ? Non il me semble que les deux sont tolérés... LUA n'est pas un langage fortement Typé comme tous les langages de script, il n'accepte que les types: nombre, chaine, tableau, booléen, fonction. L’interpréteur utilise le typage automatique. C'est vrai que s'est pratique mais moi j'aime pas ça !
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 J'ai créer deux touches provisoires dans le VD pour insérer mes icônes ouvert et fermé et effectivement, ces deux icônes ont un nouveau numéro d'id rangés dans un dossier nommé n_vicons mais malheureusement, ça ne fonctionne toujours pas. Le fait que ce soit une icône "fabrication maison" me rajoute un User devant le numéro (User1050.png). Je voulais essayer une autre icône d'origine mais dans les modules virtuels, seul ce cube est dispo après déballage du HC2. Visiblement, pas besoin de guillemets. Merci pour le tuyau sur la présentation des scripts.
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Pour intégrer les icônes des modules virtuels ou des scènes, il faut utiliser la procédure de Fibaro : Changer l'icone / ajouter icone / choisissez un fichier, etc Un contrôle du format est effectué et rejette ce qui n'est pas dans les normes... je ne comprends donc pas ce que tu obtiens ? Sur le forum, il y a déjà un choix intéressant d'icônes au bon format Une fois les icônes ajoutés pour les modules virtuels, tu les gères avec la fonction évoquée dans ce post Ajout important : pour trouver les numéros d'ID tu utilises le Toolkit de @Krikroff ????? Je te le conseilles vraiment !
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Ok, je vois comment tu récupères l'info "userxxxx.png" Ne t'en préoccupes pas et ne retiens que le nombre xxxx Et récupères à l'occasion le toolkit de @Krikroff
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 Mes icônes maison fonctionnent puisqu'il s'affichent dans mon VD (et ailleurs aussi), quand elles ne sont pas au format, elles ne s'affichent pas à l'écran de sélection (message d'erreur). Ce que j'obtiens, c'est qu'au changement d'état du FGBS, l'icône change bien mais systématiquement c'est le cube bleu qui s'affiche et pas les icônes sélectionnés par le numéro d'id à la fin du script. Je viens d'installer le Toolkit de @Krikroff mais dans les appareils virtuels, il n'y a pas les id d'icône (numéros différents suivant l'utilisation dans modules virtuels ou scènes). Autrement, je fait un clic droit sur l'icône puis information sur l'image (ou afficher l'image).
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Concernant le toolkit de @Krikroff : Pour découvrir l'ID des icônes des modules, click droit / obtenir les données brutes et j'obtiens par exemple ceci : "id": 82, "name": "Chauffage chambre", "roomID": 4, "type": "virtual_device", "properties": { "deviceIcon": 1014, "ip": "", "port": 80, "currentIcon": "1012", Sinon, j'avais deviné ta méthode et pour mon exemple on obtient alors : User1014 ou User1012 A noter que, comme la gestion des icônes des modules et des scènes est séparée, un même numéro d'ID peut donner deux icônes différents Par contre je ne vois pas d'où vient ton problème
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Je te conseille cette méthode : - tu intègres une nouvelle icône dans ton module virtuel - tu l'actives pour qu'elle devienne l'icône courant - tu lances le toolkit de Krikroff, tu recharges les données, tu vas voir les données brut du module virtuel et tu relèves le numéro à 4 chiffres du currentIcon Tu modifies ton script en conséquence... et çà doit marcher, avec fibaro:call(118,"setProperty","currentIcon",xxxx) Pour aller plus vite ensuite, tu pourras récupérer les numéros d'ID de tes icones selon ta méthode : ne prendre que les 4 chiffres
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 Bon, j'ai inclus un autre module universel en montage volant parce bonjour les manoeuvres. Merci pour l'astuce du toolkit de Krikroff. je viens de m'apercevoir que quand je mémorise cette scène et que je fais démarrer juste en dessous (ou exécuter dans général), immédiatement, l'icône s'affiche bien mais ne change plus après malgré le changement d'état du FGBS. De même qu'en inversant les numéros 1049 & 1050 dans le script, là j'ai bien l'icône opposée qui s'affiche mais ne change plus. --[[ %% properties 65 value %% globals --]] local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(149, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118,"setProperty","currentIcon",1049) else fibaro:call(118,"setProperty","currentIcon",1050) end J'en déduis donc que l'affichage des icônes est O.K. Précision aussi: Je n'ai rien dans la main loop du VD. Ne serait-ce pas dans la boucle que le problème se trouve? On est partit sur l'utilisation du contact 'portail fermé' mais j'ai aussi le contact 'portail ouvert' si c'est plus simple au niveau du script. Encore merci à tous pour votre patience.
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Ok, le problème d'affichage d'icône semble bien réglé Pour le script, je te propose d'ajouter deux lignes (que tu pourras facilement supprimer ensuite) pour pister les valeurs retournées : --[[ %% properties 65 value %% globals --]] local startSource = fibaro:getSourceTrigger(); valeur = tonumber(fibaro:getValue(19, "value")) fibaro:debug(valeur) if ( ( tonumber(fibaro:getValue(149, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118,"setProperty","currentIcon",1049) else fibaro:call(118,"setProperty","currentIcon",1050) end
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Précision aussi: Je n'ai rien dans la main loop du VD. Personnellement, je n'ai jamais mis ce type de script (trigger) dans un main loop (à plus forte raison dans un bouton virtuel)... et çà ne passe pas dans mes essais @Krikroff nous en dira peut-être plus Pour ce qui me concerne, je mettrais ce script dans une scène pour une procédure automatique. Le module virtuel serait vide de code et il ne servirait que pour afficher l'icône adéquat, sauf à l'utiliser pour d'autres fonctions
Shad Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Normal que sa marche pas , et c'est le bordel ta scène. Si je dis pas de connerie ton FGBS a l'id 65 donc en mettant le minimum sa donne --[[ %% properties 65 value %% globals --]] local startSource = fibaro:getSourceTrigger(); portail = 65; if (startSource['type']=='property' or startSource["type"] == "other") then if ( (tonumber(fibaro:getValue(portail, "value")) > 0 or startSource["type"] == "other") then fibaro:call(118,"setProperty","currentIcon",1049); else fibaro:call(118,"setProperty","currentIcon",1050); end end
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 Ca y est, j'ai trouvé en relisant mon script que dans la ligne 4, l'Id n'était pas celui du périphérique interrogé. Donc tout est réglé. Récapitulatif: Il faut créer un module virtuel avec juste une touche à laquelle on attribue la commande (pas en Lua): GET /preset.htm?set2=1 HTTP/1.10x0D0x0A0x0D0x0A dans mon cas pour générer une impulsion sur le relais 2 de mon IPX800. Ensuite une scène qui interroge un contact collé quand le portail est fermé. --[[ %% properties 149 value %% globals --]] local startSource = fibaro:getSourceTrigger(); if ( ( tonumber(fibaro:getValue(149, "value")) > 0 ) or startSource["type"] == "other" ) then fibaro:call(118,"setProperty","currentIcon",1049) else fibaro:call(118,"setProperty","currentIcon",1050) end En fonction de l'état, elle renverra le numéro Id d'une icône (attention à bien sélectionner ces icônes dans le module virtuel). Ne pas récupérer le numéro d'Id d'une icône issu d'un module ou d'une scène, seulement d'un module virtuel (elles ne sont pas rangées dans le même dossier et n'ont pas le même numéro d'Id). Je n'ai pas réussi à insérer de photos mais elles sont à voir dans la galerie. Voilà pour la commande du portail et merci à Krikroff, Benjynet et I-magin pour leur précieuses et nombreuses contributions. .
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 @Shad... donc, j'ai proposé une scène bordélique... sympa comme appréciation Sinon, de manière plus constructive tu peux être pédagogue et expliquer pourquoi ? Pour info les 2 lignes suivantes étaient uniquement pour le deboggage et facilement supprimable valeur = tonumber(fibaro:getValue(19, "value")) fibaro:debug(valeur)
i-magin Posté(e) le 9 janvier 2014 Signaler Posté(e) le 9 janvier 2014 Ca y est, j'ai trouvé en relisant mon script que dans la ligne 4, l'Id n'était pas celui du périphérique interrogé. Donc tout est réglé. Ouf, tu me rassures Mais il est vrai que je n'avais pas vu que tu avais mis l'ID 65 en entête du code, donc en incohérence avec la fonction getValue Il fallait donc comme tu l'as fait mettre la même valeur d'ID (149) lignes 4 et 10
Did Posté(e) le 9 janvier 2014 Auteur Signaler Posté(e) le 9 janvier 2014 C'est ce que Shad avait repérer mais j'étais dans la rédaction de ma réponse et l'ajout de photos dans la galerie. Le tout, c'est de s'y retrouver dans ce "bordel". Merci.
Messages recommandés