My emonPi has been left untouched since it was installed in about September 2021. I thought it would be a good idea (!) to update it to the latest emonPi_CM software. This would give the benefits of the emonPi_CM continuous sampling firmware, and moving to the Low Power Labs (LPL) radio format to get the the packet acknowledgment and retry features. Before I started, I had updated the emonCMS to the latest version.
My experiences:
I used the emonPi_CM update process to do the update from the emonPi user interface, as described at:
https://docs.openenergymonitor.org/emonpi/firmware.html
This all went smoothly. But when I looked at the inputs, there were no inputs from the emonPi. My first attempt at a fix was to do a full update of the emonPi, but there was no change. However, looking at the emonHub log, I could see that there were regular inputs from the emonPi, but they were being discarded as being in error. So I wondered if it was something to do with the message format.
I had a look at the code for the emonPi_CM on the OEM github, and discovered that the emonPi_CM message format is different to the original emonPi_DS_jeelib_classic - in a good way!
emonPi_DS_jeelib_classic: sends power1,power2,power1_plus_power2,Vrms,T1,T2,T3,T4,T5,T6,pulseCount
emonPi_CM sends
Msg,power1,power2,power1pluspower2,vrms,t1,t2,t3,t4,t5,t6,pulse1count,pulse2count,E1,E2
So the emonPi_CM does three extra measurements of pulse2count,E1,E2 as well as continuous monitoring - congratulations to OEM!
This means that a new node configuration is required. I commented out the original emonpi config and used an edited version (see below) from
https://github.com/openenergymonitor/emonpi/blob/master/firmware/emonPi_CM/emonPi_CM.ino:
[[5]]
nodename = emonpiCM
[[[rx]]]
names = Msg, power1,power2,power1pluspower2,vrms,t1,t2,t3,t4,t5,t6,pulse1count,pulse2count,E1,E2
datacodes = L, h, h, h, h, h, h, h, h, h, h, L, L, l, l
scales = 1, 1,1,1, 0.01, 0.01,0.01,0.01,0.01,0.01,0.01, 1, 1, 1,1
units = W,W,W, V, C,C,C,C,C,C, p, p, Wh,Wh
note that the original version mentioned above has an extra comma in front of the first āWā in units, which caused a critical error in my emonHub when installed :
units = ,W,W,W, V, C,C,C,C,C,C, p, p, Wh,Wh
Because the nodename above is emonpiCM the original feed set up will remain with the old emonPi name, but get no inputs. I edited the feeds to change the node from emonpi to emonpiCM, which moved them over to the emonpiCM node. Perhaps this could be avoided by adding the extra entries to the original emonpi config, but I didnāt try this.
In order to keep the JeeLib Classic format messages coming into the emonPi from my emonTx3 (until I get round to updating it), I have added a JeeLink 433MHz (v3c) USB module (note 1) to the emonPi. This module is compatible with the JeeLib Classic format, and acts as a second RX/TX. For anyone interested, the emonHub entry I used for the Jeelink to get it working is:
[[JeelinkUSB]]
Type = EmonHubJeeInterfacer
[[[init_settings]]]
com_port = /dev/ttyUSB0
com_baud = 57600 #57600 for Jeelink
[[[runtimesettings]]]
pubchannels = ToEmonCMS,
subchannels = ToRFM12,
group = 210
frequency = 433
baseid = 5 # emonPi / emonBase nodeID
quiet = true # Report incomplete RF packets (not implemented on emonPi)
calibration = 230V # (UK/EU: 230V, US: 110V)
# interval = 0 # Interval to transmit time to emonGLCD (seconds)
note 1 A moteino can also be used - see
The only things that donāt seem to work so far are the data on the emonPi LCD display - power 1, power 2, Vrms, Pulse, Temp 1 and Temp 2 are all incorrect. This is due perhaps to the new emonPi_CM message format, and emonPiLCD.py needs updating? @TrystanLea
I hope this is useful for other users ā¦