Aller au contenu
jjacques68

getSourceTrigger

Recommended Posts

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 !

Partager ce message


Lien à poster
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

Partager ce message


Lien à poster
Partager sur d’autres sites

yes !! merci @Krikroff ! 

 

ça marche nickel !

 

Mais où as tu ces informations, elles ne sont pas renseignées dans les pages d'aide de Fibaro ?

Partager ce message


Lien à poster
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:

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui mais moi j’aime ça

  • Like 4

Partager ce message


Lien à poster
Partager sur d’autres sites

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?

Partager ce message


Lien à poster
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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hello,

merci pour ta réponse.

J'ai déjà essayé cela mais impossible de faire fonctionner le trigger, tu as testé?

salutations

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah bas non.. mais logiquement cela devrait fonctionner, tu es certain de l’ID


Envoyé de mon iPhone en utilisant Tapatalk

Partager ce message


Lien à poster
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é. 

Partager ce message


Lien à poster
Partager sur d’autres sites

Je pense que tout simplement ta scène est en Manuel et pas en auto, tu devrais vérifier 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

ahhhh quelle connerie, j'ai pas vu cela. en effet lors de la conversion en lua la scène est mise en manuel automatiquement.

Merci.

 

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

bonne question...

 

Sinon tu te fais un QA et dedans tu startes les scènes que tu veux au boot...

Partager ce message


Lien à poster
Partager sur d’autres sites
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

Partager ce message


Lien à poster
Partager sur d’autres sites

Qui reboot son HC3 pour tester :D ?

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

merde j'ai foiré le print(...) dans la scène, l'ai pas vu passé, bon on re boot encore une fois...

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

marrant j'ai mis un fibaro.warning() pour voir le déclenchement au démarrage, et je le vois pas passer...

 

Peut être que c'est parce que il passe avant que j'ouvre la fenêtre de debug...

Partager ce message


Lien à poster
Partager sur d’autres sites

ben c'est ce que je viens de faire, et bien vous savez que ça marche pas chez moi !!

Partager ce message


Lien à poster
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...

 

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est pas top en effet... suis d'accord

ben d'après le debug ça se joue à quelques milli secondes...

 

si vraiment il le fallait, un setTimeout et puis c'est réglé...

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

×