Monitoring System Firmware Update

I have been operating kit with custom firmware for some time and I think it would be best to attempt to comply with Australian law by chainging the frequency, if that is relatively easy to achieve. If it is difficult, there is the option of understanding that my closest nieghbour is more than a kilometer away and the likelyhood of RF interference from this kit is very low.

I included my node configuration above as a direct copy from the emonhub.conf via the emoncms interface. It does not have the comments. As far as I can tell, the only difference between the one I have been using and the one you advised above is you have used L (upper case) for the energy values in the datacode definition where as I used l (lower case) for the energy values.

Thank you. I would appreciate the help with the RFM69 libraries and using the correct frequency.

Also I am not sure we have actually uncovered my problem yet. I think I need to load one of my emonTx3 with the Github emonTx3 LPL sketch and see if I can replicate your success. I’m not convinced yet that my RFM69Pi LPL set up is correct.

Hi @Robert.Wall and @Jaddache - I’ve spent an enjoyable(?) bit of time reading the ACMA docs, and I can’t find any back up of the 433.65 MHz limit that was in Rob’s link. I think that would be a very bizarre change - it would make a huge swathe of devices immediately non-compliant.

Certainly, the previous 433.00 MHz is illegal (although, it is unlikely you’ll get into trouble unless you are causing mass interference). The band is 433.05–434.79 MHz, so the 433.92 MHz centre is ideal. Maximum power is 15 mW (~12dBm) - the RFM at maximum power can do 13dBm, but you’d be unlikely to actually get that power into the antenna so in practice it’s ok. Additionally, the transmission packet is very small and intermittent so while, yes, you should try to be compliant I would try to get the system working first and treat that as a second order task :slight_smile:

I’ll try to find some time to have a look at the various libraries - it’s just adjusting a couple of values, but depending on the… vintage and heritage of the libraries it might not be easily exposed.

I downloaded a new copy of the Github emonTx3 LPL sketch and loaded it onto a emonTx3 - unfortunately no luck.

Correct operation of the RFM69PI was confirmed by receipt of data from a emonTh.

As an experiment, I tried the emonTx3 with the emonTh firmware loaded and my fingers crossed. Partial success - the radio signal was correctly recieved and decoded by the RFM69PI in this configuration - so something is working correctly with the LPL radio format…

Schedule 1 of the Radiocommunications (Low Interference Potential Devices) Class Licence 2025 (available at https://www.legislation.gov.au/F2025L01047/asmade/text) appears to indicate maximum power is 25mW.

That’s EIRP (isotropic power), not ERP - the conversion is to subtract 2.15dB, so 25 mW EIRP → ~15 mW ERP.

Promising :slight_smile:

What’s not promising is, I couldn’t replicate the problem. This would possibly point to the LPL library. OEM Github has two IDENTICAL libraries containing identical files, one called “RFM69” and the other “RFM69_LPL”. As the file names and contents are identical, and the header is RFM69_LPL.h, this is the one that gets used if called in the sketch. The library containing the header file RFM69.h is in the “original” Low Power Labs directory, downloadable from GitHub - LowPowerLab/RFM69: RFM69 library for RFM69W, RFM69HW, RFM69CW, RFM69HCW (semtech SX1231, SX1231H) · GitHub.

Your @Jaddache sketch says

#if RadioFormat == RFM69_LOW_POWER_LABS
  #include <RFM69.h>                             // RFM69 LowPowerLabs radio library
#elif

so that is probably the one you are using - my compiler certainly thinks so

Using library RFM69 at version 1.6.0 in folder: /home/r/OpenEnergy/Software/libraries/RFM69 

because that is the Low Power Labs version updated yesterday using the link above.

@Jaddache Do you see anything from Node 15 in your emonhub log when using LPL?

That was also my immediate reaction.

Correct - and our default is -7 dBm

I looked last night, and it appears to be relatively simple, yet a major fiddle with numerous compiler preprocessor substitutions. And it could be even simpler as I think there’s an API call to set the power outside the library code itself.

If it’s the original LPL library there’s the direct setFrequency(f_Hz) function. You need to alter the headers if this is not available (like in OEM’s fork), in RFM69registers.h For 433.92 MHz you need to set:

#define RF_FRFMSB_433             0x6C
#define RF_FRFMID_433             0x7A
#define RF_FRFLSB_433             0xE1

to override the old default of 433.00 MHz.

I saw those. It’s like JeeLib and my Tx-only library rfmTxLib - except of course we’d need to add rather than substitute, which is where the fiddling becomes necessary to maintain some degree of compatibility. But if that lower apparent limit is false information, then 433.92 MHz should be fine and especially as the likelihood of generating harmful interference appears in @Jaddache’s case to be near-zero.

No you didn’t, those (L) are message count and pulses, and they cannot go negative and you were correct. You also correctly used lowercase h for the energy values. The difference is uppercase is unsigned and lowercase is signed - the full list is here: emonHub Configuration File — OpenEnergyMonitor 0.0.1 documentation

Even if those were wrong, it wouldn’t stop the decoding. What does stop decoding is when the count of bytes received does not tally with the count of bytes declared under datacodes = ... If it says datacode = ..., then that’s different, and datacode = h allows an unspecified number of signed integers.

Neither can I. Every mention I can find specifies the same as the Region 1 band: 433.05 - 434.79 MHz.

Looking wider, the band 918 - 926 MHz is or will be allocated to ISM purposes (https://www.acma.gov.au/sites/default/files/2026-03/rali_ms_41-_900_mhz_band_plan_march_2026.pdf), and so by swapping the 433 MHz RFM69CW to the 915 MHz variant, which covers 890 - 1020 MHz, operation in that band should be possible. But it would need specialist skills to swap the RFM modules in the various items, and new antennas, and of course changes to the libraries. And it is likely that the higher frequency would penetrate buildings rather less easily.

Quite a bit less. In general, the higher the frequency,
the greater the tendency to bounce vice penetrate.

Not that I can tell from review of the emonhub log in the emoncms interface. There are some discarded data packets indicated as being received, but nothing that begins with a 15.

It might be a couple of days before I get a chance to test things again. I will post a representative extract from the log when I get the chance.

What is also interesting and most probably unrelated to the radio problem is that I now have two emonTx3 units connected to the same supply and they are indicating slightly different frequencies. One is loaded with firmware from 2020 and the other is loaded with firmware compiled last week, when I made sure I had the current versions of all the libraries. The older firmware is typically indicating 50.00 - 50.01 Hz and the newer one is indicating 50.05 - 50.06 Hz. Before I updated the firmware, they were always within 0.01 Hz of each other.
I use the measured frequency as an indication of the availability of spare solar power in our off grid power system. So I will also need to investigate that difference before I use the measurements to drive discretionary load switching. Do we have good record of the changes between v2.04 and v2.4 of the continuous monitoring library?

No. The last version I released was 2.2.2, on 15/9/2022.

Here are the comments in that version where the release history up to that version is included.

// Release for testing 4/1/2017
//
// Version 2.0 21/11/2018
// Version 2.01 3/12/2018 Calculation error in phase error correction - const.‘360’ missing, ‘x’ & ‘y’ coefficients swapped.
// Version 2.02 13/07/2019 Temperature measurement: Added “BAD_TEMPERATURE” return value when reporting period < 0.2 s,
// getLogicalChannel( ), ReCalibrate_VChannel( ), ReCalibrate_IChannel( ) added, setPulsePin( ) interrupt no. was obligatory,
// pulse & temperatures were set/enabled only at startup, setTemperatureDataPin was ineffective, preloaded sensor addresses
// not handled properly.
// 18/10/2019 Sketch using this became the default in emonTx V3.4
// Version 2.03 25/10/2019 Mains Frequency reporting [getLineFrequency( )]added,
// ADC reference source was AVcc and not selectable - ability to select [setADC_VRef( )] added,
// sampleSetsDuringThisDatalogPeriod (and derivatives) was samplesDuringThisDatalogPeriod etc,
// Energy calculation changed to use internal clock rather than mains time by addition of “frequencyDeviation”.
// Version 2.04 1/8/2020 In examples, ‘else’ added to “if (EmonLibCM_Ready())” to keep JeeLib alive. Example for RFM69CW only (‘Classic’ format) and
// not using JeeLib added.
// getDatalog_period( ) added. Temperature array is now ignored if first device is not a DS18B20. ‘BAD_TEMPERATURE’ now returned if
// sensor address is made invalid during operation. Array above is sensor count is filled with UNUSED_TEMPERATURE. Superfluous ‘if’
// removed at end of retrieveTemperatures() - power pin is now set low regardless. ‘else’ added to ‘if’ in
// (if (temperatureEnabled = _enable)) in TemperatureEnable( ) to ensure power is off if not required, delay after retrieving
// a temperature was 5 ms.
// unsigned long missing_VoltageSamples (was “missing_Voltage”), bool firstcycle were not volatile, unnecessary copies of
// ‘protected’ variables removed, datalog period was set only at startup & minimum limit added. cycleCountForDatalogging,
// min_startup_cycles were signed.
// (Plus some cosmetic changes)
// Version 2.1.0 9/7/2021 2nd pulse input added, array of structs was individual variables. N.B. The definition setPulsePin(byte channel, int _pin)
// is incompatible with the old definition of setPulsePin(int _pin, int _interrupt). Solution for 85 °C problem added,
// special print format for emonPi added. ‘Setters’ to initialise Wh counters & pulse count added. If no a.c. voltage,
// now uses assumed Vrms to calculate power, VA & energy, p.f. and frequency both report zero. Error in phase shift calculation
// meant wrong correction was applied when ct’s were sampled out of sequence.
// Version 2.1.1 26/7/2021 Typo in Include file name - was emonLibCM2P.h
// Version 2.1.2 7/8/2021 ‘assumedACVoltage’ was ‘assumedVrms’ (name conflict in some sketches).
// Version 2.2.0 14/9/2021 Pulse counting could count double on switch bounce. Changed: PulseMinPeriod, default was 110 ms;
// ‘laststate’, ‘timing’ & ‘edge’ added to track input state; ‘edge’ added to setters; in init(), interrupt was attached to RISING edge;
// most of the code in the pulse ISR removed, replaced by countPulses( ) called from main loop.
// Version 2.2.1 5/12/2012 Repackaged 30/10/2021 release: Debugging statements accidentally left in pulse ISR removed.
// Version 2.2.2 15/9/2022 If temperature sensor pin had not been set but relied on default, no power was applied for initial search.

I seem to recollect, looking at the current Github version, that Github duplicated the V2.1 number with a different release to mine, and V2.3 was my attempt to recover the situation, hence no V2.2 (i.e. one of the two different V2.1 versions ought to be renumbered as V2.2).

If you know how Github works, you might be able to find out what has happened since then. I have reason to think that neither Glyn or Trystan have had experience in industry prior to founding OEM/Megni, so don’t understand how change notes work.

No I dont. I found a copy of 2.0.4 which I think was used to load the emonTx3s in 2020. So I will probably revert to this version of the library when we sort out the radio problem.

This is the emonhub log after restarting from loading the LPL firmware onto the RFM69Pi. There was one emonTh and one emonTx3 operating with their LPL firmware. There were also two emonTx3 and three emonTh operating with JeeLib firmware loaded. The serial output of the LPL emonTx3 (set to node 18) indicated that messages were being sent.

2026-07-01 09:26:43,825 INFO     MainThread Opening hub...
2026-07-01 09:26:43,825 INFO     MainThread Running as user: pi
2026-07-01 09:26:43,826 INFO     MainThread Logging level set to DEBUG
2026-07-01 09:26:43,826 INFO     MainThread Creating EmonHubJeeInterfacer 'RFM69Pi'
2026-07-01 09:26:43,826 DEBUG    MainThread Opening serial port: /dev/ttyAMA0 @ 38400 bits/s
2026-07-01 09:26:45,827 WARNING  MainThread Device communication error - check settings
2026-07-01 09:26:45,827 INFO     MainThread Setting RFM69Pi baseid: 5 (5i)
2026-07-01 09:26:46,827 INFO     MainThread Setting RFM69Pi frequency: 433 (4b)
2026-07-01 09:26:47,828 INFO     MainThread Setting RFM69Pi group: 210 (210g)
2026-07-01 09:26:48,828 INFO     MainThread Setting RFM69Pi quiet: 0 (0q)
2026-07-01 09:26:49,828 INFO     MainThread Setting RFM69Pi calibration: 230V (1p)
2026-07-01 09:26:50,829 DEBUG    MainThread Setting RFM69Pi pubchannels: ['ToEmonCMS']
2026-07-01 09:26:50,829 DEBUG    MainThread Setting RFM69Pi subchannels: ['ToRFM12']
2026-07-01 09:26:50,829 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-07-01 09:26:50,830 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-07-01 09:26:50,830 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-07-01 09:26:50,830 INFO     MainThread Setting MQTT node_format_enable: 1
2026-07-01 09:26:50,830 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-07-01 09:26:50,830 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-07-01 09:26:50,830 INFO     MainThread Creating EmonHubEmoncmsHTTPInterfacer 'emoncmsorg'
2026-07-01 09:26:50,831 DEBUG    MainThread Setting emoncmsorg pubchannels: ['ToRFM12']
2026-07-01 09:26:50,831 DEBUG    MainThread Setting emoncmsorg subchannels: ['ToEmonCMS']
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg apikey: set
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg url: https://emoncms.org
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg senddata: 1
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg sendstatus: 1
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg sendnames: 0
2026-07-01 09:26:50,831 INFO     MainThread Setting emoncmsorg compress: 0
2026-07-01 09:26:50,831 DEBUG    MainThread Automatic configuration of nodes disabled
2026-07-01 09:28:42,131 DEBUG    RFM69Pi    1 NEW FRAME : OK 26 175 0 184 11 136 2 31 0 1 0 0 0 (-68)
2026-07-01 09:28:42,131 DEBUG    RFM69Pi    1 Timestamp : 1782862122.131558
2026-07-01 09:28:42,131 DEBUG    RFM69Pi    1 From Node : 26
2026-07-01 09:28:42,131 DEBUG    RFM69Pi    1    Values : [17.5, 300, 64.8, 3.1, 1]
2026-07-01 09:28:42,132 DEBUG    RFM69Pi    1      RSSI : -68
2026-07-01 09:28:42,132 DEBUG    RFM69Pi    1 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:28:42,132 DEBUG    RFM69Pi    1 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:28:42,326 INFO     MQTT       Connecting to MQTT Server
2026-07-01 09:28:42,426 DEBUG    emoncmsorg Buffer size: 1
2026-07-01 09:28:42,426 INFO     emoncmsorg sending: https://emoncms.org/input/bulk.json?sentat=1782862122 (41 bytes of data, 1 frames, uncompressed)
2026-07-01 09:28:42,427 INFO     MQTT       connection status: Connection successful
2026-07-01 09:28:42,428 DEBUG    MQTT       CONACK => Return code: 0
2026-07-01 09:28:42,529 INFO     MQTT       on_subscribe
2026-07-01 09:28:43,387 DEBUG    emoncmsorg acknowledged receipt with 'ok' from https://emoncms.org (960 ms)
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2 NEW FRAME : OK 26 175 0 184 11 135 2 31 0 0 0 0 0 (-64)
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2 Timestamp : 1782862130.138319
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2 From Node : 26
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2    Values : [17.5, 300, 64.7, 3.1, 0]
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2      RSSI : -64
2026-07-01 09:28:50,138 DEBUG    RFM69Pi    2 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:28:50,139 DEBUG    RFM69Pi    2 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:28:50,336 DEBUG    MQTT       Publishing: emon/emonth8/temperature 17.5
2026-07-01 09:28:50,336 DEBUG    MQTT       Publishing: emon/emonth8/external temperature 300
2026-07-01 09:28:50,336 DEBUG    MQTT       Publishing: emon/emonth8/humidity 64.7
2026-07-01 09:28:50,336 DEBUG    MQTT       Publishing: emon/emonth8/battery 3.1
2026-07-01 09:28:50,337 DEBUG    MQTT       Publishing: emon/emonth8/pulsecount 0
2026-07-01 09:28:50,337 DEBUG    MQTT       Publishing: emon/emonth8/rssi -64
2026-07-01 09:28:50,337 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:28:50,337 DEBUG    MQTT       Publishing: emonhub/rx/26/values 17.5,300,64.7,3.1,0,-64
2026-07-01 09:29:13,411 DEBUG    emoncmsorg Buffer size: 1
2026-07-01 09:29:13,411 INFO     emoncmsorg sending: https://emoncms.org/input/bulk.json?sentat=1782862153 (41 bytes of data, 1 frames, uncompressed)
2026-07-01 09:29:14,439 DEBUG    emoncmsorg acknowledged receipt with 'ok' from https://emoncms.org (1027 ms)

You can see the emonTh data but no emonTx data and nothing being discarded. There is a communication error which is not present when the JeeLib firmware is loaded. (see below)

Here is the emonhub log output from immediately after reloading the RFM69Pi with the JeeLib firmware. The same combination of emonTx3 and emonTh were operating. No communication error this time but lots of discarded frames.

2026-07-01 09:47:00,823 INFO     MainThread EmonHub v2.7.6
2026-07-01 09:47:00,823 INFO     MainThread Opening hub...
2026-07-01 09:47:00,823 INFO     MainThread Running as user: pi
2026-07-01 09:47:00,823 INFO     MainThread Logging level set to DEBUG
2026-07-01 09:47:00,823 INFO     MainThread Creating EmonHubJeeInterfacer 'RFM69Pi'
2026-07-01 09:47:00,824 DEBUG    MainThread Opening serial port: /dev/ttyAMA0 @ 38400 bits/s
2026-07-01 09:47:02,825 INFO     MainThread RFM69Pi device firmware version: [RF12demo.14]
2026-07-01 09:47:02,825 INFO     MainThread RFM69Pi device current settings:  E i5 g210 @ 433 MHz
2026-07-01 09:47:02,825 INFO     MainThread Setting RFM69Pi quiet: 0 (0q)
2026-07-01 09:47:03,825 INFO     MainThread Setting RFM69Pi calibration: 230V (1p)
2026-07-01 09:47:04,826 DEBUG    MainThread Setting RFM69Pi pubchannels: ['ToEmonCMS']
2026-07-01 09:47:04,826 DEBUG    MainThread Setting RFM69Pi subchannels: ['ToRFM12']
2026-07-01 09:47:04,826 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-07-01 09:47:04,826 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-07-01 09:47:04,826 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-07-01 09:47:04,826 INFO     MainThread Setting MQTT node_format_enable: 1
2026-07-01 09:47:04,826 DEBUG    RFM69Pi    acknowledged command: > 0q
2026-07-01 09:47:04,826 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-07-01 09:47:04,827 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-07-01 09:47:04,827 INFO     MainThread Creating EmonHubEmoncmsHTTPInterfacer 'emoncmsorg'
2026-07-01 09:47:04,827 DEBUG    MainThread Setting emoncmsorg pubchannels: ['ToRFM12']
2026-07-01 09:47:04,827 DEBUG    MainThread Setting emoncmsorg subchannels: ['ToEmonCMS']
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg apikey: set
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg url: https://emoncms.org
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg senddata: 1
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg sendstatus: 1
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg sendnames: 0
2026-07-01 09:47:04,827 INFO     MainThread Setting emoncmsorg compress: 0
2026-07-01 09:47:04,827 DEBUG    MainThread Automatic configuration of nodes disabled
2026-07-01 09:47:04,927 DEBUG    RFM69Pi    device settings updated: E i5 g210 @ 433 MHz
2026-07-01 09:47:05,027 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 28 98 19 253 30 9 42 156 107 8 116 192 40 101 206 132 120 68 44 121 2 (-90)
2026-07-01 09:47:05,128 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 19 251 172 171 206 212 115 239 106 171 255 154 220 216 247 19 35 175 63 90 166 (-90)
2026-07-01 09:47:05,228 DEBUG    RFM69Pi    acknowledged command: > 1p
2026-07-01 09:47:05,529 DEBUG    RFM69Pi    acknowledged command: <nn> i     - set node ID (standard node ids are 1..30)
2026-07-01 09:47:05,629 DEBUG    RFM69Pi    acknowledged command: <n> b      - set MHz band (4 = 433, 8 = 868, 9 = 915)
2026-07-01 09:47:05,730 DEBUG    RFM69Pi    acknowledged command: <nnnn> o   - change frequency offset within the band (default 1600)
2026-07-01 09:47:05,931 DEBUG    RFM69Pi    acknowledged command: <nnn> g    - set network group (RFM12 only allows 212, 0 = any)
2026-07-01 09:47:06,031 DEBUG    RFM69Pi    acknowledged command: <n> c      - set collect mode (advanced, normally 0)
2026-07-01 09:47:06,233 DEBUG    RFM69Pi    acknowledged command: ...,<nn> a - send data packet to node <nn>, request ack
2026-07-01 09:47:06,333 DEBUG    RFM69Pi    acknowledged command: ...,<nn> s - send data packet to node <nn>, no ack
2026-07-01 09:47:06,434 DEBUG    RFM69Pi    acknowledged command: <n> q      - set quiet mode (1 = don't report bad packets)
2026-07-01 09:47:06,534 DEBUG    RFM69Pi    acknowledged command: <n> x      - set reporting format (0: decimal, 1: hex, 2: hex+ascii)
2026-07-01 09:47:06,635 DEBUG    RFM69Pi    acknowledged command: <nnn> y    - enable signal strength trace mode, default:0 (disabled)
2026-07-01 09:47:06,736 DEBUG    RFM69Pi    acknowledged command: sample interval <nnn> secs/100 (0.01s-2.5s) eg 10y=0.1s
2026-07-01 09:47:07,038 DEBUG    RFM69Pi    acknowledged command: <hchi>,<hclo>,<addr>,<cmd> f     - FS20 command (868 MHz)
2026-07-01 09:47:07,138 DEBUG    RFM69Pi    acknowledged command: <addr>,<dev>,<on> k              - KAKU command (433 MHz)
2026-07-01 09:47:07,339 DEBUG    RFM69Pi    device settings updated: E i5 g210 @ 433 MHz
2026-07-01 09:47:07,439 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 25 83 223 78 36 190 106 3 53 77 220 27 200 26 154 37 166 48 79 163 25 (-91)
2026-07-01 09:47:07,540 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 29 214 132 237 76 189 218 104 48 84 232 203 3 92 112 28 158 70 255 220 15 (-90)
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7 NEW FRAME : OK 15 55 216 70 85 105 11 185 70 54 81 173 170 123 87 85 85 58 8 100 85 223 106 84 85 13 196 121 85 85 85 85 85 55 85 142 170 18 85 85 85 10 80 101 32 101 32 101 32 85 85 85 85 85 (-75)
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7 Timestamp : 1782863227.640959
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7 From Node : 15
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7    Values : [1281378, 241.24, 51, 1123, -8, 558, 0, 3235183, 81802, 2920792, 0, 0.98, -0.37, 0.71, 0, 13.75, 300, 300, 300, 0, 0, 0, 0]
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7      RSSI : -75
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:07,641 DEBUG    RFM69Pi    7 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:07,930 INFO     MQTT       Connecting to MQTT Server
2026-07-01 09:47:08,030 DEBUG    emoncmsorg Buffer size: 1
2026-07-01 09:47:08,030 INFO     emoncmsorg sending: https://emoncms.org/input/bulk.json?sentat=1782863228 (121 bytes of data, 1 frames, uncompressed)
2026-07-01 09:47:08,030 INFO     MQTT       connection status: Connection successful
2026-07-01 09:47:08,031 DEBUG    MQTT       CONACK => Return code: 0
2026-07-01 09:47:08,131 INFO     MQTT       on_subscribe
2026-07-01 09:47:08,970 DEBUG    emoncmsorg acknowledged receipt with 'ok' from https://emoncms.org (940 ms)
2026-07-01 09:47:10,647 DEBUG    RFM69Pi    8 NEW FRAME : OK 24 174 0 184 11 104 2 29 0 0 0 0 0 (-44)
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8 Timestamp : 1782863230.647730
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8 From Node : 24
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8    Values : [17.400000000000002, 300, 61.6, 2.9000000000000004, 0]
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8      RSSI : -44
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:10,648 DEBUG    RFM69Pi    8 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:10,934 DEBUG    MQTT       Publishing: emon/emonth6/temperature 17.400000000000002
2026-07-01 09:47:10,934 DEBUG    MQTT       Publishing: emon/emonth6/external temperature 300
2026-07-01 09:47:10,935 DEBUG    MQTT       Publishing: emon/emonth6/humidity 61.6
2026-07-01 09:47:10,935 DEBUG    MQTT       Publishing: emon/emonth6/battery 2.9000000000000004
2026-07-01 09:47:10,935 DEBUG    MQTT       Publishing: emon/emonth6/pulsecount 0
2026-07-01 09:47:10,935 DEBUG    MQTT       Publishing: emon/emonth6/rssi -44
2026-07-01 09:47:10,935 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:47:10,935 DEBUG    MQTT       Publishing: emonhub/rx/24/values 17.400000000000002,300,61.6,2.9000000000000004,0,-44
2026-07-01 09:47:11,749 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 29 169 0 184 11 117 2 28 0 0 0 0 0 (-65)
2026-07-01 09:47:12,350 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 17 103 6 237 27 161 242 208 (-89)
2026-07-01 09:47:12,451 DEBUG    RFM69Pi    9 NEW FRAME : OK 16 52 43 85 85 190 8 164 70 85 85 168 170 91 85 85 85 184 170 170 170 108 113 85 85 178 81 85 85 206 68 85 85 171 170 164 170 82 85 81 85 120 80 137 80 36 81 160 80 85 85 85 85 85 (-62)
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9 Timestamp : 1782863232.451593
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9 From Node : 16
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9    Values : [32353, 240.43, 51.050000000000004, 0, -3, 14, 0, -19, 9273, 1255, 4507, -0.02, -0.15, 0.07, 0.04, 13.25, 15, 11.370000000000001, 15.25, 0, 0, 0, 0]
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9      RSSI : -62
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:12,452 DEBUG    RFM69Pi    9 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:12,737 DEBUG    MQTT       Publishing: emon/emontx3cm16/MSG 32353
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/Vrms 240.43
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/F 51.050000000000004
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/P1 0
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/P2 -3
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/P3 14
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/P4 0
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/E1 -19
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/E2 9273
2026-07-01 09:47:12,738 DEBUG    MQTT       Publishing: emon/emontx3cm16/E3 1255
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/E4 4507
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf1 -0.02
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf2 -0.15
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf3 0.07
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf4 0.04
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/T1 13.25
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/T2 15
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/T3 11.370000000000001
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/T4 15.25
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/pulse 0
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/error 0
2026-07-01 09:47:12,739 DEBUG    MQTT       Publishing: emon/emontx3cm16/missed 0
2026-07-01 09:47:12,740 DEBUG    MQTT       Publishing: emon/emontx3cm16/missedprc 0
2026-07-01 09:47:12,740 DEBUG    MQTT       Publishing: emon/emontx3cm16/rssi -62
2026-07-01 09:47:12,740 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:47:12,740 DEBUG    MQTT       Publishing: emonhub/rx/16/values 32353,240.43,51.050000000000004,0,-3,14,0,-19,9273,1255,4507,-0.02,-0.15,0.07,0.04,13.25,15,11.370000000000001,15.25,0,0,0,0,-62
2026-07-01 09:47:12,853 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 22 234 145 211 150 128 240 17 23 123 201 42 203 1 234 21 88 57 245 208 30 (-90)
2026-07-01 09:47:13,454 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 2 30 248 239 59 78 118 0 254 7 207 92 150 5 157 237 61 67 54 144 97 (-90)
2026-07-01 09:47:13,755 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 7 40 238 62 30 31 129 145 220 110 77 255 97 49 137 202 144 137 208 157 63 (-89)
2026-07-01 09:47:16,058 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 30 129 223 161 22 79 171 172 86 34 123 3 17 57 33 180 17 2 200 174 180 (-90)
2026-07-01 09:47:17,060 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 22 89 42 0 203 250 15 124 255 231 237 202 64 105 235 111 50 121 11 29 196 (-92)
2026-07-01 09:47:17,261 DEBUG    RFM69Pi    10 NEW FRAME : OK 15 54 216 70 85 107 11 185 70 209 81 172 170 101 87 85 85 39 8 100 85 223 106 84 85 15 196 121 85 85 85 85 85 55 85 136 170 18 85 85 85 10 80 101 32 101 32 101 32 85 85 85 85 85 (-73)
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10 Timestamp : 1782863237.261475
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10 From Node : 15
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10    Values : [1281379, 241.26, 51, 1156, -7, 560, 0, 3235186, 81802, 2920794, 0, 0.98, -0.35000000000000003, 0.71, 0, 13.75, 300, 300, 300, 0, 0, 0, 0.0]
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10      RSSI : -73
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:17,262 DEBUG    RFM69Pi    10 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:17,446 DEBUG    MQTT       Publishing: emon/emontx3cm15/MSG 1281379
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/Vrms 241.26
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/F 51
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/P1 1156
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/P2 -7
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/P3 560
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/P4 0
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/E1 3235186
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/E2 81802
2026-07-01 09:47:17,447 DEBUG    MQTT       Publishing: emon/emontx3cm15/E3 2920794
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/E4 0
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/pf1 0.98
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/pf2 -0.35000000000000003
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/pf3 0.71
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/pf4 0
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/T1 13.75
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/T2 300
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/T3 300
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/T4 300
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/pulse 0
2026-07-01 09:47:17,448 DEBUG    MQTT       Publishing: emon/emontx3cm15/error 0
2026-07-01 09:47:17,449 DEBUG    MQTT       Publishing: emon/emontx3cm15/missed 0
2026-07-01 09:47:17,449 DEBUG    MQTT       Publishing: emon/emontx3cm15/missedprc 0.0
2026-07-01 09:47:17,449 DEBUG    MQTT       Publishing: emon/emontx3cm15/rssi -73
2026-07-01 09:47:17,449 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:47:17,449 DEBUG    MQTT       Publishing: emonhub/rx/15/values 1281379,241.26,51,1156,-7,560,0,3235186,81802,2920794,0,0.98,-0.35000000000000003,0.71,0,13.75,300,300,300,0,0,0,0.0,-73
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11 NEW FRAME : OK 23 174 0 184 11 139 2 26 0 0 0 0 0 (-50)
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11 Timestamp : 1782863238.064228
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11 From Node : 23
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11    Values : [17.400000000000002, 300, 65.10000000000001, 2.6, 0]
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11      RSSI : -50
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:18,064 DEBUG    RFM69Pi    11 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:18,251 DEBUG    MQTT       Publishing: emon/emonth5/temperature 17.400000000000002
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emon/emonth5/external temperature 300
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emon/emonth5/humidity 65.10000000000001
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emon/emonth5/battery 2.6
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emon/emonth5/pulsecount 0
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emon/emonth5/rssi -50
2026-07-01 09:47:18,252 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:47:18,252 DEBUG    MQTT       Publishing: emonhub/rx/23/values 17.400000000000002,300,65.10000000000001,2.6,0,-50
2026-07-01 09:47:22,069 DEBUG    RFM69Pi    Discarding RX frame 'unreliable content': ? 18 151 254 189 220 198 123 9 123 63 151 (-82)
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12 NEW FRAME : OK 16 55 43 85 85 191 8 164 70 85 85 168 170 88 85 85 85 184 170 170 170 108 113 85 85 178 81 85 85 206 68 85 85 174 170 166 170 82 85 86 85 120 80 137 80 36 81 160 80 85 85 85 85 85 (-62)
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12 Timestamp : 1782863242.170096
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12 From Node : 16
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12    Values : [32354, 240.42000000000002, 51.050000000000004, 0, -3, 13, 0, -19, 9273, 1255, 4507, -0.05, -0.13, 0.07, 0.03, 13.25, 15, 11.370000000000001, 15.25, 0, 0, 0, 0.0]
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12      RSSI : -62
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12 Sent to channel(start)' : ToEmonCMS
2026-07-01 09:47:22,170 DEBUG    RFM69Pi    12 Sent to channel(end)' : ToEmonCMS
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/MSG 32354
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/Vrms 240.42000000000002
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/F 51.050000000000004
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/P1 0
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/P2 -3
2026-07-01 09:47:22,257 DEBUG    MQTT       Publishing: emon/emontx3cm16/P3 13
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/P4 0
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/E1 -19
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/E2 9273
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/E3 1255
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/E4 4507
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf1 -0.05
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf2 -0.13
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf3 0.07
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/pf4 0.03
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/T1 13.25
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/T2 15
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/T3 11.370000000000001
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/T4 15.25
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/pulse 0
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/error 0
2026-07-01 09:47:22,258 DEBUG    MQTT       Publishing: emon/emontx3cm16/missed 0
2026-07-01 09:47:22,259 DEBUG    MQTT       Publishing: emon/emontx3cm16/missedprc 0.0
2026-07-01 09:47:22,259 DEBUG    MQTT       Publishing: emon/emontx3cm16/rssi -62
2026-07-01 09:47:22,259 INFO     MQTT       Publishing 'node' formatted msg
2026-07-01 09:47:22,259 DEBUG    MQTT       Publishing: emonhub/rx/16/values 32354,240.42000000000002,51.050000000000004,0,-3,13,0,-19,9273,1255,4507,-0.05,-0.13,0.07,0.03,13.25,15,11.370000000000001,15.25,0,0,0,0.0,-62

I’m afraid I cannot replicate this so far. Using the same emonTx V3.4, with line frequency in your sketch scaled by 0.9988 in order to match my multimeter (accuracy 0.1% ± 1 digit, but out of calibration), I get the same as the multimeter ± 1 digit (except when frequency is changing rapidly, due to the different timebases for measurement) using either emonLibCM V2.2.2 or emonLibCM V2.0.4 as you tested. I could not think of nor see a change that should have affected the frequency measurement. I was not consulted about the later versions, so I’m not aware of the changes.

Fortunately, my editor can do a side-by-side comparison of two files, so I’ll try to do some more digging tomorrow, but it’s 01:45 local time here and I’m quitting for the day.

This one is really odd but the correlation with the time that I updated emontx3cm16 is quite evident.

I would not chase this one yet. I will load emontx3cm16 with some firmware based on the older version of the library and compare them again on the weekend.

Unfortunately there’s no git history, it was all uploaded at once. Am I right in saying this is the file we’re discussing?

No.

With respect to the EmonTx3 we started out talking about a customised version of this file: emontx3/firmware/emonTx34/emonTx34_CM/emonTx34_CM.ino at master · openenergymonitor/emontx3 · GitHub

And the last few posts about a discrepancy in reported line frequency are about the supporting library at GitHub - openenergymonitor/EmonLibCM: Continuous Monitoring alternative to EmonLib · GitHub

Thanks Simon. So, the Tx3 firmware has the same issue (very limited git history), but there’s a bit more history for the CM :slight_smile: I’ll try to find some time to look at it.