Comments (26)
il apparait que certains équipements fournissent le % mais pas les XIAOMI d'où la nécessité de calculer d'après le voltage de la pile
from jeedom-plugin-zigate.
Yes, c'est ce que j'ai compris.
Mais la méthode de calcul est différentes entre les plugins. Et certaines personnes trouve que celle d'abeille est plus juste: https://www.jeedom.com/forum/viewtopic.php?p=641876#p641876 & https://www.jeedom.com/forum/viewtopic.php?p=643033#p643033
from jeedom-plugin-zigate.
j'ai regardé comment fait Abeille :
3.1V = 100%
2.7V = 0%
linéaire entre les 2
lib python actuel:
3.2V = 100%
0.9x3.2 soit 2.88 = 0%
linéaire entre les 2
from jeedom-plugin-zigate.
Si qqn à les sources du plugin Xiaomi pour comparer
from jeedom-plugin-zigate.
Le sujet est sensible là bas aussi: https://www.jeedom.com/forum/viewtopic.php?p=456691#p456691
from jeedom-plugin-zigate.
Oui , il ne faut pas oublier que le pourcentage c'est une estimation pour le confort de l'utilisateur car il n'y a pas de jauge dans la pile...
il faut savoir aussi que le voltage dépend de la température et de la consommation donc le pourcentage peut varier et plus ou moins durant la journée
from jeedom-plugin-zigate.
Yes, la question est de benchmarcké les 3 solutions et voir la meilleure VS les spécificité du fabriquant.
from jeedom-plugin-zigate.
Du coup dans tous les cas, c'est pas le plugin mais le daemon Python qui fait le calcul ?
from jeedom-plugin-zigate.
Oui
from jeedom-plugin-zigate.
Je ferme car côté Python.
from jeedom-plugin-zigate.
à voir, actuellement je considère que le % évolue de façon linéaire en fonction de la tension mais en réalité ce n'est pas le cas
from jeedom-plugin-zigate.
Mais @doudz le calcul n'est pas ici: https://github.com/Jeedom-Zigate/jeedom-plugin-zigate/blob/master/core/class/zigate.class.php#L121 ? Ou alors c'est le fallback lorsque le daemon ne le remonte pas ?
from jeedom-plugin-zigate.
Ah effectivement, j'ai répliqué le calcul qui est fait dans la lib python directement dans le plugin, j'avais oublié ce point.
Le but était de pouvoir faire le calcul sans faire d'échange entre Jeedom et le démon.
Je ne sais si c'est une bonne idée car ça fait double emploi et finalement les transferts entre jeedom et le démon sont assez rapide donc ce bout de code pourrait être modifier pour interroger directement la lib python
from jeedom-plugin-zigate.
Je suis en train de lire / documenter / comprendre le code.
Pour moi c'est plus un fallback vu qu'il fait un $percent = $this->getProperty('battery_percent');
avant ?
Car si on récupère directement depuis la lib, ça doit remonter avec les autres propriétés ?
from jeedom-plugin-zigate.
Non pas vraiment getProperty('battery_percent')
permet d'avoir le pourcentage de batterie dans le cas où l'équipement zigbee le propose, ce qui n'est pas le cas de XIAOMI par exemple (en fait je n'ai jamais vu ce cas encore). Si la valeur n'existe pas alors on l'estime.
La lib python fait exactement la même chose, on regarde si la valeur battery_percent existe, sinon on la calcule
from jeedom-plugin-zigate.
C'est pour ça qu'il faudrait peut-être modifier la fonction du plugin pour interroger la lib au lieu de faire le calcul dans le plugin, ça évite d'avoir 2 codes identiques à maintenir.
Dans un premier tu peux aussi simplement modifier le code dans le plugin pour avoir un calcul juste et dans un 2e temps je modifierai le code python pour avoir le même fonctionnement.
from jeedom-plugin-zigate.
De toute façon la méthode n'est appelée que pour la création (_create_command), donc le cout en appel de lib va pas être énorme...
from jeedom-plugin-zigate.
Du coup, pour récupérer depuis la lib il me sufferais de faire un :
zigate::callZiGate('get_device_from_addr', [$addr]);
Et toi faut que tu rajoute un battery_percent lorsqu'il est pas présent ?
from jeedom-plugin-zigate.
Attention, le code n'est pas appelé uniquement à la création, mais à chaque fois que l'attribut battery est mis à jour
la fonction update_command (appelé lorsqu'un attribut est mis à jour) utilise aussi la fonction _create_command, l'intérêt est d'avoir un seul et même code pour créer et mettre à jour une commande
from jeedom-plugin-zigate.
OK. Mais tu me confirmes que pour le moment battery_percent n'est pas systématiquement remonté par
zigate::callZiGate('get_device_from_addr', [$addr]);
from jeedom-plugin-zigate.
Non il n'est pas remonté
from jeedom-plugin-zigate.
Ok, donc faut le mieux est de laisser comme ça. Attendre la modification côté lib Python et le récupérer. Comme ça on sera uniforme.
from jeedom-plugin-zigate.
Ou alors modifier le démon pour ajouter une fonction permettant de récupérer la valeur
Exemple :
zigate::callZiGate('get_device_battery_percent', [$addr]);
Et dans le démon ajouter après la ligne 97 :
elif hasattr(self, action):
func = getattr(self, action)
response['result'] = func(*args)
et toujours dans la classe JeedomHandler ajouter la fonction get_device_battery_percent
def get_device_battery_percent(self, addr):
device = z.get_device_from_addr(addr)
return device.battery_percent
from jeedom-plugin-zigate.
Mais n'est-ce pas à la lib de remonter des choses de manières régulières ? De palier au fait que Xiaomi ne remonte pas de % ?
Plutôt qu'au plugin de supporter ceci ?
from jeedom-plugin-zigate.
XIAOMI remonte uniquement le voltage de la batterie et c'est pour l'utilisateur final qu'on souhaite afficher le pourcentage
Donc pour moi il est normal que lorsque la lib (la zigate) indique que le voltage a changé, le plugin recalcule le pourcentage.
Et dans un souci de cohérence du résultat, le plugin demande à la lib python de faire le calcul (au lieu de faire le calcul comme actuellement)
from jeedom-plugin-zigate.
Ce mettre en phase avec ce commit: doudz/zigate@cb550a6
from jeedom-plugin-zigate.
Related Issues (20)
- Problème création de commande sur équipement
- Question; fonctionnement plugin et ses liens avec les dépendances zipgy HOT 3
- Impossible de re-inclure un device après déconnexion HOT 13
- Gestion capteur Xiaomi Aqara Opple WXCJKG13LM HOT 1
- Perte connexion de la zigate wifi alors quelle est accessible HOT 15
- Conflit Zigate et Pizigate HOT 1
- Sonoff SNZB 02 HOT 4
- Inclusion de nouvel équipement impossible - Thermomètre et bouton Xiaomi, Prise Ledvance Smart+, ... HOT 1
- Inclusion non possible - Zigate inutilisable avec Jeedom HOT 35
- Xiaomi : interrupteurs simples HOT 3
- Perte du port USB : suite à un redémarrage du serveur
- inter legrand netatmo sans neutre
- Information de batterie sur relais AQARA LLKZMK11LM lumi.relay.c2acn01
- Démon ne demarre pas - Debian 10 - Jeedom V4.1.18
- Problème inclusion nouveaux devices HOT 1
- Module SONOFF SNZB-01 Zigate sous Jeedom HOT 1
- Intégration multiprise Lidl
- Zigate Admin NetworkMap aucun lien
- Zlink_tic commands
- lumi.motion.ac02: python unpack problem
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jeedom-plugin-zigate.