-
Compteur de contenus
1 333 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Tout ce qui a été posté par Bloug
-
Thank you very much @jang for your addition ! My example for 1 Child itself comes from my file indicated below for the 6 Childs ( " who can do more, can do less " => dummies power !! ) Can you help me, with your example, I have the following error: main.lua:33: attempt to index a nil value (global 'children') if not children[Name] then by ? if children == nil then Thx
-
Ayant eu pas mal de pb pour la création de childs devices et leurs mises à jour ! Je poste ici une méthode (ma) pour leurs créations. Certes c’est loin d’être la meilleure…. Les Chuck Norris du lua y arrivent avec seulement deux lignes de codes …. Bref … c’est pas la meilleure méthode ! mais elle fonctionne ! Je n’ai pas la prétention d’expliquer le comment, le pourquoi ( c’est le travail de @lazer ) mais simplement d’indiquer ma méthode de débutant et je l’espère vous permettre d’avoir un exemple simple… le manipuler et comprendre ! Bon ! Comme dans toutes grandes sectes qui se respectent, celle-ci pour « les Nuls » se déroule en six étapes ! Alors voici un petit schéma avec les 6 étapes que j’utilise pour faire mes Childs 1 - Création du Child Pour l’exemple nous allons créer un Child température ! ------------------------------- -- 1 - Création d'un Child ------------------------------- -- Child Température : function QuickApp:createChildTmps(Nom) local child = self:createChildDevice({name = Nom, type = "com.fibaro.temperatureSensor",}, NOM_Temps) child:setVariable("Nappe_Child_ID" , "Child_Temps") end 2 - Définition des classes ------------------------------- -- 2 - Définition des classes ------------------------------- class 'NOM_Temps' (QuickAppChild) -- Class NOM_Temps pour "com.fibaro.temperatureSensor" 3 - Constructeur ------------------------------- -- 3 - Constructeur ------------------------------- -- Constructeur __init pour la classe NOM_Temps function NOM_Temps:__init(device) QuickAppChild.__init(self, device) end Normalement arrivé ici votre code ressemble à cela : ------------------------------- -- 1 - Création d'un Child ------------------------------- -- Child Température : function QuickApp:createChildTmps(Nom) local child = self:createChildDevice({name = Nom, type = "com.fibaro.temperatureSensor",}, NOM_Temps) child:setVariable("Nappe_Child_ID" , "Child_Temp") end ------------------------------- -- 2 - Définition des classes ------------------------------- class 'NOM_Temps' (QuickAppChild) -- Class NOM_Temps pour "com.fibaro.temperatureSensor" ------------------------------- -- 3 - Constructeur ------------------------------- -- Constructeur __init pour la classe NOM_Temps function NOM_Temps:__init(device) QuickAppChild.__init(self, device) end 4 - Initialisation des Childs -------------------------------- -- 4 - Initialisation des Childs -------------------------------- self:initChildDevices({ ["com.fibaro.temperatureSensor"] = NOM_Temps -- Température }) local i = 0 for id,device in pairs(self.childDevices) do i=i+1 self:debug("[", id, "]", device.name, ", type of: ", device.type) end if i == 0 then local Nom = "Température" self:createChildTmps(Nom) end 5 - Identification des Childs ------------------------------------- -- 5 - Identification des Childs ------------------------------------- for _, childDevice in pairs(self.childDevices) do if childDevice:getVariable("Nappe_Child_ID") == "Child_Temps" then ID_Child_1 = childDevice.id end end self:Mise_a_jour_des_Childs() end ------------------------- Fin du OnInit 6 - Mises à jour des variables -------------------------------- -- 6 - Mises à jours des Childs -------------------------------- -- Childs ID_Child_1 function QuickApp:Mise_a_jour_des_Childs() variable_qui_donne_la_temperature = 37 --- pour l'ex du tuto variable_pour_le_log = " I'm bad " --- pour l'ex du tuto self.childDevices[ID_Child_1]:updateProperty("value", variable_qui_donne_la_temperature ) self.childDevices[ID_Child_1]:updateProperty("log", variable_pour_le_log) end C’est peut être pas une bonne habitude !? A Confirmer au prochain Crash Voici : Le fichier svg plus facile à lire que sur le forum : Les Childs pour les nuls.svg Le fichier lua à coller dans un QA générique : Child_Temps.lua Et comme nous "les nuls " nous savons que le tuto machin truc qui explique ne parle jamais du child que l'on souhaite faire ! voici un fichier lua avec un multiChild ! : A coller dans un QA générique : Les_Childs_pour_les_Nuls.lua ou le QA à importer : Les_Childs_pour_les_Nuls.fqa PS : J'espère sincèrement ne pas avoir avoir raconté trop de bêtises ! ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Autres méthodes J'ajoute ici le liens direct d'autres méthodes plus complexes abordées ici : Contribution de Jang : ICI Création de Child qui sont définis dans la table (Ex de 6 Childs) Elle supprime les Childs qui ne sont pas dans la table, si vous modifiez le nombre d'enfants. Chaque Child dispose d'un identifiant unique qui est utilisé pour appeler des méthodes sur les childs ------------------------------------------------------------------------------------------------------------------------------
-
alors, peut être une erreur dans mon code ! A vérifier ensemble point par point, je reste dispo tiens mois au jus ! en fait lors de la connexion ( complète ) il récupère un gros Json avec l'ensemble des devices du coup il est possible de le recopier pour l'indiquer dans la variable. Pour ton Erreur , Impossible d'avoir la suite du message ? : https://apis.groupe-atlantic.com/token 400{"error_de
-
Bon au moins, maintenant j'arrive a comprendre ! et à faire ! une dernière précision la table : childDevices{} ou je pioche les infos est crée automatiquement lors de l'initialisation des appareils enfants ? En tout cas , Encore merci !
-
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 !
-
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',
-
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 :
-
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.
-
En remplacement la valeur, par un nom plus clair tel que "child n°1" Mais comment je me balade en lua ?
-
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.
-
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
-
Quick App - DomoCharts - Graphiques sur NAS pour HC3
Bloug a répondu à un(e) sujet de Lazer dans Quick App Developpeur
@mprinfo je l'utilise comme l'indique @jojo avec l'eau, cest du " litre " j'ai donc passé mes volumes en litres- 435 réponses
-
- domocharts
- hc3
-
(et 1 en plus)
Étiqueté avec :
-
@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 !
-
Domotisation Porte Doubles Battants
Bloug a répondu à un(e) sujet de Yannick dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
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 -
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 :
-
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 !
-
Domotisation Porte Doubles Battants
Bloug a répondu à un(e) sujet de Yannick dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
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. -
Domotisation Porte Doubles Battants
Bloug a répondu à un(e) sujet de Yannick dans Actionneurs & Ouvrants (Portail, volets, piscines, ...)
Attention à la distance quand même j'ai du installé le bidi .... pour avoir du natif :p -
-
Je regarde demain si j'ai encore les piles qui fonctionnent pour te confirmer le truc
-
régulation plancher chauffant hydraulique
Bloug a répondu à un(e) sujet de sweet38000 dans Chauffage et Energie
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 -
régulation plancher chauffant hydraulique
Bloug a répondu à un(e) sujet de sweet38000 dans Chauffage et Energie
C'est quoi ta chaudière et ton régulateur actuel ? -
régulation plancher chauffant hydraulique
Bloug a répondu à un(e) sujet de sweet38000 dans Chauffage et Energie
bof bof j'y crois pas avec un PC -
Mes meilleurs veux ! avec un vrai calendrier en maj pour la HC3 ! ( merde c'est fini noël ! )
-
régulation plancher chauffant hydraulique
Bloug a répondu à un(e) sujet de sweet38000 dans Chauffage et Energie
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 !