-
Compteur de contenus
2 501 -
Inscription
-
Dernière visite
-
Jours gagnés
28
Tout ce qui a été posté par MAM78
-
Hello @tibahut, Suite à ton message sur mon sujet ouvert sur la possibilité de passer des paramètres lors de l'appel d'une scène. Nous souhaiterions pouvoir disposer dans GEA lors de l'appel d'une scène pouvoir ajouter des paramètres qui seront pris en compte par la scène en question. Voici ci-dessous pour la syntaxe de l'appel d'une scène avec 4 paramètres passés lors de l'appel de la scène 24 : fibaro:startScene(24, {{param1 = 74}, {param2=0}, {param3="cyan"}, {param4="Coucou"}}) Principes généraux au niveau des paramètres : Ils doivent rester facultatifs Le nombre de paramètres doit pouvoir être indéfini (au choix de l'utilisateur) Le nommage des paramètres doit pouvoir être libre (au choix de l'utilisateur) Les valeurs peuvent être de tout type (numériques, texte, date, booléen, ...), soit des valeurs en dur telles que renseignées par l'utilisateur ou des valeurs calculées ou disponibles dans GEA. Lors de l'appel de la scène, la syntaxe doit respecter la forme ci-dessus, notamment avec les crochets qui encadre chacune des variables et les crochets encadrant l'ensemble des variables Exemple d'écriture la chaine de caractères correspondant aux paramètres envoyés : Idéalement cette chaine de caractères devrait pouvoir être interprétée/évaluée comme du code LUA, comme par exemple : "{{param1 = "..id["ENTREE_SOUS_SOL"].."}, {param2=".."TEXTE LIBRE".."}, {param3 ="..#date# #time#.."}, {param4="..10*60.."}, param5="..{Global, "Nombre de truc"}, param6="..["Nom_Var"].."}}" dont le résultat serait le suivant : "{{param1 = 4}, {param2="TEXTE LIBRE"}, {param3 ="08/03/2017 10:15"}, {param4="600"}, param5=500}, param6="Val_Nom_Var"}}" Explications sur l'exemple : id["ENTREE_SOUS_SOL"] : serait issu d'une variable tableau (soit = 4) créée dans la partie du code GEA accessible pour l'utilisateur du genre : local id = { ENTREE_SOUS_SOL = 4, SALLE_A_MANGER = 39, SALON = 42, } "TEXTE LIBRE" remplacé par TEXTE LIBRE #date# #time# : remplacé par la date et l'heure système 10*60 : remplacé par le résultat de la formule, soit 600 {Global, "Nombre de truc"} : remplacé par la valeur de la variable globale selon sont type (texte, boolean, number, ...), soit 500 dans l'exemple ["Nom_Var"] : remplacé par la valeur d'une variable en conservant sont type (texte, boolean, number, ...) créée dans la partie du code accessible pour l'utilisateur du genre, soit : local Nom_Var = "Val Nom_Var" local Nom_Var = 500 local Nom_Var = true Disponibilité de cette fonctionnalité : Cette possibilité d'appeler la scène avec des paramètres devrait être possible via les fonctions : de planification luaDaySchedule:add a compléter par les experts de GEA Je laisse aux autres compléter et corriger le mode d'écriture de la chaine de caractère qui doit être interprétées. Je pense que c'est une bonne base pour de premières spécifications
- 12 330 réponses
-
- 2
-
-
- support
- script lua
-
(et 1 en plus)
Étiqueté avec :
-
Décidément quand ça veut pas, ça veut pas J'ai toujours le même problème lorsque la scène est sollicitée plusieurs fois dans un intervalle de temps très court (de l'ordre du centième de seconde). Les scènes en question détectent en même temps le passage du label à NO et sortent de leur boucle d'attente. Du coup elles sollicitent le VD en quasi simultané et donc, il n'y en qu'une qui envoi son messages, les autres messages qui devaient être envoyés par les autres instances de la scènes sont perdues. J'ai bien tenté de mettre un wait d'une durée aléatoire pour décaler les scènes dans la boucle d'attente en utilisant une fonction du random (voir code ci-dessous). Mais rien à faire ces scènes qui s'exécutent dans un intervalle très court calculent le même x nombre de centièmes de secondes. Cette fonction random n'est pas vraiment aléatoire puisqu'elle retourne la même valeurs pour chacune des scènes lancées en parallèle. math.randomseed(os.time()) local x = math.random(2000,2500) fibaro:sleep(x) A ce stade, je ne vois plus de solutions. P....n pourquoi Fibaro n'a pas intégré la fonction Net.FUdpSocket() dans les scènes. Est-ce que l'un des gourous du forum veut bien relevé le chalenge de me trouver une solution ?
-
J'ai remarqué qu'il y a une erreur dans le VD j'ai mélanger le français et anglais (OUI vs YES) entre le test la boucle à OUI d'attente et la mise à jour de la valeur du label à YES. Je vais refaire des tests lorsque je serais à la maison.
-
Le NON passe dans le VD qui envoi le message dans la syslog Envoyé de mon iPhone en utilisant Tapatalk Pro
-
Merci pour cet honneur
- 33 réponses
-
- 1
-
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
Rien à voir avec ma ponctualité je souhaite utiliser la date et heure en millisecondes à fin de créer un identifiant unique pour gérer mes scènes Envoyé de mon iPhone en utilisant Tapatalk Pro
-
De que j'ai lu du benchmark de steven. l'unité minimum est le centième de seconde et non au millième pour la fonction os.clock. Est-ce que je me trompe dans ma lecture du code et des résultats obtenus lorsque je lance le test ?
-
Pourriez-vous m'indiquer s'il est possible d'avoir la date et heure avec une précision en millisecondes ? et si oui comment ?
-
Ca viendra certainement un jour. Il pas si longtemps que ça, nous n'avions pas encore d'app store sur l'apple TV. Ils sont pas méchants. Ca chambre surtout !
-
Effectivement, c'est bien ce que je pensais. Il vont finir par m'énerver Apple. D'autant qu'ici il ne fait pas bon de parler d'apple c'est un sujet un peu tabou.
-
@pepite c'est fait. Merci de me l'avoir rappelé
- 33 réponses
-
- 1
-
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
Ok, je vois mieux de quoi tu voulais parler. J'étais bien aller faire un tour de ce côté la lorsqu'il avait indiqué sa découverte de la possibilité de passer des paramètres à l'appel d'une scène. Je vais intégrer, mais ce n'est pas accessible au commun des mortels
- 33 réponses
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
@Steven comme indiqué dans notre conversation sur ton sujet HC2 - Ajouter du texte dans vos "debug". Je viens de faire le test sur la base de ta suggestion d'utiliser un Label pour tester la fin d'exécution. Mais comme indiquer ça ne fonctionne pas. Tu trouveras ci-joint les 2 VD et la scène utilisés. Si tu regardes dans la log du bouton du VD Message Synology. il y a des messages qui sont mangés Ai-je bien appliqué le principe que tu me suggérais ? Syslog_Message_Demo.vfib.json Syslog_Message.vfib.json le code de ma scène : --[[ %% properties %% events %% globals --]] -------------------------------------------------- -- Scene : Syslog Message -- Author : Mam78 -- Version : 0.1 -- Date : March 2017 -------------------------------------------------- -- Prerequisites for use you need to : -- install the corresponding VD "Syslog Message" -- modify below variable vd_id with the number of the corresponding VD "Syslog Message" -- change the icon of the scene -------------------------------------------------- -- For use it from a VD or Scene you need call them like this : -- fibaro:startScene(40, {{sev = "debug"}, {orig= "VD/Scene Name"}, {mess = "SysLog text message"}}) -- first parameter (40) is the number this Scene -- Sev = the severity (textual) of the message, see the value bilow (not the number) -- Orig = the nome of the VD ou Scene who call this Scene to indicate the origine of the message -- mess = Your message -------------------------------------------------- ----------------------- -- User settings to be changed ----------------------- local vd_id = 179 -- id number off the corresponding VD "Syslog Message" local sc_id = 40 -- id off the presence scene local VG_syslog_message ="syslog_message" -- Variable name if you use Gabal Variable ----------------------- -- No more change under this ----------------------- ----------------------- -- number button off used in the corresponding VD "Syslog Message" ----------------------- local bt_nb = 1 local debug = true -- or true local Max_Elapsed_Time = 10 -- seconds, used for timeout local syslog_hostname = "" ----------------------- -- 8 level off severity ----------------------- local severity = { ["emergency"] = 0, ["alert"] = 1, ["critical"] = 2, ["error"] = 3, ["warning"] = 4, ["notice"] = 5, ["info"] = 6, ["debug"] = 7 } ----------------------- -- load the args from the scene ----------------------- local arg_sev = nil local arg_orig = nil local arg_mess = nil local params = fibaro:args() if (params) then for k, v in ipairs(params) do if (v.sev) then arg_sev = v.sev end if (v.orig) then arg_orig = v.orig end if (v.mess) then arg_mess = v.mess end end end var_abort=false if arg_sev and arg_orig and arg_mess then ----------------------- -- this code is for waiting the end of the precedente sending ----------------------- startTime = os.time() local save_scenecount = fibaro:countScenes(sc_id) while (fibaro:getValue(vd_id, "ui.Label2.value") == "OUI") do fibaro:sleep(2000) if (timeout) then -- en cas d attente trop longue, prevoir une sortie fibaro:abort() var_abort=true end end -- while true do -- local elapsedTime = os.difftime(os.time(), startTime or 0) -- if elapsedTime > Max_Elapsed_Time then -- if debug then fibaro:debug("Send message scene timeout : "..arg_sev.." ("..severity[arg_sev]..")") end -- break -- end -- if debug then fibaro:debug("Nbr Scene = "..fibaro:countScenes(sc_id).." Elapsed time : " .. elapsedTime.." : "..arg_sev.." ("..severity[arg_sev]..")") end -- if fibaro:countScenes(sc_id) < save_scenecount or fibaro:countScenes(sc_id) == 1 then -- break -- else -- -- fibaro:sleep(1 * 1000) -- Wait 1 seconds -- end -- end -- if fibaro:countScenes(sc_id) <=1 then if not(var_abort) then ----------------------- -- Set the label under process on YES ----------------------- fibaro:call(vd_id, "setProperty", "ui.Label2.value", "YES") if debug then fibaro:debug("Message : "..arg_mess) end ----------------------- -- Calculate the priority for the message ----------------------- local syslog_severity = severity[arg_sev] local syslog_facility = 1 -- 1 = user category local syslog_priority = syslog_facility*8 + (syslog_severity%8) ----------------------- -- Remplace de spaces character by "_" because space is forbidden ----------------------- local syslog_origine = string.gsub(arg_orig, " ", "_") -- Space is forbidden local syslog_message = ("<%d>%s %s %s: %s\n"):format (syslog_priority, os.date "%b %d %H:%M:%S", syslog_hostname, syslog_origine , arg_mess) ----------------------- -- Set the Gabal Variable used by the virtual device "Message Syslog" ----------------------- --fibaro:setGlobal(VG_syslog_message, syslog_message) ----------------------- -- Set the label on the virtual device "Message Syslog" ----------------------- fibaro:call(vd_id, "setProperty", "ui.label_1_0.value", syslog_message) ----------------------- -- push the button on the virtual device "Message Syslog" ----------------------- fibaro:call(vd_id, "pressButton", bt_nb) else fibaro:debug("Sortie de la boucle pour timeout") end else fibaro:debug("There are missing parameters") end -----------------------
-
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
-
@pepite j'ai bien intégré ton ton Tuto sur les API-LUA et API-HTTP. Mais pour le reste je ne vois pas de quoi tu parles ci-dessous : http://updateHC2/"firmw"' et /opt/fibaro/scene.... Si tu peux me donner les liens en question
- 33 réponses
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
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.
-
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 ?)
-
@pepite elle est où ta documentation sur les API
- 33 réponses
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
Top merci pour cette info. Mais comment ont fait pour utiliser ces fonctions ?
- 33 réponses
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
J'ai une suggestion pour les admin. Vous pourriez peut-être ajouter ce sujet au menu "Outils" du forum sous le nom "Documentations" afin de pouvoir y accéder rapidement
- 33 réponses
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
Bibliothèque de la Documentations Fibaro HCL et HC2 1) Introduction : Je débute sur ma box HC2 et j'apprécie notamment de pouvoir développer ses propres scripts en LUA et Bloc, mais je suis souvent confronté à la difficulté de trouver des fonctions, propriétés, API, leur syntaxe, ... Le site apporte une grande richesse d'informations. Mais celles-ci sont dispersées et pas toujours facile à trouver. J'ai donc pris l'initiative de créer ce sujet pour y référencer les différentes documentations disponibles (sur le site ou externes) afin facilement les retrouver. J'aurais pu les mettre dans mes favoris de mon navigateur, mais c'est quand même plus cool de les partager avec vous Ce sujet est le votre. C'est grâce à vous qu'il va vivre et vous servir. Merci donc de m'indiquer les liens à ajouter qui vous semble utiles, idem pour vos suggestions de rubriques. 2) Fonctions et API LUA Documentation générale sur LUA : Tutoriel du Langage LUA 5.2 Source : (wxlua.developpez.com) Auteur : Claude Urban Langue : français Commentaire : Très bon tutoriel sur la programmation en LUA. Manuel Officiel LUA 5.2 Source : (lua.org) Auteur : Lua Org Langue : anglais Commentaire : Documentation officielle des commandes LUA. Documentation Spécifique pour nos box Fibaro : Résumé des Fonctions HC2 Source : (domotique-fibaro.fr) Auteur : @Tomzebest Langue : français Commentaire : Traduction en français de la documentation Fibaro Résumé des Fonctions HC2 Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. Introduction à la programmation LUA sur HC2 Source : (domotique-store.fr) Auteur : Jérôme Massiaux Langue : français Commentaire : Vous apprendrez les bases de la programmation de scènes via le langage Lua. Une introduction au langage Lua Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. Liste Api-Lua & Api-Http Pour Hc2 Source : (domotique-fibaro.fr) Auteur : @pepite Langue : français Commentaire : Tutorial sur les API-LUA et API-HTTP Introduction aux API via des requêtes HTTP Source : (domotique-store.fr) Auteur : Martial Villemin Langue : français Commentaire : exemple simple, pour allumer une lumière via de simples requêtes HTTP http://l'adresse IP de votre box/docs/ Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation Active de l'API Rest (vous pouvez tester en live les fonctions FGHC Rest API Functions Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro de l'API Rest (pour les développer) Nécessite un compte. FGHC LUA API Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro des fonction LUA de l'API (pour les développer) Nécessite un compte. FGHC Plugins Creating Source : (developer.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro sur le développement de Plugins) Nécessite un compte. Matrice Fonctions / Type de Devices Source : (fibarouk.co.uk) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro. http://updatehc2.fibaro.com/4.110/ Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Ressources disponibles dans les Upgrade de versions. Attention de remplacer 4.110 par la version correspondante à votre HC2. Il convient de d'extraire le contenu du fichier patch.tar.gz sur votre disque parcourir les arborescences et regarder le contenu des fichier présents. notamment celui-ci qui liste les fonctions disponible dans les API pour les scènes : patch/opt/fibaro/FibaroSceneAPI.lua Ce n'est pas forcement accessible à tous, mais vous pourriez y trouver des informations intéressantes. n'oubliez pas de les partager Développement spécifique pour nos HC2: Gestionnaire d'Evénements Automatique (GEA) Auteur : @Steven Langue : français Commentaire : contrôler, à intervalle régulier, l'état de votre environnement pendant une durée déterminée afin de vous avertir d'éventuel soucis et si nécessaire d'effectuer automatiquement certaines actions Base de connaissances sur les produits Fibaro : Base de Connaissances Source : (manuals.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Base de connaissances sur les produits Fibaro 3) Utilisation de nos Home Center Plate-forme eLearning Fibaro Source : (e-learning.fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation officielle de Fibaro sur le développement de Plugins) Nécessite un compte. Présentation Box Zwave: Home Center v2 de Fibaro Source : (maison-et-domotique.com) Auteur : Cédric Locqueneux Langue : français Commentaire : Présentation de la Home Center v2 de Fibaro. 4) Utilisation des blocs graphiques Création de scénarios Source : (blog.domadoo.fr) Auteur : Bruno Langue : français Commentaire : Tutoriels pour la création de scénarios 5) Devices Fibaro FIBARO Devices Manuels Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Documentation pour chacun de module de marque Fibaro. 6) Androïd et iOS Paramètrage Appli Fibaro pour Android et iOS Source : (fibaro.com) Auteur : Fibaro Langue : anglais Commentaire : Comment configurer des raccourcis sur votre téléphone Androïd et iOS 7) Utilitaires Fibaro HC HTTP Commands Source : (smarthome.com) Auteur : Brad Arthur Langue : anglais Commentaire : Il permet de générer ane commande http selon un ensemble de paramètre. Si vous ne voulez pas mettre d'infos sensible, mettez zzzz à la place de password et remplacer manuellement ensuite.
- 33 réponses
-
- 6
-
-
- hc2
- documentation
-
(et 1 en plus)
Étiqueté avec :
-
Je veux bien essayé, mais je suis loin d'avoir son niveau. Ca risque de ne pas être très joli
- 98 réponses
-
- 1
-
-
- figaro:args()
- paramètre
-
(et 1 en plus)
Étiqueté avec :
-
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.
-
Notre amis @Steven devrait pouvoir nous arranger cela
- 98 réponses
-
- figaro:args()
- paramètre
-
(et 1 en plus)
Étiqueté avec :
-
Ca y est la première Scène (utilisant les passages de paramètres) permettant de : Centraliser l'ensemble des logs de toutes les scènes et VD. Notamment celles les plus critiques qui permettrait d'avoir une vision globale sur les problèmes rencontrées. Suggestion de @Gazous ==> C'est fait par @MAM78 via un serveur Syslog (exemple Synology) est c'est disponible ici : Envoi de Logs vers un serveur syslog (exemple : Synology)
- 98 réponses
-
- figaro:args()
- paramètre
-
(et 1 en plus)
Étiqueté avec :