Aller au contenu

Lua Envoyer Une Commande Si Changement Status Device.


cre4tix

Messages recommandés

Bonjour,

 

Je cherche à  envoyer une commande http ou tcp à  un système externe lorsque j'ai un changement d'état sur un Device. 

Par exemple si le Dimmer id 75 passe à  85% j'aimerais que script envois : "HC2#75:85" à  l'adresse 192.168.1.12:8020 et ce pour tout mes devices, ou du moins une liste de Devices préétablis dans un array en amont dans le script.

 

Quelqu'un a-t-il une idée de comment je peux me lancer ?

 

Merci @+

Lien vers le commentaire
Partager sur d’autres sites

Seul une scène peut être déclenchée automatiquement par un changement d'état de module

Seul un module virtuel peut envoyer des requettes HTTP

Seul un variable global permet de transmettre une information entre les deux.

 

Il te faut donc une scène dans laquelle tu indique tout les modules qui doivent etre prise en compte. Cette scène remplira une variable global avec HC2;<module>:<value> et cliquer sur le bouton X du module virtuel.

 

Le bouton X du module virtuel va lire la variable global et crée sa requète HTTP et l'envoyer.

 

Voici un point de départ. 

Lien vers le commentaire
Partager sur d’autres sites

Comme le dit Steven l'unique moyen àce jour pour être informé sur un état changeant est de mettre un trigger dans une scène

--[[
%% autostart
%% properties
DEVICE_ID value
%% globals
--]]

puis interroger en lua le device avec un

fibaro:getValue(DEVICE_ID, "value")

pour en connaitre la valeur... Ensuite le tout passé dans une variable globale puis un call sur un bouton d'un vd qui lui va lire la variable globale et envoyer la requête. Le getValue peut aussi être réalisé dans le vd etc.

Lien vers le commentaire
Partager sur d’autres sites

local startSource = fibaro:getSourceTrigger()

if (startSource["type"]~="autostart") then
  local id = startSource['deviceID']
  local name = fibaro:getName(id)
  local value = fibaro:getValue(id, "value")
  fibaro:debug(name..' id:'..id..' value: ' ..value)
end

je n' ai pas testé mais cela doit le faire ...

 

Edit: ok, dsl croisement de post, mais tu devrais ajouter la vérification autostart pour éviter des problèmes

Lien vers le commentaire
Partager sur d’autres sites

merci je vais le faire.

 

dans le module virtuel j'ai fais ceci mais ca ne marche pas

local value = fibaro:getValue(dimmerStatusId, "value");

HC2 = Net.FHttp("192.168.1.24",8090); 
response = HC2:GET("HC2#DIMMER#"..dimmerStatusId..":"..value)
fibaro:debug("test");

J'ai cette erreur

[ERROR] 15:54:58: line :getValue (arg 2), expected 'unsigned int' got 'nil'

Lien vers le commentaire
Partager sur d’autres sites

Et voici le bout de code utilisé pour la scene :

--[[
%% properties
77 value
78 value
79 value 
%% globals
–]]
 
local trigger = fibaro:getSourceTrigger()
 
if (trigger['type']  == 'property') then
  fibaro:debug('Source device = ' .. trigger['deviceID'])
  fibaro:setGlobal("dimmerStatusId", trigger['deviceID'])
  fibaro:call(160, "pressButton", "1");
end

et le virtual device :

local id = fibaro:getGlobalValue("dimmerStatusId")
local value = fibaro:getValue(id, "value")

HC2 = Net.FHttp("192.168.1.24",8090); 
response = HC2:GET("HC2#DIMMER#"..id..":"..value)
fibaro:debug("HC2#DIMMER#"..id..":"..value)
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...