cre4tix Posté(e) le 22 novembre 2014 Signaler Posté(e) le 22 novembre 2014 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 @+
Steven Posté(e) le 22 novembre 2014 Signaler Posté(e) le 22 novembre 2014 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.
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 Merci Steven, Existe-t-il une commande lua se basant sur un état changeant 0 à 1 ou 65% a 40 % etc ... ou dois-je interroger 1 à 1 mes devices toutes les secondes ?
Krikroff Posté(e) le 22 novembre 2014 Signaler Posté(e) le 22 novembre 2014 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.
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 ok mais comment récupérer l'id du déclencheur ? je sèche ... --[[ %% properties 79 value 77 value 78 value %% globals --]] local startSource = fibaro:getSourceTrigger(); fibaro:debug("déclencheur".. ??? );
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 ok c'est bon jai trouvé merci : --[[ %% properties 77 value 78 value 79 value %% globals –]] local trigger = fibaro:getSourceTrigger() if (trigger['type'] == 'property') then fibaro:debug('Source device = ' .. trigger['deviceID']) end
Krikroff Posté(e) le 22 novembre 2014 Signaler Posté(e) le 22 novembre 2014 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
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 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'
Steven Posté(e) le 22 novembre 2014 Signaler Posté(e) le 22 novembre 2014 fibaro:getGlobalValue("dimmerStatusId") pour récupérer le contenu te ta variable. Envoyé de mon portable grâce àmes petits doigts.
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 merci pour votre aide ca fonctionne
cre4tix Posté(e) le 22 novembre 2014 Auteur Signaler Posté(e) le 22 novembre 2014 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)
Messages recommandés