MAM78 Posté(e) le 8 juin 2022 Auteur Signaler Posté(e) le 8 juin 2022 (modifié) Tu trouveras ci-dessous un correctif à appliquer. V1.22 : du 08/06/22 -> Correction d'un bug qui empêche la création automatique des Devices Il convient de charger le code contenu dans le fichier Doorbird Manager - main V1.22.lua et de le coller dans le module main du QuickApp Code du module main du QuickApp : Code Lua du module main : Doorbird Manager - main V1.22.lua Modifié le 8 juin 2022 par MAM78
Fred.domotique Posté(e) le 9 juin 2022 Signaler Posté(e) le 9 juin 2022 Merci pour ton Retour MAM, J'ai mis en place le correctif, une erreur est encore présente si dessous le debug (Cela semble avoir avancé un peu mais toujours un soucis d'index, ci dessous ma config). [09.06.2022] [09:28:25] [TRACE] [QA_DBDMANAGER_440]: QuickApp:btnCreateChilds_onReleased() - Création des modules enfants [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:btnCreateChilds_onReleased() [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:getChildDevices() [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - DeviceList =table [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - name Sonnette 1 [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - type com.fibaro.binarySensor [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - class MyChildInput [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - deviceControlType 20 [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - categories ["other"] [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - manufacturer Doorbird [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - model DoorBird D2101V-RAL7016 [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - defaultValue false [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - Variables=[{"value":"Sonnette 1","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdDoorbell","name":"DeviceCategory"},{"value":"LabelLastRinging1","name":"LabelAssociate"},{"value":5,"name":"SecondesToClose"}] [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: QuickApp:createChildDevices() - Table ChildDevice= table [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: New child device name : 'Sonnette 1' - type : 'com.fibaro.binarySensor' - class : 'class MyChildInput' [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: MyChildInput Class for id # nil ( nil ) [09.06.2022] [09:28:25] [ERROR] [QA_DBDMANAGER_440]: tools:log() : invalid self device : userdata custom [luabind::detail::null_type] object: (nil) [09.06.2022] [09:28:25] [ERROR] [QA_DBDMANAGER_440]: ./quickApp.lua:156: table index is nil [09.06.2022] [09:28:25] [DEBUG] [QA_DBDMANAGER_440]: ./include/main.lua:959: attempt to index a nil value (global 'tols') [09.06.2022] [09:28:25] [ERROR] [QUICKAPP440]: QuickApp crashed [09.06.2022] [09:28:25] [ERROR] [QUICKAPP440]: Unknown error occurred: handleJsonRpc [09.06.2022] [09:29:01] [TRACE] [QA_DBDMANAGER_440]: ------------------------------------------------------- [09.06.2022] [09:29:01] [TRACE] [QA_DBDMANAGER_440]: QuickApp Doorbird Manager - Initialization [09.06.2022] [09:29:01] [TRACE] [QA_DBDMANAGER_440]: ------------------------------------------------------- Pour ma partie QuciAPP.ChildVarUser ci dessous mon écriture ---------------------------------------------------------------------------------------------------- -- User variables QuickApp.ChildVarUser ---------------------------------------------------------------------------------------------------- QuickApp.ChildVarUser = {DoorbirdIRLight = {{number = 1, name = "Infrarouge", createChild = true}}, DoorbirdMotion = {{number = 1, name = "Mouvement Sonnette", createChild = true}}, DoorbirdDoorbell = {{number = 1, name = "Sonnette 1", createChild = true}, {number = 2, name = "Sonnette 2", createChild = false} }, DoorbirdRelay = {{number = 1, name = "Porte Portail", createChild = true, SecondesToClose = 5}, {number = 2, name = "Porte Garage", createChild = true, SecondesToClose = 5}, }, DoorbirdRFID = {{number = 1, name = "Mamie", createChild = true, TransponderID = "135,06783"}, {number = 2, name = "Enola", createChild = true, TransponderID = "135,13502"}, } }
MAM78 Posté(e) le 12 juin 2022 Auteur Signaler Posté(e) le 12 juin 2022 Hello @Lazer J'ai un souci lors de l'utilisation de ta bibliothèque "tools" en version 2.10. Dans la function tools:createChild(param) lors de l'exécution de la ligne suivante : local child = self:createChildDevice({ name = childName, type = childType, initialProperties = childProperties, }, childClass ) J'obtiens l'erreur suivante : ./quickApp.lua:156: table index is nil Aurais-tu une idée de la cause de cette erreur ? Ca fonctionnait bien avant, je ne comprend pas pourquoi ça ne fonctionne plus.
Lazer Posté(e) le 12 juin 2022 Signaler Posté(e) le 12 juin 2022 Je ne me souviens plus des modifications apportées entre la v2.10 et la v2.20, mais déjà tu devrais commencer par utiliser cette dernière, peut être que le bug sera corrigé. Sinon il faudra que je me penche sur le problème plus en profondeur (j'ai déjà une v2.30 qui est prête, mais elle ne corrige pas ce problème lié à createChild)
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 (modifié) Je viens de charger la version v2.20 et toujours le même problème. Pour faciliter le diagnostique j'ai ajouté un print du contenu des variables dans ta fonction juste avant l'appel de la fonction "child = self:createChildDevice", dont voici le debug. Les variables sont "printées" par un tools:tostring((var) [14.06.2022] [23:32:04] [TRACE] [QA_DBDMANAGER_707]: Create child device "Infrarouge" of type "com.fibaro.binarySwitch"... [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: New child device name 'Infrarouge' - type 'com.fibaro.binarySwitch' - class 'MyChildOutput' [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceID" = "Infrarouge" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceNumber" = "1" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceCategory" = "DoorbirdIRLight" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "LabelAssociate" = "na" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "SecondesToClose" = 300 [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childName = "Infrarouge" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childType = "com.fibaro.binarySwitch" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childProperties = "{"categories":["other"],"quickAppVariables":[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}],"manufacturer":"Doorbird","model":"Doorbird ????","deviceControlType":20,"value":false}" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childClass = "class MyChildOutput" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childUnit = "nil" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childRoom = "nil" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childVariables = "[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}]" [14.06.2022] [23:32:04] [DEBUG] [QA_DBDMANAGER_707]: childInterfaces = "nil" [14.06.2022] [23:32:04] [TRACE] [QA_DBDMANAGER_707]: MyChildOutput:__init() Class for id # nil ( nil ) [14.06.2022] [23:32:05] [ERROR] [QA_DBDMANAGER_707]: tools:log() Invalid self device : userdata custom [luabind::detail::null_type] object: (nil) [14.06.2022] [23:32:05] [ERROR] [QA_DBDMANAGER_707]: ./quickApp.lua:156: table index is nil [14.06.2022] [23:32:05] [ERROR] [QA_DBDMANAGER_707]: Error : Automatic child device(s) creation failed Est-ce que tu aurais une idée de la cause du plantage ? Modifié le 14 juin 2022 par MAM78
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 (modifié) Les seules différences que je constate c'est que pour la variable childVariable la structure contient {"value":"Infrarouge","name":"DeviceID"} alors que dans tes commentaires de la fonction tu mets : variables = {{name = "MyVariable", value = "Hello World"}}, -- optional soit : {"value"="Infrarouge","name"="DeviceID"} Est-ce que cette différence est bien liée à l'utilisation de la fonction tools:tostring(var) qui remplace les "=" par ":" ? Ou est-ce lié aux "[" "]" qui encadrent les variables. Cf. childVariables = "[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}]" Modifié le 14 juin 2022 par MAM78
Lazer Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 Y'a un truc que je pige pas bien dans ton log, je vois que la fonction __init() s'exécute, donc le child a bien été créé non ? En tout cas même si le child n'a pas été créé dans la Database de la HC3, l'objet a bien instancié en mémoire à partir de la classe. Par contre cette fonction __init() affiche des trucs pas très rassurants "nil" comme si dans l'init, tu avais des instructions qui vont utiliser des variables qui ne sont pas (encore ?) initialisées Ensuite tu as un appel à tools:log(), et là aussi il n'est pas content car il affiche un message d'erreur. Puis il y a plantage dans quickApp, qui est un fichier interne à la box auquel nous n'avons pas accès. Ce plantage est intercepté grâce au pcall() de la fonction tools:createChildDevice() qui retourne donc false, ce qui permet à ton QuickApp de continuer à s'exécuter et d'afficher le beau message d'erreur. Bref, pour moi l'erreur elle n'est pas dans la création du child, mais dans la fonction __init() de ton child
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 Voici ma fonction __init() ---------------------------------------------------------------------------------------------------- -- QuickApp Child device - MyChildOutput ---------------------------------------------------------------------------------------------------- class 'MyChildOutput' (QuickAppChild) -- -- Constructor -- function MyChildOutput:__init(device) QuickAppChild.__init(self, device) if debug then tools.trace(self.parent, "MyChildOutput:__init() Class for id # ",self.id , " (" , self.name,")") tools.log(self, "", 0) end end
Lazer Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 Ton log te montre que les variables self.id et self.name ne sont pas encore initialisée à ce moment là (ce qui est sans conséquence car la fonction (tools.trace() se contente d'afficher nil) Le tools.log() te met aussi un warning. Après ça plante, je ne saisis pas bien pourquoi. Mais essaye de tout virer dans __init(), il doit y avoir un truc qui ne lui plait pas. Laisse juste QuickAppChild.__init(self, device) qui est obligatoire
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 (modifié) J'ai tout viré, toujours la même erreur [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: New child device name 'Infrarouge' - type 'com.fibaro.binarySwitch' - class 'MyChildOutput' [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceID" = "Infrarouge" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceNumber" = "1" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "DeviceCategory" = "DoorbirdIRLight" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "LabelAssociate" = "na" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: Add child variable "SecondesToClose" = 300 [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childName = "Infrarouge" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childType = "com.fibaro.binarySwitch" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childProperties = "{"quickAppVariables":[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}],"deviceControlType":20,"manufacturer":"Doorbird","categories":["other"],"value":false,"model":"Doorbird ????"}" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childClass = "class MyChildOutput" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childUnit = "nil" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childRoom = "nil" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childVariables = "[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}]" [15.06.2022] [01:04:21] [DEBUG] [QA_DBDMANAGER_707]: childInterfaces = "nil" [15.06.2022] [01:04:21] [ERROR] [QA_DBDMANAGER_707]: ./quickApp.lua:156: table index is nil [15.06.2022] [01:04:21] [ERROR] [QA_DBDMANAGER_707]: Error : Automatic child device(s) creation failed Modifié le 14 juin 2022 par MAM78
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 il y a 39 minutes, Lazer a dit : donc le child a bien été créé non ? Non le child, ne semble pas créé, il n'apparait pas dans le main. Il n'y a pas non plus d'affichage en bleu de la création du child !
Lazer Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 OK... donc il y aurait bien un problème avec les paramètres donnés à self:createChildDevice() Tu peux essayer d'en virer au maximum pour ne laisser que l'essentiel ? name et type je crois Puis tu procèdes par élimination pour trouver le coupable. Autre chose que tu peux faire aussi, juste avant l'appel de cette fonction, c'est ajouter les debug suivants : tools:debug(tools:tostring(childProperties, true, true)) tools:debug(tools:tostring(childInterfaces, true, true)) tools:deepPrint(childProperties) tools:deepPrint(childInterfaces) ça va te permettre de voir précisément le contenu des tables, et le type exact de chaque variable
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 Voici le debug des traces demandées : [15.06.2022] [01:19:05] [DEBUG] [QA_DBDMANAGER_707]: {"quickAppVariables":[{"value":"Infrarouge","name":"DeviceID"},{"value":"1","name":"DeviceNumber"},{"value":"DoorbirdIRLight","name":"DeviceCategory"},{"value":"na","name":"LabelAssociate"},{"value":300,"name":"SecondesToClose"}],"manufacturer":"Doorbird","deviceControlType":20,"categories":["other"],"value":false,"model":"Doorbird ????"} [15.06.2022] [01:19:05] [DEBUG] [QA_DBDMANAGER_707]: nil [15.06.2022] [01:19:05] [DEBUG] [QA_DBDMANAGER_707]: table[6] "quickAppVariables" = table[5] 1 = table[2] "value" = "Infrarouge" "name" = "DeviceID" 2 = table[2] "value" = "1" "name" = "DeviceNumber" 3 = table[2] "value" = "DoorbirdIRLight" "name" = "DeviceCategory" 4 = table[2] "value" = "na" "name" = "LabelAssociate" 5 = table[2] "value" = 300 "name" = "SecondesToClose" "manufacturer" = "Doorbird" "deviceControlType" = 20 "categories" = table[1] 1 = "other" "value" = false "model" = "Doorbird ????" [15.06.2022] [01:19:05] [DEBUG] [QA_DBDMANAGER_707]: nil
Lazer Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 Enlève le deviceControlType, je suis presque sûr que c'est le problème, j'avais eu le souci avec Surveillance Station ou un autre QA de mes débuts, car l'API Fibaro a changé entre temps. Tu serais tombé dessus en procédant par élimination comme je te l'ai suggéré.
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 J'ai supprimer tous les paramètre en gardant name, type et childClass et en mettant childProperties={} sinon j'avais une erreur Les Childs ont bien été créés, mais maintenant ma HC3 ne répond plus J'ai tenté un redémarrage software, mais toujours rien. Difficile vu l'heure pour faire un arrêt électrique, la HC3 est dans la pièce d'un dormeur
Lazer Posté(e) le 14 juin 2022 Signaler Posté(e) le 14 juin 2022 Ah mince, c'est bête ça, quelle idée aussi d'aller se coucher si tôt Plus sérieusement, désolé si ça t'a fait planter la box.... c'est étrange quand même. Cela dit, la HC3 dispose d'un Watchdog intégré, donc elle devrait rebooter toute seule.... mais je ne sais pas au bout de combien de temps par contre.
MAM78 Posté(e) le 14 juin 2022 Auteur Signaler Posté(e) le 14 juin 2022 c'est bon j'ai réussi a faire un arrêt/relance en toute discretion (pas de réaction en tout cas). J'ai nouveau la main. Les Childs sont bien visible suite à la manipulation et impossible de les supprimer. J'obtiens le message suivant que je confirme mais si je fait un refresh de la page, les Childs sont toujours présent. Du coup je suis obligé à chaque fois de recréer le QuickApp pour faire d'autres tests. C'est relou !
MAM78 Posté(e) le 15 juin 2022 Auteur Signaler Posté(e) le 15 juin 2022 (modifié) Bingo c'est bien le deviceControlType Mais du coup, comment ont fait pour pallier à sa suppression : quelle est l'incidence de cette suppression ? quelle autre valeur que 20, il faut mettre ? Modifié le 15 juin 2022 par MAM78
MAM78 Posté(e) le 15 juin 2022 Auteur Signaler Posté(e) le 15 juin 2022 (modifié) Bon je vais faire dodo, je verrais demain matin ta réponse Modifié le 15 juin 2022 par MAM78
Lazer Posté(e) le 15 juin 2022 Signaler Posté(e) le 15 juin 2022 Désolé j'ai été pas mal occupé aujourd'hui. Apparemment (d'après mes tests rapides) la seule valeur tolérée pour deviceControlType maintenant c'est 1. Ce n'est pas documenté de toute façon, donc il te faut faire des essais successifs si tu veux identifier les valeurs autorisées....
MAM78 Posté(e) le 15 juin 2022 Auteur Signaler Posté(e) le 15 juin 2022 Tu n'as pas à t'excuser, ton aide est si précieuse qu'il serait très mal venu d'avoir une quelconque impatience.
MAM78 Posté(e) le 15 juin 2022 Auteur Signaler Posté(e) le 15 juin 2022 (modifié) Bonsoir, Vous trouverez en première page du post, une nouvelle version du QuickAPP V1.23 qui corrige un bug qui empêchait la création automatique des Child Devices. Il convient de suivre les instructions données dans le paragraphe Versions. Merci encore @Lazer pour ton aide et ton expertise qui ont permis de résoudre ce bug un peu vicieux. @Fred.domotique Pourrais-tu STP faire la mise à jour et me faire un retour si tout se passe bien pour toi maintenant. Modifié le 15 juin 2022 par MAM78
Fred.domotique Posté(e) le 16 juin 2022 Signaler Posté(e) le 16 juin 2022 (modifié) Nickel ! je te confirme que tout fonctionne à merveille ! @MAM78 & @Lazer Merci à vous deux pour le boulot. Me reste plus qu'à faire le lien avec ma GEA.. Modifié le 16 juin 2022 par Fred.domotique
Fred.domotique Posté(e) le 29 juillet 2022 Signaler Posté(e) le 29 juillet 2022 Salut Mam78, Je reviens vers toi sur la gestion du doorbird, as tu étudier le besoin suivant ou aurais tu une idée pour le gérer. Enfaite je travail parfois de nuit (variable gérer dans ma box via Cal google) et je souhaiterais stopper la sonnette le matin quand je dors. As tu un code http ou une autre méthode pour que mon calendrier (ma box) puisse gérer le planning du bouton sonnette. Merci
jojo Posté(e) le 23 décembre 2023 Signaler Posté(e) le 23 décembre 2023 Le 19/12/2020 à 02:12, MAM78 a dit : à savoir les séries D10x/D20x/D21x/B10x @MAM78, je viens à l'instant de tomber par hazard sur ton QA, et je suis très motiver pour l'indtaller chez moi. Peut-être que la réponse à ma question se trouve dans les posts suivants, mais comme je lis très difficilement, je pose la question pour savoir si ça vaut la peine que je continue. J'ai un Doorbird D1101KH-S-V2A-C, donc séries D11x, qui n'est pas repris dans les séries compatibles. L'est-il ? Ou j'abandonne tout de suite ?
Messages recommandés