OpenEnergyMonitor Community

Reading Elster IRDA with Arduino

I’m trying to read Import kWh from an Elster A100C. I’m using the following sensor

I’m using a simple to sketch to get the information but I’m receiving garbage instead.

void setup() {
  // Open serial communications and wait for port to open:
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  Serial.println("Receptor Led");
int seg=0;
void loop() { // run over and over
       byte a = &  0x7f; // cheap way of converting from 8N1 to 7E1 0x7F
       char b = a; // convert serial byte to ASCII character

The Serial Output is something like this:

I have also tried the elster_meter library ( Dave Berkeley) with no success.

Using an osciloscope, I could see that Elster’s irda led seems to be sending a lot of “01010101” which belongs to ASCII “U”

¿How can I convert this data to something “readable”?

Thanks in advance

The link to the sensor just goes to a photo. Have you set the serial link up correctly?

My first inclination was bit rate mismatch, but usually the garbage characters are just that, garbage.
i.e not almost all the same character.

Next thing I wondered about was his use of & 0x7f.
What does the output look like sans the & 0x7f modifier.

Also, is the loop (with Serial.print inside it) running fast enough to get all the characters coming from the sensor?

What happens if you store a lot of incoming characters in an array, then convert and print them?

Thank you Bill.
I have also tried without the 0x7F with the same results. The 0x7F as far as I know is used to convert to “7N1”.

Thank you Robert,
I used XOSCILLO to see what the sensor is catching.

Do you know how to “understand” this? Here is the XML to open with XOSCILLO
Seems to be the same “01010101” train pulses (ASCII ‘U’).


Thank you for your response.
This is the module I have. It’s a receptor led with an LM393 comparator.

Sorry, really need the actual module as the data sheet should specify the interface.

Have you looked at section 13.1 on page 17 of the manual:

"The IrDA communications port provides one way communications,
transmitting a continuous data stream from the meter to an external
device. The data stream includes a start and end mechanism to
identify the start and end of the data stream (see Appendix A1 for
IrDA data format). An error-checking algorithm protects the integrity
of the data stream.
IrDA communications offer low cost, low power consumption and
high noise immunity.
A manufacturing option allows the port to be set to transmit at one
the following baud rates:
2400 baud (default rate)
4800 baud
9600 baud

Appendix A gives you (I think) everything you need to know about the message format - except of course the software to decode it.

Manual download link

Right. But did you try a different data rate?

I have also been reaching similar dead ends on this. Having read the Elster manual several times, and also tried contacting them to ask what frequency the IrDA transmits at. I have so far tried with a TSOP38238 and a modified Obstacle Avoidance sensor (cutting off the IR transmitter LED) .

I have used Arduino with both Dave Berkeley’s code and modifying the Arduino ir remote code myself switching between 2400, 4800 and 9600 in both cases as per the Elster range suggestions. And also, more currently on Raspberry Pi (mainly because the meter is a pain to get to, and certainly stand / stoop over at for any length of time, so the Pi gave me the ability to sit comfortably and modify paramters remotely. On the Pi I was trying the mode2 program with modifiers to give the raw output and wait for 100us+ intervals between characters (Elster manual suggestion). All of this seems to result in complete rubbish out the other end!! Dave Berkeley’s instructions are brilliant, however, as has been commented on accross a number of forums the IR receiver he suggests is no longer available, and I cannot fathom from the datasheet the frequency it recieves on!

A friend of mine has just offered me the use of his Oscilloscope, however, with the current situation he is now in a local lockdown, so we’ve considered it not particularly sensible for the moment!!

Can anyone help with this please? Just need to know if I have the right IR frequency (if not, which?!). I am assuming once on the right track everything else will just work!