Op de Ecopower website staat een pagina Prijs voor groene burgerstroom met daarop de energiekost, die kunnen we automatisch inlezen in Home Assistant met de Scrape integration.
In dit stukje HTML vond ik de maandprijzen:
<div class='card-text'>
<p><br></p>
<h6>
<strong>AFNAMEPRIJS APRIL 2023: 0,1684 EURO/KWH<br></strong>
<strong>AFNAMEPRIJS MAART 2023: 0,1713 EURO/KWH<br></strong>
<strong>AFNAMEPRIJS FEBRUARI 2023: 0,1879 EURO/KWH</strong>
</h6>
<h6>
<strong><br></strong>
</h6>
<h6></h6>
<h6>
<strong>Terugleververgoeding: 0,11 euro/kwh</strong>
</h6>
</div>
Om de afnameprijs van de meest recente maand in te lezen gebruikte ik deze code in configuration.yaml:
scrape:
- resource: https://www.ecopower.be/groene-stroom/prijs-nieuw
scan_interval: 3600
sensor:
- name: Ecopower energieprijs
select: ".card-text h6 strong"
index: 1
value_template: '{{ value.split(" ")[3] | replace (",", ".") | float }}'
unit_of_measurement: "€/kWh"
De resource is de URL naar de webpagina. Het scan_interval van 3600 seconden vraagt elk uur de gegevens op.
De select zorgt er voor dat de scraper in de HML op zoek gaat naar een strong element dat in een h6 element staat wat op zich in een element van class card-text staat.
Omdat de scraper meerdere van die strong elementen zal vinden selecteren we met index de eerste.
In het value_template splitsen we de gevonden string uit in items (gescheiden door spatie):
['AFNAMEPRIJS', 'APRIL', '2023:', '0,1684', 'EURO/KWH<br>']
Daarvan selecteren we het vierde item met [3] (omdat indexering op 0 start) en vervangen we met replace de komma door een punt om het vervolgens te typeren als een float.
Na een restart van Home Assistant zou je de waarde moeten zien verschijnen.
Als Ecopower de HTML code of de URL van de pagina wijzigt gaat dit natuurlijk niet meer werken. Check dan zeker de Scrape integration documentatie en de Scrape Sensor in Home Assistant – Extract Info From Websites video van Will Surridge.
Tip: als je een ISO8601 datum van een website haalt (bv. 2023-06-10T17:48:20.941+02:00), gebruik dan dit value template: {{value|as_datetime}}
Held!
Ik heb de value_template geupdate naar “{{ value.split(“:”)[1].split(” “)[1] | replace (“,”, “.”) }}”. Dan werkt het voor hoe de pagina nu geformateerd is.
Top, Bedankt voor de aanvulling. Ik had het al voorspeld in de laatste paragraaf dat het eens ging veranderen, dat is het nadeel van scraping 🙂
Ik weet niet of het het aan mij ligt, maar heb de index op 0 moeten zetten om de laatste prijs weer te geven. We zullen zien hoe het evolueert de komende dagen
owkey… En na de prijsaanpassing van deze maand, heb ik de index terug op 1 moeten zetten … vreemd geval
Let op: dit is maar een onderdeel van de kostprijs. Je moet hierbij nog de GSC, WKK, het afnametarief, heffingen en BTW rekenen. Je komt dan ruwweg 2x hoger uit. Dit naast de vaste kosten, natuurlijk.
Is er al een andere manier om de prijzen in te lezen van Ecopower in home assistant?
Mvg
Benjamin