Steven Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 ------------------------------------- AJOUT DE DEBUG DANS UN VD ----------------------------------- Tout le monde qui à, au moins une fois, touché le LUA de sa HC2 à du tapper cette commande : fibaro:debug("Mon texte ici") Cela permet donc d'afficher un texte dans la petite fenêtre de debug. Pour un VD (je n'ai pas encore trouvé pour une scène), il est possible d'envoyer un message, dans cette même fenêtre de debug, mais depuis n'importe où. En utilisant cette commande : fibaro:call(74, "addDebugMessage", 0, "Je viens d'ailleurs - erreur", "error") fibaro:call(74, "addDebugMessage", 2, "Je viens d'ailleurs - debug", "debug") error : affichera en rouge debug : affichera en blanc Voici la syntaxe fibaro:call(<ID_DU_VD>, "addDebugMessage", <ELEMENT_ID>, <MESSAGE>, "debug|error") -- ELEMENT_ID = ID du bouton ou 0 pour le main loop Cette info peux vous sembler inutile et pourtant, j'y vois 2 intérêts : Savoir qui a cliqué un bouton (si le bouton a été "cliqué" par une scène, on peux l'afficher dans le debug "Bouton cliqué par la scène 22 à HH:mm:ss") Via une scène paramétrée, afficher des debug de couleurs différent (exemple : fibaro:startScene(10, {{id=20, text="Mon texte ici", color="cyan"}}) Voilà, je vous laisse y méditer. 7
Lazer Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 Je connaissais le truc, mais je manquais aussi de cas d'usage. Merci pour tes exemples
pepite Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 Excellent encore cela !! MERCI BEAUCOUP TOP Belle trouvaille master, @Steven Couplé à fibaro:args() on est bien ;-). On pourrait mettre plein de couleurs comme adore @mprinfo ;-) Testé et approuvé ;-)Reste plus qu'à trouver le besoin ;-) ou le créer ;-)
mprinfo Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 Super merci Steven pour cette infoEnvoyé de mon SM-G901F en utilisant Tapatalk
MAM78 Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 (modifié) Génial, c'est exactement ce que je voulais ajouter à la scène générique pour tous types de messages. Cf. le Tuto pour les passages d'args pour les scènes. Modifié le 2 mars 2017 par MAM78
MAM78 Posté(e) le 2 mars 2017 Signaler Posté(e) le 2 mars 2017 (modifié) @Steven ou @Lazer désolé de faire un petit hors sujet, mais pourriez-vous m'indiquer comment trouver l'id et le nom de la scène dans laquelle on est. Pour un VD je vois bien la fonction figaro:getSelfId (seulement disponible pour les VD) mais pour une scène comment on fait ? Vous pouvez me répondre MP, ensuite, je supprimerais ce message Modifié le 3 mars 2017 par MAM78
Lazer Posté(e) le 4 mars 2017 Signaler Posté(e) le 4 mars 2017 En fait, j'avais déjà trouvé une utilité à l'écriture de message dans le debug d'un bouton ou d'une main loop de VD, c'était pour simuler le passage de paramètre d'un bouton à un autre, sans passer par une variable globale, un peu à la façon d'une pile. L'avantage c'est que les messages de debug ne sont pas persistants, donc pas d'écriture dans la DB => plus rapide, pas d'usure de la Flash, pas de risque de corruption de la DB. Mais l'inconvénient, c'est qu'on ne maitrise pas quand le système décide de purger tout seul le debug d'un bouton, donc le risque c'est de passer des "arguments" à un bouton, et qu'lis ne soient jamais reçu car le système a décidé de les purger pile à ce moment là. Donc pas fiable à 100%, donc je ne l'ai jamais mis en oeuvre
MAM78 Posté(e) le 4 mars 2017 Signaler Posté(e) le 4 mars 2017 (modifié) Le 3/3/2017 à 08:51, Steven a dit : print(__fibaroSceneId) Merci @Steven tu as la même pour le nom de la scène ? sinon elles sont documentés ou ces propriétés. Je n'ai pas identifié un lieu qui référence toutes les documentations existantes. Est-ce qu'il y a un post qui nous donne tout ça ? Si ça n'existe pas je veux bien m'en charger de le créer. Mais il faudra me donner les liens. Modifié le 6 mars 2017 par MAM78
pepite Posté(e) le 4 mars 2017 Signaler Posté(e) le 4 mars 2017 Ah ouiii cetait une bonne idee@Lazer mais oui dommage pas fiable :-) mais
Steven Posté(e) le 6 mars 2017 Auteur Signaler Posté(e) le 6 mars 2017 Le 04/03/2017 à 12:03, MAM78 a dit : Merci @Steven tu as la même pour le nom de la scène ? sinon elles sont documentés ou ces propriétés. Je n'est pas identifié un lieu qui référence toutes les documentations existantes. Est-ce qu'il y a un post qui nous donne tout ça ? Si ça n'existe pas je veux bien m'en charger de le créer. Mais il faudra me donner les liens. local scene = api.get("/scenes/" .. __fibaroSceneId) print( scene.name ) Ces propriétés ne sont malheureusement pas documentées, il faut décortiquer le code de Fibaro. Dans ce cas de figure, j'ai trouvé l'info dans le fichier opt/fibaro/FibaroSceneAPI.lua 1
MAM78 Posté(e) le 6 mars 2017 Signaler Posté(e) le 6 mars 2017 Dans le même registre. Est-ce qu'il existe un identifiant unique désignant une instance de scène ? J'aimerait pouvoir l'utiliser pour s'assurer de l'exécution dans l'ordre dans lesquels les instances sont lancées. J'ai bien pensé utiliser la date et heure de lancement comme identifiant mais je ne sais pas jusqu'à quelle niveau de précision nous avons accès à cette heure d'exécution. (miliseconde ?)
Steven Posté(e) le 6 mars 2017 Auteur Signaler Posté(e) le 6 mars 2017 Je vois pas trop l'utilité que tu comptes en faire. Je ne connais pas l'existence d'un identifiant d'instance par contre, tu peux utiliser le fibaro:countScenes() pour avoir le nombre d'instance en cours. Ainsi, tu vas pouvoir les ordonner.
MAM78 Posté(e) le 6 mars 2017 Signaler Posté(e) le 6 mars 2017 En fait j'ai plusieurs instance d'une scène et je souhaite m'assurer celles-ci soit exécutées dans l'ordre des demandes d'exécutions. Voir dans mon TUTO sur l'envoi de passage dans la Syslog. En particulier le point dans la partie évolutions à venir (en rouge). J'ai constaté que cet ordre n'est pas forcément respecté. J'ai bien utilisé la fonction fibaro:countScenes() mais celle-ci ne réponds que partiellement à mon besoin ci-dessus.
Steven Posté(e) le 6 mars 2017 Auteur Signaler Posté(e) le 6 mars 2017 Dans ton VD, tu met un label supplémentaire "Traitement en cours" et tant que celui-ci contient "OUI" et ben tu attends en pseudo-code : while (fibaro:getValue(vd_id, "ui.Encours.label") == "OUI") do fibaro:sleep(2000) if (timeout) then -- en cas d attente trop longue, prevoir une sortie fibaro:abort() end end fibaro:call(vd_id, "setProperty", "ui.Encours.label", "OUI") fibaro:call(vd_id, "setProperty", "ui.label_1_0.value", syslog_message) fibaro:call(vd_id, "pressButton", bt_nb) fibaro:call(vd_id, "setProperty", "ui.Encours.label", "NON")
MAM78 Posté(e) le 6 mars 2017 Signaler Posté(e) le 6 mars 2017 (modifié) J'ai déjà tenté l'expérience, mais j'ai constaté que 2 traitements lancés quasiment en simultané arrivent à détecter le passage à "NON" avant que l'un des 2 ai le temps de positionner le label à "OUI". Si tu regardes mon code, que j'avais déjà fait l'essai, mes appels aux label existent encore dans ma scène et mon VD. Regarde le VD de démo et supprime la tempo d'une seconde et tu devrais constater la même chose. Si tu as le temps de faire le test avec ma scène et mes 2 VD. J'aimerais bien savoir si tu as le même comportement. D'où mon problème d'exécution simultanée (ce VD de démo envoi 8 messages en appelant ma scène de manière très rapide, ce serai la même chose sur d'un coup j'avais plusieurs Scènes ou VD qui demandaient l'envoi de messages en parallèle). C'est un cas que je ne peux pas exclure. Désolé, mais je fais du hors sujet. Si tu le souhaites, nous pouvons poursuivre dans mon TUTO sur l'envoi de message Syslog Modifié le 6 mars 2017 par MAM78
Messages recommandés