Aller au contenu

Bloug

Membres confirmés
  • Compteur de contenus

    1 329
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Bloug

  1. développe ? y'a pas une histoire de stockage limité au démarrage suivant ? il me semble avoir déja testé mais avec un Nil au démarrage suivant .... mais a vérifier c'est vous les foufouX du code !
  2. Tout fonctionne chez moi, j'entends par là " pas de changement sur le fonctionnement avec l'api dans mes requetés " donc si c'est le mot de passe : il faut ajouter la fonction urlencode ( après la ligne 126 ) : -------------------------------------------------------------------------------------- -- UrlEncode pour le password -------------------------------------------------------------------------------------- function QuickApp:urlencode(s) if (s) then s = string.gsub (s, "\n", "\r\n") s = string.gsub (s, "([^%w ])", function (c) return string.format ("%%%02X", string.byte(c)) end) s = string.gsub (s, " ", "+") end return s end -------------------------------------------------------------------------------------- -- Modification du Password -------------------------------------------------------------------------------------- mypassword = self:getVariable("Password") PasswordEncode = self:urlencode(mypassword) -------------------------------------------------------------------------------------- et dans la fonction: function QuickApp:GetJwt() remplacer par la nouvelle variable " PasswordEncode " data = 'grant_type=password&username=GA-PRIVATEPERSON/' .. self:getVariable("UserName") .. '&password=' .. self:getVariable("Password") .. '&scope=openid', par data = 'grant_type=password&username=GA-PRIVATEPERSON/' .. self:getVariable("UserName") .. '&password=' .. PasswordEncode .. '&scope=openid',
  3. De Grands mercis ! Je détaille pour si un gars comme moi en quête de réponses ... j'ai simplifié mon code avec : child:setVariable("Nappe_Child_ID" , "N3") -- Fonction pour le Child BSS_3 function QuickApp:createChild_BSS_3(Nom) local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID" , "N3") end Du coup je liste ma table childDevices et j'attribue une variable : print("---------- liste des Childs -------------") for _, childDevice in pairs(self.childDevices) do print(childDevice:getVariable("Nappe_Child_ID") , " a l'ID : " .. childDevice.id) if childDevice:getVariable("Nappe_Child_ID") == "N1" then ID_Child_1 = childDevice.id end if childDevice:getVariable("Nappe_Child_ID") == "N2" then ID_Child_2 = childDevice.id end if childDevice:getVariable("Nappe_Child_ID") == "N3" then ID_Child_3 = childDevice.id end end print("---------------- Fin --------------------") J'arrive donc à mettre à jour mes childs : -- Mise à Jour du Childs Bss_1 avec la variable N1 : self.childDevices[ID_Child_1]:updateProperty("value", LastResultReleve) -- Mise à Jour du Childs Bss_2 avec la variable N2 : self.childDevices[ID_Child_3]:updateProperty("value", LastResultReleve) -- Mise à Jour du Childs Bss_3 avec la variable N3 : self.childDevices[ID_Child_3]:updateProperty("value", LastResultReleve) Maiss !!! ??? du coup ?? j'ai plus besoin de ma table sondes{} ???? Quelques messages plus haut j'avais créer une table sonde{} dans le Oninit: local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end j'ai testé la même procédure avec : print("------- Test avec ma table Sondes ------- ") for id, childDevice in pairs(self.sondes) do print(id, childDevice, (childDevice:getVariable("Nappe_Child_ID"))) end print("---------------- Fin --------------------") mais elle crash à cause du : (childDevice:getVariable("Nappe_Child_ID")) [ERROR] [QUICKAPP876]: QuickApp crashed [ERROR] [QUICKAPP876]: main.lua:315: attempt to index a number value (local 'childDevice') vraiment merci pour vos retours ! PS : vous passez quand même moins de temps à écrire un tuto :
  4. Si, désolé, j'ai répondu rapidement avec mon téléphone désolé. Je vais les nommer Nappe_1 Nappe_2 et Nappe_3 c'est presque mieux/pire (Je fais un QA sur le niveau des nappes phréatiques dans mon secteur avec trois points piézométrique) rien de bien passionnant mais l'exercice est bon.
  5. En remplacement la valeur, par un nom plus clair tel que "child n°1" Mais comment je me balade en lua ?
  6. Salut @Gael As tu un mot de passe avec des caractères spéciaux ? Peut être là le pb il n'y a pas de fonction Urlencode.
  7. oki, donc comme suggéré, J'ai donc : 1 - Modifié mon code pour attribué une variable : nommée : Nappe_Child_ID avec comme valeur l'ID_du_Child_enfant child:setVariable("Nappe_Child_ID" , child.id) -- Fonction pour le Child BSS_3 function QuickApp:createChild_BSS_3(Nom) self:debug("Child devices Nappe BSS3 : ") for id,device in pairs(self.childDevices) do end local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID" , child.id) end 2 - J'ai ajouté un table dans le Oninit , sous le initChildDevices : j'ai donc local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end -- Appareil enfant self:initChildDevices({ ["com.fibaro.multilevelSensor"] = BSS_1, -- Niveau Nappe BSS_1 ["com.fibaro.multilevelSensor"] = BSS_2, -- Niveau Nappe BSS_2 ["com.fibaro.multilevelSensor"] = BSS_3, -- Niveau Nappe BSS_3 }) local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "BSS 1" self:createChild_BSS_1(Nom) local Nom = "BSS 2" self:createChild_BSS_2(Nom) local Nom = "BSS 3" self:createChild_BSS_3(Nom) end J"arrive donc avec l'exemple trouvé dans le topic : for _, childDevice in pairs(self.childDevices) do self:debug(childDevice:getVariable("Nappe_Child_ID")) end ou avec ma table sondes{} print("------ S O N N D E S ------") ID1 = self.sondes[1] ID2 = self.sondes[2] ID3 = self.sondes[3] print(ID1) print(ID2) print(ID3) Même avec la variable récupéré il est difficile de savoir qui est qui. J'ai hésité et tenté d'utiliser une nom bien distinctif avec le nom de la variable Child : Nappe_Child_ID_1 -- Nappe_Child_ID_2 -- Nappe_Child_ID_3 n mais j'ai encore plus de mal avec le lua : for _, childDevice in pairs(self.childDevices) do self:debug(childDevice:getVariable("Nappe_Child_ID_1")) self:debug(childDevice:getVariable("Nappe_Child_ID_2")) self:debug(childDevice:getVariable("Nappe_Child_ID_3")) end et si dans la variable, à la place de l'ID_du_Child_enfant je donne une valeur avec un nom plus explicite comme : Child_ID_1 -- Child_ID_2 -- Child_ID_3 je perds alors l'id pour l'indiquer dans la mise à jour du child y'a t'il un moyen en lua d'obtenir plus d'informations avec getVariable("Nappe_Child_ID_1") pour avoir : le résultat de ma variable et l'ID ? je dois me gourrer surement ailleurs ou rater un truc énorme ^^ merci
  8. @mprinfo je l'utilise comme l'indique @jojo avec l'eau, cest du " litre " j'ai donc passé mes volumes en litres
  9. @LazerJ'ai besoin d'aide pour l'histoire de la map et récupérer les ID des childs Stp j'ai testé pleins de trucs pour voir les résultats donc c'est légèrement le bazar voici mon code : function QuickApp:createChild_BSS_3(Nom) self:debug("Child devices Nappe BSS3 : ") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end local child = self:createChildDevice({name = Nom, type = "com.fibaro.multilevelSensor",}, BSS_3) child:setVariable("Nappe_Child_ID_3", child.id) -- <---------------------------------------------------- Ajout d'une variable dans le child ID_Child_3 = child.id -- <------------------------------------------------------------------------------ Tentative d'attribuerune variable ... oui mais non :p elle disparait self:storeDevice(uid, child.id) self:trace("Child device BSS_3 created: ", child.id) end function QuickApp:storeDevice(uid, hcId) self.devicesMap[uid] = hcId -- <------------------------------------------------------------------------- Cette ligne plante la QA **Err-1** - self:setVariable("devicesMap", self.devicesMap) end ** Err-1 ** : main.lua:112: attempt to index a nil value (field 'devicesMap') J'ai cette erreur en utilisnat la methode de Fibaro ( Keeping your devices synchronized ) Ensuite, en fin de script ( lors de l'update des label et des childs) j'ai testé de récupérer la liste des childs avec : for id,device in pairs(self.childDevices) do self:debug(id , device.name ) end ok j'ai la liste de mes ID ( c'est bien la MAP ???? ) [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 841 BSS 1 [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 842 BSS 2 [22.01.2023] [09:17:31] [DEBUG] [QA826_NAPPE]: 843 BSS 3 mais j'arrive pas à récupérer soit : les variables dans les childs : self:debug(childDevices:getVariable("Nappe_Child_ID_3")) OU directement l'ID du child pour lui donner/ou manipuler avec une autre variable genre : Child_ID_3 = childDevices:getVariable("Nappe_Child_ID_3") Un grand merci si tu as 2 minutesss pour m'aiguiller Bon Dimanche !
  10. Pose une photo/schema de tes portes et murs. En plus t'as de la chance pour tes questions ! Nous avons ici un expert Nice : @lfl
  11. voici Je ne rencontre aucun problème ou avec un groupe : Voici le code de la seconde image : ---- Fenetre DÉCLARATIONS (Conditions/Déclencheurs) { conditions = { { id = 768, isTrigger = true, operator = "==", property = "centralSceneEvent", type = "device", value = { keyAttribute = "Pressed", keyId = 1 } } }, operator = "all" } ----- Fenetre ACTIONS hub.call({[1] = 89, [2] = 86, [3] = 93, [4] = 99, [5] = 132, [6] = 142, [7] = 202, }, 'close') et les paramètres du module :
  12. Me voila avec une nouvelle pile et un donc un Bouton dans la box. Choix le l'action : Création de la scène : quand je Buzz X1 Pas de pb particulier avec la scène bloc. Si tu as besoin d'autres tests n'hésite pas !
  13. Oui pas de pb avec 3 m J'ai un nice popkit et j'ai pas de pb. Après il faut voir ta porte, le type ( paumelles...gonds), comment elle se ferme (serrure... gache ) etc.. Sur un portail battant il n'y a pas de verouillage, c'est la motorisation qui bloque l'ouverture.
  14. Attention à la distance quand même j'ai du installé le bidi .... pour avoir du natif :p
  15. Bon ... désolé me faut une pile er14250 Edit : je viens de faire un amazon pour en avoir une demain
  16. Je regarde demain si j'ai encore les piles qui fonctionnent pour te confirmer le truc
  17. Quel thermostat puis-je raccorder ? GRETEL propose 3 types de thermostat d’ambiance.Le TA, un thermostat mécanique filaireLe TEPP, un thermostat électronique programmable filaireLe THRADIO, un thermostat électronique programmable sans fil.Les thermostats d’ambiance connectés sont aussi parfaitement compatibles avec l’ensemble de nos modèles.Pour une régulation optimale et régulation dite par “loi d”eau” avec une courbe de chauffe, la régulation modulante REGULC est alors indiquée. REGULC : Equipées de l’option REGULC, les chaudières GRETEL modulent leur puissance en fonction de la température extérieure et procurent une chauffe douce et progressive particulièrement appréciée en même temps qu’une économie optimale. Au regard de ton premier post sur le coût de l'énergie qui explose... regulC est la meilleure solution. Mais pour tes besoins de connectivité sur le Aibnb la solution d'un thermostat zwave semble plus simple a mettre en place et plus pertinente pour de la domotique (capteur température, humidité, réglage thermostat....) Plus q'un simple on/off d'un fgs 214. Là, tu modules la température à distance au degré près Après pour le JojoCalendar .... tu as Jojo ! Tu l'invites 15jours sur ton airbnb pour qu'il puisse programmer le tout
  18. C'est quoi ta chaudière et ton régulateur actuel ?
  19. bof bof j'y crois pas avec un PC
  20. Bloug

    Tradition : Bonne année

    Mes meilleurs veux ! avec un vrai calendrier en maj pour la HC3 ! ( merde c'est fini noël ! )
  21. Normalment avec un PC ... tu touches à rien ?! La régule est normalement "intelligente" et elle est réalisée par loi d'eau grâce à ta sonde extérieure; De plus avec ta sonde intérieure (thermostat) tu affines/triangules l'ensemble. L'avantage d'un plancher chauffant est justement l'économie d'énergie grâce cette circulation régulière à basse température. Mais effectivement, il est possible de "jouer " sur les vannes pour contraindre certaine pièce avec moins de circulation d' eau (donc moins de chauffe ) mais pas de manière rapide à cause de l'inertie de ton plancher. Mais normalement une fois le bon réglage trouvé tu touches plus. Après, il existe des solutions zwave pour jouer sur les vannes : https://www.domadoo.fr/fr/peripheriques/4623-danfoss-controleur-z-wave-pour-plancher-chauffant-hc5-5-sorties-5702425190513.html tu as aussi des solutions chez Airzone. Il faut donc voir avec tes autres solutions que propose ton installation ( clim réversible ) pour gérer l'ensemble. souhaites-tu trouver une solution pour régler tes vannes Ou intégrer ton plancher à ton installation sur ta hc2 ? that is the question! Pour mon cas je récupère juste les données de ma chaudière. La vannes de la chambre a ma fille est légèrement fermée pour réduire la température + le paquet, j'ai trouvé le bon réglage. C'est quoi ta chaudière / thermostat ? Edit: un test de vannes sur un PC c'est minimum 24-48h pour en ressentir l'effet !
  22. merci beaucoup
  23. merci pour les pistes 1 - J'ai donc déplacé la fonction initChildDevices() en premier dans le onInit. 2 - Pour la fonction loop() elle est bien dans un setTimeout function QuickApp:loop() print("<font color=grey>**** R E F R E S H **** " .. os.date("Dernière mise à jour le %d/%m à %H h : %M").. " ****") self:multimatic() fibaro.setTimeout(self.refresh * 1000, function() self:loop() end) end 3 - j'ai déposé l'ensemble dans une fonction , pour l'exécuter avec un bouton function QuickApp:CreateChild() local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "T° Couloir" self:createChildTmpsCouloir(Nom) local Nom = "T° Exterieur" self:createChildTmpsExterieur(Nom) local Nom = "Pression" self:createChildPressure(Nom) local Nom = "T° Sonde Départ" self:createChildTempEauDepart(Nom) local Nom = "T° ECS" self:createChildTempECS(Nom) local Nom = "Conso Gaz " self:createChildConsoGazBoiler(Nom) local Nom = "Conso Gaz ECS" self:createChildConsoGazECS(Nom) local Nom = "Conso Elec Chaudière" self:createChildConsoElecBoiler(Nom) local Nom = "Conso Elec ECS " self:createChildConsoElecECS(Nom) local Nom = "Consigne Chaudière " self:createChildConChaudiere(Nom) local Nom = "Consigne ECS " self:createChildConECS(Nom) local Nom = "Etat ECS " self:createChildEtatECS(Nom) end end j'ai donc mon onInit : function QuickApp:onInit() self:initChildDevices({ ["com.fibaro.temperatureSensor"] = VaillantTempCouloir, ["com.fibaro.temperatureSensor"] = VaillantTempExterieur, ["com.fibaro.multilevelSensor"] = VaillantPressure, ["com.fibaro.temperatureSensor"] = VaillantTempDepEau, ["com.fibaro.powerSensor"] = VaillantConsoGazBoiler, ["com.fibaro.powerSensor"] = VaillantConsoGazECS, ["com.fibaro.powerSensor"] = VaillantConsoElecBoiler, ["com.fibaro.powerSensor"] = VaillantConsoElecECS, ["com.fibaro.temperatureSensor"] = VaillantConChaudiere, ["com.fibaro.temperatureSensor"] = VaillantConECS, ["com.fibaro.temperatureSensor"] = VaillantEtatECS }) __TAG = "QA"..plugin.mainDeviceId.."_Vaillant" self:updateProperty("deviceIcon", 1054) -- Icone API Offline log = self:getVariable("UserName") pass = self:getVariable("Password") serial = self:getVariable("Serial") self.refresh = tonumber(self:getVariable("Update")) self.http = net.HTTPClient({ timeout = 5000 }) self:loop() end -- - - - - - OnInit et quand je clique sur mon bouton j'ai toujours : [30.12.2022] [13:50:46] [TRACE] [QA741_VAILLANT]: UIEvent: {"values":[null],"eventType":"onReleased","elementName":"CreateChild","deviceId":741} [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 752 ] Consigne ECS , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 742 ] T° Couloir , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 743 ] T° Exterieur , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 744 ] Pression , type of: com.fibaro.multilevelSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 745 ] T° Sonde Départ , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 746 ] T° ECS , type of: com.fibaro.temperatureSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 747 ] Conso Gaz , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 748 ] Conso Gaz ECS , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 749 ] Conso Elec Chaudière , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 750 ] Conso Elec ECS , type of: com.fibaro.powerSensor [30.12.2022] [13:50:46] [DEBUG] [QA741_VAILLANT]: [ 751 ] Consigne Chaudière , type of: com.fibaro.temperatureSensor où il me manque le dernier child ajouté Avant le onInit j'ai bien : Mes constructeurs : -- == Constructeur __init pour la classe VaillantEtatECS function VaillantEtatECS:__init(device) QuickAppChild.__init(self, device) end les classes class 'VaillantEtatECS' (QuickAppChild) -- Class VaillantEtatECS pour "com.fibaro.temperatureSensor" et la fonction -- == Fonction pour l etat de chauffe ECS : function QuickApp:createChildEtatECS(Nom) self:debug("Child devices Etat ECS :") for id,device in pairs(self.childDevices) do self:debug("[", id, "]", device.name, ", type of: ", device.type) end local child12 = self:createChildDevice({name = Nom, type = "com.fibaro.temperatureSensor",}, VaillantEtatECS) self:trace("Child devices Consigne ECS created: ", child12.id) end le pb n'est pas du coté de mon if i == 0 then ? Edit : je pense que oui car j'ai modifié en : if i ~= 10 then j'ai eu un tsunami de 10 nouveaux child ..... j'en ai donc supprimé 9 et j'ai bien mon dernier .... faut surement améliorer le truc avec une condition
  24. Bonjour, Je souhaite ajouter un child supplémentaire, après avoir modifier mon QA rien ne se passe comme prévu Je suis toujours obligé de " supprimer " mon QA puis de le " recharger " Est il possible de m'expliquer pourquoi ? je suppose que le pb est vers le onInit ? function QuickApp:onInit() __TAG = "QA"..plugin.mainDeviceId.."_Vaillant" self:updateProperty("deviceIcon", 1054) -- Icone API Offline log = self:getVariable("UserName") pass = self:getVariable("Password") serial = self:getVariable("Serial") self.refresh = tonumber(self:getVariable("Update")) self.http = net.HTTPClient({ timeout = 5000 }) self:loop() self:initChildDevices({ ["com.fibaro.temperatureSensor"] = VaillantTempCouloir, ["com.fibaro.temperatureSensor"] = VaillantTempExterieur, ["com.fibaro.multilevelSensor"] = VaillantPressure, ["com.fibaro.temperatureSensor"] = VaillantTempDepEau, ["com.fibaro.powerSensor"] = VaillantConsoGazBoiler, ["com.fibaro.powerSensor"] = VaillantConsoGazECS, ["com.fibaro.powerSensor"] = VaillantConsoElecBoiler, ["com.fibaro.powerSensor"] = VaillantConsoElecECS, ["com.fibaro.temperatureSensor"] = VaillantConChaudiere, ["com.fibaro.temperatureSensor"] = VaillantConECS, ["com.fibaro.temperatureSensor"] = VaillantEtatECS }) local i = 0 self.sondes = {} for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) self.sondes[i] = id end if i == 0 then local Nom = "T° Couloir" self:createChildTmpsCouloir(Nom) local Nom = "T° Exterieur" self:createChildTmpsExterieur(Nom) local Nom = "Pression" self:createChildPressure(Nom) local Nom = "T° Sonde Départ" self:createChildTempEauDepart(Nom) local Nom = "T° ECS" self:createChildTempECS(Nom) local Nom = "Conso Gaz " self:createChildConsoGazBoiler(Nom) local Nom = "Conso Gaz ECS" self:createChildConsoGazECS(Nom) local Nom = "Conso Elec Chaudière" self:createChildConsoElecBoiler(Nom) local Nom = "Conso Elec ECS " self:createChildConsoElecECS(Nom) local Nom = "Consigne Chaudière " self:createChildConChaudiere(Nom) local Nom = "Consigne ECS " self:createChildConECS(Nom) local Nom = "Etat ECS " self:createChildEtatECS(Nom) end end -- - - - - - OnInit merci
  25. Bloug

    variable global ou self.xxx ?

    Bon OK !! je laisse @Lazer repondre ... ...
×
×
  • Créer...