Aller au contenu

Messages recommandés

Posté(e)

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 !

Posté(e)

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
Posté(e)

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:

  • 1 mois après...
Posté(e)

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?

Posté(e)

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

 

Posté(e)

Hello,

merci pour ta réponse.

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

salutations

Posté(e)

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


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

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

Posté(e)

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

  • Like 1
Posté(e)

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
  • 3 semaines après...
Posté(e)
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
Posté(e)

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

Posté(e)

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

 

 

 

Posté(e)

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

 

 

×
×
  • Créer...