( Summer6529 | 2025. 10. 22., sze – 12:36 )

Fázisonkénti pontos és előjelhelyes teljesítményadatot van? Mert az elég (ha nincs, azt kérj!). Az amper értékeket nekem sem adták pontosabban, csak egész amperenként és továbbra sincs előjele.

Én ezt írtam nekik (kiemelés tőlem): "Kérem, hogy a villanyórám P1 portján a DSMR-rel kiolvasható adatok között tegyék elérhetővé a fázisonkénti teljesítmény adatokat (és ha van, akkor a fázisonkénti részletes áram értékeket is)."Lehet, hogy az ampereknél megáll a tudományuk, de ha megvan a teljesítmény, abból tudsz ampert számolni.

Így van villanyórához a P1 porton csatlakozó esp8266-om yaml-jában:


sensor:
  - platform: dsmr
    energy_delivered_tariff1:
      id: energy_consumed_tariff1
      name: "Energy Consumed Tariff 1"
    energy_delivered_tariff2:
      id: energy_consumed_tariff2
      name: "Energy Consumed Tariff 2"
    energy_returned_tariff1:
      id: energy_returned_tariff1
      name: "Energy Returned Tariff 1"
    energy_returned_tariff2:
      id: energy_returned_tariff2
      name: "Energy Returned Tariff 2"
    power_delivered:
      id: power_consumed
      name: "Power Consumed"
    power_returned:
      id: power_returned
      name: "Power Returned"
    voltage_l1:
      name: "Voltage Phase 1"
    voltage_l2:
      name: "Voltage Phase 2"
    voltage_l3:
      name: "Voltage Phase 3"
    current_l1:
      name: "Current Phase 1"
    current_l2:
      name: "Current Phase 2"
    current_l3:
      name: "Current Phase 3"
    power_delivered_l1: 
      name: power_delivered_l1   
    power_delivered_l2: 
      name: power_delivered_l2   
    power_delivered_l3: 
      name: power_delivered_l3   
    power_returned_l1: 
      name: power_returned_l1     
    power_returned_l2: 
      name: power_returned_l2     
    power_returned_l3: 
      name: power_returned_l3

 A fenti konfig alapján nekem most így jönnek az adatok, ez a villanyórámba bedugott esp8266 logja (tehát látszik, hogy az ampereket én is csak egész értékben kapom):
 

[12:24:48.364][D][sensor:131]: 'Power Consumed': Sending state 0.00000 kW with 3 decimals of accuracy
[12:24:48.374][D][sensor:131]: 'Power Returned': Sending state 0.56900 kW with 3 decimals of accuracy
[12:24:48.385][D][sensor:131]: 'Voltage Phase 1': Sending state 243.60001 V with 1 decimals of accuracy
[12:24:48.397][D][sensor:131]: 'Voltage Phase 2': Sending state 241.80000 V with 1 decimals of accuracy
[12:24:48.398][D][sensor:131]: 'Voltage Phase 3': Sending state 242.30000 V with 1 decimals of accuracy
[12:24:48.409][D][sensor:131]: 'Current Phase 1': Sending state 1.00000 A with 1 decimals of accuracy
[12:24:48.424][D][sensor:131]: 'Current Phase 2': Sending state 0.00000 A with 1 decimals of accuracy
[12:24:48.425][D][sensor:131]: 'Current Phase 3': Sending state 1.00000 A with 1 decimals of accuracy
[12:24:48.433][D][sensor:131]: 'power_delivered_l1': Sending state 0.00000 kW with 3 decimals of accuracy
[12:24:48.445][D][sensor:131]: 'power_delivered_l2': Sending state 0.00000 kW with 3 decimals of accuracy
[12:24:48.458][D][sensor:131]: 'power_delivered_l3': Sending state 0.00000 kW with 3 decimals of accuracy
[12:24:48.458][D][sensor:131]: 'power_returned_l1': Sending state 0.37900 kW with 3 decimals of accuracy
[12:24:48.471][D][sensor:131]: 'power_returned_l2': Sending state 0.12000 kW with 3 decimals of accuracy
[12:24:48.481][D][sensor:131]: 'power_returned_l3': Sending state 0.07000 kW with 3 decimals of accuracy

Ebből így számolok fázisonkénti értékeket (a többi fázisra ugyanígy), ezeket calculated-nek neveztem el és ezek már három tizedes értékre "pontosak" és van előjelük:

 

  - sensor:
      - name: "calculated_power_phase_1"
        unit_of_measurement: "W"
        state: >
          {% set invalid_states = ['unknown', 'unavailable'] %}
          {% set voltage_phase_1 = states('sensor.voltage_phase_1') %}
          {% set power_delivered_l1 = states('sensor.power_delivered_l1') %}
          {% set power_returned_l1 = states('sensor.power_returned_l1') %}

          {% if voltage_phase_1 in invalid_states or power_delivered_l1 in invalid_states or power_returned_l1 in invalid_states %}
            {{ 'unavailable' }}
          {% else %}
            {% set voltage_phase_1 = voltage_phase_1 | float %}
            {% set power_delivered_l1 = power_delivered_l1 | float %}
            {% set power_returned_l1 = power_returned_l1 | float %}
            
            {% set net_power = (power_returned_l1 - power_delivered_l1) * 1000 %}
            
            {{ net_power | round(0) | int }}
          {% endif %}

      - name: "calculated_current_phase_1"
        unit_of_measurement: "A"
        state: >
          {% set invalid_states = ['unknown', 'unavailable'] %}
          {% set calculated_power_phase_1 = states('sensor.calculated_power_phase_1') %}
          {% set voltage_phase_1 = states('sensor.voltage_phase_1') %}
          
          {% if calculated_power_phase_1 in invalid_states or voltage_phase_1 in invalid_states or voltage_phase_1 | float == 0 %}
            {{ 'unavailable' }}
          {% else %}
            {{ (calculated_power_phase_1 | float / voltage_phase_1 | float) | round(2) }}
          {% endif %}