Tasmota
-
@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..
-
@sebh il faut que je regarde ça plus en détail, car en plus tasmota est capable de gérer les index double tarif (il me semble) donc tant qu'a faire une modif pour tasmota peut être renvoyer tous les compteurs serait top (y compris heures creuse et pleines du mode historique)
les EASFxx sont au bon vouloir des différents fournisseurs d'énergie. Engie utilise 01/02 mais rien n'empêche un autre d'utiliser 04/05
-
@sebh c'est super tordu en mode standard pour connaitre le tarif du contrat en cours, sais tu quelles valeurs tu avais avant pour
NGTF
etLTARF
? -
@sebh J'ai publié une nouvelle version ce soir qui prend en compte le nombre d'index à utiliser en fonction des périodes du contrat en cours. Si la période de contrat est d'un type inconnu, les 10 périodes possibles sont additionnées. Cela devrait régler ton problème de passage en BASE après du HPHC. Tiens moi au courant.
-
@charles cela devait etre HEURES PLEINES et HEURES CREUSES sur LTARF
-
@charles J'ai repris un post un peu plus haut ou j'avais fait une capture à ce temps là.
20:42:30.850 MQT: tele/tasmota_DB567A/SENSOR = {"Time":"2021-02-17T20:42:30","ENERGY":{"TotalStartTime":"2021-02-11T18:24:47","Total":0.720,"Yesterday":0.000,"Today":0.720,"Period":1,"Power":366,"ApparentPower":452,"ReactivePower":265,"Factor":0.81,"Voltage":226,"Current":2.000,"Load":22,"ADSC":"061961361253","VTIC":2,"NGTF":"H PLEINE/CREUSE ","LTARF":" HEURE PLEINE ","EAST":1893378,"EASF01":876569,"EASF02":1016809,
-
@sebh peux tu essayer la denière version de la branche
developement
ma modif a été mergée cette nuithttps://github.com/arendst/Tasmota/
Et me poster une copie d'écran de Tasmota une fois en route stp
-
@charles pas de soucis je te fais ça ce soir.
Sinon avec la version de hier, j'ai eu ces erreurs ce matin. -
@sebh Ca veut dire que de temps en temps, Tasmota loupe des caractères.
Si ca n'arrive que de temps en temps ce n'est pas très grave puisque - sauf erreur de ma part - les données sont répétées et auto-incrémentées.
(c'est a dire que si tu perds une trame, tu perds un peu de temps réel mais tu retrouves tes données correctes le coup d'après).Le buffer en mode 9600 est de 512 octets et on vient le lire toutes les 250 ms
Je n'ai pas voulu changer cela mais on peut éventuellement accelerer la cadence en changeant dans le code pour venir traiter toutes les 50ms. -
@barbu-dor ouais carrément on peut essayer en passant à 100ms mais comme tu l'indiques, rater qq caractères c'est pas très grave, c'est repris la trame d'après.
-
@charles Ok c'est noté pour les erreurs. Oui effectivement il n'y a pas vraiment de soucis. Quand j'ai vu des erreurs checksum je pensais qu'il y avait un autre problème qui pouvait être problématique, donc je voulais juste vous le remonter.
Sinon je viens de flasher la dernière version et là, gros plantage.
Serveur web actif sur tasmota_D84B6D-2925 avec l'adresse IP 192.168.1.151
17:13:47.294 RSL: tele/tasmota_D84B6D/INFO1 = {"Module":"Generic","Version":"9.3.1.2(tasmota)","FallbackTopic":"cmnd/DVES_D84B6D_fb/","GroupTopic":"cmnd/tasmotas/"}
17:13:47.295 RSL: tele/tasmota_D84B6D/INFO2 = {"WebServerMode":"Admin","Hostname":"tasmota_D84B6D-2925","IPAddress":"192.168.1.151"}
17:13:47.298 RSL: tele/tasmota_D84B6D/INFO3 = {"RestartReason":{"Exception":3,"Reason":"Exception","EPC":["4025983c","00000000","00000000"],"EXCVADDR":"40294cfc","DEPC":"00000000","CallChain":["4021d2d8","402321cb","40254ea0","4024db72","402527f9","4025290e","40252904","4024dc6d","4021d71f","401010c0","402361cb","4021da1c","40220b0c","40218cf5","4023270b","40232760","40100a58","40250cd0","40101d05"]}}Dès que je bascule en 9600 baud, il me reset la config sur la pin d7... J'arrive plus rien à voir et à lire
-
@sebh arff voilà ce qui se passe quand on a rien pour valider/tester son code mais je crois que j'ai trouvé le bug, tu peux essayer la dernière version tasmota, Theo vient de merger ma PR
-
@Barbu-Dor j'ai changé pas mal de choses dans le soft notamment le fait de pouvoir configurer tout un tas de choses avec des nouvelles commandes en mode console.
Sauf que j'aurai besoin de ton expertise, j'ai bien créé tout ce qu'il faut, ca compile ça tourne j'appelle bien ma fonction de gestion des commandes lorsque je reçois
FUNC_COMMAND
dans le driver teleinfo, sauf que je ne reçois jamais ca, même qd je tape une commande dans la console, j'ai surement oublié un truc genre register ma callback pour les commandes, mais je ne trouves pas, tu sais ou on fait ça ?bool Xnrg15(uint8_t function) { bool result = false; switch (function) { case FUNC_EVERY_250_MSECOND: TInfoProcess(); break; case FUNC_COMMAND: AddLog(LOG_LEVEL_INFO, PSTR("TIC: FUNC_COMMAND")); result = TInfoCmd(); break; case FUNC_JSON_APPEND: TInfoShow(1); break; #ifdef USE_WEBSERVER case FUNC_WEB_SENSOR: TInfoShow(0); break; #endif // USE_WEBSERVER case FUNC_INIT: TInfoInit(); break; case FUNC_PRE_INIT: TInfoDrvInit(); break; } return result; }
Le code source si tu veux jeter un oeil sur la branche
teleinfo
https://github.com/hallard/Tasmota/blob/teleinfo/tasmota/xnrg_15_teleinfo.ino