Aller au contenu
MAM78

Quick App Doorbird Manager

Recommended Posts

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

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"},
                                              }
                          }

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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)

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites
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 !

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

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

 

Partager ce message


Lien à poster
Partager sur d’autres sites

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é.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 :15:

 

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 ;)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Ah mince, c'est bête ça, quelle idée aussi d'aller se coucher si tôt :94:

 

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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 !

 

image.png.eef70fd09a9d1599f0bbc34e9a7e30ec.png

Partager ce message


Lien à poster
Partager sur d’autres sites

Bingo :60: 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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon je vais faire dodo, je verrais demain matin ta réponse ;)

 

Modifié par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

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....

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu n'as pas à t'excuser, ton aide est si précieuse qu'il serait très mal venu d'avoir une quelconque impatience.

Partager ce message


Lien à poster
Partager sur d’autres sites

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é par MAM78

Partager ce message


Lien à poster
Partager sur d’autres sites

 :60:  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é par Fred.domotique

Partager ce message


Lien à poster
Partager sur d’autres sites

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 

Partager ce message


Lien à poster
Partager sur d’autres sites
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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×