triossrf Posté(e) le 29 novembre 2021 Signaler Posté(e) le 29 novembre 2021 (modifié) Salut tout le monde. Je vous partage un petit Quick App qui est encore en développement mais qui fonctionne très bien. Etant débutant en LUA, le code n'est certainement pas optimisé et je suis preneur de conseil. L'idée de ce Q.A était d'avoir une gestion des lumières Walli pour diverse usages (Veilleuses, ambiance, indicateur de présence dans une pièce, météo etc...) et de pouvoir avoir une gestion automatique ou manuel des leds. Un merci tout d'abord à @fredokl, @Fredmas et @Lazer qui m'ont aidé à faire mon premier Q.A via le forum. Téléchargement du Q.A: => Pour ce qui est des icones j'avais demandé à @fredokl de me faire des jolies icones pour mon Q.A. Good job! Code Q.A: -- QA Réglage Walli -- Créé par triossrf -- Aidé par fredokl , Fredmas , Lazer -- Version 0.5 le 09/12/2021 -- Crée pour la communauté https://www.domotique-fibaro.fr/ __TAG = "QA_"..plugin.mainDeviceId.."_SALON_Walli" local Walli = 58 function QuickApp:onInit() self:debug("onInit") self:ActiveWalli() self:WalliMaj() self:Icone() self:loop() end --[[ ******************************************* *** On/Off Walli *** ******************************************* ]]-- function QuickApp:ActiveWalli() local VarAutoMan = self:getVariable("Mode") local VarIco = self:getVariable("Icone") local VarJourNuit = self:getVariable("JourNuit") local Volet = self:getVariable("EtatVolet") local VarProfiles = self:getVariable("Profiles") local VarIco = self:getVariable("Icone") local VarEtatWalli = self:getVariable("EtatWalli") local APIVolet = api.get("/devices/"..Walli).properties.value --< Variable de la Valeur du volet local APIProfil= api.get("/profiles").activeProfile --< Variable du Profile Actif local VarSunrise = api.get("/settings/info").sunriseHour local VarSunset = api.get("/settings/info").sunsetHour self:debug("Profiles N°:" ..APIProfil) self:debug("Volet: " ..APIVolet.. " %") self:debug("Variable Icone:", self:getVariable("Icone")) self:debug("Mode activé:", self:getVariable("Mode")) self:debug("Etat Walli:", self:getVariable("EtatWalli")) --M.A.J Variables if APIProfil == 1 then --< Profil Présent self:setVariable("Profiles", "Présent") elseif APIProfil == 2 then --< Profil Absent self:setVariable("Profiles", "Absent") end if APIVolet == 0 then --< Volet Fermé à 0 % self:setVariable("EtatVolet", "Fermé") self:debug("Etat Volet:", self:getVariable("EtatVolet")) else self:setVariable("EtatVolet", "Ouvert") --< + de 0 % Volet Ouvert self:debug("Etat Volet:", self:getVariable("EtatVolet")) end if VarSunrise > VarSunset then --< Variable Jour self:setVariable("JourNuit", "Jour") self:debug("Validation Jourt:", self:getVariable("JourNuit")) end if VarSunrise < VarSunset then --< Variable Nuit self:setVariable("JourNuit", "Nuit") self:debug("Validation Nuit:", self:getVariable("JourNuit")) end --Activation/Désactivation Walli if Volet == "Fermé" and VarProfiles == "Présent" and VarAutoMan=="Automatique" then fibaro.call(Walli, 'setRingOnColor', "green") fibaro.call(Walli, 'setRingOffColor', VarIco) self:setVariable("EtatWalli", "Allumé") self:debug("Volet Fermé / Profils Présent") end if Volet == "Ouvert" and VarProfiles == "Présent" and VarAutoMan=="Automatique" then fibaro.call(Walli, 'setRingOnColor', "green") fibaro.call(Walli, 'setRingOffColor', "none") self:setVariable("EtatWalli", "Eteint") self:debug("Volet Ouvert / Profils Présent") end if VarProfiles == "Absent" then fibaro.call(Walli, 'setRingOnColor', "none") fibaro.call(Walli, 'setRingOffColor', "none") self:setVariable("EtatWalli", "Eteint") self:updateProperty("deviceIcon", 1066) self:debug("Profils Absent") end end --[[ ******************************************* *** M.A.J Icone *** ******************************************* ]]-- function QuickApp:Icone() local VarAutoMan = self:getVariable("Mode") local VarIco = self:getVariable("Icone") local VarEtatWalli = self:getVariable("EtatWalli") if VarIco == "blue" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1062) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Bleu \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "white" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1066) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Blanc \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "red" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1068) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Rouge \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "cyan" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1063) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Cyan \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "green" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1064) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Vert \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "yellow" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1069) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Jaune \r ------------------\r Mode :"..VarAutoMan ) elseif VarIco == "magenta" and VarEtatWalli == "Allumé" then self:updateProperty("deviceIcon", 1067) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Rose \r ------------------\r Mode :"..VarAutoMan ) elseif VarEtatWalli == "Eteint" then self:updateProperty("deviceIcon", 1066) self:updateView("labelBur", "text", "------------------ \r Salon \r ------------------ \r Walli: Eteint \r ------------------\r Mode :"..VarAutoMan ) end end --[[ ******************************************* *** Boutons *** ******************************************* ]]-- function QuickApp:Manuel() self:setVariable("Mode", "Manuel") self:Icone() end function QuickApp:Auto() self:setVariable("Mode", "Automatique") self:Icone() end function QuickApp:turnOffBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "none") fibaro.call(Walli, 'setRingOnColor', "none") self:updateProperty("deviceIcon", 1066) self:setVariable("EtatWalli", "Eteint") self:Icone() end function QuickApp:CyanBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "cyan") fibaro.call(Walli, 'setRingOnColor', "red") self:setVariable("Icone", "cyan") self:setVariable("EtatWalli", "Allumé") self:Icone() end function QuickApp:BleuBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "blue") fibaro.call(Walli, 'setRingOnColor', "red") self:setVariable("EtatWalli", "Allumé") self:setVariable("Icone", "blue") self:Icone() end function QuickApp:BlancBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "white") fibaro.call(Walli, 'setRingOnColor', "red") self:setVariable("EtatWalli", "Allumé") self:setVariable("Icone", "white") self:Icone() end function QuickApp:VertBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "green") fibaro.call(Walli, 'setRingOnColor', "red") self:setVariable("Icone", "green") self:Icone() end function QuickApp:RougeBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "red") fibaro.call(Walli, 'setRingOnColor', "green") self:setVariable("Icone", "red") self:setVariable("EtatWalli", "Allumé") self:Icone() end function QuickApp:JauneBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "yellow") fibaro.call(Walli, 'setRingOnColor', "red") self:setVariable("Icone", "yellow") self:setVariable("EtatWalli", "Allumé") self:Icone() end function QuickApp:RoseBur() self:setVariable("Mode", "Manuel") fibaro.call(Walli, 'setRingOffColor', "magenta") fibaro.call(Walli, 'setRingOnColor', "blue") self:setVariable("Icone", "magenta") self:setVariable("EtatWalli", "Allumé") self:Icone() end --[[ ******************************************* *** SLIDER+Variable *** ******************************************* ]]-- function QuickApp:Brightness(event) Intensite = event.values[1] walliBur = fibaro.call(Walli, 'setRingBrightness', Intensite) self:debug("Slider", Intensite) --<Affiche la valeur du slider dans le débug> self:updateView("LblSlider", "text", "Intensité: " ..Intensite.. "%") --<M.A.J Intensité dans un Label> self:setVariable("WalliLu", Intensite) --<Creation d'une variable dans le Q.A lorsqu'on positionne le Slider> local VarWalli = self:getVariable("WalliLu") --<Lecture de la variable WalliLu> self:debug("WalliLu:" ..VarWalli) --<Débug Variable WalliLu> self:updateView("SliderBrightness", "value", tostring(VarWalli)) --<M.A.J Slider automatiquement à l'ouverture du Q.A> end --[[ ******************************************* *** M.A.J SLIDER *** ******************************************* ]]-- function QuickApp:WalliMaj() local APIBrillance = api.get("/devices/"..Walli).properties.parameters[3].lastSetValue --<Cherche la valeur lastSetValue de l'ID 13 dans le fichier Json> self:debug("Intensite:" ..APIBrillance) --<Débug A.P.I > self:updateView("LblSlider", "text", "Intensité: " ..APIBrillance.. "%") --<M.A.J Slider> self:updateView("SliderBrightness", "value", tostring(APIBrillance)) --<M.A.J Slider> end --[[ ******************************************* *** Boucle *** ******************************************* ]]-- function QuickApp:loop() self:ActiveWalli() self:Icone() fibaro.setTimeout(10*3000, function() self:loop() end) end Walli1.1.fqa Modifié le 13 décembre 2021 par triossrf Mise à jour: 09/12/2021 4
triossrf Posté(e) le 7 décembre 2021 Auteur Signaler Posté(e) le 7 décembre 2021 Salut @971jmd ! As tu résolu le souci? Si non, envoi le débug je peu peut etre t'aider
Bartim Posté(e) le 28 septembre 2022 Signaler Posté(e) le 28 septembre 2022 Bonjour, Je suis totalement novice en LUA, je n'utilise que les blocs lorsqu'il s'agit de faire les scénarios par exemple. Cependant il se trouve que ce Q.A répond totalement à un des mes "besoins". Il me reste plus qu'a comprendre, l'un des vous aurait un lien pour comprendre les bases et que je puisse me débrouiller ou une rapide info sur le manière de le "connecter à un Walli switch ? Merci 1
Messages recommandés