If EMONHUBTX3EINTERFACER
is defined in the source file (which it is as distributed - it can of course be changed subsequently) for the EmonTxV34CM_rfm69n version, and always (totally unconditionally) for the EmonTxV3CM from Github (JeeLib ‘Classic’) version, then the serial output string, as I read the source files, comes from these lines of code respectively:
Serial.print(F("MSG:")); Serial.print(emontx.Msg);
Serial.print(F(",Vrms:")); Serial.print(emontx.Vrms*0.01);
if (CT1) { Serial.print(F(",P1:")); Serial.print(emontx.P1); }
if (CT2) { Serial.print(F(",P2:")); Serial.print(emontx.P2); }
if (CT3) { Serial.print(F(",P3:")); Serial.print(emontx.P3); }
if (CT4) { Serial.print(F(",P4:")); Serial.print(emontx.P4); }
if (CT1) { Serial.print(F(",E1:")); Serial.print(emontx.E1); }
if (CT2) { Serial.print(F(",E2:")); Serial.print(emontx.E2); }
if (CT3) { Serial.print(F(",E3:")); Serial.print(emontx.E3); }
if (CT4) { Serial.print(F(",E4:")); Serial.print(emontx.E4); }
if (emontx.T1!=30000) { Serial.print(F(",T1:")); Serial.print(emontx.T1*0.01); }
if (emontx.T2!=30000) { Serial.print(F(",T2:")); Serial.print(emontx.T2*0.01); }
if (emontx.T3!=30000) { Serial.print(F(",T3:")); Serial.print(emontx.T3*0.01); }
Serial.print(F(",pulse:")); Serial.println(emontx.pulse);
and
Serial.print(F("MSG:")); Serial.print(emontx.Msg);
Serial.print(F(",Vrms:")); Serial.print(emontx.Vrms*0.01);
if (CT1) { Serial.print(F(",P1:")); Serial.print(emontx.P1); }
if (CT2) { Serial.print(F(",P2:")); Serial.print(emontx.P2); }
if (CT3) { Serial.print(F(",P3:")); Serial.print(emontx.P3); }
if (CT4) { Serial.print(F(",P4:")); Serial.print(emontx.P4); }
if (CT1) { Serial.print(F(",E1:")); Serial.print(emontx.E1); }
if (CT2) { Serial.print(F(",E2:")); Serial.print(emontx.E2); }
if (CT3) { Serial.print(F(",E3:")); Serial.print(emontx.E3); }
if (CT4) { Serial.print(F(",E4:")); Serial.print(emontx.E4); }
if (emontx.T1!=30000) { Serial.print(F(",T1:")); Serial.print(emontx.T1*0.01); }
if (emontx.T2!=30000) { Serial.print(F(",T2:")); Serial.print(emontx.T2*0.01); }
if (emontx.T3!=30000) { Serial.print(F(",T3:")); Serial.print(emontx.T3*0.01); }
Serial.print(F(",pulse:")); Serial.println(emontx.pulse);
They look very much the same to me. But I do see a potential problem with the Github version: If the display of currents is enabled, there’s no CR/LF emitted after the last current,
Serial.print(F(",pf4:")); Serial.print(EmonLibCM_getPF(EmonLibCM_getLogicalChannel(4)),4);
so on the next report, the “MSG:” is not necessarily at the beginning of a line.
The latest “RFM69 Native” version has the final current print properly terminated
Serial.print(F(",pf4:")); Serial.println(EmonLibCM_getPF(EmonLibCM_getLogicalChannel(4)),4);