Aller au contenu

jojo

Membres confirmés
  • Compteur de contenus

    14 555
  • Inscription

  • Dernière visite

  • Jours gagnés

    186

Tout ce qui a été posté par jojo

  1. jojo

    fonctions dans fonction

    merci, je dois aller m'occuper de mes autres amis
  2. jojo

    fonctions dans fonction

    oui, merci, en effet, mais comment l'appeler ? QuickApp:Consigne (...) ?
  3. jojo

    fonctions dans fonction

    je ne savais pas qu'il faudrait déclarer une fonction dans les variables globales ... avec mes 0.5/10 de vision, je n'ai pas lu tous les topics. Je fais les modifs et poste les messages d'erreur demain ou vendredi. Merci à vous 2
  4. jojo

    fonctions dans fonction

    merci, c'est comme ça que j'avais fait au début, mais alors je ne savait pas l'appeler (j'avais une erreur). (j'ai des invité dans 10 min, donc j'essaierai demain)
  5. jojo

    fonctions dans fonction

    @Lazer, MERCI de ton offre d'aide. Comme tu l'as senti, j'avais écrit ce post en grand désespoir le cause => à la va-vite. J'ai créé un QA de type Binary Switch afin de pouvoir (plus tard) utiliser les fonctions TurnOn() et TurnOff() pour modifier la VG du mode de chauffage de la maison (cfr un autre post auquel tu as répondu). Donc ce QA gère le chauffage de ma maison : en fonction de calendriers Google, il ajuste le consigne des thermostats virtuels qu'il faut. Evidemment, mes équipements dans mon code sont appelés par leur nom, et il retrouve leur id réel dans la table id={ ...} (merci au passage à Steven). J'ai augmenter la doc du code pour qu'il soit plus lisible. Est-ce bien le cas ? Merci en tout cas function QuickApp:onInit() self:debug("onInit") -- IDs générés le : 16/05/22 à 21:50:36 id = { --Cuisine TMP_CUISINE = 23, --... } -- pièces concernées par le mode de chaufffage de la maison : -- cfr Variable Globale "Chauf_Maison_Mode" : Confort | SdB | ECS | Off -- le mode ECS, est pour maintenir l'eau chaude samitaire à température -- le mode Off, quand ont est par exemple parti en vacances => tous les thermostat en hors gel et pas ECS -- les thermostats ne sont JAMAIS arrêtés, mais en température hors gel (donc en été, celà revient à les arrêter) RoomsConfort = {"SdJ", "Bureau", "Pauline", "Max", "SdBEtage", "Biblio", "SdBRdC", "ECS"} RoomsSdB = {"SdBRdC", "ECS"} RoomsECS = {"ECS"} RoomsOff = RoomsConfort end function QuickApp:GoogleThermo(Room, Mode) -- appelée par le GoogleScript (qui scanne un calendrier Google), pour savoir quelle pièce (Romm) -- à mettre dans quel mode de confage (Mode : Con (=Confort)| Eco (=température réduite) -- récupérer le statut de la VG avec Chauf_Maison_Mode Chauf_Maison_Mode, modificationTime = fibaro.getGlobalVariable("Chauf_Maison_Mode") -- génère le nom de l'équipemebt Thermostat Thermostat = "CHAUF_"..string.upper(Room).."_THERMOSTAT" -- c'est ici mon soucis : -- je souhaite appeller la fonction "Consigne" qui retournera à quelle température il faut chauffer -- quelle pièce (Room) en fonction du mode de chauufage demandé pour la pièe (Mode) -- et du mode de chauffage global de la maison (Chauf_Maison_Mode) Consigne (Room, Mode, Chauf_Maison_Mode) -- ensuite mettre la consigne de température du thermostat concerné à la valeur "consigne" consigne = tonumber (consigne) fibaro.call(id[Thermostat], "setHeatingThermostatSetpoint", consigne) end function Consigne (Room, Mode, Chauf_Maison_Mode) -- détermination de la consigne en fonction du mode de chauffage Found = false -- variable ouléenne à false self:debug("Function Consigne") -- déjà erreur à cette ligne car il ne connait pas self ... -- en fonction du mode de chauffage de la maison -- chercher le nom de la pièce dans le bonne table (RoomsConfort | RoomsSdB | ...) -- si pièce trouvée, variable booléenne à true; sinon elle reste à false if Chauf_Maison_Mode == "Confort" then for key, value in pairs(RoomsConfort) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end elseif Chauf_Maison_Mode == "SdB" then for key, value in pairs(RoomsSdB) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end elseif Chauf_Maison_Mode == "ECS" then for key, value in pairs(RoomsECS) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end end if Found then -- la consigne du thermostat : consigne = valeur de la variable du QA -- le QA contient de nombreuses variables dont le nom est généré en fonction des infos reçues par le GoogleScript. consigne, modificationTime = self:getVariable("Ch"..Room..Mode) -- Con ou Eco else -- hors gel consigne = self:getVariable("ChMaisonHG") end end
  6. jojo

    fonctions dans fonction

    merci d'avoir pris le temps d'essayer de regarder, je fais tout comme demandé ce pm. Je n'avais pas vu (tes yeux vont 10000 fois mieux que les miens) qu'il y avait moyen de choisir la syntaxe quand on ajoute du code ... (=> déjà merci pour ce truc bien utile)
  7. jojo

    fonctions dans fonction

    Bonjour, J'essaie de découvrir lua programmation LUA dans les QA de la HC3. Moi qui était fier de mon coup, et bien zut ça ne marche pas. J'i cherché toute l'après-midi sans trouver pourquoi/ou était mon erreur. Le voici : -- Binary switch type should handle actions turnOn, turnOff -- To update binary switch state, update property "value" with boolean function QuickApp:turnOn() self:debug("binary switch turned on") self:updateProperty("value", true) end function QuickApp:turnOff() self:debug("binary switch turned off") self:updateProperty("value", false) end -- To update controls you can use method self:updateView(<component ID>, <component property>, <desired value>). Eg: -- self:updateView("slider", "value", "55") -- self:updateView("button1", "text", "MUTE") -- self:updateView("label", "text", "TURNED ON") -- This is QuickApp inital method. It is called right after your QuickApp starts (after each save or on gateway startup). -- Here you can set some default values, setup http connection or get QuickApp variables. -- To learn more, please visit: -- * https://manuals.fibaro.com/home-center-3/ -- * https://manuals.fibaro.com/home-center-3-quick-apps/ function QuickApp:onInit() self:debug("onInit") -- IDs générés le : 16/05/22 à 21:50:36 id = { --Cuisine TMP_CUISINE = 23, --Salon TMP_SALON_SET = 99, TMP_SALON = 100, HUM_SALON = 101, --Hall d'entrée MVT_HALLENTREE_ENTREE = 54, LUX_HALLENTREE_ENTREE = 56, MVT_HALLENTREE_CUISINE = 32, --Ch Parents TMP_PARENTS = 29, --SdB RdC TMP_SDBRDC = 159, CHAUF_SDBRDC_RADIATEUR = 162, CHAUF_SDBRDC_THERMOSTAT = 161, --Dressing PRISE_DRESSING = 107, --Salle de jeux CHAUF_SDJ_THERMOSTAT = 114, CHAUF_SDJ_RADIATEUR = 148, NOISE_SDJ = 93, TMP_SDJ = 94, --Bureau CHAUF_BUREAU_THERMOSTAT = 111, NOISE_BUREAU = 86, TMP_BUREAU = 87, CHAUF_BUREAU_RADIATEUR = 150, PRISE_BUREAU = 104, --Ch Pauline CHAUF_PAULINE_RADIATEUR = 151, TMP_PAULINE = 119, CHAUF_PAULINE_THERMOSTAT = 143, --Ch Max CHAUF_MAX_RADIATEUR = 152, TMP_MAX = 127, CHAUF_MAX_THERMOSTAT = 144, PRISE_MAX = 142, --SdB Etage CHAUF_SDBETAGE_RADIATEUR = 153, TMP_SDBETAGE = 133, CHAUF_SDBETAGE_THERMOSTAT = 145, --Biblio CHAUF_BIBLIO_RADIATEUR = 154, TMP_BIBLIO = 137, CHAUF_BIBLIO_THERMOSTAT = 146, --Jardin HUM_EXTERIEUR = 91, HUSQVARNA_MOWER = 140, TMP_EXTERIEUR = 92, --Piscine GESTIONPISCINE = 171, --Chaufferie CHAUF_CIRCUL_ETAGE = 163, CHAUF_CHAUDIERE = 165, CHAUF_SOLAIRE = 164, GESTIONCHAUFFAGE = 172, CHAUF_ECS_THERMOSTAT = 158, CHAUF_CIRCUL_RDC = 160, TMP_TISUN = 155, CHAUF_ECS_RADIATEUR = 157, --Technical DOMOCHARTS = 166, GEA = 167, NETATMO_2_5_1 = 85, --Test TEMPERATURE_GEN = 168, QA_THERMOTST_COL = 170, LDSWITCH = 169, YR_WEATHER = 3, } Icones = { -- à vérifier Confort = 1007, SdB = 1010, ECS = 1008, Off = 1009 } RoomsConfort = {"SdJ", "Bureau", "Pauline", "Max", "SdBEtage", "Biblio", "SdBRdC", "ECS"} RoomsSdB = {"SdBRdC", "ECS"} RoomsECS = {"ECS"} RoomsOff = RoomsConfort end function QuickApp:GoogleThermo(Room, Mode) self:debug("QA GestionChauffage") self:debug("Param1/Room = "..Room) self:debug("Param2/Mode = "..Mode) Chauf_Maison_Mode, modificationTime = fibaro.getGlobalVariable("Chauf_Maison_Mode") self:debug("Chauf_Maison_Mode = " .. Chauf_Maison_Mode) Thermostat = "CHAUF_"..string.upper(Room).."_THERMOSTAT" Consigne (Room, Mode, Chauf_Maison_Mode) consigne = tonumber (consigne) self:debug("Consigne = " .. consigne) self:debug("Thermostat = " .. Thermostat) fibaro.call(id[Thermostat], "setHeatingThermostatSetpoint", consigne) end function Consigne (Room, Mode, Chauf_Maison_Mode) -- détermination de la consigne en fonction du mode de chauffage Found = false self:debug("Function Consigne") self:debug("Room = "..Room) self:debug("Mode = "..Mode) self:debug("Chauf_Maison_Mode = "..Chauf_Maison_Mode) if Chauf_Maison_Mode == "Confort" then for key, value in pairs(RoomsConfort) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end elseif Chauf_Maison_Mode == "SdB" then for key, value in pairs(RoomsSdB) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end elseif Chauf_Maison_Mode == "ECS" then for key, value in pairs(RoomsECS) do -- Look for key inside entire table if key == Room then -- Your desired key you want to refrence Found = true end end end if Found then consigne, modificationTime = self:getVariable("Ch"..Room..Mode) -- Con ou Eco else -- hors gel consigne = self:getVariable("ChMaisonHG") end end si une bonne âme savait me dire où j'ai merdé, afin d'éviter que je me pende / que je multiplie les lignes de code à l'"infini" (c'est pourquoi je voulais appeler une fonction dans une autre. A gagner : rien, sinon toute ma gratitude ... Jai regardé ceci, mais n'ai rien compris
  8. perso, j'ai une VM dédiée à HA sous Debian et exsi de mon Gen8
  9. keep it simple, on supprime de la doc, et basta
  10. jojo

    QuickApp on-click

    je vais en rester à truander le binary switch, car ainsi je peut faire uneaction directe en cliquant sur l'icone (sans devoir ouvrir avec la loupe...)
  11. --GEA.add (id["CHAUF_SDBRDC_RADIATEUR"], -1, "", {{"Inverse"}, {"TurnOff", id["CHAUF_CIRCUL_RDC"]}}) GEA.add (id["CHAUF_SDBRDC_RADIATEUR"]!, -1, "", {"TurnOff", id["CHAUF_CIRCUL_RDC"]}) [15.05.2022] [15:38:12] [ERROR] [QUICKAPP167]: QuickApp crashed [15.05.2022] [15:38:12] [ERROR] [QUICKAPP167]: config.lua:73: ')' expected near '!'
  12. je ne suis pas sûr de tout comprendre. Tu as 2 scenari diffférents ? Quoi qu'il en soit, peux-tu mettre tes code avec un ctrlC/CtrlV plutôt qu'une copie d'écran que je ne sais pas lire. Merci
  13. jojo

    QuickApp on-click

    tu décris exactement ce que je pensais faire avec ce QA. Mais je demandais s'il n'existait un type qui aurait juste une fonction QuickApp:OnClick(), histoire de ne pas truander le QA BinarySwitch. Mais s'il n'existe pas, je ferai comme ça ...
  14. https://www.nas-forum.com/forum/topic/39737-tuto-haproxy-et-regroupement-des-param/?_fromLogin=1
  15. jojo

    QuickApp on-click

    Bonjour, Y a-t-il un type de QuickApp où on peut gérer par code ce qui se passe quand on clique dessus. J'ai bien une idée, en en prenant un de type binary switch et en renvoyant les fonctions TunrOn et TurnOff vers le même fonction perso, mais s'il existait quelque-chose de plus standard ... Merci
  16. no stress, c'est tout sauf essentiel. à supprimer de la doc alors (lignes 1860 & 1861)
  17. jojo

    gestion simple thermostat

    Merci,si je fais Copy as fetch, j'ai toute l'info ;-)
  18. voici mon code GEA.add ({id["CHAUF_CIRCUL_RDC"], id["CHAUF_CIRCUL_ETAGE"], id["CHAUF_ECS_RADIATEUR"]}, -1, "", {{"Inverse"}, {"Inverse", 2}, {"Inverse", 3}, {"TurnOff", id["CHAUF_CHAUDIERE"]}})
  19. je t'voue ne pas avoir bien lu la doc dans un premier temps et avoir mis {"Inverse"} en étant persuadé que cela s'appliquait à toutes les conditions. S'il ne fallait pas garantir la rétrocompatibilité, j'aurais {"Inverse"} pour tous, et {"Inverse", 1} pour le premier ... Perso, je trouve cela plus facile à maintenir : plutôt qu'enchainer les {"TurnOff", ...}, je mes juste l'ID et inverse dans les actions. Maintenant s'il fallait rajouter un TurnOff dans les conditions, juste rajouter son ID, et il ne faut plus s'occuper de rien. Au niveau de la logique de programmation, {"Inverses"} n'est "que" une boucle sur {"Inverse"} (d'ailleurs cela ne fait pas le même chose/la même fonction que {'Inverse", 1} .), ("Inverse", 2}, ... mais justement, je voulais faire l'{"Inverse"} de cette condition. Je devrais alors écrire GEA.add ({id["CHAUF_SDBRDC_RADIATEUR"]}!, -1, "", {"TurnOff", id["CHAUF_CIRCUL_RDC"]}) mais la doc dit ceci -- ALIAS : GEA.add(101!, 30, "", {ACTIONS} ) équivaut à GEA.add(101, 30, "", {"Inverse"} )
  20. bug ? L'instruction GEA.add (id["CHAUF_SDBRDC_RADIATEUR"], -1, "", {{"Inverse"}, {"TurnOff", id["CHAUF_CIRCUL_RDC"]}}) fonctionne parfaitement. Mais l'instruction GEA.add (id["CHAUF_SDBRDC_RADIATEUR"]!, -1, "", {"TurnOff", id["CHAUF_CIRCUL_RDC"]}) refuse d'activer GEA (=Running Yes) lorsque je sauve
  21. hello, (mon premier post de suggestion GEA) l'action {"Inverse"} inverse la première condition, idem pour {"Inverse", 2}, la seconde ... Ne pourrait-on pas envisager l'action {"Inveres"} pour inverser TOUTES les conditions ?
  22. jojo

    gestion simple thermostat

    Je viens de regarder le F12, mais je n'ai pas réussi à y retrouver l'info que tu m'as fournie. Aurais-tu au petit tuto (dont tu as le secret) pour explique l'utilisation du F12 dans le cas de notre HC3 ? Merci
  23. jojo

    gestion simple thermostat

    Bingo ! j'ai utilisé ceci et ça fonctioonne => MERCI. Je vais regarder de plus près tes autres conseils
  24. jojo

    gestion simple thermostat

    merci pour tes recherches, mais c'est en effet bcp trop complique. Je ne comprends pas, car pour faire un turnOn, c'est hyper simple : http://user:pwd@IP/api/callAction?deviceID=xxx&name=turnOn ce que je souhaite, c'est juste pourvoir modifier la consigne de température de mon thermostat virtuel (Linked device) Peut-être n'avais je pas été clair dans mon besoin ?
  25. ah ok, mais donc uniquement pour ta HC3, par pour ton NAS, des cam, ... J'ai fais un GoggleScript qui lit mes calendriers Google pour envoyer des actions à ma HC3 (sortir les poubelles, chauffage par pièce, ...) et je ne suis pas passé par le cloud Fibaro, mais sûrement que c'est possuble?
×
×
  • Créer...