Using Slimmelezer+ to read data from energy meter Iskra AM550 from Romande Energie (Switzerland)

Hi jzuffere, did you had any luck since december ?
I also have an AM550 from SIE Lausanne and I only get binary data. I tried with the SlimmeLezer and with a direct serial connection to a computer. No luck atm.

Not yet, no. But still in contact with SIE on this topic. However, it looks like we’ll need to be patient as they are a bit underwater these times…

If you cannot wait, I suggest to take a look at the Shelly 3EM, a relatively low-cost alternative that interfaces very well to Home assistant, Solar Manager and alike.

By the way, I got a Slimmelezer working perfectly fine with an ENSOR meter provided by SEVJ at la Vallée de Joux.

1 Like

Hi Jeremie,
I added the ESPHome to home assistant and used the integration from Sylvain_Baron.p1reader to get it working on p1 port with slimmlezer device. it is working with esphome 2022.11.4 version as the new version of esphome has API key integrated, I have not spent time to figure that one out yet.
Let me know if you are interested to have the code.
you need to get the image file from slimmlezer website and load it with usb-c cable and esphome

@sybaron3 and anybody else in this topic. How does the AM550 communicates on the P1 port in Switzerland? Does it use DSMR as in the Nordic countries or is it DLMS to use a secure connection?
If it is DLMS, does it use any authentication or can you read basic data without that?

Thanks for the answers!

Hello,

I have an Iskra AM550 meter from Romande Energie.
On P1 port :
-Serial is 115200-8-n-1.
-Data format is hdlc.

I managed to read and get datas with this Python script :
https://github.com/Gurux/Gurux.DLMS.Python/tree/master/Gurux.DLMS.Push.Listener.Example.python

But it is pretty complex and I don’t understant everything. I wish I could decode it an easier way…
Receiving raw frame is easy. Decoding it to get values isn’t…

Any simple idea or format explanation ?

1 Like

The article in this comment summs it up:

Otherwise from a Github repo’s read me references in the comments of the aforementioned article (belongs to the author of the article).

Be warned that the DLMS protocol stack is created by a succession
of morons, doing one stupid thing after another for several decades.

This is DLMS Green book for reference:

And the Blue Book:

Hi Adam,
Could you explain in more details what you did to make it work ?
Should we flash the SlimmeLezer with a specific firmware (which one) ? Then use the P1read.yaml configuration ?
Thanks if you can provide some details if you succeeded to make it work !

Hi @sybaron3,
Could you provide more details how you made it work ? I am trying to use the SlimmeLezer+ to read data from ISKRA AM450 meter, but no luck so far…
Thanks if you can help !

@malonip, which country are you from? If from the EU then the DSO should provide you information how is the meter communicates. There is an EU directive (2019/944) which regulates what information should be provided to the end customer (Article 20). It should be implemented already in the local law as well.

Otherwise it depends on the meter’s firmware and settings how it communicates, what protocol does it use and what information does it provide in what frequency. Also, the P1 port should be activated as well to be able to use it. That should be activated either locally through the optical port by a service man or remotely by the DSO or on the DSO’s self service website if any. (Some DSOs allow these options through their metering and billing website.)
Also if encryption is used, you will need decipher key, if authentication is used (DLMS/COSEM), then you will need the username/password as well.
Most of the cases what I read about, the P1 port is either not encrypted, like in the Netherlands by the DSMR standard, or uses encryption (AES128) which can easily decrypted by the device with the decipher key. (Actually encryption is required by the EU directive for privacy reasons.)

Hi @GSzabados,
I am in Switzerland (French part).Our power company is Romande Energie/SIE. It seems that @sybaron3 and @asturges79 found a way to configure a Slimmelezer to work on the P1 port of the IKRA AM550 meter. It is why I was asking. Not sure they needed a decryption key at the end, but they may answer…
With the Slimmelezer out-of-the-box, the telegrams are not readable as is.

You can give a try to this old (and removed) project.

https://web.archive.org/web/20201121021717/https://github.com/saghonfly/shrdzm/releases

As I understand it can read the telegrams and display them as it is. Look at the picture.

@AdmiralStipe can confirm how it is working as he uses it with an Iskra AM550 in Slovenia.

And once you are sure what are the telegrams then you can update the p1meter description. My guess that is only the modification what @sybaron3 implemented. I couldn’t compare the original and his code as I am using my phone.

Thanks @GSzabados !

I am not skilled enough to analyze the telegrams and understand anything about them :wink:

Anyway, I’ve done the setup proposed by @sybaron3 with his p1reader.h code and p1reader.yaml configuration. Unfortunately, this doesn’t work and no valid frames can be captured by the Slimmelezer, see following screenshot:
image

Still stuck on the problem :cry:

The code is really specific there what it tries to read from the P1 port. You should first try to get a full message, then try to adjust the code according that.

By the regularity it seems to be the P1 port is outputting data. But I am a bit confused by some of the error messages. Especially the expected 12 bytes and received 16. When I looked at the code it seemed to me that is specifically reading 12 byte…

You’re right, the code is really specific… I will try to figure it out…

Hello
Someone managed to obtain usable data of the P1 port of a IKRA AM55 from the SIL?
Regards

Hello please find below the code for switzerland


substitutions:

device_name: slimmelezer

device_description: “DIY P1 module to read your smart meter”

esphome:

name: ${device_name}

comment: “${device_description}”

platform: ESP8266

esp8266_restore_from_flash: true

board: d1_mini

name_add_mac_suffix: false

project:

name: "Sylvain_hack.p1reader"

version: "0.1"

includes:

- p1reader.h

wifi:

ssid: !secret wifi_ssid

password: !secret wifi_password

MAC Address: C8:C9:A3:7C:19:C7

Enable fallback hotspot (captive portal) in case wifi connection fails

ap:

ssid: ${device_name}

ap_timeout: 15s

password: !secret fallback_password

captive_portal:

Enable logging

logger:

level: VERBOSE

level: INFO

baud_rate: 0 # disable logging over uart

baud_rate: 0

Enable Home Assistant API

api:

password: !secret hass_api_password

ota:

password: !secret ota_password

web_server:

port: 80

globals:

  • id: has_key

    type: bool

    restore_value: yes

    initial_value: “false”

  • id: stored_decryption_key

    type: char[32]

    restore_value: yes

dsmr:

id: dsmr_instance

For Luxembourg users set here your decryption key.

Enable this when using decryption for Luxembourg;

key looks like ‘00112233445566778899AABBCCDDEEFF’

#decryption_key: !secret decryption_key

Enable Home Assistant API

#api:

password: !secret hass_api_password

uart:

id: uart_bus

tx_pin: D8

rx_pin: D7

baud_rate: 115200

rx_buffer_size: 256

data_bits: 8

parity: NONE

stop_bits: 1

sensor:

  • platform: custom

    lambda: |-

    auto meter_sensor = new P1Reader(id(uart_bus));

    App.register_component(meter_sensor);

    return {

    meter_sensor->momentaryActiveImport,
    
    meter_sensor->momentaryActiveExport,
    
    meter_sensor->cumulativeActiveImport,
    
    meter_sensor->cumulativeActiveExport,
    
    meter_sensor->cumulativeActiveImportTarif1,
    
    meter_sensor->cumulativeActiveImportTarif2,
    
    meter_sensor->cumulativeActiveExportTarif1,
    
    meter_sensor->cumulativeActiveExportTarif2,
    
    meter_sensor->voltageL1,
    
    meter_sensor->voltageL2,
    
    meter_sensor->voltageL3,
    
    meter_sensor->currentL1,
    
    meter_sensor->currentL2,
    
    meter_sensor->currentL3
    

    };

    sensors:

    • name: “Momentary Import”

      unit_of_measurement: W

      state_class: measurement

      device_class: power

    • name: “Momentary Export”

      unit_of_measurement: W

      state_class: measurement

      device_class: power

    • name: “Total Import”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Total Export”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Total Import T1”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Total Import T2”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Total Export T1”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Total Export T2”

      unit_of_measurement: kWh

      state_class: total_increasing

      device_class: energy

    • name: “Voltage Phase 1”

      unit_of_measurement: V

      accuracy_decimals: 1

      state_class: measurement

      device_class: voltage

    • name: “Voltage Phase 2”

      unit_of_measurement: V

      accuracy_decimals: 1

      state_class: measurement

      device_class: voltage

    • name: “Voltage Phase 3”

      unit_of_measurement: V

      accuracy_decimals: 1

      state_class: measurement

      device_class: voltage

    • name: “Current Phase 1”

      unit_of_measurement: A

      accuracy_decimals: 1

      state_class: measurement

      device_class: current

    • name: “Current Phase 2”

      unit_of_measurement: A

      accuracy_decimals: 1

      state_class: measurement

      device_class: current

    • name: “Current Phase 3”

      unit_of_measurement: A

      accuracy_decimals: 1

      state_class: measurement

      device_class: current

text_sensor:

  • platform: wifi_info

    ip_address:

    name: “IP Address”

    ssid:

    name: “Wi-Fi SSID”

    bssid:

    name: “Wi-Fi BSSID”

  • platform: version

    name: “ESPHome Version”

    hide_timestamp: true


@asturges79 @sybaron3 Still unable to make it work :sleepy:

image

@asturges79 @sybaron3

Hello,

I’m trying to configure my Slimmelezer to work with Romande Energie.

Unfortunately I’m a bit lost, do I have to do everything from Home-Assistant or do I have to flash the Slimmelezer with a specific version of ESPHome from a PC before I can use it?

Could a kind soul make a step-by-step tutorial for configuring the Slimmelezer for Romande Energie in Home-Assistant?

Best regards

Exactly same messages on my side…