Aller au contenu

Commande Portail Sur 1 Touche & 2 Icônes Pour L'état


Did

Messages recommandés

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.

 

                                          post-43-0-96914800-1389222974_thumb.jpg

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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    ;)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Quelle doc :D ? 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 !

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Normal que sa marche pas :D, 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
Lien vers le commentaire
Partager sur d’autres sites

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.

 

.

Lien vers le commentaire
Partager sur d’autres sites

@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)
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...