I have 3 suggestions for modifications to the serial output from the EmonTxV3CM
- Make the pulse output dependent on the
pulse_enable
flag. This will remove the emoncms input when no pulse meter is in use. - Include the NodeID in the serial message. There have been several instances where users wish to connect several EmonTX via USB to one RPi. If the NodeID was included this could be handled by Emonhub to reliably link the serial input to a specific EmonTX as the USB may be reassigned by the OS. This would best added as an option (default false).
- Include an option for JSON output. Data could more easily be parsed when received if sent as a JSON String. A flag for
json_enable
would need to be created in the config (default false).
Untested code.
if (json_enable) {Serial.print(F("{"));}
Serial.print(F("NodeID:")); Serial.print(nodeID);
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); }
if (pulse_enable) {Serial.print(F(",pulse:")); Serial.print(emontx.pulse);}
if (json_enable) {Serial.print(F("}"));}
Serial.println();