couillerot Posté(e) le 27 février 2021 Signaler Posté(e) le 27 février 2021 (modifié) *100 ?! thanks jang Stef Modifié le 27 février 2021 par couillerot
Lazer Posté(e) le 27 février 2021 Signaler Posté(e) le 27 février 2021 @couillerot j'ai survolé les échanges sans vraiment lire, de même que ton code posté à la page précédente, mais il y a juste une chose qui m'interpelle : pourquoi appeler onInit() dans chaque fonction ? ça ne pas de sens, onInit() est (et doit être) appelé une seule fois lors de la création du QuickApp, par la HC3.
couillerot Posté(e) le 27 février 2021 Signaler Posté(e) le 27 février 2021 je pensais que le onInit était une sorte de "Return"... comme quoi les échanges ont leurs importances Stef
jjacques68 Posté(e) le 27 février 2021 Signaler Posté(e) le 27 février 2021 si tu veux afficher le contenu de tes variables "à la demande", passes peut-être par une fonction spécifique à cette usage...
Lazer Posté(e) le 28 février 2021 Signaler Posté(e) le 28 février 2021 Le 27/02/2021 à 11:48, couillerot a dit : je pensais que le onInit était une sorte de "Return"... Non, le onInit() c'est juste la première fonction appelée lors de la création du QA (pas tout à fait, mais pour simplifier on va dire que c'est le cas) Ensuite chaque fonction va se déclencher sur événement. Par exemple un utilisateur qui a cliqué sur un bouton/slider du QA, une fonction qui est appelée en asynchrone par un setTimeout() dans le cas d'une pseudo boucle infinie, ou bien encore une fonction appelée depuis l'IHM ou un autre QA, etc. Le reste du temps, le QA ne fait rien. C'est tout simple en fait. 1
couillerot Posté(e) le 1 mars 2021 Signaler Posté(e) le 1 mars 2021 merci pour ces précisions Lazer Stef
shinsenai Posté(e) le 1 mars 2021 Signaler Posté(e) le 1 mars 2021 Le 27/02/2021 à 11:52, jjacques68 a dit : si tu veux afficher le contenu de tes variables "à la demande", passes peut-être par une fonction spécifique à cette usage... J'ai adapté la QuickApp à mon installation et c'est exactement ce que j'ai fait et proposerais de faire. J'ai défini une fonction update() qui est appelée une fois dans la fonction onInit et après dans les gestionnaires d'événement, mais on peut aussi l'utiliser pour rafraîchir les infos à la demande: function QuickApp:update() -- Mise à jour variable sur label local ModeCh = fibaro.getGlobalVariable("Heating_Library") self:updateView("lblMode", "text", "The Library radiator is in mode ".. ModeCh) end 1
couillerot Posté(e) le 5 mars 2021 Signaler Posté(e) le 5 mars 2021 désolé pour ma réponse tardive mais je suis en pleine négo pour choisir mon futur poêle à granule... je vais suivre vos conseils et (tenter de) faire une fonction pour la consigne Stef
couillerot Posté(e) le 6 mars 2021 Signaler Posté(e) le 6 mars 2021 finalement, je n'ai pas eu besoin de créer une fonction "Consigne" et ça fonctionne parfaitement ! merci encore à tous pour votre aide Stef
couillerot Posté(e) le 6 mars 2021 Signaler Posté(e) le 6 mars 2021 (modifié) voici le code fonctionnel (et initié par fredoki) : 41 est la sonde de température 112, 114 est le module FGS. function QuickApp:onInit() self:debug("onInit") __TAG = "QA_"..plugin.mainDeviceId.."Chauffage Bureau" local ModeBureau = fibaro.getGlobalVariable("Mode_Bureau") local EtatBureau = fibaro.getGlobalVariable("Etat_Bureau") local tempBureau = fibaro.getValue(41, "value") local ConsigneBureau, _ = fibaro.getGlobalVariable("Consigne_Bureau") ConsigneBureau = tonumber(ConsigneBureau) self:updateProperty("Temperature", tempBureau) self:updateView("labelMode", "text", "Le chauffage du Bureau est en mode ".. ModeBureau) self:updateView("labelEtat", "text", "Le Chauffage du Bureau est en ".. EtatBureau) self:updateView("labelTemp", "text", "La température du Bureau est de ".. tostring(tempBureau) .." C°") self:updateView("labelConsigne", "text", "La Consigne de chauffage du Bureau est de ".. tostring(ConsigneBureau) .." C°") self:debug(type(ConsigneBureau), ConsigneBureau) end -- Mode Confort function QuickApp:uiConfortOnR(event) fibaro.call(112, "turnOff") fibaro.call(114, "turnOff") fibaro.setGlobalVariable("Mode_Bureau", "CONFORT") self:debug("Chauffage Confort") self:onInit() end -- Mode ECO function QuickApp:uiEcoOnR(event) fibaro.call(112, "turnOn") fibaro.call(114, "turnOn") fibaro.setGlobalVariable("Mode_Bureau", "ECO") self:debug("Chauffage ECO") self:onInit() end -- Mode Hors Gel function QuickApp:uiHgOnR(event) fibaro.call(112, "turnOn") fibaro.call(114, "turnOff") fibaro.setGlobalVariable("Mode_Bureau", "HORS-GEL") self:debug("Chauffage HG") self:onInit() end -- Mode STOP function QuickApp:uiStopOnR(event) fibaro.call(112, "turnOff") fibaro.call(114, "turnOn") fibaro.setGlobalVariable("Mode_Bureau", "STOP") self:debug("Chauffage Stop") self:onInit() end -- Consigne -1°c function QuickApp:uiMoinsOnR(event) local ConsigneBureau, _ = fibaro.getGlobalVariable("Consigne_Bureau") ConsigneBureau = tonumber(ConsigneBureau) - 1 fibaro.setGlobalVariable("Consigne_Bureau", tostring(ConsigneBureau)) self:debug(type(ConsigneBureau), ConsigneBureau) self:onInit() end -- Consigne +1°c function QuickApp:uiPlusOnR(event) local ConsigneBureau, _ = fibaro.getGlobalVariable("Consigne_Bureau") ConsigneBureau = tonumber(ConsigneBureau) + 1 fibaro.setGlobalVariable("Consigne_Bureau", tostring(ConsigneBureau)) self:debug(type(ConsigneBureau), ConsigneBureau) self:onInit() end -- Mode AUTO function QuickApp:uiAutoOnR() fibaro.setGlobalVariable("Etat_Bureau", "AUTOMATIQUE") -- activation des Scenes Auto self:debug("Etat AUTO") self:onInit() end -- Mode MANUEL function QuickApp:uiManuelOnR() fibaro.setGlobalVariable("Etat_Bureau", "MANUEL") -- désavtivation des Scenes self:debug("Etat MANUEL") self:onInit() end Modifié le 6 mars 2021 par couillerot
jjacques68 Posté(e) le 7 mars 2021 Signaler Posté(e) le 7 mars 2021 étrange de faire appel au onInit() à chaque appuis bouton... Le 27/02/2021 à 11:27, Lazer a dit : pourquoi appeler onInit() dans chaque fonction ? ça ne pas de sens, onInit() est (et doit être) appelé une seule fois lors de la création du QuickApp, par la HC3. 1
couillerot Posté(e) le 7 mars 2021 Signaler Posté(e) le 7 mars 2021 oui effectivement mais lorsque je les retire, les boutons du QA ne répondent plus. Stef
couillerot Posté(e) le 13 mars 2021 Signaler Posté(e) le 13 mars 2021 QA fonctionnel ! merci à tous pour votre coup de main Stef 1
Did Posté(e) le 13 mars 2021 Signaler Posté(e) le 13 mars 2021 Si tu veux, je peux te trouver des icônes. C'est du même format que ceux de la HC2?
p78ch201 Posté(e) le 14 mars 2021 Signaler Posté(e) le 14 mars 2021 Il y a 12 heures, couillerot a dit : QA fonctionnel ! merci à tous pour votre coup de main Stef Hello, Un petit partage de la version définitive ? Merci
couillerot Posté(e) le 14 mars 2021 Signaler Posté(e) le 14 mars 2021 oui Did même dimensions que la HC2 Stef 1
couillerot Posté(e) le 14 mars 2021 Signaler Posté(e) le 14 mars 2021 je vais partager ce QA via peut-être un autre sujet pour ne pas polluer le thread de fredoki (qui est à l'origine de ce code et je l'en remercie) Stef 1 1
flamalex Posté(e) le 2 novembre 2022 Signaler Posté(e) le 2 novembre 2022 (modifié) bonsoir, voici ma personnalisation du QA un infime contribution pour ceux comme moi qui cherche, cherche, cherche et finissent par trouver grace à la communauté grace à vous Koi ! voici un QA pour le QUBINO fil pilote sur un seche serviette avec sonde temp il vous faudra uniquement créer et renseigner 2 variables locales pour renseigner l'id de la sonde et l'id du qubino ps: je viens de penser que j'aurai faire la creation auto des variables bon ça sera pour la prochaine PS2: je cherche à optimiser au maximum, alors franchement je suis preneur de vos remarques, observations, ameliorations Sdb_Rdc_Seche_Serviette.fqa Modifié le 20 novembre 2022 par flamalex
flamalex Posté(e) le 20 novembre 2022 Signaler Posté(e) le 20 novembre 2022 A la mise en service, La sonde sur Qubino a remonté une fois la température, celle ci reste fixe. avant cela j’ai excu et inclu avec sonde branchée mais rien à faire si vous connaissez la manip (sur hc3, avec sonde achetée avec le Qubino )
TitiXsi Posté(e) le 20 février 2023 Signaler Posté(e) le 20 février 2023 (modifié) Bonjour, je rencontre une erreur lors de la récupération de la consigne (je suis en HC3L) J'ai déclaré une variable de type texte Peut-être est-ce ce point qui ne correspond pas ... Merci pour votre aide. Modifié le 20 février 2023 par TitiXsi
TitiXsi Posté(e) le 21 février 2023 Signaler Posté(e) le 21 février 2023 (modifié) Bonjour à tous, j'ai modifié la QA pour compiler correctement chez moi, je ne sais pas si ca vient du fait que j'ai une HC3L ou du type de variable que j'avais déclaré. Le fix réside dans l'appel du Get et Set Variable et j'ai fait l'init de la variable en 2 fois, sinon j'avais une erreur un coup sur 2 ...: Dans l'init, ça donne ceci : -- orig --local ModeCh = fibaro.getGlobalVariable("Chauffage_Salon") -- fix local ModeCh = "Not_Yet_Init" ModeCh = self:getVariable("Chauffage_Salon") Dans chaque mode: -- orig --fibaro.setGlobalVariable("Chauffage_Salon", "Confort") -- fix self:setVariable("Chauffage_Salon", "Confort") Voici le code complet: -- QA de gestion pour un chauffage électrique en fil pilote 6 ordres piloté par un module Qubino -- Fonnctionne avec une Variable Globale qu'il faut créer (pas de création automatique de la VG pour le moment) -- VG = Chauffage_Salon {Confort, Confort-1, Confort-2, Éco, Hors-Gel, Arrêt} -- Créé par fredokl pour le forum www.domotique-fibaro.fr -- Version: 1.0 -- Version: 1.1 - 21.02.2023 - Titi fix fibaro.get/setGloblVariable by self:get/setVarible function QuickApp:onInit() self:debug("onInit") __TAG = "QA_"..plugin.mainDeviceId.."Chauffage Salon" -- Mise à jour variable sur label -- orig --local ModeCh = fibaro.getGlobalVariable("Chauffage_Salon") -- fix local ModeCh = "Not_Yet_Init" ModeCh = self:getVariable("Chauffage_Salon") self:updateProperty("Temperature", ModeCh) self:debug(ModeCh) self:updateView("lblMode", "text", "Le chauffage du Salon est en mode ".. ModeCh) self:TemperatureSalon() end -- Température du Salon function QuickApp:TemperatureSalon(event) local tempSalon = fibaro.getValue(35, "value") -- Capteur température self:updateProperty("Temperature", tempSalon) self:updateView("lblTemp", "text", "La température du Salon est de ".. tostring(tempSalon) .." C°") self:debug("Température du Salon ".. tostring(tempSalon) .." C°") -- Rafraîchissement toutes les 10 secondes --fibaro.setTimeout(1000 * 1 * 10, function() -- Rafraîchissement toutes les 15 minutes fibaro.setTimeout(1000 * 60 * 15, function() self.TemperatureSalon() end) end -- Mode Confort function QuickApp:uiConfortOnR(event) fibaro.call(34, "setValue", 90) -- orig --fibaro.setGlobalVariable("Chauffage_Salon", "Confort") -- fix self:setVariable("Chauffage_Salon", "Confort") self:debug("Chauffage en mode Confort") self:onInit() end -- Mode Confort-1 function QuickApp:uiConfort_1OnR(event) fibaro.call(34, "setValue", 50) --orig --fibaro.setGlobalVariable("Chauffage_Salon", "Confort-1") -- fix self:setVariable("Chauffage_Salon", "Confort-1") self:debug("Chauffage en mode Confort-1") self:onInit() end -- Mode Confort-2 function QuickApp:uiConfort_2OnR(event) fibaro.call(34, "setValue", 40) --orig --fibaro.setGlobalVariable("Chauffage_Salon", "Confort-2") -- fix self:setVariable("Chauffage_Salon", "Confort-2") self:debug("Chauffage en mode Confort-2") self:onInit() end -- Mode Éco function QuickApp:uiEcoOnR(event) fibaro.call(34, "setValue", 30) --orig --fibaro.setGlobalVariable("Chauffage_Salon", "Éco") -- fix self:setVariable("Chauffage_Salon", "Éco") self:debug("Chauffage en mode Éco") self:onInit() end -- Mode Hors-Gel function QuickApp:uiHGOnR(event) fibaro.call(34, "setValue", 20) --orig --fibaro.setGlobalVariable("Chauffage_Salon", "Hors-Gel") -- fix self:setVariable("Chauffage_Salon", "Hors-Gel") self:debug("Chauffage en mode Hors-Gel") self:onInit() end -- Mode Arrêt function QuickApp:uiArretOnR(event) fibaro.call(34, "setValue", 0) --orig --fibaro.setGlobalVariable("Chauffage_Salon", "Arrêt") -- fix self:setVariable("Chauffage_Salon", "Arrêt") self:debug("Chauffage à l'arrêt") self:onInit() end J'en ai profité pour modifier les valeurs de pourcentage en fonction du mode pour que ceci calque les valeurs proposé dans l'interface des icones Dans le Home, sous PC ou Yubi, on obtient les bon icones, en fonction du mode. Et je vous partage mes icones issues du forum, j'ai rajouté le -1 et -2 Modifié le 21 février 2023 par TitiXsi
TitiXsi Posté(e) le 21 février 2023 Signaler Posté(e) le 21 février 2023 Merge de 2 zones + la température extérieure et avec quelques icones sur les boutons Est-ce que vous pouvez m'aider à réaliser des saut de ligne dans les champs texte ? je n'y arrive pas et du coup, j'ai posé 3 labels au lieu d'un seul pour les tep des chambres. Merci Rémi
Lazer Posté(e) le 21 février 2023 Signaler Posté(e) le 21 février 2023 Bravo pour ton travail. Sans certitude, mais tu peux tenter l'une de ces 3 solutions pour insérer un saut de ligne dans les chaines de caractères de tes labels : "\n" "<br>" "<br/>"
fredokl Posté(e) le 22 février 2023 Auteur Signaler Posté(e) le 22 février 2023 @TitiXsiPour les variables, se sont des variables globales qui doivent être créés dans le QA d'origine. Mais la modification avec des variable locales fonctionnent aussi. Sinon, pour le saut de ligne \r fonctionne. Et ça fait plaisir de voir le QA se transformer au besoin de chacun.
TitiXsi Posté(e) le 23 février 2023 Signaler Posté(e) le 23 février 2023 (modifié) Il y a 10 heures, fredokl a dit : @TitiXsiPour les variables, se sont des variables globales qui doivent être créés dans le QA d'origine. Mais la modification avec des variable locales fonctionnent aussi. Sinon, pour le saut de ligne \r fonctionne. Et ça fait plaisir de voir le QA se transformer au besoin de chacun. Oui, j'ai bien déclaré les variables tout fonctionne, j'ai juste le problème avec le saut de ligne dans une string qui ne fonctionne pas, voici ce que j'ai testés : self:updateView("lblModeSalon", "text", "Chauffage Salon \r en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon ".."\r".." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon "..\r.." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon \n en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon ".."\n".." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon "..\n.." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon <br> en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon <br/> en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon "..<br>.." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon ".."<br>".." en mode : ".. ModeChSalon) self:updateView("lblModeSalon", "text", "Chauffage Salon ".."<br/>".." en mode : ".. ModeChSalon) Merci Modifié le 23 février 2023 par TitiXsi
Messages recommandés