ESPHome powered P1 meter

For a long time I was avoiding ESPHome on my esp-based P1 readers. Not that it’s bad, au contraire, I love it. It was my lack of knowledge in getting it to work. I tried it, didn’t work, so I “left it on the shelf”.

Until now …

Esp-link was for me the best way. It’s exactly the same thing as an USB cable, only via tcp. Personally I keep using tcp, as I use dsmr-reader as main logging tool. For many I’ve noticed that Home Assistant is enough (and that’s fine). For those I wanted a better/easier way to connect the reader to Home Assistant.

Luckily an important person within the Home Assistant team pointed to nldroid on GitHub who had it working the way I wanted it the first time. He has made a custom component CustomP1UartComponent. He explained it perfectly and without issues it worked straight away 😃

You need the library dsmr_p1_sensor.h and the configuration (all documented on his GitHub).

The config yaml:

esphome:
  name: esp_dsmr
  platform: ESP8266
  board: d1_mini
  includes:
    - dsmr_p1_uart.h
  libraries:
    - "Dsmr"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "esp_dsmr_uart Fallback Hotspot"
    password: ""

captive_portal:

# Enable logging
logger:
  level: DEBUG
  esp8266_store_log_strings_in_flash: False

# Enable Home Assistant API
api:
  password: ""

ota:
  password: ""
  
uart:
  - rx_pin: D2
    baud_rate: 115200
    id: uart_bus  

sensor:
  - platform: custom
    lambda: |-
      auto dsmr_p1_sensor = new CustomP1UartComponent(id(uart_bus));
      App.register_component(dsmr_p1_sensor);
      return {dsmr_p1_sensor->s_energy_delivered_tariff1, dsmr_p1_sensor->s_energy_delivered_tariff2, dsmr_p1_sensor->s_energy_returned_tariff1, dsmr_p1_sensor->s_energy_returned_tariff2, dsmr_p1_sensor->s_power_delivered, dsmr_p1_sensor->s_power_returned, dsmr_p1_sensor->s_voltage_l1, dsmr_p1_sensor->s_voltage_l2, dsmr_p1_sensor->s_voltage_l3, dsmr_p1_sensor->s_current_l1, dsmr_p1_sensor->s_current_l2, dsmr_p1_sensor->s_current_l3, dsmr_p1_sensor->s_power_delivered_l1, dsmr_p1_sensor->s_power_delivered_l2, dsmr_p1_sensor->s_power_delivered_l3, dsmr_p1_sensor->s_power_returned_l1, dsmr_p1_sensor->s_power_returned_l2, dsmr_p1_sensor->s_power_returned_l3, dsmr_p1_sensor->s_gas_device_type, dsmr_p1_sensor->s_gas_valve_position, dsmr_p1_sensor->s_gas_delivered};
    sensors:
    - name: "Consumption Low Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3
    - name: "Consumption High Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3  
    - name: "Return Low Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3
    - name: "Return High Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3  
    - name: "Actual Consumption Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Actual Delivery Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Instant Voltage L1 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Voltage L2 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Voltage L3 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Current L1 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Instant Current L2 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Instant Current L3 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Power Delivered L1 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Delivered L2 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Delivered L3 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L1 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L2 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L3 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Gas device type Sensor"
    - name: "Gas valve position Sensor"  
    - name: "Gas Meter M3 Sensor"
      unit_of_measurement: m3
      accuracy_decimals: 3 

Adding TCP server functionality

Ok, it is working perfectly, still I wanted the option to connect via TCP/Telnet. Luckily I had a component seen on GitHub from Oxan van Leeuwen. He made a custom component stream_server.cpp and stream_server.h.

The needed config is shown below:

esphome:
  # ...
  includes:
    - stream_server.h
    - stream_server.cpp

uart:
  id: uart_bus
  #  ...
  
custom_component:
  - lambda: |-
      auto stream_server = new StreamServerComponent(id(uart_bus));
      return {stream_server};

So, can those two be combined?

Yes it can 🥳

I ran in to some “issues”. Like WiFi settings. I wanted it to be plug & play, so no WiFi config and starting with Hotspot. Connect to the Hotspot, and there join it to your own wireless network. The ssid couldn’t be empty, so for formality I entered there “dummy_ssid”. A non existing network. Therefor it wil start automatically the hotspot after several tries (which will fail as the network doesn’t exist).

Update 15 December 2020:

It seems that if you’re not using ssid, but network (with no network defined) that it goes straight into hotspot (jay, success!). Yet now it is not showing the list of scanned networks, only the option to fill in the ssid and password/secret.

The code as it is now:

esphome:
  name: de_slimme_meter
  platform: ESP8266
  board: d1_mini
  includes:
    - dsmr_p1_uart.h
    - stream_server.h
    - stream_server.cpp
  libraries:
    - "Dsmr"

wifi:
  networks:

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "De Slimme Meter"
    password: ""

captive_portal:

web_server:
  port: 80
  
# Enable logging
logger:
  level: DEBUG
  esp8266_store_log_strings_in_flash: False

# Enable Home Assistant API
api:
  password: ""

ota:
  password: ""

uart:
  - rx_pin: D7
    baud_rate: 115200
    id: uart_p1
  - tx_pin: D0
    rx_pin: D1
    baud_rate: 115200

custom_component:
  - lambda: |-
      auto stream_server = new StreamServerComponent(id(uart_p1));
      return {stream_server};

sensor:
  - platform: custom
    lambda: |-
      auto dsmr_p1_sensor = new CustomP1UartComponent(id(uart_p1));
      App.register_component(dsmr_p1_sensor);
      return {dsmr_p1_sensor->s_energy_delivered_tariff1, dsmr_p1_sensor->s_energy_delivered_tariff2, dsmr_p1_sensor->s_energy_returned_tariff1, dsmr_p1_sensor->s_energy_returned_tariff2, dsmr_p1_sensor->s_power_delivered, dsmr_p1_sensor->s_power_returned, dsmr_p1_sensor->s_voltage_l1, dsmr_p1_sensor->s_voltage_l2, dsmr_p1_sensor->s_voltage_l3, dsmr_p1_sensor->s_current_l1, dsmr_p1_sensor->s_current_l2, dsmr_p1_sensor->s_current_l3, dsmr_p1_sensor->s_power_delivered_l1, dsmr_p1_sensor->s_power_delivered_l2, dsmr_p1_sensor->s_power_delivered_l3, dsmr_p1_sensor->s_power_returned_l1, dsmr_p1_sensor->s_power_returned_l2, dsmr_p1_sensor->s_power_returned_l3, dsmr_p1_sensor->s_gas_device_type, dsmr_p1_sensor->s_gas_valve_position, dsmr_p1_sensor->s_gas_delivered};
    sensors:
    - name: "Consumption Low Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3
    - name: "Consumption High Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3  
    - name: "Return Low Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3
    - name: "Return High Tarif Sensor"
      unit_of_measurement: kWh
      accuracy_decimals: 3  
    - name: "Actual Consumption Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Actual Delivery Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Instant Voltage L1 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Voltage L2 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Voltage L3 Sensor"
      unit_of_measurement: V
      accuracy_decimals: 3      
    - name: "Instant Current L1 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Instant Current L2 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Instant Current L3 Sensor"
      unit_of_measurement: A
      accuracy_decimals: 3      
    - name: "Power Delivered L1 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Delivered L2 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Delivered L3 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L1 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L2 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Power Returned L3 Sensor"
      unit_of_measurement: W
      accuracy_decimals: 3      
      filters:
        - multiply: 1000
    - name: "Gas device type Sensor"
    - name: "Gas valve position Sensor"  
    - name: "Gas Meter M3 Sensor"
      unit_of_measurement: m3
      accuracy_decimals: 3

Room for improvement?

Yes there is. At time of writing, the hotspot will start after one minute when it is not connecting to a wireless network. I wish this to be straight away. No minute delay. This I will look into and try to get it done ✅

Well as of the update of 15 December, it goes straight into hotspot mode, yet without the list of scanned devices. I’ve seen that list and I want that list, so still room for improvement.

34 comments

  1. Geert

    Many thanks for this clear documentation.
    So, if I would like to use the HomeAssistant DSMR add-in, I would only need the TCP server functionality as HA does the ‘decoding’. Is that correct ?
    What would be the advantage to make the ESP do this ?

    1. Marcel

      Hi, you don’t need the TCP-server if you’re using ESPHome integration with Home Assistant 😉 I added it to give a choice, one device for multiple platforms. For you, just pick what you need 😉

      1. Geert

        Hi Marcel,
        but then you don’t use the home assistant DSMR integration ? You get the sensor data directly from the ESP, correct ?
        Indeed, this is easier… You know it support the Belgian meters ?

        1. Marcel

          I use dsmr-reader, and that’s integrated in Home Assistant. I like it that you can compare dates, months and years … something that’s not available in HA. So yeah, I personally don’t use the ESPHome integration. It is supported for Belgian (Fluvius) meters. Yet I’m not sure if all data is available as Belgium uses some other ID’s. I’m working on an all-in-one idea, NL, BE, and other possible variations.

  2. Bob van Mierlo

    Will flashing with Esphome brick the possibility to use DSMR reader?
    I have DSMR reader linked to esp-link on it’s IP and port 23, is there any way to keep using this with esphome flashed to it?

    1. Marcel

      If you’re using both the dsmr_p1 code and stream_server, you should be able to use both. I can’t guaranty is for 100% as I’ve not tested it fully…

      includes:
      - dsmr_p1_uart.h
      - stream_server.h
      - stream_server.cpp

      In stream_server.h at the bottom you’ll see the code

      Stream *stream_{nullptr};
      AsyncServer server_{0};
      uint16_t port_{23};
      std::vector recv_buf_{};
      std::vector> clients_{};

      Note “uint16_t port_{23};” … by default there is entered an 8000-range port… change that to 23, than it should be working.

      Feel free to play around, you won’t brick it, you can always flash it back to esp-link 😉

  3. Rob

    Hallo, ik heb de DSRM Reader add-on in Home Assistant en een D1 Mini met ESP-Easy in de meterkast die het telegram stuurt. Werkt prima. Maar ik wil graag datzelfde regelen via ESPHome. Volgens mij heb ik alleen het telegram nodig, dus geen sensoren want die heeft DSRM Reader al via MQTT.
    Heb ik dan alleen de custom component met de stream nodig?
    En mijn hardware is zo dat de data van de meter op de RX pin binnenkomt, dus ik denk dat ik moet invullen rx_pin: RX
    Heb ik het een beetje goed begrepen?

    1. Marcel

      Als je dsmr reader gebruikt, heb je helemaal geen andere manieren/tools nodig. Wat je dan het beste kan doen is de dsmr-integratie doen in Home Assistant. Dan krijg je alle data in HA en log je alles binnen (in mijn ogen de beste keuze, gebruik ik ook). Je meter dubbel in HA zetten zou ik niet doen. Beantwoord dat je vraag?

      1. Rob

        Ik heb DSRM Reader al werkend in HA, wil daar ook niets aan veranderen.
        Ik wil de huidige Wemos die op ESP-Easy draait vervangen door een Wemos die ESPHome draait.
        De vraag is of jouw yaml in ESPHome hetzelfde telegram stuurt als de huidige.

        Dit is het huidige telegram:

        1-3:0.2.8(42)
        0-0:1.0.0(210214132834W)
        0-0:96.1.1(4530303035303031363930333135323134)
        1-0:1.8.1(014587.052*kWh)
        1-0:2.8.1(000000.000*kWh)
        1-0:1.8.2(012752.030*kWh)
        1-0:2.8.2(000000.000*kWh)
        0-0:96.14.0(0001)
        1-0:1.7.0(00.753*kW)
        1-0:2.7.0(00.000*kW)
        0-0:96.7.21(00002)
        0-0:96.7.9(00000)
        1-0:99.97.0(0)(0-0:96.7.19)
        1-0:32.32.0(00000)
        1-0:52.32.0(00000)
        1-0:72.32.0(00001)
        1-0:32.36.0(00000)
        1-0:52.36.0(00000)
        1-0:72.36.0(00000)
        0-0:96.13.1()
        0-0:96.13.0()
        1-0:31.7.0(002*A)
        1-0:51.7.0(001*A)
        1-0:71.7.0(002*A)
        1-0:21.7.0(00.351*kW)
        1-0:41.7.0(00.016*kW)
        1-0:61.7.0(00.385*kW)
        1-0:22.7.0(00.000*kW)
        1-0:42.7.0(00.000*kW)
        1-0:62.7.0(00.000*kW)
        !499F

        1. Marcel

          Ja, dat gaat wel werken, maar de vraag is: Waarom ESPHome? Als je DSMR-reader als hoofdlogger gebruikt, heb je genoeg aan esp-link (of elk ander soortgelijk functionaliteit). Waarom de esp12 meer belasten terwijl je daar geen gebruik van maakt? Mijn advies: gebruik esp-link.

          1. Rob

            Ik wil graag over naar ESPHome, omdat ik meerdere nodes heb die allemaal via ESPHome lopen.
            Alleen deze ene is een buitenbeentje, vandaar dat ik die ook in ESPHome wil hebben.

          2. Marcel

            Maar je wilt ook blijven loggen met dsmr-reader? Als je geen dsmr-reader had gehad, had ik je volledig begrepen. Maar je zegt dat je dsmr-reader gebruikt (en ik neem aan dat je dat blijft gebruiken?)

  4. Edwin

    Hoi Marcel,

    Ik heb een board: d1_mini; framework: arduino; platform: platformio/espressif8266@2.6.2.
    En zie geen data vooorbij kommen op mij P1 middels een telnet poort 23 (aangepast in stream_server.h)
    Jouw config geupload met de volgende UART:
    uart:
    – id: uart_p1
    rx_pin: D7
    baud_rate: 9600
    – tx_pin: D0
    rx_pin: D1
    baud_rate: 115200

    Dit komt tijdens de upload voorbij aan info

    [15:43:03][C][wifi:360]: DNS2: (IP unset)
    [15:43:03][C][uart_esp8266:075]: UART Bus:
    [15:43:03][C][uart_esp8266:080]: RX Pin: GPIO13
    [15:43:03][C][uart_esp8266:081]: RX Buffer Size: 256
    [15:43:03][C][uart_esp8266:083]: Baud Rate: 9600 baud
    [15:43:03][C][uart_esp8266:084]: Data Bits: 8
    [15:43:03][C][uart_esp8266:085]: Parity: NONE
    [15:43:03][C][uart_esp8266:086]: Stop bits: 1
    [15:43:03][C][uart_esp8266:088]: Using hardware serial interface.
    [15:43:03][C][uart_esp8266:075]: UART Bus:
    [15:43:03][C][uart_esp8266:077]: TX Pin: GPIO16
    [15:43:03][C][uart_esp8266:080]: RX Pin: GPIO5
    [15:43:03][C][uart_esp8266:081]: RX Buffer Size: 256
    [15:43:03][C][uart_esp8266:083]: Baud Rate: 115200 baud
    [15:43:03][C][uart_esp8266:084]: Data Bits: 8
    [15:43:03][C][uart_esp8266:085]: Parity: NONE
    [15:43:03][C][uart_esp8266:086]: Stop bits: 1
    [15:43:03][C][uart_esp8266:090]: Using software serial

    Wat doe ik fout?

      1. hendrik60763

        als ik vragen mag… als hier de RX op D7 zit, waarom staan dan daaronder de D0 en D1 nogmaals ?

        uart:
        – id: uart_p1
        rx_pin: D7
        baud_rate: 9600
        – tx_pin: D0
        rx_pin: D1
        baud_rate: 115200

        1. Marcel

          Het kan zijn dat ie de andere pinnen ook wil mappen, als 2e uart. Maar mijn hardware heeft al een ruime jaar de Rx op D7 (omdat de inverter deze actief hoog/laag trekt en dan kan je via de gewone rx/tx niet meer flashen).

  5. Willem

    Hoi Edwin,
    Ik heb een Wemos D1 mini aangesloten aan de P1 poort zoals deze op https://github.com/nldroid/CustomP1UartComponent beschreven staan.
    Nu krijg ik data binnen, alleen zit er soms meerdere minuten tussen.
    Type meter: SMR5.0
    De tijd tussen ” Foorer found” is exact 1 minuut.

    [D][DmsrCustom:091]: Footer found
    [D][DmsrCustom:091]: Footer found
    [D][DmsrCustom:091]: Footer found
    [D][sensor:127]: ‘Consumption Low Tarif Sensor’: Sending state 5976.28711 kWh with 3 decimals of accuracy
    [D][sensor:127]: ‘Consumption High Tarif Sensor’: Sending state 6423.99707 kWh with 3 decimals of accuracy
    [D][sensor:127]: ‘Return Low Tarif Sensor’: Sending state 0.00000 kWh with 3 decimals of accuracy
    [D][sensor:127]: ‘Return High Tarif Sensor’: Sending state 0.00000 kWh with 3 decimals of accuracy
    [D][sensor:127]: ‘Actual Consumption Sensor’: Sending state 541.00000 W with 3 decimals of accuracy
    [D][sensor:127]: ‘Actual Delivery Sensor’: Sending state 0.00000 W with 3 decimals of accuracy
    [D][sensor:127]: ‘Instant Voltage L1 Sensor’: Sending state 236.00000 V with 3 decimals of accuracy
    [D][sensor:127]: ‘Instant Current L1 Sensor’: Sending state 2.00000 A with 3 decimals of accuracy
    [D][sensor:127]: ‘Power Delivered L1 Sensor’: Sending state 541.00000 W with 3 decimals of accuracy
    [D][sensor:127]: ‘Power Returned L1 Sensor’: Sending state 0.00000 W with 3 decimals of accuracy
    [D][sensor:127]: ‘Gas device type Sensor’: Sending state 3.00000 with 0 decimals of accuracy
    [D][sensor:127]: ‘Gas Meter M3 Sensor’: Sending state 1290.84595 m3 with 3 decimals of accuracy
    [D][DmsrCustom:091]: Footer found
    [D][DmsrCustom:091]: Footer found
    [D][DmsrCustom:091]: Footer found
    [D][DmsrCustom:091]: Footer found

    Weet jij waarmee dit te maken heeft?

    1. Marcel

      Deze manier ondersteun ik niet meer. Ik heb speciaal geïnvesteerd voor nieuwe, goede code. Nu nog op mijn GitHub, maar binnenkort in de ESPHome core 🙂

  6. cody

    Hoi Marcel,
    Geweldig werk, bedankt voor het delen.
    Echter heb ik zelf een vraag over de hardware.
    Heb jij misschien een pinnen diagram die je kunt delen van P1 draden naar Wemos (of in mijn geval naar Nodemcu). Het gaat bij mij vooral om of je een circuit (resistors met transistor) gebruikt of dat je direct de pinnen op de Wemos aansluit.
    Alvast

    1. Marcel

      Hoi Cody,

      Alles wat ik al gedeeld heb, staat ergens in mijn blog… kijk eens naar mijn allereerste posts over de compacte reader. Daar heb ik wat gedeeld staan. Daar gebruikte ik de Rx pin, nu gebruik ik de D7/GPIO13 daarvoor (van de ESP8266-12)

  7. Quinten Faas

    Marcel,

    Ik heb je hulp nodig 🙁
    Ik moet dus voor een school project met een esp8266 en een rj11 poort die ik heb gesoldeerd op deze esp chip. Deze chip staat in connectie met mijn Home Assistant, maar ik heb echt al van alles geprobeerd om de p1 poort uit te kunnen lezen maar het wil maar gewoon niet werken, het moet volgende week woensdag al klaar, je bent mijn enigste hoop XD. Mijn vraag aan jou is daarom, zie je het zitten om mij zo snel mogelijk te kunnen helpen met mijn project. Ik hoor graag van jou! ik hoop echt dat we eens op Teams of Discord kunnen praten zodat ik het kan laten zien wat de configuratie is. De melding die ik hele tijd blijf krijgen is: No Data Available. Is the P1-port connected?

    Ik hoop echt dat je me kunt helpen.

    Met vriendelijke groet,

    Quinten (student op scalda)

    1. Marcel

      Ik ga natuurlijk niet alles voorkauwen voor je, voor je schoolopdracht is het de bedoeling dat je zelf dingen uitzoekt en daarvan leert ;).
      Sowieso doe je te weinig research werk, want je reageert op oude code, iets wat al lang herschreven is en inmiddels al een tijd in de esphome core zit als component.
      De volgende wat je uit moet zoeken is, hoe heb je het aangesloten? Heb je de dsmr 5.0.2 specificatie (pdf) opgezocht en doorgenomen? Heb je gedacht aan de pull up? Heb je gedacht aan een inverter? Heb je de juiste Rx pin gekozen? Is deze ook in de code hetzelfde?

      Als je volgende week al moet inleveren en je komt nu pas bij mij (of iemand anders), ben je al best aan de late kant. Had je niet eerder aan de bel kunnen trekken toen je erachter kwam dat het niet lukte?

      Allemaal dingetjes waarvan je moet leren 😉

      1. Quinten Faas

        Dag Marcel,

        Ik heb al echt van alles geprobeerd, ook kwa codering daarom zou ik het willen uitleggen via Teams hoe het live in elkaar zit. Ik heb al andere Pinouts geprobeerd, zowel op D2, D4, D5, d7 en 8 tegelijk, met een RJ12 koppelstuk dus stukken 1,2,3 5 en 6 gebruikt, ik heb ook geprobeerd met RJ11 koppelstuk dus 1,2 en 4 gepakt, via 3v3 volt via VIN poort, met weerstandjes, zonder maar ik blijf de melding krijgen, No Data Available, is the P1 port connected?
        Dus heb al bijna alles gedaan, alleen het stukje DATA inzichtelijk maken lukt bij mij niet, daarom was mijn vraag ook om het live eens te laten zien, om jou mening eens te horen wat ik precies fout doe. Ik heb al op verschillende slimme meter getest, ook baudrate daarmee aangepast maar nog steeds diezelfde melding. DSMR soorten die geprobeerd zijn is 2.2 4.0 en 4.2..
        De code geeft voor derest ook geen fouten aan.
        Hoop dat je mij alsnog wat input kan geven want heb al heel veel proberen doen. (zowat elke github bekeken) die die ook hebben gedaan en vergeleken.

        1. Marcel

          Hoe heb je het gemaakt? De data pin van de meter, gaat deze rechtstreeks de esp in? Of zit daar een inverter tussen? Op welke pin van de esp zit het aangesloten?
          DSMR 2 en 3 hebben een andere seriële stroom. Daar heb je 9600 baud 7E1 voor nodig en géén CRC check (wat in de code op deze pagina wel zit, dat gaat niet werken). DSMR 4 en 5 hebben 115200 baud 8N1 en maakt wel gebruik van CRC check. Heel veel afhankelijkheden, die allemaal op elkaar aan moeten sluiten. Daarnaast, de code op deze pagina is oud. Het is herschreven en zit uiteindelijk in ESPHome Core: https://esphome.io/components/sensor/dsmr.html

  8. Quinten Faas

    Ik heb trouwens ook al met andere mensen geprobeerd al zo wat 1,5 week lang week lang hun komen er ook niet uit en sindsdien had ik ook nog maar de spullen dus ik kon ook niet eerder aan de bel trekken.

    1. Marcel

      Je kan aan mijn reactie denk wel merken dat ik het hartstikke druk heb, daarom reageer ik ook zo laat. Ik kan niet eens mijn klanten op tijd beantwoorden (wat ik echt slecht van mezelf vind, maar is nu eenmaal zo ivm de drukte). Dus echt tijd om uitgebreid met je te video chatten heb ik niet.

  9. Bram

    Ik heb jouw voorbeeld gebruikt in een P1 printje wat ik had liggen. Ik wilde graag overstappen op een esphome gebaseerde meter. Moet ik nu alle verwijzingen aanpassen of kan ik het DSMR component laten verwijzen naar dit IP adres?

    1. Marcel

      Hoi Bram, om eerlijk te zijn, ligt het eraan wat je nu gebruikt. Als je nu esp-link erop hebt staan, zou ik dat zo laten en niet veranderen. Het heeft namelijk geen toegevoegde waarde én esp-link is simpeler van opzet waardoor in de toekomst minder issues kunnen ontstaan (afgelopen paar maanden veel wijzigingen binnen ESPHome geweest waardoor er in de yaml code getweakt moest worden om het weer werkend te krijgen). Wat gebruik je nu?

      1. Bram

        Ik heb in het verleden deze gemaakt:

        http://www.esp8266thingies.nl/wp/

        Ik moest de .h file aanpassen omdat de output D5 van mij D6 was. Ik heb toen de door jouw gemaakte code hierboven gebruikt. En het werkt je ziet alle items die je hierboven in esphome beschrijft gemaakt worden. Vraag is nu of ik die waarden van esphome moet nemen of de dsmr reader kan verbinden. Ik ben een beetje in de war omdat er staat alles is geintegreerd in esphome.

        1. Marcel

          Hmmm, dan maak je niet gebruik van de hardware uart … ik maak gebruik van de 2nd uart (D7/GPIO13). Je kan het proberen maar dan moet je in de UART settings van ESPHome de juiste Pin nummer zetten

          1. Bram

            Hij doet het wel al. De vraag is of ik in HA hem kan inlezen met het dsmr component en daar dan via het ip nr verwijst naar de nieuwe esphome esp.

            Zoals dit:

            – platform dsmr
            – Host: 192.168.1.1

            Etc

Leave a Reply

Your email address will not be published. Required fields are marked *

Leave the field below empty!