-
Compteur de contenus
14 825 -
Inscription
-
Dernière visite
-
Jours gagnés
197
Tout ce qui a été posté par jojo
-
si tu choisis l'option "réinclure à la mano", la question ne se pose plus ... ceci dit je suis également en phase de migration (mais pas depuis HC2). Le plus important pour moi, c'est la gestion du chauffage, de la piscine (et de l'airco de la cave à vins) (bien que je puisse tout gérer en manuel). Alors pour mon chauffage, j'ai créé énormément de QA de type Binary Switch pour tester la nouvelle solution. Et quand je migrerai effectivement mes devices (en fait de migration, je remplacerai les anciens z-wave par des nouveaux z-wave+) je leur donnerai le même nom que mes QA. Ainsi ma migration sera rapide ...
-
c'est précisément ce que je voulais éviter ... mais je vais devoir y passer
-
merci, mais j'ai déjà essayé cela, et le QA générique ne réagit pas aux clic sur l'icône, donc créer ces fonctions ne sert à rien ... MAIS tu vien de me faire penser à qqch: dans le JSON d'un generic QA, il n'y a rien dans les actions "actions": { }, mais dans celui d'un Binary Sensoe ; "actions": { "toggle": 0, "turnOff": 0, "turnOn": 0 }, avec les fonctions function QuickApp:turnOn() function QuickApp:turnOff() qui ont le même nom que les valeurs dans le JSON. donc déjà (ce serait rigolo) si on créait la fonction function QuickApp:toggle() ça pourrait fonctionner (à la place des fonctions turnOn() et turnOff()- Je mr disais qu'on pourrais rajouter ces actions au JSON du QA générique, mais en fait non, cela doit être codé dans le QA d'appeler ces fonctions => c'est mort et il faut trouver où il enregistre qu'il faut mettre telle ou telle icône pour les QA Binary Switch.
-
Bonjour et bienvenue. Le principe des modules Fibaro, c'est d'avoir une liaison sans fil (Z-Wave) tout en gardant la possibilité que tout fonctionne sans la box domotique, ie avec les interrupteur classiques. La box sera même informée de l'action que tu as prise via l'interrupteur, comme si c'était elle qui avait donné l'ordre. MAIS des modules (FGD, ...) et un stick USB ne suffiront pas : il te faudra une box en plus (HAAS, Jeedom, ...) Si tu optes pour une box Fibaro, il ne sera pas nécessaire (et même impossible) d'y connecter un stick USB Z-Wave, car elle a son propre contrôleur. le z-wave étant un réseau maillé (= si un module ne peut communiquer en direct avec la box (car trop éloigné) il utilisera d'autres modules z-wave (sur secteur) pour faire le relais. Donc pour avoir une installation domotique en z-wave qui fonctionne bien, il faut une bonne répartition des modules = ne pas multiplier les protocoles. Si je ne me trompe pas, Somfy = Nice; donc la HC3 peut faire parler et interagir ces 2 protocoles, mais ton réseau Somfy/Nice ne pourra pas servir de relais à tes modules z-wave.
-
oui, je savais cela, mais le Binary Switch, ne permet que 2 icône ( "Binary Switch") et moi je voudrais 4 positions : pour mon QA GestionChauffage, qu'il m'affiche la belle icône en fonction de la valeur de ma VG. Ceci est possible avec un QA de type générique, mais alors, je dois aller sans les settings -> General -> Variables pour changer la valeur de ma VG. Avec un BS, je peux directement cliquer sur l'icône du QA qui lancera la fonction TurnOn ou TurnOff en fonction du status. Je voulais dans chacune de ses fonctions appeler une fonction perso qui me permettrais de modifier directement ma VG et l'icône de mon QA. Je sais c'est un peu tordu, mais c'est le seul moyen que j'ai trouvé pour faire faire à la HC3 ce que je veux. Donc en regardant dans le JSON du device // 20220520155433 // http://192.168.1.xxx/api/devices/160 { "id": 160, "name": "Chauf_Circul_RdC", "roomID": 239, ... "properties": { ... "deviceIcon": 1002, "icon": { "path": "assets/userIcons/devices/User1002/User1002100.png", "source": "HC_USER" }, ... "value": true, ... } j'étais sûr de tout y trouver. La propriété "deviceIcon" me plaisait bien. Mais quand je click sur l'icône du device, son status passe bien à Off ("value"; false) et l'icône de l'interface change bien , MAIS aucune autre propriété (et donc pas la "deviceIcon") ne change . Donc, le JSON d'un device ne contiendrait pas tout l"info d'affichage/du statut du device.. Donc, en y réfléchissant, ce n'est pas la propriété "deviceIcon" que je dois modifier (pour un QA de type Binary Switch) mais laquelle alors ? Ma question est-elle assez tordue/complexe pour toi ?
-
Bonjour, Vous voyez que je tien parole : je vous avait prévenu que j'aurais beaucoup de questions ... Pour les QA de type "Generic device" : on charge l'icône depuis l'onglet général puis pour connaitre son id, on regarde le # qui se trouve après User quand on fait click droit -> Enregistrer sous (User1007.png) puis dans le code, on peut l'assigner à ce ou un autre QA de même type self:updateProperty("deviceIcon", 1007) Pour les QA de type "Binary Switch" (je les aime bien car on peut faire faire qqch en cliquant juste sur l'icône) : on char l'icône Off et l'icône On puis comment trouver l'id de ces icônes ? (car si click droit-> Enregistrer sous on a un id à 7 chiffres (pour le On - User1001100.png) et pour le Off? et de tout façon NI self:updateProperty("deviceIcon", 1007) NI self:updateProperty("deviceIcon", 1001100) NI self:updateProperty("deviceIcon", 1001101) NI self:updateProperty("deviceIcon", 10011) NI self:updateProperty("deviceIcon", 1011) ne fonctionne Il y a sûrement un truc ...
-
Merci pour ce "cours privé". C'est en effet sympa de "regrouper" les variables : QA GestionChauffage, QA GestionPiscine, ... surtout si on put les voir/mettre à jour (?) depuis d'autres QA. J'utilise encore les variables globales, pour les variables prédéfinies (malheureusement, pas (encore) disponible au niveau des QA).
-
Merci pour ces infos très claires. Je vais regarder à mon code pour privilégier les variables locales. Quand tu is que les Globales sont visibles de partout, c'est de partout dans le QA ou également dans d'autres QA ? Pour la recherche dans la table, j'avais trouvé la même solution. Mais je vais regarder pour in pairs() et le _
-
ok, j'avance, je n'ai plus d'erreur. effectivement définit function QuickApp:Consigne (Room, Mode, Chauf_Maison_Mode) et l'appeler comme ceci : self:Consigne (Room, Mode, Chauf_Maison_Mode) fait qu'elle tourne sans erreur. Mais ce qui est surprenant, à la lecture de ceci ( https://forum.fibaro.com/topic/49113-hc3-quickapps-coding-tips-and-tricks/page/21/#comment-207742), c'est que mon code s'exécute sans erreur malgré que : la fonction Consigne (...) est définie APRES son appel il n'y ait pas de return dans la fonction Consigne.... Maintenant j'ai un autre problème avec 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 il ne trouve pas key == Room, bien que d'après le debug, tous les paramètres sont bien passés => je trouverai... Comme promis, recevez tous les 2 toute ma gratitude.
-
j'ai commencé à lire ton premier lien (merci pour m'avoir directement pointé au bon endroit, car nun post de 65 pages, je n'essaye même pas ... En tout cas, ce début m'a déjà permis de comprendre pour quoi une partie de mon code ne pouvait pas fonctionner ; ma fonction Condigne était définie après son appel. J'ai encore beaucoup à apprendre ...
-
merci, je dois aller m'occuper de mes autres amis
-
oui, merci, en effet, mais comment l'appeler ? QuickApp:Consigne (...) ?
-
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
-
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)
-
@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
-
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)
-
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
-
Quick App - Gestionnaire d'Événements Automatique - GEA pour HC3
jojo a répondu à un(e) sujet de Lazer dans Quick App Developpeur
keep it simple, on supprime de la doc, et basta -
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...)
-
Quick App - Gestionnaire d'Événements Automatique - GEA pour HC3
jojo a répondu à un(e) sujet de Lazer dans Quick App Developpeur
--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 '!' -
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
-
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 ...
-
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