Aller au contenu

getSourceTrigger


jjacques68

Messages recommandés

Hello tout le mode !

 

On a visiblement plus le getSourceTrigger dans la HC3 :( 

 

du coup pour une scène qui a comme trigger ce genre de chose : 

{
    operator = "any",
    conditions = {
        {   
            type = "device",
      	    id = 10,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        },
        {
            type = "device",
      	    id = 12,
            property = "value",
            operator = "==",
            value = true,
            isTrigger = true
        }
    }
}

et qu’on cherche à savoir qui à déclenché la scène ?

comment fait-on ?

 

merciiiii !

Lien vers le commentaire
Partager sur d’autres sites

Le GetSourceTrigger est remplacé par sourceTrigger accessible directement dans le global LUA.

 

Voici un code qui devrait t'aider à mieux comprendre le fonctionnement, 

do
local trigger = sourceTrigger
print("property:"..trigger.property) -- ex: "centralSceneEvent", "value" etc...
print("id:"..trigger.id) -- l' ID de la condition. ex: 12
print("type:"..trigger.type) -- le type déclaré dans la condition ex: "device"
for key,value in pairs(trigger.value) do
  print(key ..": ".. value) -- toutes les valeurs déclarées lorsqu'elles existent
end
end

ex: pour une KEYFOB Fibaro / centralSceneEvent cela devrait donner quelque chose comme cela pour capter l'appui sur la touche "rond"

 

local trigger = sourceTrigger
if (trigger.property == "centralSceneEvent") then
    print("id:"..trigger.id)
    print("type:"..trigger.type)
    for key,value in pairs(trigger.value) do
        print(key ..": ".. value)
    end
    if (trigger.value.keyId==2) then
        print("Circle button "..trigger.value.keyAttribute)
    end
end

Dites-moi :)

 

 

 

 

  • Like 3
Lien vers le commentaire
Partager sur d’autres sites

Une grande partie des informations existent bien ici https://manuals.fibaro.com/home-center-3-lua-scenes/ 

 

Dans la doc:

 

Citation

sourceTrigger

The variable stores the trigger object that started the scene. It results directly from the triggers defined in the previous section, but is extended by a manual start. Type of the trigger is identified by type property, which can be one of the following: ...

Examples values of sourceTrigger variable.

 

Citation

json.encode

json.encode(table)

Convert Lua table to the text represented in JSON format.
Parameters:

  • table – Lua table

Examples:
Display sourceTrigger in the debug console.

fibaro.debug("", json.encode(sourceTrigger))

 

 

ensuite il faut extrapoler et rétro-ingéniérer et croiser les doigts :60:

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Hello, Merci pour cet exemple mais est ce que qqn à réussi à faire un déclancheur avec une Keyfob?

même en utilisant le code généré automatiquement par Fibaro je n'arrive pas à déclancher la scène:

{
  conditions = { {
      id = 569,
      isTrigger = true,
      operator = "==",
      property = "centralSceneEvent",
      type = "device",
      value = {keyAttribute = "Pressed", keyId = 1}
    } },
  operator = "all"
}

QQn à une idée?

Lien vers le commentaire
Partager sur d’autres sites

Je pense que tu pourrais essayer un truc du genre pour gérer toutes les actions de ton keyfob dans une même scène

{
    operator = "all",
    conditions = {{
        id = 569,
        isTrigger = true,
        operator = "anyValue",
        property = "centralSceneEvent",
        type = "device"
    }}  
}

Ensuite dasn ton LUA:

 

local trigger = sourceTrigger
if (trigger.property == "centralSceneEvent") then
	-- Tu devrais voir ici tout ce qui passe...
    for key,value in pairs(trigger.value) do
        debug(key ..": ".. value)
    end
	-- exemple..
    if (trigger.value.keyId==2) then
        trace("Circle button "..trigger.value.keyAttribute)
    end
	-- etc...
end

 

Lien vers le commentaire
Partager sur d’autres sites

Oui justement "logiquement" ça devrait fonctionner.  Quand je fais la scène depuis la télécommande en block ca fonctionne. Si je la transforme en lua sans rien modifier ca ne fonctionne plus . C'est pour ça que j aimerais savoir si qqn a testé. 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
Il y a 5 heures, mprinfo a dit :

comment on fait pour que les scenes ce lance au démarrage de la box

j’ai bien mis démarrage auto mais ça ne fonctionne il y a quelque chose a mettre dans condition ?

https://manuals.fibaro.com/home-center-3-lua-scenes/

Gateway startup

For gateway startup, the interpretation of conditions fields is as follows:

  • type – takes value "se-start".
  • property – takes value "start".
  • value – takes value "true".
  • operator – takes one of these values:
    • "==" – are the values the same
    • "!=" – are the values different
  • isTrigger – is the condition also a trigger:
    • true – is a trigger (recommended)
    • false – is only a condition (default)

Examples:
Trigger on every startup.

 

{
    type = "se-start",
    property = "start",
    operator = "==",
    value = true,
    isTrigger = true
}

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

mouai c'est ok.

 

[21.05.2020] [17:00:47] [WARNING] [SCENE6545]: démarrage

 

Je viens de capter que j'utilisais un QA perso pour envoyer les notifications.

Et visiblement les scènes sont lancées AVANT l'init des QA, donc forcément, ça passait pas.

 

J'ai fait un push avec fibaro.alert() et ça a marché.

 

Pour les traces que je ne voyais pas dans le debug, je les mettaient après l'appel du QA donc ça bloquais j'imagine...

 

enfin j'extrapole là... ;) 

 

enfin ça voudrait dire qu'il ne faut pas faire d'appels aux QA dans une scène en autostart !

ça risque de ne pas marcher...

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...