@Charles J'ai testé sur le port 0/RX et j'obtiens la même chose.

Posts made by SbastienGa99566
-
RE: PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard
-
RE: PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard
@Charles
Merci pour votre réponse.
Ca fonctionnait bien avec le mode historique mais c'était effectivement en 1200baud... -
PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard
Bonjour,
J'ai acheté un PitInfo 1.5 que j'ai branché sur mon Arduino Uno et sur ma TIC afin d'exploiter les données de mon Linky en mode standard.
Je reçois bien des données mais elles semblent incohérentes / mal interprété par la librairie LibTeleInfo.
J'ai suivi les infos du site https://hallard.me/pitinfov12-light/, j'ai connecté le TX du pitinfo sur le port 3.
Depuis Arduino IDE, je me suis appuyé sur l'exemple de LibTeleInfo Arduino_Softserial_Blink.
Dans mon serial monitor, il m'affiche que les frame sont toujours les mêmes.
quand j'affiche les Frames, j'obtiens cela :107874798582709484893813107874798582704349948489661310807479858270434994848484852484849324854484852484850325050484852484849327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669946133210656883679485149575554485051575150958131086847367948509741310686584699725053485148544954484848509958131078718470932323232328469778079323232323232970131076846582709323232327280323266766985323232329431310696583849485449525154535349946131069658370484994849575355505755499751310696583704850948515155544856574897113106965837048519484850525656485654972131069658370485294848515355525250579711310696583704853948484952565049515095913106965837048549484848535356485251964131069658370485594848484848484848489401310696583704856948484848484848484894113106965837048579484848484848484213106965837049484848484848489341310696583684894849535054574969131069658368509505656495651965106965836848519485649494957968106965836848529485749495349962107382778349948485048131073828350948484713107382775194849949108582778349950519641085827783509515066131085827751951539701080826970949539131080677980953995131083738384948485454988108373788384834994848554991310837378838350484853577013108373788384519485051549131083776588837897253484854525148519485250579131083776583784995053514854485054569515056913108377658378972504851484950505255950564995210837765888351950535148544851504848485355514413108377658883784597253485153485150524948575251993108377658883784549972534851534851554894852485677131083778883504597250485153494955539484855579013108377658883514549725048514848515052948535648913106767657895053485154494848489485452913106767658345497250535148545351484894957569131085777949950534848545448484895149913108577795097250485154494848489505194610857779899725348515449484848950539491083847169948516567484991310778349980653268693232323232323277838371693232323232323291310808277957514849575553565049913108269766573948489661078846582704850979107874798570948938107874798570439489661080747985827043499484852484932484848484850505048524849327878858473693279788473693278788584766978797885847669787978847376327879788473693279788473766978797884736991332106568836794851495755544850515751509581310868473679485097413106865846997250534851485449544848485199591310787184709323232323284697780793232323232329701310768465827093232323272803232667669853232323294313106965838494854495251545353499461310696583704849948495753555057554997513106965837048509485151555448565748971131069658370485194848505256564856549721310696583704852948485153555252505797113106965837048539484952564951505913106965837048484853565251641310696583705594848484848401310696583704856948484848489411069658370579484848484848913106965837094848484848483413106965836894953505457499691069658368485049564951496513106965834851948564954575696810696583684848574949514996210738277839509131073827783948489131073827783948499131085827749519641085827783505051966108582778351951537013108082709495369131080677985539513108373788483955549131083737883844994852569131083737883845094848539701083737883848394857701310837765888372534848545251484857505791310837765884995053514848515054569485691310837765837850725053514849505052554850565691083776583789725348485453515048953515513108377658883784597250484853515350529485299310837765888378494995053484848515548948505256913108377658883785049950534848535353951485791310837765887851499725348515348515052494853564879131067676583789505348485454484848545291310676765784549725048515449534848948499371085777989499505351485454484895051943108577895072505351484954484895051913108577519505351484954484895053913108384716994849516752489821310778349965833269323232323232323269836571693232323232329608277495748524957555352509611310826973834848966131078848270485091078747982709489131078747982704394896610807479827049948484852484948544852485032504848327878857376327879787669787985847369327878857376327879787369327978847369327879788473693279788584766946133 2s FRAME -> SAME AS PREVIOUS DATA 0 - = 21065688367948514957555448505157515095813108684736794850974131068658469972505348514854495448484853996113107871847093232323232846977807932323232323297013107684658270932323232728032326676698532323232943131069658384948544952515453535094713106965837048499484957535550575549975131069658370485094851515554485657499721310696583704851948485052565648565497213106965837048529484851535552525057971131069658370485394848495256504950913106965837054484853534852964131069658370489484848484891310696583705694848484848484113106570489484848484848942106965834948484848484893410696583684994852545757969106965836848509565649514965131069658368514848494957968131069656848948485749495150631310738277834994850913107382778394848947107382778351948494913108549950499131085827750950511310858277519505391310808269495391310806779859499510837378838483484856569901083737883848348535396813108378848394848535770108378838451948505168108377658883787253484854525148519485250967131083658883789725348515448505456948566013108377658378972534851545050505294850564952131083778883519505351484853515048948534413108377658883784997253484853515350499525193131083776588837845497250485148485155489525691310837765888378504995053514853564994848559901083776588837845497250485148535153948545697910676765837895053514849544848489575269131067678378499725348485453514848948494956371310857789497250535148495448484895149913108577798950972504851544948484895051985798997253485154494848489515349131083847169495167524991310778349980836869323232323232776983657169323232323232913108082779495148524954535652499131082697665484866131078848270950910787479858294893810787479858243494848661310807485824349484848483248544852485032504852484879788473763278788576327878857376693278788573766932797885737632787885737669787973693279788473769463
Je vous joins mon code source.
Est-ce qu'il y a quelque chose à modifier pour que le mode standard fonctionne ?Merci !
Sébastien#include <string.h> #include <SoftwareSerial.h> #include "LibTeleinfo.h" /****************************** Defines *******************************/ /****************************** Constants *****************************/ #define TIC_RX_PIN 3 #define TIC_TX_PIN 4 #define LEDPIN 13 // Pour clignotement LED asynchrone unsigned long blinkLed = 0; uint8_t blinkDelay= 0; const char HEURES_PLEINES_JOUR_ROUGE[8] = "HPJR"; const char HEURES_CREUSES_JOUR_ROUGE[8] = "HCJR"; const char HEURES_PLEINES_JOUR_BLANC[8] = "HPJW"; const char HEURES_CREUSES_JOUR_BLANC[8] = "HCJW"; const char HEURES_PLEINES_JOUR_BLEU[8] = "HPJB"; const char HEURES_CREUSES_JOUR_BLEU[8] = "HCJB"; const char PERIODE_TARIFAIRE[8] = "NGTF"; const int PIN_RELAIS_CIRCULATEUR_RADIATEURS = 5; const int PIN_RELAIS_PAC = 6; const int PIN_RELAIS_CIRCULATEUR_PLANCHER_CHAUFFANT = 7; /************************* Global variables ***************************/ /************************* Object instanciation ***********************/ SoftwareSerial Serial10(TIC_RX_PIN, TIC_TX_PIN); TInfo tinfo; /**************************** Routines ******************************/ void activerChauffage() { Serial.println(F("ACTIVATION chauffage !")); digitalWrite(PIN_RELAIS_CIRCULATEUR_RADIATEURS, LOW); digitalWrite(PIN_RELAIS_CIRCULATEUR_PLANCHER_CHAUFFANT, LOW); digitalWrite(PIN_RELAIS_PAC, LOW); } void desactiverChauffage() { Serial.println(F("DESACTIVATION chauffage !")); digitalWrite(PIN_RELAIS_CIRCULATEUR_RADIATEURS, HIGH); digitalWrite(PIN_RELAIS_CIRCULATEUR_PLANCHER_CHAUFFANT, HIGH); digitalWrite(PIN_RELAIS_PAC, HIGH); } /* ====================================================================== Function: printUptime Purpose : print pseudo uptime value Input : - Output : - Comments: compteur de secondes basique sans controle de dépassement En plus SoftwareSerial rend le compteur de millis() totalement A la rue, donc la precision de ce compteur de seconde n'est pas fiable du tout, dont acte !!! ====================================================================== */ void printUptime(void) { Serial.print(millis()/1000); Serial.print(F("s\t")); } /****************************** Setup *******************************/ void setup() { // Configure Teleinfo Soft serial Serial.println(F("Set Baud")); Serial.begin(115200); Serial.print(F("TIC RX = ")); Serial.println(TIC_RX_PIN); Serial10.begin(9600); // Init teleinfo tinfo.init(); // Attacher les callbacks dont nous avons besoin tinfo.attachADPS(ADPSCallback); tinfo.attachData(DataCallback); tinfo.attachNewFrame(NewFrame); tinfo.attachUpdatedFrame(UpdatedFrame); pinMode(PIN_RELAIS_CIRCULATEUR_RADIATEURS, OUTPUT); pinMode(PIN_RELAIS_CIRCULATEUR_PLANCHER_CHAUFFANT, OUTPUT); pinMode(PIN_RELAIS_PAC, OUTPUT); printUptime(); Serial.println(F("PROGRAM STARTED")); } /****************************** Processing ****************************/ void DataCallback(ValueList * me, uint8_t flags) { Serial.println(F("")); printUptime(); Serial.println(F("New data")); if (flags & TINFO_FLAGS_ADDED) Serial.print(F("NEW -> ")); if (flags & TINFO_FLAGS_UPDATED) Serial.print(F("MAJ -> ")); // Display values Serial.println(F("DATA")); Serial.print(me->ts); Serial.print(" - "); Serial.print(me->name); Serial.print("="); Serial.println(me->value); if (strcmp(me->name, PERIODE_TARIFAIRE) == 0) { Serial.print(F("Période tarifaire = ")); Serial.println(me->value); if (strcmp(me->value, HEURES_PLEINES_JOUR_ROUGE) == 0) desactiverChauffage(); else activerChauffage(); } if ((strcmp(me->name, "SINSTS1") == 0) || (strcmp(me->name, "SINSTS2") == 0) || (strcmp(me->name, "SINSTS3") == 0)) { Serial.print(F("Puissance app. Instantanée soutirée (")); Serial.print(me->name); Serial.print(F(") = ")); Serial.println(me->value); } } /* ====================================================================== Function: ADPSCallback Purpose : called by library when we detected a ADPS on any phased Input : phase number 0 for ADPS (monophase) 1 for ADIR1 triphase 2 for ADIR2 triphase 3 for ADIR3 triphase Output : - Comments: should have been initialised in the main sketch with a tinfo.attachADPSCallback(ADPSCallback()) ====================================================================== */ void ADPSCallback(uint8_t phase) { Serial.println(F("")); printUptime(); // Monophasé if (phase == 0 ) { Serial.println(F("ADPS")); } else { Serial.print(F("ADPS PHASE #")); Serial.println('0' + phase); } } /* ====================================================================== Function: NewFrame Purpose : callback when we received a complete teleinfo frame Input : linked list pointer on the concerned data Output : - Comments: - ====================================================================== */ void NewFrame(ValueList * me) { Serial.println(F("")); // Start short led blink digitalWrite(LEDPIN, HIGH); blinkLed = millis(); blinkDelay = 50; // 50ms printUptime(); Serial.println(F("FRAME -> SAME AS PREVIOUS")); // Display values Serial.println(F("DATA")); Serial.print(me->ts); Serial.print(" - "); Serial.print(me->name); Serial.print("="); Serial.println(me->value); } /* ====================================================================== Function: UpdatedFrame Purpose : callback when we received a complete teleinfo frame Input : linked list pointer on the concerned data Output : - Comments: it's called only if one data in the frame is different than the previous frame ====================================================================== */ void UpdatedFrame(ValueList * me) { Serial.println(F("")); // Start long led blink digitalWrite(LEDPIN, HIGH); blinkLed = millis(); blinkDelay = 100; // 100ms printUptime(); Serial.println(F("FRAME -> UPDATED")); } /******************************* Loop *********************************/ void loop() { static char c; // On a reçu un caractère ? if ( Serial10.available() ) { c = Serial10.read() ; Serial.print(c & 0x7F); // Gerer tinfo.process(c); } }