Heizöltank auslesen und Preis nach Inhalt berechnen

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Alexxx2005
Beiträge: 252
Registriert: 17.12.2014, 18:56
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von Alexxx2005 » 27.05.2015, 06:12

hm habe über das ganze WE und gestern nochmal probiert es
läuft bei mir nicht, kannst du mal dein aktuelles Script posten.

Danke, Grüße Alex

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von matze-pe » 28.05.2015, 07:29

Moin,
anbei mein aktuelles Skript, PLZ anpassen (meine ist 31228)

Bei mir gibt es in der HM eine Variabel "Heizoelfreiraum", von der ich meinen aktuellen Bestand auslesen.


Folgende Variabeln müssen erstellt werden

- Heizoelpreis (Zahl)
- Heizoelgesamtpreis (Zahl)


Viele Grüße
Dateianhänge
heizoelpreis.zip
(745 Bytes) 206-mal heruntergeladen
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Semenchkare
Beiträge: 64
Registriert: 31.08.2014, 19:48
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von Semenchkare » 28.05.2015, 20:05

Hallo Matze-PE,

vielen vielen Dank jetzt klappts, das hätte ich nie hinbekommen!
hoffentlich bleibt das ne weile...

Gruß

Seme
Viele Grüße

Seme

ccu3 Raspberrymatic 3.71.12.20231020,
Thermostate 8x HM-CC-RT-DN 105155 FW 1.4, Thermostat 1x HMIP-eTRV FW 1.6.3
Wandthermostat 1x HM-TC-IT-WM-W-EU FW 1.3
Tuer-Fensterkontakte 7x HM-Sec-SC-2 FW 1.2, Tuer-Fensterkontakt-optisch 1x HMIP-SWDO 1.10.7, Tuer-Fensterkontakt opt. HMIP-SWDO-I FW 1.14.0
Fenster-Drehgriffkontakt HMIP-SRH FW 1.0.1
Bewegungsmelder HM-Sec-MDIR-2 FW 1.6
Temperatur- Feuchtesensor aussen HM-WDS10-TH-O FW 1.3
Rauchmelder HM-Sec-SD FW 1.1, 2x HMIP-SWSD FW 1.0.11
Funk-Schaltaktor HM-LC-Sw1-FM FW 1.12, Funk-Schaltsteckdose HM-ES-PMSw1-Pl 2.5
Zusatzsoftware: CUXDaemon V. 2.11, E-Mail V. 1.7.6, XML API 1.22, hm_pdetect 1.16, Philips Hue 3.2.5

Alexxx2005
Beiträge: 252
Registriert: 17.12.2014, 18:56
Hat sich bedankt: 19 Mal
Danksagung erhalten: 3 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von Alexxx2005 » 28.05.2015, 23:24

Juhuu nun klappt es bei Super muß man im Link /2 einstellen
und beim Suchtext statt Standard, Super.

Jetzt ist noch die Frage der Gesamt und Einzelpreis wird ja
nach dem Aktuellen Freibestand berechnet meinetwegen 1225L
das sehe ich richtig oder.

Kann man z.b. sagen das er bei 1220 L auf 1000 L abrundet und
1600 L auf 1500 L usw. hast du da Skript mäßig eine Idee ?

Grüße Alex

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von matze-pe » 29.05.2015, 06:39

Kannst du mit der if Schleife lösen, ich habe dort ja auch if < 500L, dann bestand =500

Weil unter 500L gibt's bei Heizöl24 eine Fehlermeldung, da es die Mindestbestellmenge ist.

Das kannst du ja deinen Bedürfnissen anpassen


... mobil via tapatalk
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von ChristianF » 04.08.2015, 23:34

Hallo,

ich habe das Script auch mal rausgesammelt und versuche es zu verwenden, um die Leistungsdaten eines Solarwechselrichters abzufragen.
Das Gerät ist von SolarEdge und es gibt eine offene API dazu, die XML Files anbietet.

Nachdem ich endlich herausgefunden habe dass wget mit https und -q nur funktioniert wenn man --no-check-certificate verwendt (muss man, damit er sich überhaupt die Datei holt), wurden die Werte immernoch nicht befült.

Dies ist die tcl Datei:

Code: Alles auswählen

    load tclrega.so


    # Daten holen
    # ============

    set url "https://monitoringapi.solaredge.com/site/123456/overview?api_key=xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/solaredge/export.xml $url

    set f [open "/usr/local/addons/solaredge/export.xml"]
    set input [read $f]
    close $f


    # Werte aus XML Datei auslesen
    # =============================

    regexp "<lastUpdateTime>(.*?)</lastUpdateTime>" $input dummy currentv1;         
    regexp "<lastDayData><energy>(.*?)</energy></lastDayData>" $input dummy currentv2  ;         
    regexp "<lastMonthData><energy>(.*?)</energy></lastMonthData>" $input dummy currentv3  ;  
    regexp "<lastYearData><energy>(.*?)</energy></lastYearData>" $input dummy currentv4  ;  
    regexp "<lifeTimeData><energy>(.*?)</energy></lifeTimeData>" $input dummy currentv5  ;  
    regexp "<currentPower><power>(.*?)</power></currentPower>" $input dummy currentv6  ;  

    # Werte in Variabel schreiben
    # =============================

    set rega_cmd ""
    append rega_cmd "var w0 = dom.GetObject('SolarEdge-LastUpdateTime');"
    append rega_cmd "w0.State('$currentv1');"

    append rega_cmd "var w1 = dom.GetObject('SolarEdge-LastDayData');"
    append rega_cmd "w1.State('$currentv2');"

    append rega_cmd "var w2 = dom.GetObject('SolarEdge-LastMonthData');"
    append rega_cmd "w2.State('$currentv3');"

    append rega_cmd "var w3 = dom.GetObject('SolarEdge-LastYearData');"
    append rega_cmd "w3.State('$currentv4');"

    append rega_cmd "var w4 = dom.GetObject('Solaredge-LifeTimeData');"
    append rega_cmd "w4.State('$currentv5');"

    append rega_cmd "var w5 = dom.GetObject('SolarEdge-CurrentPower');"
    append rega_cmd "w5.State('$currentv6');"	
	
	
    rega_script $rega_cmd

Ich habe daraufhin versucht, mit tclsh auf der Shellebene die Datei manuell auszuführen und bekam als Antwort:

Code: Alles auswählen

# tclsh solaredge.tcl
can't read "currentv1": no such variable
    while executing
"append rega_cmd "w0.State('$currentv1');""
    (file "solaredge.tcl" line 30)
Es scheint also irgendwas an der Variablendefinition falsch zu sein. Habe alles nochmal doppelt gecheckt, finde aber keinen Fehler. Hat jemand eine Idee?

Danke und viele Grüße
Christian

PS: Hier der Inhalt der export.xml:

Code: Alles auswählen

<overview><lastUpdateTime>2015-06-16 19:18:50</lastUpdateTime><lifeTimeData><energy>1438728.0</energy></lifeTimeData><lastYearData><energy>1345308.8</energy></lastYearData><lastMonthData><energy>712419.56</energy></lastMonthData><lastDayData><energy>32804.85</energy></lastDayData><currentPower><power>681.0</power></currentPower></overview>
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

Tourt
Beiträge: 29
Registriert: 20.11.2013, 11:33
Hat sich bedankt: 8 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von Tourt » 05.08.2015, 10:47

Danke Matze-PE für diesen Beitrag. Super Arbeit.

Ich habe das Skript ein bißchen abgewandelt. Denn nicht jeder hat einen Ölstandsanzeiger an seinem Tank geklemmt und nicht jeder will vielleicht den Tank immer vollfahren. In meinem Fall habe ich das Skript zur "Ganzzahl" geändert:

Code: Alles auswählen

load tclrega.so

# Variablen: Heizoelpreis Zahl
# Menge an Anführungszeichen angleichen

  set bestellmenge "1000"



# Aufruf und Erstellung der Datei
# =============================== 
set url https://www.heizoel24.de/oelbestellung/XXXX/1/$bestellmenge/1/6,5,24,11,9/0/58,00
exec /usr/bin/wget --no-check-certificate -q -O /usr/local/addons/heizoel/heizoelpreis.html $url

set f [open "/usr/local/addons/heizoel/heizoelpreis.html"]
set input [read $f]
close $f


# Werte aus Datei auslesen
# ========================

regexp "Standard Schwefelarm für unschlagbare (.*?)€ " $input dummy preis ;
regexp "ich voll für nur (.*?)€." $input dummy gpreis  ;


# Werte in Variabel schreiben
# =============================
set rega_cmd ""

append rega_cmd "var w0 = dom.GetObject('Heizoelpreis');"
append rega_cmd "w0.State('$preis');"

append rega_cmd "var w1 = dom.GetObject('Heizoelgesamtpreis');" 
append rega_cmd "w1.State('$gpreis');"


rega_script $rega_cmd
XXXXX natürlich mit der Postleitzahl angleichen

In meinem Fall habe ich den 100 ltr. Preis gelassen ( wird auch so beim Händler verhandelt ), und die Variablen als Zeichenkette angelegt.
Vorteil hier ist auch, das die Nachkommerstellen angezeigt werden.
Denn: 5 EUR durch Nachkommastellen sparen = 2 Stücke Fleich aufm Grill 8) :D
Sieht dann bei mir so aus:
Bild

Ich seh es aber wie Semenchkare, hoffentlich bleibt es ne Weile und Heizöl24 fummelt nicht an der Homepage rum.

Gruß
Tourt
Gruß
Tourt

--------------------------------------------
63 Kanäle in 29 Geräten und 24 CUxD-Kanäle in 7 CUxD-Geräten:
1x HM-RC-8, 1x CUX32, 1x HM-Sen-MDIR-O-2, 6x CUX28, 1x HM-PB-2-WM55-2, 1x HM-LC-Sw2-FM, 2x HM-LC-Sw1-FM, 1x HM-LC-Sw4-SM, 3x HM-Sec-SD, 7x HM-Sec-SC, 1x HM-SCI-3-FM, 1x HM-Sen-DB-PCB, 2x HM-CC-RT-DN, 2x HM-Sec-SC-2, 1x HM-Sec-SD-Team, 2x HM-SwI-3-FM, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

ChristianF
Beiträge: 395
Registriert: 27.06.2014, 21:50

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von ChristianF » 08.08.2015, 23:10

ChristianF hat geschrieben: (...)

Ich habe daraufhin versucht, mit tclsh auf der Shellebene die Datei manuell auszuführen und bekam als Antwort:

Code: Alles auswählen

# tclsh solaredge.tcl
can't read "currentv1": no such variable
    while executing
"append rega_cmd "w0.State('$currentv1');""
    (file "solaredge.tcl" line 30)
Es scheint also irgendwas an der Variablendefinition falsch zu sein. Habe alles nochmal doppelt gecheckt, finde aber keinen Fehler. Hat jemand eine Idee?

Danke und viele Grüße
Christian

PS: Hier der Inhalt der export.xml:

Code: Alles auswählen

<overview><lastUpdateTime>2015-06-16 19:18:50</lastUpdateTime><lifeTimeData><energy>1438728.0</energy></lifeTimeData><lastYearData><energy>1345308.8</energy></lastYearData><lastMonthData><energy>712419.56</energy></lastMonthData><lastDayData><energy>32804.85</energy></lastDayData><currentPower><power>681.0</power></currentPower></overview>
Habe das Problem zwischenzeitlich lösen können. Der Aufruf über wget ist ein anderer als über den Browser. Daher habe ich über wget immer ein JSON File statt eines XMLs bekommen. Seitdem das Script micht "echtem" XML gefüttert wird, klappt es perfekt.. nur, bis ich das rausgefunden hatte... :o aber wget -v hilft :)
370 Kanäle in 119 Geräten und 22 CUxD-Kanäle in 18 CUxD-Geräten, dazu ioBroker und diverse weitere eingebundene Systeme, vom 433MHz Bewegungsmelder bis hin zur Wallbox.

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von matze-pe » 12.10.2015, 10:22

Hallo zusammen,
am 12.08.2015 23:15 hat heizoel24.de seinen Quellcode geändert, und ich finde die Preise nicht mehr im aktuellen Quellcode.

Hat jemand eine aktuelle Quelle?
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

Tourt
Beiträge: 29
Registriert: 20.11.2013, 11:33
Hat sich bedankt: 8 Mal
Danksagung erhalten: 1 Mal

Re: Heizöltank auslesen und Preis nach Inhalt berechnen

Beitrag von Tourt » 12.10.2015, 10:31

Hallo matze-pe.

Ich habe lange gesucht, meine wichtigste Zeile im Skript ist diese:

Code: Alles auswählen

https://www.heizoel.total.de/bestellung/?zip_code=XXXXX&quantity=$bestellmenge&num_deliveries=1&submitButton=Berechnen
Das ist zwar nicht die schönste Seite, erfüllt aber ihren Zweck und ich kann bis auf die Nachkommastellen das mit meinem Lieferanten vergleichen.

XXXXX natürlich anpassen.
Gruß
Tourt

--------------------------------------------
63 Kanäle in 29 Geräten und 24 CUxD-Kanäle in 7 CUxD-Geräten:
1x HM-RC-8, 1x CUX32, 1x HM-Sen-MDIR-O-2, 6x CUX28, 1x HM-PB-2-WM55-2, 1x HM-LC-Sw2-FM, 2x HM-LC-Sw1-FM, 1x HM-LC-Sw4-SM, 3x HM-Sec-SD, 7x HM-Sec-SC, 1x HM-SCI-3-FM, 1x HM-Sen-DB-PCB, 2x HM-CC-RT-DN, 2x HM-Sec-SC-2, 1x HM-Sec-SD-Team, 2x HM-SwI-3-FM, 1x HM-LC-Dim1TPBU-FM, 1x HM-LC-Sw1PBU-FM, 1x HM-TC-IT-WM-W-EU
--------------------------------------------

Antworten

Zurück zu „Projektvorstellungen“