zigbeefordomoticz / Domoticz-Zigbee

Zigbee plugin for Domoticz. Allow to connect various zigbee controllers like Zigate but also Texas Instrument CC2531, CC13x2, CC26x2 ; Silicon-Labs; deConz based chipset to be connected to Domoticz
GNU General Public License v3.0
100 stars 43 forks source link

Update of Device[ID].Options['Zigate'] . Currently this is never updated as far as I understood. So it might be good to update . #140

Closed pipiche38 closed 6 years ago

pipiche38 commented 6 years ago

Options['Zigate'] is stored to the Domoticz database when creating the device. However a long the life of the system some of the fields will be updated RSSI, BatteryLevel and it might be a good idea to update the Domoticz Database with the latest information on a regular basis (or at shutdown time)

Smanar commented 6 years ago

Heu y a meme pire, il y a un decalage. En fait dans la fonction processNotinDBDevices() Devices[x].Options = Devices[x-1].Options ou Devices[x+1].Options

Ce qui explique pkoi la partie avec detection IEE est desactivee, ca risque pas de fonctionner correctement.

pipiche38 commented 6 years ago

@Smanar tu peux préciser où dans le code, car je n'ai pas trouvé ?

Smanar commented 6 years ago

Dans la partie desactivee, dans le coin de ca https://github.com/sasu-drooz/Domoticz-Zigate/blob/code-split/z_heartbeat.py#L237 Affiche en debug la valeur de DOptions['Zigate'] Ca va t'afficher la valeur d'un autre device que celui sur lequel tu est Devices[x].DeviceID. Moi ca m'affichait les vlaurs d'une lampe alors que j'etais en train d'apairer une sonde de temperature.

pipiche38 commented 6 years ago

Mais c'est un commentaire , non ?

            #DOptions = Devices[x].Options
            #Dzigate=eval(DOptions['Zigate'])
            #Domoticz.Debug("HearBeat - Devices[x].Options['Zigate']['IEEE']=" + str(Dzigate['IEEE']))
            #Domoticz.Debug("HearBeat - self.ListOfDevices[key]['IEEE']=" + str(self.ListOfDevices[key]['IEEE']))
            #if Dzigate['IEEE']!='' and self.ListOfDevices[key]['IEEE']!='' :
            #   if Dzigate['IEEE']==self.ListOfDevices[key]['IEEE'] :
            #       IEEEexist = True

Domoticz.Debug("HearBeat - Devices IEEE already exist. Unit=" + str(x))

pipiche38 commented 6 years ago

Je suis désolé. Peut-etre fatigué ce soir, mais je ne vois pas le problème/


for x in Devices:
                                if Devices[x].DeviceID == str(key) :
                                        IsCreated = True
                                        Domoticz.Debug("onHeartbeat - Devices already exist. Unit=" + str(x) + " versus " + str(self.ListOfDevices[key]) )

Quand Devices[x].DeviceID == str(key) est vrai, on affiche x qui est l'Index dans la table des Devices Domoticz et self.ListOfDevices[key]. Key venant du parcours de ListOfDevices.

Donc je ne vois pas ou l'un peut pointer sur un autre ...

Smanar commented 6 years ago

Essaye de reparer la partie desactivee, tu vas comprendre. En supposant que tu essayes de pairer un detecteur de temperature, tu vas avoir Devices[x].DeviceID = key = XXXX = adresse du detecteur mais si tu fais dans la meme boucle.

DOptions = Devices[x].Options
print DOptions['Zigate']

Ca va t'afficher les parametre du device ZZZZ au lieu de ceux du capteur XXXX. J'ai pas dit que le bug etait la, mais y a plus qu'un soucis de mise a jour.

pipiche38 commented 6 years ago

Ce qui ne me suprend pas puisque ces commentaires ne sont dans le if !

Smanar commented 6 years ago

Ok donc c'est normal que Devices[1].Options['Zigate']['IEE'] corresponde a l'IEE de Devices[2].DeviceID au lieu de Devices[1].DeviceID ?

PS , j'ai pris les valeur 1 et 2 au hazard.

pipiche38 commented 6 years ago

Implemented in the recent 'dev' branch / 445bb321d77078214722ea9f77435e6b01b2fce2