Aller au contenu

QuickApp - Chauffage Fil Pilote Qubino


fredokl

Messages recommandés

@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.

Lien vers le commentaire
Partager sur d’autres sites

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.

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

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

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

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é par couillerot
Lien vers le commentaire
Partager sur d’autres sites

é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.

 

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

  • 1 an après...

bonsoir,

voici ma personnalisation du QA :60:

un infime contribution pour ceux comme moi qui cherche, cherche, cherche et finissent par trouver grace à la communauté

grace à vous Koi ! :13: :D  

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

image.thumb.png.17c18021c882f757ccbfbb909dd08018.pngimage.png.384b4123f9e23cac9529945caca74cb7.png

 

Sdb_Rdc_Seche_Serviette.fqa

Modifié par flamalex
Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • 3 mois après...

Bonjour,

 

je rencontre une erreur lors de la récupération de la consigne (je suis en HC3L)

 

image.png.359221d14da0d1972da734b04dd45976.png

image.png.954c8e40fe38fbc5b9063916c5d658c2.png

 

J'ai déclaré une variable de type texte

Peut-être est-ce ce point qui ne correspond pas ...

 

image.thumb.png.0a8b87a8e5f9271aa014a4640fbb0e1f.png

 

Merci pour votre aide.

Modifié par TitiXsi
Lien vers le commentaire
Partager sur d’autres sites

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

image.png.7ecb028c10282220a51b8282c751547f.png

 

Dans le Home, sous PC ou Yubi, on obtient les bon icones, en fonction du mode.

image.png.50cc4a04ba31a7d9a0e6820db1d16e5a.png

 

Et je vous partage mes icones issues du forum, j'ai rajouté le -1 et -2

Confort.png.c5d4529cf14ac00e41545459c18c0896.png.231e897f9dea6fb5f8dc769894286e79.pngConfort-1.png.c5d4529cf14ac00e41545459c18c0896.png.d357b557c522ed5e5b4f0a0695273255.pngConfort-2.png.c5d4529cf14ac00e41545459c18c0896.png.52cc08b06a2c1c5b7c2ab7aeaa17b202.pngEco.png.abdae5591985077c1cc449f2dc99f67b.png.bddb7aa0ff4725052777877eb50646c3.pngHG.png.ea0a6b9a632cf3104f708faf0d22e7dd.png.951671217c6c55080ad47f17a3b081a2.pngkisspng-radijator-heating-radiators-central-heating-price-oasis-5acc5a17bc90b8.5392252815233418477724.png.6da46d2a10190a8dd6e9208630e0a4ea.pngStop.png.b2f69be250257716bfabdc60a72f6809.png.25ccc87b3c7316ab6e6df474acb0256e.png

 

Modifié par TitiXsi
Lien vers le commentaire
Partager sur d’autres sites

Merge de 2 zones + la température extérieure et avec quelques icones sur les boutons

 

image.thumb.png.2ee876afb4075711ec67993f86515066.png

 

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

Lien vers le commentaire
Partager sur d’autres sites

@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.

Lien vers le commentaire
Partager sur d’autres sites

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é par TitiXsi
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...