Aller au contenu

Plugin - Qubino Fil Pilote Zmnhja2


Krikroff

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

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


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)

Lien vers le commentaire
Partager sur d’autres sites

[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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...