<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard]]></title><description><![CDATA[<p dir="auto">Bonjour,</p>
<p dir="auto">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.<br />
Je reçois bien des données mais elles semblent incohérentes / mal interprété par la librairie LibTeleInfo.<br />
J'ai suivi les infos du site <a href="https://hallard.me/pitinfov12-light/" target="_blank" rel="noopener noreferrer nofollow ugc">https://hallard.me/pitinfov12-light/</a>, j'ai connecté le TX du pitinfo sur le port 3.<br />
Depuis Arduino IDE, je me suis appuyé sur l'exemple de LibTeleInfo Arduino_Softserial_Blink.<br />
Dans mon serial monitor, il m'affiche que les frame sont toujours les mêmes.<br />
quand j'affiche les Frames, j'obtiens cela :</p>
<pre><code>107874798582709484893813107874798582704349948489661310807479858270434994848484852484849324854484852484850325050484852484849327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669327879788584737669946133210656883679485149575554485051575150958131086847367948509741310686584699725053485148544954484848509958131078718470932323232328469778079323232323232970131076846582709323232327280323266766985323232329431310696583849485449525154535349946131069658370484994849575355505755499751310696583704850948515155544856574897113106965837048519484850525656485654972131069658370485294848515355525250579711310696583704853948484952565049515095913106965837048549484848535356485251964131069658370485594848484848484848489401310696583704856948484848484848484894113106965837048579484848484848484213106965837049484848484848489341310696583684894849535054574969131069658368509505656495651965106965836848519485649494957968106965836848529485749495349962107382778349948485048131073828350948484713107382775194849949108582778349950519641085827783509515066131085827751951539701080826970949539131080677980953995131083738384948485454988108373788384834994848554991310837378838350484853577013108373788384519485051549131083776588837897253484854525148519485250579131083776583784995053514854485054569515056913108377658378972504851484950505255950564995210837765888351950535148544851504848485355514413108377658883784597253485153485150524948575251993108377658883784549972534851534851554894852485677131083778883504597250485153494955539484855579013108377658883514549725048514848515052948535648913106767657895053485154494848489485452913106767658345497250535148545351484894957569131085777949950534848545448484895149913108577795097250485154494848489505194610857779899725348515449484848950539491083847169948516567484991310778349980653268693232323232323277838371693232323232323291310808277957514849575553565049913108269766573948489661078846582704850979107874798570948938107874798570439489661080747985827043499484852484932484848484850505048524849327878858473693279788473693278788584766978797885847669787978847376327879788473693279788473766978797884736991332106568836794851495755544850515751509581310868473679485097413106865846997250534851485449544848485199591310787184709323232323284697780793232323232329701310768465827093232323272803232667669853232323294313106965838494854495251545353499461310696583704849948495753555057554997513106965837048509485151555448565748971131069658370485194848505256564856549721310696583704852948485153555252505797113106965837048539484952564951505913106965837048484853565251641310696583705594848484848401310696583704856948484848489411069658370579484848484848913106965837094848484848483413106965836894953505457499691069658368485049564951496513106965834851948564954575696810696583684848574949514996210738277839509131073827783948489131073827783948499131085827749519641085827783505051966108582778351951537013108082709495369131080677985539513108373788483955549131083737883844994852569131083737883845094848539701083737883848394857701310837765888372534848545251484857505791310837765884995053514848515054569485691310837765837850725053514849505052554850565691083776583789725348485453515048953515513108377658883784597250484853515350529485299310837765888378494995053484848515548948505256913108377658883785049950534848535353951485791310837765887851499725348515348515052494853564879131067676583789505348485454484848545291310676765784549725048515449534848948499371085777989499505351485454484895051943108577895072505351484954484895051913108577519505351484954484895053913108384716994849516752489821310778349965833269323232323232323269836571693232323232329608277495748524957555352509611310826973834848966131078848270485091078747982709489131078747982704394896610807479827049948484852484948544852485032504848327878857376327879787669787985847369327878857376327879787369327978847369327879788473693279788584766946133
2s	FRAME -&gt; SAME AS PREVIOUS
DATA
0 - =
21065688367948514957555448505157515095813108684736794850974131068658469972505348514854495448484853996113107871847093232323232846977807932323232323297013107684658270932323232728032326676698532323232943131069658384948544952515453535094713106965837048499484957535550575549975131069658370485094851515554485657499721310696583704851948485052565648565497213106965837048529484851535552525057971131069658370485394848495256504950913106965837054484853534852964131069658370489484848484891310696583705694848484848484113106570489484848484848942106965834948484848484893410696583684994852545757969106965836848509565649514965131069658368514848494957968131069656848948485749495150631310738277834994850913107382778394848947107382778351948494913108549950499131085827750950511310858277519505391310808269495391310806779859499510837378838483484856569901083737883848348535396813108378848394848535770108378838451948505168108377658883787253484854525148519485250967131083658883789725348515448505456948566013108377658378972534851545050505294850564952131083778883519505351484853515048948534413108377658883784997253484853515350499525193131083776588837845497250485148485155489525691310837765888378504995053514853564994848559901083776588837845497250485148535153948545697910676765837895053514849544848489575269131067678378499725348485453514848948494956371310857789497250535148495448484895149913108577798950972504851544948484895051985798997253485154494848489515349131083847169495167524991310778349980836869323232323232776983657169323232323232913108082779495148524954535652499131082697665484866131078848270950910787479858294893810787479858243494848661310807485824349484848483248544852485032504852484879788473763278788576327878857376693278788573766932797885737632787885737669787973693279788473769463
</code></pre>
<p dir="auto">Je vous joins mon code source.<br />
Est-ce qu'il y a quelque chose à modifier pour que le mode standard fonctionne ?</p>
<p dir="auto">Merci !<br />
Sébastien</p>
<pre><code class="language-cpp">
#include &lt;string.h&gt;
#include &lt;SoftwareSerial.h&gt;
#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 &amp; TINFO_FLAGS_ADDED) 
    Serial.print(F("NEW -&gt; "));

  if (flags &amp; TINFO_FLAGS_UPDATED)
    Serial.print(F("MAJ -&gt; "));

  // Display values
  Serial.println(F("DATA"));
  Serial.print(me-&gt;ts);
  Serial.print(" - ");
  Serial.print(me-&gt;name);
  Serial.print("=");
  Serial.println(me-&gt;value);

  if (strcmp(me-&gt;name, PERIODE_TARIFAIRE) == 0)
  {
    Serial.print(F("Période tarifaire = "));
    Serial.println(me-&gt;value);
    if (strcmp(me-&gt;value, HEURES_PLEINES_JOUR_ROUGE) == 0)
      desactiverChauffage();
    else
      activerChauffage();
  }
  if ((strcmp(me-&gt;name, "SINSTS1") == 0) || (strcmp(me-&gt;name, "SINSTS2") == 0) || (strcmp(me-&gt;name, "SINSTS3") == 0))
  {
    Serial.print(F("Puissance app. Instantanée soutirée ("));
    Serial.print(me-&gt;name);
    Serial.print(F(") = "));
    Serial.println(me-&gt;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 -&gt; SAME AS PREVIOUS"));
  // Display values
  Serial.println(F("DATA"));
  Serial.print(me-&gt;ts);
  Serial.print(" - ");
  Serial.print(me-&gt;name);
  Serial.print("=");
  Serial.println(me-&gt;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 -&gt; UPDATED"));
}

/******************************* Loop *********************************/
void loop()
{
  static char c;
 
  // On a reçu un caractère ?
  if ( Serial10.available() )
  {
    c = Serial10.read() ;
    Serial.print(c &amp; 0x7F);

    // Gerer
    tinfo.process(c);
  }
}

</code></pre>
<p dir="auto"><a href="/assets/uploads/files/1741276180528-pilotage_sga.ino.txt">Pilotage_SGA.ino.txt</a></p>
]]></description><link>https://community.ch2i.eu/topic/1515/pitinfo-1-5-arduino-uno-libteleinfo-mode-standard</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 00:54:27 GMT</lastBuildDate><atom:link href="https://community.ch2i.eu/topic/1515.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Mar 2025 15:51:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard on Thu, 13 Mar 2025 08:06:20 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/charles" aria-label="Profile: Charles">@<bdi>Charles</bdi></a> J'ai testé sur le port 0/RX et j'obtiens la même chose.</p>
]]></description><link>https://community.ch2i.eu/post/5950</link><guid isPermaLink="true">https://community.ch2i.eu/post/5950</guid><dc:creator><![CDATA[SbastienGa99566]]></dc:creator><pubDate>Thu, 13 Mar 2025 08:06:20 GMT</pubDate></item><item><title><![CDATA[Reply to PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard on Thu, 13 Mar 2025 07:53:57 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/charles" aria-label="Profile: Charles">@<bdi>Charles</bdi></a><br />
Merci pour votre réponse.<br />
Ca fonctionnait bien avec le mode historique mais c'était effectivement en 1200baud...</p>
]]></description><link>https://community.ch2i.eu/post/5949</link><guid isPermaLink="true">https://community.ch2i.eu/post/5949</guid><dc:creator><![CDATA[SbastienGa99566]]></dc:creator><pubDate>Thu, 13 Mar 2025 07:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to PitInfo 1.5 + Arduino Uno + LibTeleinfo + mode Standard on Sun, 09 Mar 2025 18:59:49 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sbastienga99566" aria-label="Profile: SbastienGa99566">@<bdi>SbastienGa99566</bdi></a><br />
je crains que le soft serial ait beaucoup de mal à 9600 bauds sur un uno.<br />
Pourriez vous essayer juste avec une vraie UART série, mais comme le UNO n'en a qu'une de mémoire impossible d'avoir la teleinfo et le Serial en même temps.</p>
<p dir="auto">Visiblement il affiche le char en hexa, curieux</p>
]]></description><link>https://community.ch2i.eu/post/5947</link><guid isPermaLink="true">https://community.ch2i.eu/post/5947</guid><dc:creator><![CDATA[Charles]]></dc:creator><pubDate>Sun, 09 Mar 2025 18:59:49 GMT</pubDate></item></channel></rss>