Home assistant sensor unavailable

Voor discussies en hulp met je smarthome en automatisering kan je hier terecht. DE plaats voor alles over home assistant, Philips hue, Zigbee, Sonoff, ...
Plaats reactie
Gebruikersavatar
conda
Starter Plus
Starter Plus
Berichten: 46
Lid geworden op: 12 dec 2020, 13:56
Bedankt: 1 keer

Hoi,

Ik zit momenteel even vast met een sensor en zie niet waar ik de mist in ben gegaan.
De bedoeling is om een sensor te maken dat de waarde van een multiscrapesensor neemt en daar een berekening op maakt.

De multiscrape sensor werkt en is de volgende:

- resource: https://www.engie.be/nl/energie/elektri ... eters-gas/
scan_interval: 3600
sensor:
- unique_id: engie dutch ttf gas
name: Engie dutch TTF gas
select: ".table_col5 > div:nth-child(2) > div:nth-child(5) > span:nth-child(2) > div:nth-child(1) > p:nth-child(1)"
unit_of_measurement: "EUR/MWh"

Wat ik zou willen doen is deze waarde nemen en hierop een prijsformule toepassen in een nieuwe sensor.

Voorlopig ziet deze er zo uit (maar geeft de waarde unavailable weer):
- platform: template
sensors:
## Engie gas price
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '{{ ((((states("sensor.engie_dutch_ttf_gas") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'

Technisch werkt de sensor en de formule als ik s"ensor.engie_dutch_ttf_gas" vervang door eender welke andere bestaande sensor, bijvoorbeeld die van de epex spot prijs of zo.

Deze sensor zou de waarde van een multiscrape sensor moeten nemen, maar geeft enkel de waarde unavailable weer ipv de berekening.
Ik stap over op dynamische prijzen vanaf 18 maart en voor elektriciteit heb ik het werkende, maar voor gas nog niet. Als ik deze voor gas ook werkende krijg, dan moet ik niet elke maand de nieuwe prijs in mijn dashboard ingeven om mijn verbruik te tracken, dan gaat het automatisch en dat is het einddoel.
Ik zit dus enkel vast met de prijs van gas, gezien deze van een multiscrapesensor komt.

Heeft iemand een idee waar het mis gaat of wat ik moet veranderen?
liber!
Elite Poster
Elite Poster
Berichten: 981
Lid geworden op: 09 apr 2006, 17:48
Twitter: nathan_gs
Uitgedeelde bedankjes: 277 keer
Bedankt: 97 keer
Te Koop forum

Wat zie je als je de Developer Tools van Home Assistant bekijkt? En zeker de Template tab.
Gebruikersavatar
conda
Starter Plus
Starter Plus
Berichten: 46
Lid geworden op: 12 dec 2020, 13:56
Bedankt: 1 keer

liber! schreef: 07 maa 2023, 08:32 Wat zie je als je de Developer Tools van Home Assistant bekijkt? En zeker de Template tab.
Had er nog niet bij stil gestaan dat ik dat daar even kon controleren. :lol:

Ik krijg de volgende boodschap:

ValueError: Template error: float got invalid input '52,2944' when rendering template '- platform: template
sensors:
## Engie gas price
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '{{ ((((states("sensor.engie_dutch_ttf_gas") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'' but no default was specified

Wellicht moet ik dit "float" veranderen door iets anders?
Gebruikersavatar
Joe de Mannen
Elite Poster
Elite Poster
Berichten: 6919
Lid geworden op: 22 feb 2005, 12:46
Uitgedeelde bedankjes: 523 keer
Bedankt: 673 keer
Provider

Ik ben alleen verantwoordelijk voor mij eigen uitspraken, niet voor wat anderen ervan maken of aan toevoegen...
Gebruikersavatar
conda
Starter Plus
Starter Plus
Berichten: 46
Lid geworden op: 12 dec 2020, 13:56
Bedankt: 1 keer

Joe de Mannen schreef: 07 maa 2023, 09:12 dit helpt misschien:

https://community.home-assistant.io/t/t ... ate/353198

J.
Tnx voor de link!
Ik bestudeer dit verder als ik wat meer tijd heb dan vandaag. 8)
Een snelle blik zegt me dat ik hier alvast wat van zal opsteken. :wink:

Toegevoegd na 3 minuten 21 seconden:
Mijn oog viel daarnet ook op het volgende:

ValueError: Template error: float got invalid input '52,2944' when rendering template '

De waarde die gescraped wordt van de website bevat een komma en geen punt.

De rest bevat punten ipv komma's. Zou dit de error niet veroorzaken?

value_template: '{{ ((((states("sensor.engie_dutch_ttf_gas") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'

Met andere woorden:

De waarde die sensor.engie_dutch_ttf_gas van de site scraped is '52,2944' en niet '52.2944' :bang:

Als ik de sensor sensor.engie_dutch_ttf_gas vervang door een andere sensor met een waarde met een punt, dan werkt het wel.
Het wordt denk ik zoeken naar hoe de waarde omzetten naar een waarde met een punt ipv komma. :cry:

Toegevoegd na 12 minuten 34 seconden:
Als ik

value_template: '{{ ((((states("sensor.engie_dutch_ttf_gas") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'

verander in

value_template: '{{ ((((states("sensor.engie_import_spot_price_ct_per_kwh") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}


sensors:
## Engie gas price
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '{{ ((((states("sensor.engie_import_spot_price_ct_per_kwh") | float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'' but no default was specified


Dan geeft hij wel een waarde:

sensors:
## Engie gas price
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '13.9'' but no default was specified

Toegevoegd na 32 minuten 4 seconden:
Ik heb het gevonden! :banana:

sensors:
## Engie gas price
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '16.84'' but no default was specified


Ik heb het volgende toegevoegd in de value template!
|replace(",", ".")

## Engie gas price (werkt niet)
engie_flow_gas_price_ct_per_kwh:
friendly_name: Engie Flow gas price ct/kWh
unit_of_measurement: ct/kWh
value_template: '{{ ((((states("sensor.engie_dutch_ttf_gas") |replace(",", ".")| float / 10 | round (2)) + (1.80 | float)) * 1.06) + (9.38) + (((9.03 * 12)/365)/24)) | round (2)}}'

Tnx guys! Ook al heb ik het zelf gevonden, jullie suggesties hebben me naar de oplossing gebracht!

De uiteindelijke "clue" heb ik hier gevonden: https://jinja.palletsprojects.com/en/la ... s.replace

Die link staat bij developers tools / Template

jinja-filters.replace(s: str, old: str, new: str, count: Optional[int] = None) → str
Return a copy of the value with all occurrences of a substring replaced with a new one. The first argument is the substring that should be replaced, the second is the replacement string. If the optional third argument count is given, only the first count occurrences are replaced:

voorbeeld:

{{ "Hello World"|replace("Hello", "Goodbye") }}
-> Goodbye World

{{ "aaaaargh"|replace("a", "d'oh, ", 2) }}
-> d'oh, d'oh, aaargh

Case closed! :cop:

"Feel free to copy" voor je eigen Home assistant!

Nu kan ik naast de dynamische elektriciteitsprijzen, ook de dynamische gasprijzen automatisch tracken in Home assistant en moet ik deze niet meer elke maand ingeven! :angel:

Nog enkel omzetten naar prijs per M³ en "Off to the races!" :beerchug:
Plaats reactie

Terug naar “Home automation en domotica”