Aller au contenu

Messages recommandés

Posté(e)

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 :(

Posté(e)

@Design, non car ces API concernent le plugin qui n'est pas compatible avec la HCL..... il devrait l'être lorsque la v4 sortira.

Posté(e)

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.

Posté(e)

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

Posté(e)

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

Posté(e)

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

  • Upvote 1
Posté(e)

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?

Posté(e)

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

Posté(e)

 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)
Posté(e)

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
Posté(e)

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])
Posté(e)


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)

Posté(e)
[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

Posté(e)

tu es bien en V3.600 ?

 

Et ceci dans un bouton ça donne quoi ?

local maVar = tonumber("10" or 0)
fibaro:debug(maVar)
Posté(e)

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)
Posté(e)

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 :D

×
×
  • Créer...