Aller au contenu
971jmd

LUA HC3

Recommended Posts

Salut a tout

Ne sachant pas  ou trouvée un topic sur le code LUA sur la HC3 

 

je cherche à attribuer la valeur d'un module dans une variable

 

Le print me revois bien la valeur de mon FGD-212 

mais rien dans ma variable 

 

local valeur = (fibaro.get(107, "value"))
print("message telegram = " .. valeur)

fibaro.setGlobalVariable('telegrame', valeur)

 

merci d'avance pour votre aide

Modifié par 971jmd

Partager ce message


Lien à poster
Partager sur d’autres sites

La syntaxe semble correcte.

Tu es certain que ta variable globale "telegrame" existe bien avec ce nom exact (il fait la différence minuscule/majuscule) ?

 

En copiant/collant ton texte, il y a des caractères invisibles symbolisés par des points :

 

image.png.6e4a4ec06a482e7985d213062d8d396a.png

 

Tu devrais retaper entièrement al ligne comme ceci :

fibaro.setGlobalVariable('telegrame', valeur)

 

Je ne sais pas quel éditeur tu utilises, mais il t'a inséré ces caractères spéciaux, c'est certainement la raison de ton problème

Partager ce message


Lien à poster
Partager sur d’autres sites

salut

j'ai refait ma variable 

 

local valeur = fibaro.get(107, "value")
print("message telegram = " .. valeur)
fibaro.setGlobalVariable('telegram', valeur)

et toujours la même erreur 

[05.10.2020] [13:39:14] [DEBUG] [SCENE74]: message telegram = 44
[05.10.2020] [13:39:14] [ERROR] [SCENE74]: (load):3: Assertion failed: Expected string

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Alors comme ceci :

fibaro.setGlobalVariable('telegram', tostring(valeur))

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci ça fonctionne :60:  télégramme fonctionne sur ma HC3

 

C'est quoi la fonctionne de tostring en 2 mots

 

je cherche désespérément à prendre des cours sur les bases du LUA FIBARO

 

 

Partager ce message


Lien à poster
Partager sur d’autres sites

et si je souhait ajouter un texte après valeur 

 

Pour le moment je recrois un chiffre comme par exemple 27   et je souhaiterais 27 %

fibaro.setGlobalVariable('telegram', tostring(valeur))

Partager ce message


Lien à poster
Partager sur d’autres sites

Google a réponse à ce genre de question simple :

 

image.thumb.png.e26f09b9061668aef62d1d4056f2b3bb.png

 

Pour ta 2nde question, il faut concaténer les chaines de caractères, plusieurs façon de le faire, en voici une simple et efficace :

fibaro.setGlobalVariable('telegram', tostring(valeur).."%")

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Merci pour l'info

 

sinon

.."%" ne fonctionne pas, si je ne trompe pas % permet de comblée des espaces un truc comme ça 

 

fonctionne 

fibaro.setGlobalVariable('telegram', tostring(valeur).."pourcentage")

Ne fonctionne pas

fibaro.setGlobalVariable('telegram', tostring(valeur).."%")

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah bon ?

Essaye en mettant 2 pourcents cote à cote alors : .."%%"

Partager ce message


Lien à poster
Partager sur d’autres sites
fibaro.setGlobalVariable('telegram', tostring(valeur)  .. "%%")

 

non plus et si je teste avec
fibaro.setGlobalVariable('telegram', tostring(valeur)  .. "la HC3 %")
 
non plus
 

Partager ce message


Lien à poster
Partager sur d’autres sites

j'ai testé ça aussi pour essayer de placer un mot devant la valeur et reçois que lampe

 

j'ai tester avec ou sans les () toujour rien 

 

fibaro.setGlobalVariable("telegram", ("..lampe.."), tostring(valeur)  .. "  P100")

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le % franchement là je ne sais pas trop.

 

Par contre ta dernière syntaxe est mauvaise, c'est certain, tu ne peux pas avoir 3 arguments (séparés par les virgules) dans ta fonction fibaro.setGlobalVariable()

Fait un peu attention, la programmation est un exercice très rigoureux, chaque caractère compte.

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est comme ça qu'on apprend 

 

ça fonctionne

fibaro.setGlobalVariable("telegram",  tostring(idlampe .. " est à " .. valeur)  .. "  P100")

Merci j'ai appris une  choses:  concaténer 

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut à tous, je cherche aussi un topic pour les différence LUA entre la HC2 et la HC3 si quelqu'un peu me guider ??? ce serait top ?

Sinon ma question est la suivante :

Avant j'avais scène LUA d'allumage automatique de lumière et il y avait un test de l'heure pour tuer la scène si on était dans la fourchette

 

en gros j'avais cette commande


local now = tonumber(os.date("%H")
if (now > heurefin and now < heuredebut) then
  fibaro:abort()

mais je crois me rappeler que le fibaro:abort() n'existe plus.

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu peux utiliser return, tout simplement.

Partager ce message


Lien à poster
Partager sur d’autres sites

ou encore plus simple : gérer l'allumage et l'extinction de tes lumière avec GEA ... 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Ouais mais non, parce que j'avais déjà demandé à @Lazer il y a un certain temps et il 'avait répondu que GEA n'était pas fait pour ce genre de chose.

Cette scène déclenche la lumière avec un FGMS lors de la détection d'un mouvement, teste pendant 3 min s'il y ça bouge toujours et si c'est le cas remets le compteur à 0 et éteint tout lorsque plus rien ne se passe.

 

Mais j'aimerais qu'elle ne se déclenche que le soir (en été) et matin et soir en hiver.

Il y a 14 heures, Lazer a dit :

Tu peux utiliser return, tout simplement.

Avec les mêmes conditions ? la récupération de l'heure se fait de la même façon ?

Un topic pour la Syntaxe GEA de la HC3 ?

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Mais pour cet usage précis de gestion des lumières, ça se fait très bien via GEA, toutes mes lumières sur détection de mouvement sont gérées de la sorte.

Je ne me souviens pas dans quel contexte je t'avais déconseillé l'usage de GEA, mais c'était peut être parce que tu voulais une gestion très fine des heures et temporisations, genre à la seconde près, pour laquelle GEA n'est effectivement pas adapté.

Mais pour de l'allumage instantané de lumière sur détection de mouvement, puis extinction automatique à 30 secondes près, GEA fait parfaitement le boulot, en 2 ou 3 règles.

Voir les showrooms.
 

En LUA, return ça permet de sortir d'une fonction.

Si tu appelles cette instruction alors que ton code en cours d'exécution n'est pas une fonction (c'est à dire dans le corps principale de la scène), alors ça va simplement "sortir" de la scène, c'est à dire arrêter son exécution.

 

La syntaxe GEA, voir la doc (fichier LUA à télécharger sur le topic de GEA pour HC3)

Partager ce message


Lien à poster
Partager sur d’autres sites

chez moi, je fais tout ça avec GEA.

 

1) tu crées un QA de type binary SWITCH (Auth_lum)

2) avec GEA, tu le mets à On ou Off en fonction de tes conditions?

3) pour allumer la lampe GEA.add avec condition sur mvt ET Auth_lum avec -1

4) pour éteindre la lampe, je me rappelle avoir vu un bel exemple dans la doc GEA.

 

on se revoit donc bientôt sur le topic support GEA (qui maintenant est dans est dans tes favoris) ? :100:

Modifié par jojo
  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites

Mouais alors il va me falloir un coup de main pour créer ce QA parce que là.... j'en suis pas encore arrivé là !!

Evidemment qu'il est dans mes favoris... besoin de vous moi ! mais pour cette scène à traduire en GEA, j'avoue que j'ai du mal à visualiser le code GEA et encore moins le fonctionnement du QA.

Je vais tester mais j'ai peur de m'y perdre.... y a un topic pour la création de QA ?

 

si je peux partager la scène que vous ne donniez un coup de paluche ce serait cool.

Je bascule sur le support GEA

Partager ce message


Lien à poster
Partager sur d’autres sites
Il y a 4 heures, Lazer a dit :

Mais pour cet usage précis de gestion des lumières, ça se fait très bien via GEA, toutes mes lumières sur détection de mouvement sont gérées de la sorte.

Je ne me souviens pas dans quel contexte je t'avais déconseillé l'usage de GEA, mais c'était peut être parce que tu voulais une gestion très fine des heures et temporisations, genre à la seconde près, pour laquelle GEA n'est effectivement pas adapté.

Mais pour de l'allumage instantané de lumière sur détection de mouvement, puis extinction automatique à 30 secondes près, GEA fait parfaitement le boulot, en 2 ou 3 règles.

Voir les showrooms.
 

En LUA, return ça permet de sortir d'une fonction.

Si tu appelles cette instruction alors que ton code en cours d'exécution n'est pas une fonction (c'est à dire dans le corps principale de la scène), alors ça va simplement "sortir" de la scène, c'est à dire arrêter son exécution.

 

La syntaxe GEA, voir la doc (fichier LUA à télécharger sur le topic de GEA pour HC3)

tu m'avais répondu cela à l'époque @Lazer

 

Le 26/10/2021 à 18:52, Lazer a dit :

J'ai déplacé ton message au bon endroit, je suis sympa car je ne l'ai pas supprimé sans préavis comme expliqué sur l'autre topic ;)

 

Mais euh, désolé là je n'ai aucune motivation pour me lancer dans la lecture de ta longue scène....

 

GEA est un moteur d'exécution de règles.

1 ligne = 1 règle.

Chaque règle comprend 1 ou plusieurs conditions, et 1 ou plusieurs actions.

L'ensemble des règles sont parcourues, testée, et exécutées le cas échant, toutes les 30 secondes.


Ce n'est pas du tout la même approche qu'une grosse scène complexe qui fait papa maman à boire et à manger.

Cela dit GEA fait aussi papa maman à boire et à manger mais avec une approche totalement différente.

 

Le mieux à faire est de te lancer avec des règles simples, que tu étofferas au fur et à mesure, et tu trouveras facilement de l'aide pour te dépanner au cas par cas.

 

Après tout n'est pas faisable avec GEA (ou alors ça serait trop complexe et pas adapté à mon avis).
Exemple concret, j'ai une scène réveil douceur qui effectue plusieurs actions pendant plusieurs minutes. Ben là déjà rien qu'en disant ça, on comprend que GEA n'est pas adapté, il vaut mieux se faire une petite scène à coté (que GEA peut déclencher)

Idem, j'ai une scène alarme, qui est autonome.

 

Bon cela dit, sauf si quelqu'un est motivé pour lire ta scène en entier... bon courage :)

  

 

Modifié par Yannick

Partager ce message


Lien à poster
Partager sur d’autres sites
il y a 35 minutes, Yannick a dit :

La syntaxe GEA, voir la doc (fichier LUA à télécharger sur le topic de GEA pour HC3)

pas la syntaxe GEA @Lazer mais la syntaxe LUA pour HC3 !!!:2:

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Hum maintenant je me souviens, une scène que je n'avais pas du tout l'envie ni le temps de relire...

Tu n'as pas la bonne approche je pense.

On ne convertie pas une scène en GEA.

On fait des choses différemment avec GEA, pour au final arriver au même résultat (plus ou moins, pas forcément exactement le même résultat... quand ça ne convient pas, alors on écrit sa propre scène)

Je vais m’auto-paraphraser :

  • Le mieux à faire est de te lancer avec des règles simples, que tu étofferas au fur et à mesure...

Les exemples simples tu les trouveras dans la doc de syntaxe de GEA.

Les exemples un peu plus étoffés, tu les trouveras dans le showroom.

 

 

Je n'ai pas compris pourquoi @jojo t'as suggéré de créer un QA... ça me semble bien compliqué, et inutile pour gérer des lumières avec détection de mouvement.... comme dit, 2 ou 3 règles GEA et c'est terminé.

C'est un classique... voir le showroom GEA pour divers exemples réels d'utilisateurs (il y a souvent plusieurs façon de le faire... plus ou moins simples)

 

 

La syntaxe du LUA sur HC3.... ben... il n'y en a pas.
C'est du LUA quoi, un langage parfaitement documenté sur plusieurs sites (c'est la version 5.3 pour info)

Perso je pose mes question à Google, on retombe toujours sur les 2 ou 3 mêmes sites.

Sinon pour les fonctions spécifiques à la HC3, voir la doc de Fibaro :

Et le Swagger pour toute la documentation de l'API, intégré dans la HC3 et accessible par le petit bouton en bas à gauche de l'interface Web :

image.png.4600193a2cbd58a74863a9691b77c685.png

 

  • Like 2

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 12/07/2022 à 17:14, jojo a dit :

binary sensor

errore, c'est un binary SWITCH

Partager ce message


Lien à poster
Partager sur d’autres sites
Le 12/07/2022 à 19:06, Lazer a dit :

Je n'ai pas compris pourquoi @jojo t'as suggéré de créer un QA... ça me semble bien compliqué, et inutile pour gérer des lumières avec détection de mouvement.... comme dit, 2 ou 3 règles GEA et c'est terminé.

je crée des QA de type binary switch, dès que j'ai besoins d'une variable booléenne.

je proposais de gérer l'allumage des lumières avec -1 sur le mouvement (la base quoi) et si on était autorisé à l'allumer (QA binary switch)

et là les conditions peuvent être multiples (heure, luminosité, âge du capitaine, météo, saison, ...) => on peut facilement rajouter d'autres règles GEA pour ce QA (qui, @Yannick (au passage, ne changerais-tu pas ton avatar avec un fantôme souriant - cela m'interpelle à chaque message :2:) est comme une simple lampe virtuelle pilotage avec GEA avec les options "TurnOn" & "TurnOff".)

 

Pour la création des QA, c'est archi simple, tu l'as déjà fait : GEA. Au lieu de faire depuis un fichier, tu chois (suspens :16:) "Quick App". et tu choisis, pour ici, binary switch. (plus simple, tu meurs, mais reste avec nous :74:) ... 

Partager ce message


Lien à poster
Partager sur d’autres sites

×