Energie Dashboard Solar und Stromzähler mit Tasmota unpassende Werte

Ich habe folgende Situation.

Tasmota liefert mehrere Werte . 2 davon sind vermutlich relevant.

  • der Zählerstand
  • der aktuelle Verbrauch in ( sowohl + als auch - )

Die Daten liefert er mehrfach pro Sekunde
Zum ersten würde ich gerne im Energie Dashboard sehen welchen Strom ich wirklich vom Netzbetreiber beziehe.

zum zweiten würde eine Kurve aus des tatsächlichen Stroms mit Plus und Minus.

Für den ersten fall hatte ich mehrfach eine Lösung mit increase gefunden. Hier bräuchte ich aber doch eine Lösung mit Verrechnung der beiden Zählerstände. Leider habe ich keine Ahnung wie ich das machen kann.
Hat einer einen Tip wo ich infos zu so einer Methode finden kann ?

Moin,

Von dem was Du geschrieben hast, habe ich nur die Hälfte verstanden, daher frage ich mal nach.

  1. welche Entitäten hast Du, wenn Du in der Tasmota UI die Werte siehst, z. B. mein Lesekopf am Stromzähler

    Dann habe ich auch alle Werte als Entität in HA

Dann habe ich, sollte das out of the box nicht korrekt sein, mir die Sensoren so angelegt, dass es für das Energiedashboard passt.
Beispiel

homeassistant:
  customize_glob:
    sensor.hichi_sma_zahler_sml_total_kwh:
      unique_id: StromSteinbekerStr12OGVerbrauch
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      last_reset: 1970-01-01T00:00:00+00:00
    sensor.hichi_sma_zahler_sml_akt_w:
      unique_id: StromSteinbekerStr12OGAktuell
      unit_of_measurement: "W"
      device_class: energy
      state_class: total
      last_reset: 1970-01-01T00:00:00+00:00
    sensor.hichi_sma_zahler_sml_export_total_kwh:
      unique_id: StromSteinbekerStr12OGExport
      unit_of_measurement: kWh
      device_class: energy
      state_class: total_increasing
      last_reset: 1970-01-01T00:00:00+00:00

Dann kann diese Sensoren sensor.hichi_sma_zahler_sml... nutzen und im Energiedashboard eintragen, oder andere Karten/Kacheln im Dashboard damit füttern.
Ich habe mir noch Helfer erstellt, die den Tages, Wochen, Monats, Jahresverbrauch mitschreiben

Energiedashboard

Da ich kein BKW habe, ist bei mir natürlich alles Bezug.

Du kannst auch die Suche bemühen, es gibt hier zig Themen darüber.

VG
Bernd

erstmal vielen Dank für die Antwort. leider scheine ich für die Suche nicht die richtigen Worte gefunden zu haben.
Das sagt mein Tasmoto:
image
Leider kommt es so nicht im HA an.
Da kommt es so an:


Im HA ist also der Sensor “SM 1_8_0 5658674.80013” derjenige, der mir den Zählerstand angibt.
Wenn ich jetzt wissen will was ich gegenüber dem Netzbetreiber an Strom Eeinheiten bezahlen muss, ist das der einzige Sensor, der mir die notwendigen Daten liefert.

Wenn ich also Wissen will wieviel KWH muss ich für die Zeit von 11 Uhr bis 12 Uhr bezahlen, müsste ich ja den 12 Uhr Wert nehmen , davon den 11 Uhr Wert abziehen und als Ergebnis die abgerechneten KWH haben. diesen Wert möchte ich dann im Energiedashboard anzeigen lassen.

Wenn ich das jetzt adaptiere:

homeassistant:
  customize_glob:
    sensor.hichi_sma_zahler_sml_total_kwh:
      unique_id: StromSteinbekerStr12OGVerbrauch
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      last_reset: 1970-01-01T00:00:00+00:00

in

homeassistant:
  customize_glob:
    sensor.tasmota_sm_1_8_0:
      unique_id: netzstrom
      unit_of_measurement: "kWh"
      device_class: energy
      state_class: total_increasing
      last_reset: 1970-01-01T00:00:00+00:00

müsste es dann funktionieren ?

Total Increase habe ich verstanden addierte die Werte, dann käme ja unfug heraus.

Das Script mit dem du den Zähler ausliest, liefert den Bezug in Wh. Du solltest das Script so anpassen, dass der Wert direkt in kWh mit z.B. 3 Nachkommastellen ausgegeben wird.
Mit deinem customize oben machst du aus den Wh des Tasmota einfach kWh, haust dir also einen Fehler mit Faktor 1000 rein.
Wenn du den sensor.tasmota_sm_1_8_0 im Energy-Dashnoard bei Bezug einträgst, dann berechnet es dir automatisch den Verbrauch für Stunde, Tag, Woche, Monat. Dort kannst du auch den Strompreis hinterlegen, wobei hier die kleinste anzeigbare Zeiteinheit Tag ist.
Wenn du ihn also nur sehen willst, dann reicht dir das.

Den Einheitenfehler mal unberücksichtigt gelassen. Zeigt er mir den Wert des Zählerstandes als Verbrauch an:


Das scheint nicht zu funktionieren

Ja, jetzt im ersten Moment schon. Warte mal den nächsten Stundenwechsel ab, dann wird nur das Delta ausgegeben.
Du kannst auch mal in den Entwicklerwerkzeugen → Statistik nachsehen, ob bei deinem Sensor ein Problem vorliegt.

vielen Dank , das geht jetzt in dir richtige Richtung.

Jetzt bekomme ich regelmäßig folgende Fehlermeldung:

auch der Riemansche Helfer zur Umwandlung von Wh in KWh funktioniert nicht:


bzw. ich kann ihn nicht im Energie Dashboard auswählen:

hast du da noch einen Tip für mich ?

Wh in kWh wandelst du nicht mit dem Riemann um. Der ist nur für Einheiten ohne Zeitbezug Notiz, also für zB. W.

Wh in kWh ist Wh/1000. Das kannst du mit Hilfe eines Template Sensor berechnen lassen.

hmm


      - name: "Netzbetreiber Strom kWh"
        unique_id: "netpower_kwh"
        unit_of_measurement: "kWh"
        device_class: power
        state_class: measurement
        value_template: "{{ states('sensor.tasmota_sm_1_8_0') | float / 1000 }}"

kann ich im Dashboard auch nicht auswählen, da muss noch ein Fehler drin sein

Deine Angeben passen nicht zusammen.
Ein Sensor mit der aktuellen Leistung in Watt braucht die device_class “power” und die state class “measurement”

Die aktuelle Leitung wäre der sensor.tasmota_sm_16_7_0

Du zeigst in deinem Code-Block aber den sensor.tasmota_sm_1_8_0.
Das ist der Zählerstand in Wh, bzw. wenn du das Script bearbeitet hast in kWh.
Hierzu gehören die device_class energy und die state_class total_increasing.

Da der Sensor die device_class power hat, kannst du ihn im Energydashboard auch nicht einfügen, da dort nur Energiesensoren rein dürfen.

Korrigiere erst mal die genannten Attribute und prüfen dann abschließend in den Entwicklerwerkzeugen → Statistik, ob bei dem Sensor ein Problem vorliegt und korrigiere es gegebenenfalls.

Danke für das feedback.
Der sensor.tasmota_sm_16_7_0 liefert die Aktuelle Leistung , die hilft mir ja nicht, weil die mal positiv und mal negativ ist. Ich möchte nur den Strom, sehen den ich bezahlen muss. Daher die Referenz auf den Zählerstand.

Den hatte ich in Wh auch schon erfolgreich eingebunden, allerdings ging er nach einem Tag nicht mehr.

Folgenden Zähler habe ich vor gut 1 Std eingebaut:

  - sensor:        
      - name: "TotalPower"
        device_class: energy
        unique_id: "totalpower_kwh"
        state_class: total_increasing

Den kann ich auch im Energie Dashboard auswählen.

Der bringt mir jetzt folgenden Fehler:

Nach deiner Info habe ich es wie folgt umgebaut:’

  - sensor:        
      - name: "TotalPower"
        unique_id: "totalpower_kwh"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        value_template: "{{ states('sensor.tasmota_sm_1_8_0') | float / 1000 }}"

in der Statistik ist er nicht enthalten.

image

ich habe jetzt dazu folgende Fehlermeldung:

invalid config for ‘template’ at configuration.yaml, line 81: required key ‘state’ not provided Invalid config for ‘template’ at configuration.yaml, line 85: ‘value_template’ is an invalid option for ‘template’, check: sensor->0->value_template

Schau dir den Sensor mal in den Entwicklerwerkzeugen → Zustand an, ob er einen Wert hat oder unknown/unavailable ist.

da ist er gar nicht:


Der wird scheinbar gar nicht geladen.

Wo erstellst du den sensor denn?
In der configuration.yaml direkt, in einer ausgelagerten template.yaml, in einer ausgelagerten sensor.yaml. Falls ausgelagert, sind die Dateien auch in der configuration.yaml eingebunden?

Nach Änderungen am Sensor hast du HA aber auch neu gestartet?

Poste vielleicht mal den ganzen Code, anstatt nur dem Ausschnitt.

Meine Config.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

template:
  - sensor:
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfeuchtigkeit in Gramm pro Kubikmeter
      - name: "Absolute Luftfeuchtigkeit Sportkeller"
        unique_id: "AbsoluteHumiditySK"
        unit_of_measurement: "g/m^3"
        state_class: "measurement"
        state: > 
            {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.wz_temperature_humidity_temperatur'))+236.25)))*100/(461.66*(float(states('sensor.wz_temperature_humidity_temperatur'))+273.15)) * float(states('sensor.wz_temperature_humidity_luftfeuchtigkeit'))/100 | float) | round (2) }}
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur außen die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
      - name: "Absolute Luftfeuchtigkeit außen"
        unique_id: "AbsoluteHumidityOutside"
        unit_of_measurement: "g/m^3"
        state_class: "measurement"
        state: >
            {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.dr_temperatursensor_temperatur'))+236.25)))*100/(461.66*(float(states('sensor.dr_temperatursensor_temperatur'))+273.15)) * float(states('sensor.dr_temperatursensor_luftfeuchtigkeit'))/100 | float) | round (2) }}
    # Errechnet den Untschied der Luftfeuchte von innen und außen in Gramm pro Kubikmeter
      - name: "Absolute Luftfeuchtigkeit Unterschied Sportkeller"
        unique_id: "AbsoluteHumidityDifferenceSK"
        unit_of_measurement: "g/m^3"
        state_class: "measurement"
        state: >
            {{ ( float(states('sensor.absolute_luftfeuchtigkeit_sportkeller')) - float(states('sensor.absolute_luftfeuchtigkeit_aussen')) ) | float | round (2) }}
    # Errechnet aus der relativen Luftfeuchtigkeit und Temperatur im Innenraum die absolute Luftfreuchtigkeit in Gramm pro Kubikmeter
      - name: "Absolute Luftfeuchtigkeit Trockenkeller"
        unique_id: "AbsoluteHumidityTK"
        unit_of_measurement: "g/m^3"
        state_class: "measurement"
        state: > 
            {{ ( 1000*e**(19.016-(4064.95/(float(states('sensor.tk_wemos_lufttemperatur_tk_lufttemperatur'))+236.25)))*100/(461.66*(float(states('sensor.tk_wemos_lufttemperatur_tk_lufttemperatur'))+273.15)) * float(states('sensor.tk_wemos_lufttemperatur_tk_luftfeuchte'))/100 | float) | round (2) }}

  - sensor:
      - name: "Battery Power In"
        unique_id: "battery-power-in"
        unit_of_measurement: "kWh"
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solarbank_e1600_akkuleistung')|float(0) >= 0 %}
            {{ states('sensor.solarbank_e1600_akkuleistung') /1000 }}
          {% else %}
            0
          {% endif %}
        availability: "{{ states('sensor.solarbank_e1600_akkuleistung')|is_number }}"

  - sensor:
      - name: "Battery Power Out"
        unique_id: "battery-power-out"
        unit_of_measurement: "kWh"
        device_class: power
        state_class: measurement
        state: >
          {% if states('sensor.solarbank_e1600_akkuleistung')|float(0) < 0 %}
            {{ states('sensor.solarbank_e1600_akkuleistung')|float(0)|abs /1000}}
          {% else %}
            0
          {% endif %}
        availability: "{{ states('sensor.solarbank_e1600_akkuleistung')|is_number }}"

  - sensor:        
      - name: "TotalPower"
        unique_id: "totalpower_kwh"
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        value_template: "{{ states('sensor.tasmota_sm_1_8_0') | float / 1000 }}"   
     

notify:
  - name: WhatsApp Martin
    platform: rest
    resource: https://api.callmebot.com/whatsapp.php
    data:
      source: HA
      phone: +491xxxxx2   #enter your phone number here
      apikey: 8x       #enter your apikey here (see Setup above)

  - name: WhatsApp Ulrike
    platform: rest
    resource: https://api.callmebot.com/whatsapp.php
    data:
      source: HA
      phone: +49xxxxx1   #enter your phone number here
      apikey: 83xx1        #enter your apikey here (see Setup above)

mqtt:
  sensor:
    - name: "Mi Boxer Bright"
      unique_id: "mi_boxer_bright"
      state_topic: "zigbee2mqtt/Fernbedienung_0x94deb8fffec53de1"
      value_template: "{{ value_json.action_level |int }}"

    - name: "Mi Boxxer Group"
      unique_id: "mi_boxer_group"
      state_topic: "zigbee2mqtt/Fernbedienung_0x94deb8fffec53de1"
      value_template: "{{ value_json.action_group |int }}"

http:
  cors_allowed_origins:
    - https://google.com
    - https://www.home-assistant.io
  ip_ban_enabled: true
  login_attempts_threshold: 5
  use_x_forwarded_for: true
  trusted_proxies:
    - xxxx
    

ich lade nicht nur die Configs neu, sondern starte die ganze Instanz neu

habe es gefunden:

habe Value Template durch State ersetzt. die Fehlermeldung kommt nicht mehr und der Sensor wird erkannt.

 value_template: "{{ states('sensor.tasmota_sm_1_8_0') | float / 1000 }}"  
 state: "{{ states('sensor.tasmota_sm_1_8_0') | float / 1000 }}"  

hat auch den richtigen Wert