Design Posté(e) le 31 janvier 2015 Signaler Posté(e) le 31 janvier 2015 EXEMPLES d' interactions avec le Plugin depuis une passerelle externe, une scène ou encore un périphérique virtuel. API exemples - Passage en Hors Gel : POST api/devices/DEVICE_ID/action/setMode {"args":[5]}- Mise en marche Confort : POST api/devices/DEVICE_ID/action/turnOn POST api/devices/DEVICE_ID/action/setMode {"args":[1]} - Passage en mode Arrêt/Délestage: POST api/devices/DEVICE_ID/action/turnOff POST api/devices/DEVICE_ID/action/setMode {"args":[6]} - Passage d'une valeur "énergie" : POST api/devices/DEVICE_ID/action/setEnergy {"args":[20.0]}- Passage d'une valeur puissance : POST api/devices/DEVICE_ID/action/setPower {"args":[100.0]} LUA: - Demande du mode Confort: fibaro:call(DEVICE_ID, "setMode", "1") ou fibaro:call(DEVICE_ID, "turnOn") - Demande du mode Confort -1°: fibaro:call(DEVICE_ID, "setMode", "2") - Demande du mode Confort -2°: fibaro:call(DEVICE_ID, "setMode", "3") - Demande du mode Eco: fibaro:call(DEVICE_ID, "setMode", "4") - Demande du mode Hors Gel: fibaro:call(DEVICE_ID, "setMode", "5") - Demande du mode Arrêt: fibaro:call(DEVICE_ID, "setMode", "6") ou fibaro:call(DEVICE_ID, "turnOff") - Demande le reveil du plugin: fibaro:call(DEVICE_ID, "wakeUpDeadDevice") - Savoir si le module est configuré ou non: fibaro:getValue(DEVICE_ID, "configured"), retourne true ou false. - Savoir si le module est "dead" ou non: fibaro:getValue(DEVICE_ID, "dead"), retourne true ou false. - Obtenir le numéro du mode en cours d'utilisation: fibaro:getValue(DEVICE_ID, "currentMode") - Obtenir la description du mode en cours d'utilisation: fibaro:getValue(DEVICE_ID, "currentModeDescription") - Obtenir la dernière mise à jour: fibaro:getValue(DEVICE_ID, "lastUpdate") - Obtenir la valeur de la sonde DS18B20: fibaro:getValue(DEVICE_ID, "temperatureValue") - Obtenir la valeur "energy" de type 0.00: fibaro:getValue(DEVICE_ID, "energy") - Obtenir la valeur "power" de type 0.00: fibaro:getValue(DEVICE_ID, "power") Ces API sont compatibles avec la HCL ? Si non, je ne trouve pas la correspondance
Lazer Posté(e) le 31 janvier 2015 Signaler Posté(e) le 31 janvier 2015 @Design, non car ces API concernent le plugin qui n'est pas compatible avec la HCL..... il devrait l'être lorsque la v4 sortira.
Bugsissimo Posté(e) le 31 janvier 2015 Signaler Posté(e) le 31 janvier 2015 Sur la HCL il te faut utiliser la commande GET. Tu ne pourras utiliser qu'une ligne/commande par bouton. C'est une limitation assez contraignante mais en combinant ca et les scenes tu peux faire du "bidouillage" fonctionnel.
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Je bloque sur un truc tout con (je suis une bille dans les scripts), j'ai une variable qui peut passer à trois valeurs "0", "1", "2" mais dans l'étiquette d'un module virtuel, je souhaiterais afficher un texte à la place de cette valeur. 0=arrêt, 1=marche, 2= auto. Il doit bien exister une formule pour convertir cela mais le Lua n'est pas ma tasse de thé (les autres langages non plus).
BenjyNet Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 A part un if .. then .. else je vois pas trop ce que tu pourrais faire d'autre.
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 Oui BenjyNet a raison un exemple... --! [private] Get command by range --!@return The command mode function FilPiloteZMNHJA2:getCommandByRange(value) value = tonumber(value) or 0 if (value >= 0 and value <= 10) then return 6 elseif (value > 10 and value <= 20) then return 5 elseif (value > 20 and value <= 30) then return 4 elseif (value > 30 and value <= 40) then return 3 elseif (value > 40 and value <= 50) then return 2 elseif (value > 50) then return 1 else self:log('Not supported!') return nil end end
Lazer Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Sinon un truc du genre : local texte = { [1] = "Texte 1", [2] = "Texte 2", [3] = "Texte 3" } fibaro:debug("Valeur = " .. variable) fibaro:debug("Texte = " .. texte[variable]) 1
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Comme ceci en répétant pour les trois valeurs? elseif (fibaro:getGlobal("variable") >=0) then text = "Arrêt"; Et je peux mettre cela dans la main loop?
Bugsissimo Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Tu peux aussi utiliser une table avec "for" et "ipairs" ou "pairs" je pense
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 je préfère local maVar = tonumber(fibaro:getGlobal("variable")) elseif ( maVar >=0) then text = "Arrêt"; Aussi même si je pense qu'il faut commencer par les bases (if, while do, for etc...), la proposition de Lazer (utilisation d'une table) est très bonne (pour ne pas dire la meilleure) et correspond parfaitement à ta problématique
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Merci Krikroff, j'ai dà» me gourer quelque part (ou partout) local maVar = tonumber(fibaro:getGlobal("ForcechaufSdB")) if ( maVar >=0) then texte = "Aucune"; elseif ( maVar >=1) then texte = "4h30"; else ( maVar >=2) then texte = "6h"; end fibaro:call(295, "setProperty", "ui.Label5.value",texte) J'ai donc essayé la proposition de Lazer mais pas mieux local texte = { [0] = "Aucune", [1] = "4h30", [2] = "6h" } fibaro:debug("Valeur = " .. ForcechaufSdB) fibaro:debug("Texte = " .. texte[ForcechaufSdB]) fibaro:call(295, "setProperty", "ui.Label5.value",texte)
Bugsissimo Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Le code proposé servait juste a la conversion de tes valeur (0=arret) pour l'affichage de ton label Si la variable du mode de fonctionnement = modefct local texte = { [0] = "arret", [1] = "eco", [2] = "confort"} fibaro:debug("Valeur = " .. modefct)fibaro:debug("Texte = " .. texte[modefct])EDIT: dsl j avais pas compris le but alors
BenjyNet Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Dans la propal Lazer il te faut local maVar = tonumber(fibaro:getGlobal("ForcechaufSdB")) local texte = { [0] = "Aucune", [1] = "4h30", [2] = "6h" } fibaro:debug("Valeur = " .. maVar) fibaro:debug("Texte = " .. texte[maVar]) fibaro:call(295, "setProperty", "ui.Label5.value",texte[maVar])
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 local texte = "var is empty"; local maVar = tonumber(fibaro:getGlobal("ForcechaufSdB") or 0) if (maVar==0) then texte = "Aucune" elseif (maVar==1) then texte = "4h30" elseif (maVar==2) then texte = "6h" end fibaro:debug(texte); fibaro:call(295, "setProperty", "ui.Label5.value",texte)
BenjyNet Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 C'est vrai que le coup du tableau c'est bien vu, ça peut mettre utile cette histoire, j'y avait pas pensé ! Bien joué Lazer... 1
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 @Benjy, Mais ça m'affiche undefined dans mon label du VD. Je peux mettre cela dans la main loop?
BenjyNet Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Dans ton debug, elle vaut quoi maVar ? Je m'a peut être gouré ...
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 [ERROR] 18:38:19: line 23: bad argument #2 to 'tonumber' (base out of range La ligne 23 étant: local texte = { Je viens de voir qu'en début de mainloop, j'ai déjà une conversion avec text. Alors voici l'intégralité de la mainloop: if (fibaro:getValue(291,"value") >= "51") then text = "Confort"; elseif (fibaro:getValue(291,"value") > "40") then text = "Confort -1°C"; elseif (fibaro:getValue(291,"value") > "30") then text = "Confort -2°C"; elseif (fibaro:getValue(291,"value") > "20") then text = "Eco"; elseif (fibaro:getValue(291,"value") > "10") then text = "Hors gel"; elseif (fibaro:getValue(291,"value") < "10") then text = "Arrêt"; else text = "Problème"; end fibaro:call(295, "setProperty", "ui.Label2.value",text); local temp = fibaro:getValue(279, "value") fibaro:log(fibaro:getValue(279, "value").." °C" ) fibaro:call(295, "setProperty", "ui.Label1.value",temp.. " °C") local maVar = tonumber(fibaro:getGlobal("ForcechaufSdB")) local texte = { [0] = "Aucune", [1] = "4h30", [2] = "6h" } fibaro:debug("Valeur = " .. maVar) fibaro:debug("Texte = " .. texte[maVar]) fibaro:call(295, "setProperty", "ui.Label5.value",texte[maVar]) Et le résultat du VD dans l'interface
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 @Did, c'est quoi la valeur dans la variable globale ?
BenjyNet Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 C'est ce que j'allais demander
Did Posté(e) le 2 février 2015 Signaler Posté(e) le 2 février 2015 Elle était à 0 et maintenant je l'ai passée à 2 mais rien de mieux.
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 tu es bien en V3.600 ? Et ceci dans un bouton ça donne quoi ? local maVar = tonumber("10" or 0) fibaro:debug(maVar)
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 Sinon il faut préciser la base, peur-être un bug de la V3.600 donc local maVar = tonumber("10" or 0, 10) fibaro:debug(maVar)
Krikroff Posté(e) le 2 février 2015 Auteur Signaler Posté(e) le 2 février 2015 H.S mais BenjyNet, au passage, l'utilisation des tables en LUA dans le Simulateur d'aube par exemple -- Equations map equations.map = { ['linear'] = equations.linear, ['inQuad'] = equations.inQuad, ['inExpo'] = equations.inExpo, ['outExpo'] = equations.outExpo, ['inOutQuad'] = equations.inOutQuad, ['inOutExpo'] = equations.inOutExpo, ['outInExpo'] = equations.outInExpo } C'est très efficace les tables lua Je meuble en attendant le retour de Did
Messages recommandés