Home Assistant - Total increasing geeft soms totaal waarde

Pagina: 1
Acties:

Vraag


  • le__rio
  • Registratie: December 2020
  • Laatst online: 07-10 13:07
Ik heb sinds een tijdje mijn stadswarmte unit doormidden van de p1 poort verbonden met een smartgateway. Vanaf daar wordt de totale waarde verzonden met mqtt naar mijn raspberry pi met home Assistant.

Die waarde pak ik op met een sensor. Daarnaast heb ik een tweede sensor gemaakt die de waarde omzet van Gj naar m3 zodat ik dit kan gebruiken in mijn energie dashboard.

Dit gaat vaak goed, maar af en toe toont deze tweede sensor (StadswarmteM3) ineens niet de Total increasing (delta) waarde, maar de totale stand.

Kan iemand mij op weg helpen?
Vooral het feit dat dit op willekeurige tijden gebeurt begrijp ik niet

Afbeeldingslocatie: https://tweakers.net/i/VcyBa8P_0fI7fLWWM145dte4-is=/800x/filters:strip_icc():strip_exif()/f/image/sux8Qdo7CWEfTNOnRl8XyfE4.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/ldIiTQuydi_uvHZubijW9Wu0Q0c=/800x/filters:strip_icc():strip_exif()/f/image/5dYhh3ofeOX5mqJOgBGHierh.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/IPXkzccsJSSiW_6n3NFNTC3ERTM=/x800/filters:strip_icc():strip_exif()/f/image/rkUoOjAbqwjt2TYAsQxEHn63.jpg?f=fotoalbum_large

Beste antwoord (via le__rio op 25-04-2024 12:49)


  • Gameboy
  • Registratie: April 2000
  • Laatst online: 21:54
Dit gebeurt wanneer de waarde van je "sensor.StadswarmteGJ" niet kan worden uitgelezen, door welke oorzaak dan ook.

Dan wordt de state "Unknown" of "Unavailable" (een tekst van het type "String"), en dat kan niet door het "float" filter worden vertaald naar een getal. Dan wordt de default-waarde "0" teruggeven, zoals je hebt opgegeven bij dat "float" filter (de 0 tussen haakjes is de default die je wilt meegeven als er anders geen goede waarde uit komt.

Een entity met state_class "total_increasing" berekent het verbruik altijd als het verschil tussen 2 opeenvolgende metingen. En als je begint met een waarde van 0, dan is de eerstvolgende meting die weer de juiste stand teruggeeft, een delta die even groot is als de totaalstand die de sensor bijhoudt.

Je zult dus op zoek moeten gaan naar de oorzaak van de missende data, of je zult in je template-sensor rekening moeten houden met deze situatie. Bijvoorbeeld door de "(0)" weg te laten bij het "float" filter.

Dan krijg je wel fouten in de logs waarschijnlijk, maar dat is mogelijk te verkiezen boven deze uitschieters die hierdoor ontstaan...

[ Voor 14% gewijzigd door Gameboy op 05-04-2024 20:35 ]

6x 405 Wp Oost, 6x 405 Wp West | Zonneplan Day-Ahead | 1x Sessy 5 kWh

Alle reacties


Acties:
  • Beste antwoord

  • Gameboy
  • Registratie: April 2000
  • Laatst online: 21:54
Dit gebeurt wanneer de waarde van je "sensor.StadswarmteGJ" niet kan worden uitgelezen, door welke oorzaak dan ook.

Dan wordt de state "Unknown" of "Unavailable" (een tekst van het type "String"), en dat kan niet door het "float" filter worden vertaald naar een getal. Dan wordt de default-waarde "0" teruggeven, zoals je hebt opgegeven bij dat "float" filter (de 0 tussen haakjes is de default die je wilt meegeven als er anders geen goede waarde uit komt.

Een entity met state_class "total_increasing" berekent het verbruik altijd als het verschil tussen 2 opeenvolgende metingen. En als je begint met een waarde van 0, dan is de eerstvolgende meting die weer de juiste stand teruggeeft, een delta die even groot is als de totaalstand die de sensor bijhoudt.

Je zult dus op zoek moeten gaan naar de oorzaak van de missende data, of je zult in je template-sensor rekening moeten houden met deze situatie. Bijvoorbeeld door de "(0)" weg te laten bij het "float" filter.

Dan krijg je wel fouten in de logs waarschijnlijk, maar dat is mogelijk te verkiezen boven deze uitschieters die hierdoor ontstaan...

[ Voor 14% gewijzigd door Gameboy op 05-04-2024 20:35 ]

6x 405 Wp Oost, 6x 405 Wp West | Zonneplan Day-Ahead | 1x Sessy 5 kWh


  • le__rio
  • Registratie: December 2020
  • Laatst online: 07-10 13:07
Beste Gameboy,

Bedankt voor je tips en uitleg over de werking, dit helpt een hoop.
En je hebt gelijk, het gebeurt op het moment dat de ha herstart wordt door bv een update...

ik ga de code aanpassen en kijken of dat werkt, ik hou je op de hoogte!

  • le__rio
  • Registratie: December 2020
  • Laatst online: 07-10 13:07
Het aanpassen van de code, zoals Gameboy aangaf, heeft precies gedaan wat ik wilde, wij een herstart van ha wordt de waarde nu niet het totaal, maar gaat het dus goed.

voor de liefhebber, de code is nu:

YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mqtt:
  - sensor:
      name: "StadswarmteGJ"
      unique_id: "StadswarmteGJ"
      state_topic: "warmtelink/reading/thermal_delivered"
      unit_of_measurement: "GJ"

template:
  - sensor:
      - name: "StadswarmteM3"
        unique_id: "StadswarmteM3"
        unit_of_measurement: "m³"
        device_class: "gas"
        state_class: "total_increasing"
        state: "{{ states('sensor.StadswarmteGJ')|float * 32 }}"

[ Voor 0% gewijzigd door Septillion op 15-04-2024 12:32 ]


  • Septillion
  • Registratie: Januari 2009
  • Laatst online: 01:18

Septillion

Moderator Wonen & Mobiliteit
Of nog mooier:
YAML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
mqtt:
  - sensor:
      name: "StadswarmteGJ"
      unique_id: "StadswarmteGJ"
      state_topic: "warmtelink/reading/thermal_delivered"
      unit_of_measurement: "GJ"

template:
  - sensor:
      - name: "StadswarmteM3"
        unique_id: "StadswarmteM3"
        unit_of_measurement: "m³"
        device_class: "gas"
        state_class: "total_increasing"
        state: "{{ states('sensor.StadswarmteGJ')|float * 32 }}"
        availability: "{{ states('sensor.StadswarmteGJ')|is_number }}"


Hierdoor zal de 'StadswarmteM3' gewoon 'unavailable' gaan zolang de bron dat ook is of om een andere reden geen getal heeft. 'unavailable' (en 'unknown') hebben in HA een bijzondere status waardoor zaken in HA (incl het dashboard) gewoon snappen dat ze niets met de waarde moeten doen omdat het geen echte status is.