Each EDF IAM will only report its wattage when polled by the EDF
EcoManager base station. This is great for my application because
I should be able to completely avoid RF collisions.

Each EDF IAM also has a relay to turn the appliance on or off. This
relay can be activated using the manual override switch on the EDF
IAM or over RF

The packets appear to include a simple checksum! (The CC
Transmitters don’t bother with a checksum.)

I’ve made good progress today. I think I can now reliably talk to my EDF
IAM and get replies.

Interestingly, the EDF kit appears to use almost exactly the same RF
configuration as the CC kit; but with a slightly different packet
structure. The EDF IAMs use a base frequency of 433.97MHz (compared with
433.90MHz for the CC kit) and a bitrate of 3.918 kbps. The RFM01 I set
up to receive CC packets can recieve the EDF IAM packets easily. As far
as I can tell, the EDF IAM packets are not “manchesterised” like the CC
IAM packets; and the EDF RF packets are only 12 bytes long compared with
16 bytes of manchesterised data for the CC packets.

Sniffing RF packets from the EDF IAM

The EDF IAM probably emits only a 12 byte packet. But I captured and
displayed 16 bytes just in case the packet is longer than 12 bytes. The
packets below were received using an
RFM01 and my RFM01 Current
Cost code (using exactly
the same settings as for the Current Cost IAMs) running on a
Nanode.

The EDF IAM appears to transmit two packets which are nearly identical
for each manual switching event. Perhaps this is a simple way to
increase resilience to dropped packets? I won’t bother repeating the
packets from now on…

Bytes 0 to 7 never change. Supposedly some of these bytes must be
the ID. I only have a single EDF IAM so I can’t yet figure out which
bytes are the ID. I plan to order some more EDF IAMs and an
EcoManager tomorrow (I buy this EDF kit directly from EDF).

Bytes 8 and 9 appear to be involved in communicating the measured
watts value. I think byte 9 is the most significant byte whilst byte
8 is the least significant byte.

Byte 10 is always 0x53 when the EDF IAM turns on and 0x4F when it
turns off.

It’s also interesting that the EDF IAM doesn’t change its “on” or “off”
packet after being “tuned”. This is in contrast to the CC IAMs which do
change their packets after being tuned. Perhaps the EDF IAMs require a
command from the EcoManager to tell the EDF IAMs which ID to adopt (this
would be sensible as only the EcoManager base knows which IDs are
current in use and which are available).

Implementation

I’ve started work on an DIY EDF EcoManager. My AVR C++ code is on
github. I’m using an
RFM12b 433MHz and a Nanode. At the time of writing, the code can ping my
single EDF IAM, checks the incomming packet’s checksum and extracts the
wattage. All very simple and the code is rather ugly at the moment
because I’m still hacking around a lot.

Sample rate

I had hoped that I’d be able to sample each appliance once every, say,
three seconds. It looks like it is possible to ping the EDF IAM as
rapidly as you want but it appears that the EDF IAM only bothers to take
a sample once every six seconds or so. In other words, it appears to not
sample the wattage when you ping the EDF IAM but instead it’s
independently measuring the wattage and storing this value ready for
transmission when you poll for it.

Who makes the EDF IAM?

Note that this EDF IAM has a model name “IAM” whilst the CC IAMs have
the model name “IAM Transmitter Only”.

I try to mitigate climate change using computer science. I am a Research Engineer at DeepMind, mostly working on energy problems. Previously, I worked on energy disaggregation as a post-doc at Imperial College London. Read more about me…