Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Codage Shelly
#1
Bonjour, 

après quelques jours de vacances, je reviens pour tenter de mettre en marche mon routeur. 
Et pour cela je relis le code. 

J'avoue que le code du Shelly Pro me laisse perplexe. 
De ce que j'en comprends, on appelle la méthode de l'API REST qui va bien (Shelly.GetStatus) pour récupérer les informations de puissance. 
Cette méthode ne prend aucun paramètre, et renvoie les infos pour tous les capteurs du Shelly (3 dans mon cas pour le Shelly Pro 3EM). 

Mais une fois sur 6, on semble ignorer la puissance importante pour le routeur, pour ne prendre en compte qu'une autre puissance (l'autre + 1 modulo 3, c'est à dire arbitrairement la suivante). Dans mon cas, la voie correspondant à la consommation au niveau du compteur est la voie N° 2. Donc le code considère que la voie "secondaire" est la voie N° 0. Ce qui semble totalement arbitraire (ça pourrait aussi bien être la voie N° 1)
Et inversement les autres fois, on va consulter les données pour la voie principale et ignorer l'autre (ou les autres). Et, histoire de faire compliqué, on va jusqu'à lisser l'info pour la voir secondaire, au motif qu'on lit moins souvent la données (bizarre comme logique à mon avis).
Je vois donc là plusieurs problèmes qu'on pourrait éviter simplement (qui plus est, en simplifiant le code):
-> Pourquoi ne pas analyser à chaque fois l'ensemble du flux de données que de toutes façons on récupère déjà ? Et ainsi avoir un fonctionnement plus simple et cohérent, en mettant à jour à chaque fois toutes les puissances qu'on suit ?
-> Quand il y a 3 capteurs ou plus (en principe ça peut monter jusqu'à 4 pour les Shelly pro 3EM, mais le 4e est mal documenté, et ne semple pas pris en charge par l'API), il serait plus propre de suivre toutes les puissances, ou alors explicitement paramétrer la voie secondaire que l'on veut suivre.
-> J'ai l'impression que le problème concerne tous les Shelly, vu qu'il me semble que dans tous les cas on récupère toutes les données à chaque fois.
-> Cela permettrait de simplifier le code, et améliorer la fluidité dans la mesure des puissances.
-> J'ai du mal à comprendre pourquoi on utilise EnphaseSerial.toInt(); pour récupérer le N° de la voie à suivre. Juste pour obfusquer (= rendre illisible) le code ?

Ceux qui sont familier avec ce code peuvent-ils confirmer ou infirmer mon analyse ?
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)