Tasmota
-
@sebh je ne suis pas surpris que tu trouves un décalage, en fait le module Energy de tasmota calcul tout seul ta consommation (avec la puissance, et tout ce qu'il peut mesurer) or effectivement ça peut shifter en fonction des échantillonnages et reception des valeurs.
Je maitrise pas les entrailles de tasmota mais ca mériterait une petite investigation. Clairement la synchro sur le compteur réel est la solution sauf que pour ça je pense que la téléinfo doit être de type module "smart meter" comme les autres (SDM, PZEM, ..) or la teleinfo est tellement spécifique (et encore plus avec le linky) que ca deviendrait ingérable de les intégrer (j'avais commencer à regarder à l'époque)
Tu as 2 solutions:- soit via un node red script ou autre tu récupères les données via MQTT et tu les renvois au bon format dans domoticz
- normalement dans la trame de télémétrie ENERGY envoyée par tasmota tu as les etiquettes des compteurs, et c'est celles-ci que domoticz doit prendre (mais ça nécessite un ajustement dans domoticz)
La encore je n'utilise pas domoticz donc je ne te serais pas d'une grande aide sur le sujet mais ça de devrait pas être trop compliqué.
-
@charles Merci pour ton retour.
Clairement, je pense couper l'emission de la trame domoticz/in de tasmota , et je pense que NodeRed est la solution mais les script JS je ne connais pas du tout. J'ai fait un peu de VB dans le temps avec des fonctions de recherche de chaine de caractère mais c'est vieux LOL !
Je viens de publier sur le forum domoticz en espérant que quelqu'un puisse me conseiller afin de pouvoir écrire un script JS . Je suis sur le coup, mais si jamais quelqu'un veut me filer un coup de patte , voici le lien de mon post https://www.easydomoticz.com/forum/viewtopic.php?f=10&t=11224
Sinon, je viens de voir ça à l'instant sur le tasmota qui tourne sur mon linky en mode standard.
Par moment j'ai une erreur checkline err checksum 0x51 != 0x43
En fait, je m'aperçoit qu'il me fait un paquet d'erreur en fait (j'avais pas fait attention)
C'est quoi le soucis avec cette erreur ??
-
@sebh bonsoir, aucun problème pour intégrer cette version dans la branche officielle tasmota. Mais j'avoue ne pas savoir quelle démarche suivre.
-
@nicolas-bernaerts Bonjour Nicolas, je viens de vous mettre un mail car on a déjà échangé il y a quelques temps...
Alors pour l'intégration officielle , je ne sais pas comment s'y prendre, c'est plutôt @Charles Charles qui pourra répondre
Sinon j'ai demandé de l'aide pour essayer d'écrire un script sous Nodered mais pas eu un seul coup de main... -
ci joint une petite copie écran d'un de mes tasmota, après une semaine en fonctionnement
Donc actuellement on transmet à Domoticz 2097547.8 Wh , alors que le compteur total de tasmota est a 2097548 Wh et que l'index transmis par le linky est a 2097569 Wh . On a pratiquement un décalage de 20 Wh en une semaine ... -
@sebh je suis en train de regarder comment fonctionne tasmota avec domoticz
Le truc c'est qu'il y a une tonne de contrats différents avec la téléinfo et domoticz gère 2 tarifs, je vais essayer d'implémenter ca pour heures creuse heures pleines du mode historique (car j'ai pas de linky)
-
@sebh j'ai trouvé 2/3 trucs dans le code que je vais fixer, peux tu me confirmer ton mode fonctionnement STP
- mode historique ou std ?
- rawdata ou pas (setOption108) ?
le mieux peux tu me coller une trame de ton compteur ?
Pour les erreur de checksum peut être la série peine un peu t'es en ESP32 ou 8266, soft ou hard serial ?
-
@charles J'ai plusieurs compteurs.
- J'ai un linky en mode standard , avec maintenant une tarification de BASE (donc je pourrais plus tester la tarification HP/HC en mode standard).
- J'ai un autre compteur ancienne génération en mode historique et tarification BASE.
- Non je n'utilise pas le mode rawdata actuellement
Quand tu dis que tu veux une trame du compteur, tu parles des trames qui passe dans la console tasmota, ou bien tu parles d'une capture du port série en sortie de téléinfo ??
Concernant le hard, je suis en esp8266 sur le port D7 (c'était le hard que j'utilisais déjà pour wifinfo)
Je crois que je l'ai déjà posté mais voici la trame qui part de tasmota pour domoticz. J'ai notifier dans la trame la position de chaque index. En sachant qu'actuellement en tarif BASE, la position relevé est bien la bonne , en HP/HC je crois que la position indiqué actuellement est HP (donc il restera juste a renseigné HC)
Tu penses pouvoir inclure ma demande initiale en remontant a tasmota un copier/coller de l'index du compteur ENEDIS sur le compteur total de tasmota ??
-
@sebh j'ai bien recu ton mail.
J'ai la forte impression que les erreurs de checksum apparaissent plus souvent en mode standard du fait de la vitesse de 9600 bauds et du buffer série des Esp. J'ai modifié la boucle de réception à 100ms avec un buffer de 256 octets et les erreurs apparaissent beaucoup moins.
Pour ce qui est des divergences de totaux entre tasmota et la teleinfo, j'ai modifié ma version teleinfo pour forcer la mise a jour de tasmota sur la référence teleinfo toutes les heures. Les deux sont donc totalement synchro régulièrement.
https://github.com/NicolasBernaerts/tasmota/tree/master/teleinfo -
@nicolas-bernaerts outch j'ai dejà fait un PR pour ça qui a été intégré dans la branche developpement de tasmota.
Tu pourrais indiquer tes modifs que je regarde si j'ai fait correctement?
Idéalement faut faire des pull request pour les améliorations, ca permet à tout le monde d'en profiter et de pas bosser à plusieurs sur les mêmes problématiques
-
@charles Le probleme est que j'avais fait une version totalement differente de la tienne sous tasmota avant que la tienne ne soit officiellement portée. Du coup, il y a trop de divergences car presque tout est différent... Un PR me semble donc très difficile. La version dont je parle est publiée sur le lien github de ma réponse prédente.
-
@nicolas-bernaerts oui c'est ce que je viens de voir c'est top ta version
avant je faisais ca aussi mais j'ai arrêté car dès que tu veux maintenir les fork en synchro avec les master c'est compliqué (surtout qd t'as 15 forks différents à gérer)normalement @Barbu-Dor a fixé le pb du mode standard 9600 donc ce qui m'intéresse c'est ce point la
forcer la mise a jour de tasmota sur la référence teleinfo
tu as fais comment ?
-
@charles Merci
La synchro est faite ligne 955 de xnrg_15_teleinfo.ino
Je récupère les différents compteurs utilisés suivant le contrat dans la boucle 100ms et je les additionne à chaque message complet. Je synchronise ensuite toutes les heures pour éviter une écriture en ram statique trop souvent. -
@nicolas-bernaerts ok merci c'est exactement ce qui est fait dans le fix de ma PR d'hier
https://github.com/arendst/Tasmota/pull/11563
D'ailleurs je viens de voir que l'option 72 doit être activée pour que ca fonctionne. ça sauvegarde seulement si il y a une difference de 0.01 (kWh j'espère) donc je ne sais pas si nécessaire de temporiser en amont l'écriture. A suivre
void EnergyUpdateTotal(float value, bool kwh) { // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total %4_f %sWh"), &value, (kwh) ? "k" : ""); uint32_t multiplier = (kwh) ? 100000 : 100; // kWh or Wh to deca milli Wh if (0 == Energy.start_energy || (value < Energy.start_energy)) { Energy.start_energy = value; // Init after restart and handle roll-over if any } else if (value != Energy.start_energy) { Energy.kWhtoday = (unsigned long)((value - Energy.start_energy) * multiplier); } if ((Energy.total < (value - 0.01)) && // We subtract a little offset to avoid continuous updates Settings.flag3.hardware_energy_total) { // SetOption72 - Enable hardware energy total counter as reference (#6561) RtcSettings.energy_kWhtotal = (unsigned long)((value * multiplier) - Energy.kWhtoday_offset - Energy.kWhtoday); Settings.energy_kWhtotal = RtcSettings.energy_kWhtotal; Energy.total = (float)(RtcSettings.energy_kWhtotal + Energy.kWhtoday_offset + Energy.kWhtoday) / 100000; Settings.energy_kWhtotal_time = (!Energy.kWhtoday_offset) ? LocalTime() : Midnight(); // AddLog(LOG_LEVEL_DEBUG, PSTR("NRG: Energy Total updated with hardware value")); } EnergyUpdateToday(); }
-
Bonjour
Je n'avais pas vu que le fil s'était reveillé, je n'ai pas reçu de mail...Normalement dans mes patchs tasmota, j'ai fait des modifications sur la taille du buffer série.
Est-ce que les erreurs reportées ci dessus par @SebH sont sur la release officielle ?@Charles si tu as besoin d'un coup de main n'hésite pas
-
@barbu-dor yes, merci de ta confirmation
Ouais suite à l'incendie d'OVH j'ai eu quelques effets de bord, en plus pour ces PB de mail j'ai du changé le network mode du container nodebb pour plus être emmerdé, normalement tout est bon et remarche. -
@barbu-dor La version que j'ai testé est du 23/03/21 v9.3.1 Je vais récupérer la dernière version pour tester. Je vous tiens informé et encore merci
-
@charles
Ok je viens de tester et je trouve la même anomalie chez nicolas.
Voilà le soucis.
Il y a 6 mois j'étais en tarification HP/HC en mode standard et je viens de basculer en tarification unique.Voilà l'état de mon compteur actuel
Actuellement, vous prenez l'index EAST comme étant le compteur total de tasmota, alors qu'en fait, c'est l'EASF01 qu'il faudrait prendre en référence.
En HP/HC, EASF02=Index HP EASF01=Index HC, sauf que moi j'ai demandé un passage récement en tarif unique, du coup EASF02 reste dans l'état ou il était au basculement....Sinon effectivement dès que tu actives l'option 72, on écrit bien l'EASF dans le compteur total de tasmota.
-
@sebh oui EAST est le compteur d'énergie totale du compteur physique (quels que soient les anciennes manip et tarifications du compteur) Pour moi en changement de contrat EdF aurait du faire un reset des compteurs ce qui semblerait plus logique
En mode historique on n'a pas cet index et il est calculé en ajoutant les HC et les HP.
Donc en toute logique EAST est correct (au vu du compteur) et dans ton cas tu ne dois prendre en compte que EAST01 maintenant et tu peux faire un EnergyReset dans la console pour remettre les compteurs tasmota en ordre.
Il me parait délicat d'avoir des compteurs dans Tasmota qui ont une méthode de calcul et d'affichage différente de ce qui est relevé par la téléinfo, c'est un coup a s'y perdre.
tu peux montrer une capture d'écran de ton tasmota avec les valeurs ? peut être ajouter les valeurs EAST01 / EAST02 comme c'est le cas en mode historique avec HC/HP aiderait à la lecture.
Dans tous les cas, toutes les valeurs sont remontées, donc tu peux choisir uniquement celles qui sont pertinentes pour toi non ?
-
@sebh oui EAST est le compteur d'énergie totale du compteur physique (quels que soient les anciennes manip et tarifications du compteur) Pour moi en changement de contrat EdF aurait du faire un reset des compteurs ce qui semblerait plus logique
Il me semble que tout les compteurs que j'ai vu à ce jour, la remise à zéro est faite que lorsque celui a fait le tour de tout les incréments (remise à zéro hard , même principe sur les voitures on ne doit pas pouvoir faire de reset soft du compteur en temps normal). De plus, le jour du changement de contrat , cela s'est passé un matin à 10h ( a 9h55 c'est le compteur Heure Pleine (donc EASF02) qui s'incrémentait, puis a 10h, j'ai basculer en mode BASE et c'est l'EASF01 qui s'incrémentait ... De plus, si tu remets à zéro, il n'y a plus aucune trace de ton ancien incrément..
Donc EAST est un genre de checksum de tout les compteurs EASF0x
Ci dessous une capture de mon tasmota actuel,
Mon soucis, est toujours le même , le message de tasmota vers domoticz renvoit le compteur total. J'ai du justement désactiver l'option72 car c'est EAST qu'on envoyai ( 2111,196 Kwh) alors qu'en fait mon domoticz attend actuellement une suite a l'EASF01 (998.461 Kwh), sinon je prend 1000 Kwh dans la figure, lol...
Sinon depuis la bascule en tarification unique, EASF02 est figé à cet incrément de (1112,735 Kwh)12:15:05.811 MQT: domoticz/in ="idx":26,"nvalue":0,"svalue":"0.0;998461.1;0.0;0.0;164;0","Battery":100,"RSSI":4}
12:15:05.814 MQT: tele/tasmota_D84B6D/SENSOR = {"Time":"2021-04-05T12:15:05","ENERGY":{"TotalStartTime":"2021-04-05T09:20:45","Total":998.461,"Yesterday":0.000,"Today":0.613,"Period":0,"Power":464,"ApparentPower":464,"ReactivePower":0,"Factor":1.00,"Voltage":232,"Current":2.000,"Load":33,"ADSC":"061961361253","VTIC":2,"NGTF":" BASE ","LTARF":" BASE ","EAST":2111196,"EASF01":998461,"EASF02":1112735,"EASF03":0,"EASF04":0,"EASF05":0,"EASF06":0,"EASF07":0,"EASF08":0,"EASF09":0,"EASF10":0,"EASD01":998461,"EASD02":1112735,"Donc voila ce que je propose, avec l'option 72 active, dans le cas d'une tarification en linky en mode standard:
- tarif unique de BASE on remonte EASF01 dans le compteur total de tasmota
- tarif HP/HC , EASF01 dans le compteur HC de tasmota, EASF02 dans le compteur HP de tasmota.
En espérant que ce soit un standard de programmation de chez ENEDIS et qu'il ne font pas ce qu'ils ont envie et décider demain d'affecter EASF08 pour une tarification de base.
Sinon comme je l'expliquais, je ne pourrais plus tester ce qui se passe avec tasmota en tarification HP/HC que ce soit en standard ou historique..