Fredmas Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 il y a 1 minute, Lazer a dit : @jang a parfaitement répondu (qui en aurait douté ) Qui en aurait douté, pas moi il y a 1 minute, Lazer a dit : Quant à ta phrase, je l'aurais plutôt écrite comme ceci : "La position de la déclaration de ta variable locale a de l'importance finalement." C'est en quelques sorte de la sémantique du langage.... notre langage d'humain Je suis complètement d'accord avec toi. Finalement ce n'est pas tant la position du onInit, mais la position de la déclaration des variables utilisées dans le onInit Merci pour la sémantique, tu as raison elle compte. Et dans cet exemple c'est intellectuellement plus judicieux, afin de garder la bonne habitude de codage des déclarations en tête
jang Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 The general advice to declare your variables in the beginning of the code/functions is usually a very good advice. Actually, the QA is "executed" when the code is loaded. It's just that fibaro helps us by collecting a lot of nice-to-have functions in the QuickApp class and when the code is loaded is creates a QuickApp object and calls its :onInit() function as an "entry point" for our code. If fibaro had not done that we could have achieved the same thing by creating the QuickApp object ourselves at the end of our code. function QuickApp:onInit() self:debug("foo") end quickApp = QuickApp() -- create object from class quickApp:onInit() -- call our "entry point" However, we don't need an :onInit() in our QA. If there is no :onInit(), fibaro will not call it. setInterval(function() fibaro.call(88,"turnOff") end,60*60*1000) is a perfectly valid QA that will turn off device 88 every hour.
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 salut Question d'améliorer les choses, j'ai créé un slider qui me permet de changer le temps Actuellement nous avons deux boutons deux heures et quatre heures mais j'aurais souhaité vient le slide enregistrer mon temps 0 à 100 minute L'idée est d'essayer d'enregistrer cette valeur invariables duration Comme tu peux voir j'ai quand même bien avancé mais c'est juste au niveau de l'enregistrement de la valeur que je n'arrive pas Merci pour ton aide function QuickApp:onSliderChanged(event) local value = event.values[1] self:debug("value", value) self:updateView("etat", "text" , "slider - " .. value .." W " ) end --2H function QuickApp:buttonClim2() self:debug("BOUTON 2H") duration = (value)*1000 test1(self) test2(self) test3(self) --- self:DH() self:updateView("etat", "text", "Dernière action >> 2 Heurs") end
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 (modifié) ha je arrivé comme un grand function QuickApp:onSliderChanged(event) local value = event.values[1] self:debug("value", value) self:updateView("etat", "text" , "slider - " .. value .." W " ) self:debug("slider ") duration = (value)*1000 test1(self) test2(self) test3(self) self:updateView("etat", "text", "Dernière action >> 2 Heurs") end Modifié le 17 novembre 2021 par 971jmd
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 Par contre j'ai une chose que je n'arrive pas à faire c'est de multiplier le facteur du SLIDER par deux ou trois
Fredmas Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 Purée tu enchaines les questions sans avoir le temps de te répondre #1. Dans ton premiers exemple de code ça ne pouvait par marcher, car tu as déclaré value comme une variable local etn écrivant local value = event.values[1] Donc la variable a une portée interne à function QuickApp:onSliderChanged(event) Une solution aurait était de ne pas déclarer value en local mais en globale, ou alors en local mais en dehors de la fonction concernée, de sorte à être prise en compte en dehors de cette fonction. #2. Dans ton deuxième exemple ça fonction car tu as copié le reste de ton code dans la function QuickApp:onSliderChanged(event), du coup la portée de value est compatible est réutilisable... Je ne pas te dire ce qui te va le mieux finalement. Tout dépend de comment tu veux gérer tes déclenchements, slider, bouton, automatiquement, etc.
Fredmas Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 (modifié) il y a 21 minutes, 971jmd a dit : Par contre j'ai une chose que je n'arrive pas à faire c'est de multiplier le facteur du SLIDER par deux ou trois Là ce n'est pas compliqué si j'ai bien compris le sens de ta phrase. Petit exemple : local value local toto function QuickApp:onSliderChanged(event) value = event.values[1] self:debug("value", value) self:updateView("etat", "text" , "slider - " .. value .." W " ) toto = value * 2 print(toto) end Modifié le 17 novembre 2021 par Fredmas
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 (modifié) Finalement je viens de trouver je l'ai placé derrière values[1]*2 Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses Modifié le 17 novembre 2021 par 971jmd
Fredmas Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 il y a 6 minutes, 971jmd a dit : Finalement je viens de trouver je l'ai placé derrière values[1]*2 Tout à fait. C’est ce que j’ai voulu te montrer avec mon exemple toto pour une lecture plus facile de la mécanique du calcul. il y a 7 minutes, 971jmd a dit : Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses Tu voudrais modifier l’unité de valeur visuelle du slider dans l’IHM de ton QA ? Si c’est ça je ne sais pas si c’est faisable.
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 Une chose que j'aurais aimé savoir, c'est le un entre les accolades, À quoi sert-il ? local value2 = val.values [1]
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 il y a 1 minute, Fredmas a dit : Tu voudrais modifier l’unité de valeur visuelle du slider dans l’IHM de ton QA ? Si c’est ça je ne sais pas si c’est faisable. Non je crois pas
Fredmas Posté(e) le 17 novembre 2021 Auteur Signaler Posté(e) le 17 novembre 2021 (modifié) il y a 8 minutes, 971jmd a dit : Une chose que j'aurais aimé savoir, c'est le un entre les accolades, À quoi sert-il ? local value2 = val.values [1] C’est parce que event est une table, qui contient values qui est aussi une table. Le 1 est pour la première donnée à utiliser dans la table values. Enfin dans ton écriture tu remplaces event de mon explication par val… https://www.domotique-fibaro.fr/topic/15376-slider/?do=findComment&comment=243049 Modifié le 17 novembre 2021 par Fredmas
971jmd Posté(e) le 17 novembre 2021 Signaler Posté(e) le 17 novembre 2021 ok merci pour l'explication
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 (modifié) Le 16/11/2021 à 18:09, henri-allauch a dit : Tu Insère une icône dans un device. Click droit sur l'icône : tu sélectionne enregistrer image sous Tu as dans le titre : User1005 par exemple Tu insère dans ton code -> self:updateProperty("deviceIcon", 1005) salut j'ai essayer et ça fonctionne pas j'ai sûrement loupé un truc Modifié le 18 novembre 2021 par 971jmd
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 une question, pensez-vous que la fonction centralSceneEvent fonctionne sur les QA ?
Fredmas Posté(e) le 18 novembre 2021 Auteur Signaler Posté(e) le 18 novembre 2021 Il y a 4 heures, 971jmd a dit : salut j'ai essayer et ça fonctionne pas j'ai sûrement loupé un truc L’ID de ton icône est 1006 il me semble
henri-allauch Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 (modifié) @971jmd Il y a 4 heures, 971jmd a dit : j'ai essayer et ça fonctionne pas j'ai sûrement loupé un truc cela ne fonctionne peut-être pas avec tous les icônes ( Attention aux icônes à plusieurs états ) va voir cette discussion : https://www.domotique-fibaro.fr/topic/14941-icones/ on en parle c'est là que j'avais lu la solution et je l'utilise dans tous mes QA Modifié le 18 novembre 2021 par henri-allauch
Lazer Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 Il y a 10 heures, 971jmd a dit : Par contre il y a une chose un peu dérangeant dans le slider c'est le pourcentage qu'il affiche quand on le déplace, et là je crois pas qu'on peut faire grand choses Je pense que c'est possible mais je n'ai jamais essayé. Dans le JSON du module, on voit qu'il y a des bornes min et max : Tu peux tenter de mettre cette ligne dans le onInit() de ton QuickApp pour tester si ça fonctionne : self:updateView("slider1", "min", "0") self:updateView("slider1", "max", "200") Évidemment tu remplaces le nom du "slider1" par le nom de ton slider, et les valeurs des bornes min max que tu veux.
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 salut @Lazer j'ai essayer et toujours pareille 0 à 100 et toujours avec le %
jang Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 https://forum.fibaro.com/topic/54915-quickapp-slider-minimum-and-maximum-range/ 2
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 salut à tous j'ai un soucie avec mon QA qui fonctionne tres bien et maintenant j'ai dans le debug connection error avez vous une idée
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 quand j uppuis sur le bouton 2H. (buttonClim2) --2H function QuickApp:buttonClim2() self:debug("BOUTON 2H") duration = 10*1000 test1(self) test2(self) --- test3(self) self:updateView("etat", "text", "Dernière action >> 2 Heurs") end il active function test1(self) ---self:ON24_S1_C1() if timeoutClim1 > 0 then clearTimeout(timeoutClim1) timeoutClim1 = 0 end timeoutClim1 = setTimeout(function() self:OFF_S1_C1() end, duration) end après les 10 seconde j'ai [18.11.2021] [11:52:48] [DEBUG] [QUICKAPP55]: connection error
Fredmas Posté(e) le 18 novembre 2021 Auteur Signaler Posté(e) le 18 novembre 2021 Un truc que je ne comprends pas, pourquoi as-tu mis le ON en commentaire ? ---self:ON24_S1_C1() Ton but n'étais pas d'allumer, puis d'éteindre X secondes plus tard ? Sinon pour ton debug, avec de petits extraits de codes, c'est compliqué de savoir te dire sans voir ce que tu as mis dans la fonction OFF_S1_C1() ou ailleurs. Au pire histoire de chercher à comprendre, remplace "function() self:OFF_S1_C1() end" par un banal print("toto"), et tu sauras si l'erreur vient bien du contenu de OFF_S1_C1()
971jmd Posté(e) le 18 novembre 2021 Signaler Posté(e) le 18 novembre 2021 alors je vient de comprendre le truc mai je ne c'est pas le résoudre je t'explique Quand j'ai fait les tests avec les lumières ça fonctionnait très bien, sauf que maintenant j'ai raccorder le module IR et ce dernier ne peut pas accepter simultanément trois OFF Il faut que tu m'aides à trouver une solution pour temporiser les OFF des trois clim
Messages recommandés