der Winter steht vor der Tür und nach einem Blick in den Pelletsbunker war klar, da müssen bald neue her. Preissuche bei heizpellets24, bestellt, fertig. Dann kam der Gedanke die Daten, samt Statistik in HA als Integration anzeigen zu lassen. Bei der Einrichtung PLZ, Menge etc. eingeben, fertig. Herausgekommen ist das
Bei Interesse am Code, gerne melden. Wenn das Interesse größer ist, kann ich es auch auf Github und HACS hochladen. Und nein, ich habe nichts am Hut mit Heizpellets24 - ist einfach nur meine Datenbasis
Gruß
Holger
Bei mir sieht es so aus. Ist halt nicht so ganz einfach, ich “scrape” die Daten von einer Webseite und habe mir diverse Sensoren gebastelt.
####################################################
# #
# Pelletpreise für 2,2 T. #
# #
####################################################
- platform: rest
name: "Pelletpreis 2.2T Mannheim"
unique_id: pelletpreis_mannheim_68219_v2
resource: https://www.heizpellets24.de/api/site/1/prices/best?amount=2200&productId=20&zipCode=68219
scan_interval: 3600
device_class: monetary
state_class: measurement
unit_of_measurement: "€"
value_template: >
{% if value_json is defined and value_json.Price is number %}
{{ (value_json.Price | float(0) * 2.2) | round(2) }}
{% else %}
{# Fallback auf den letzten bekannten Status #}
{{ states('sensor.pelletpreis_2_2t_mannheim') }}
{% endif %}
json_attributes:
- Change
- DateTime
- Price
Ihr müsstet halt Eure ZIPCODE und AMOUNT eintragen. Für mich hier im MA funktioniert das. Am Ende bestelle ich eh immer über ECKERT, weil ich damit die beste Erfahrung gemacht habe.
PS: Ich hatte den Code in einer externen “SENSOR.YAML” liegen. In einer externen “REST.YAML” würde es so aussehen. Habe ich eben geändert, weil es besser ist, bzw. die neue Art es zu implementieren.
# Ganz oben oder auf der Hauptebene der configuration.yaml
rest:
- resource: https://www.heizpellets24.de/api/site/1/prices/best?amount=2200&productId=20&zipCode=68219
scan_interval: 3600
sensor:
- name: "Pelletpreis 2.2T Mannheim"
unique_id: pelletpreis_mannheim_68219_2_2t
device_class: monetary
state_class: measurement
unit_of_measurement: "€"
value_template: >
{% if value_json is defined and value_json.Price is number %}
{{ (value_json.Price | float(0) * 2.2) | round(2) }}
{% else %}
unavailable
{% endif %}
availability: >
{{ value_json is defined and value_json.Price is number }}
json_attributes:
- Change
- DateTime
- Price
Hi,
sorry für die späte Rückmeldung. Ich “durfte” leider einige Zeit im Krankenhaus verbringen.
Hier der Link zu meinem Google Drive Ordner: Pelletpreise
Bei Fragen, einfach fragen
Gruß Holger
Hallo @lintux
leider funktioniert der Link zum Google Drive-Ordner nicht…
könntest Du mir den Code zukommen lassen?
Zusatzfrage: lassen sich auch bestimmte Händler abfragen?
VG Michael
Edit:
Die ID der beiden Händler habe ich, konnte bisher nur noch keinen Abruf generieren.
Hi,
sorry für die späte Rückmeldung.
Ich habe die Integration neu gebaut und erweitert.
Die Marktpreise für Holzpellets werden wieder von heizpellets24.de geholt — wahlweise für Deutschland insgesamt oder für eines der 16 Bundesländer, lose Ware und Sackware getrennt.
Die Preise verstehen sich inklusive Mehrwertsteuer und Lieferung. Bezugsgröße der Quelle ist eine Gesamtabnahme von 6.000 kg; der Gesamtpreis wird von dort linear auf eure Menge hochgerechnet. Das ist eine Größenordnung, kein Angebot — echte Preise sind mengenabhängig. Der Sensor schreibt das auch in seine Attribute.
Feiner als Bundesland geht es nicht. Eine Postleitzahl frage ich bewusst nicht ab: die Quelle liefert auf ihren öffentlichen Seiten keine PLZ-genauen Preise, und ein Eingabefeld ohne Wirkung würde nur eine Genauigkeit vortäuschen, die es nicht gibt.
Ändert die Website ihr Format, werden die Sensoren nicht verfügbar und im Protokoll steht, welcher Teil gefehlt hat. Einen Ersatz- oder Altwert gibt es bewusst nicht — ein falscher Preis wäre schlimmer als gar keiner.
Abgerufen wird alle 12 Stunden, eine Anfrage je Region. Fertige Dashboard-Karten zum Kopieren liegen im Repo unter dashboard/.
Wie funktioniert es denn mit der Pauschale? Wie wird die gerechnet?
Schön wäre, wenn ein einzelner Händler berücksichtigt werden könnte. Ich z. B. bestelle eigentlich immer bei Eckhardt GmbH, egal wie der Preis ist. Nur beste Erfahrung mit denen gemacht
Deine Frage nach „höchstem und niedrigstem Preis" lässt sich auf
drei Arten lesen. Zwei davon habe ich gebaut — Extremwerte über die Zeit und
der Vergleich zwischen den Bundesländern. Die dritte wäre die spannendste: die
Spanne der tatsächlichen Händlerangebote, also was der günstigste und der
teuerste Anbieter gerade verlangt, samt der jeweiligen Einblaspauschale.
Die kann ich leider nicht liefern, liegen hinter gesperrten Endpunkten in der robots.txt
Update wird über HACS angezeigt.
Bei Fragen, einfach fragen
Holger