Temperatur aus Webseite lesen

Homematic-, TCL- und Shell-Script, Toolchain, C, etc.

Moderator: Co-Administratoren

Antworten
duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Temperatur aus Webseite lesen

Beitrag von duffy6 » 03.01.2019, 10:58

Hallo zusammen,

wie kann ich denn die Temperatur aus so einer Webseite lesen und alle 30 min in eine Systemvariable wtemp schreiben, die folgendes auswirft (in diesem Fall den Wert "-2,0"):

Hier ein Ausschnitt (es gibt noch viele andere Temperaturen):

Code: Alles auswählen

<td style="width: ;">
	  <!-- Außentemperatur -->
<span style="font-size: 12pt;">Au&szlig;entemp.: </span><br>
<span style="font-size: 14pt; font-weight: bold;">-2,0&nbsp;&deg;C</span><br>
<span style="font-size: 8pt; "><br>min.: -2,0&nbsp;&deg;C (02:59)</span><br>
<span style="font-size: 8pt; ">max.: -0,8&nbsp;&deg;C (00:04)</span><br>
<div style="text-align: left;">
Danke und Grüße
duffy6
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Temperatur aus Webseite lesen

Beitrag von alchy » 03.01.2019, 12:51

Wget auf die Seite und die Rückgabe parsen


Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Re: Temperatur aus Webseite lesen

Beitrag von duffy6 » 03.01.2019, 12:54

Das mache ich gerade so und es klappt auch, aber ich erhalte als Ergebnis eine Kommazahl und ich kann die Systemvariable nicht schreiben, da ja als Dezimaltrennzeichen ein Punkt erwartet wird.

Wie kann ich jetzt aus -0,3 eine -0.3 machen?

Danke und Gruß
duffy6

Code: Alles auswählen

string stdout;
string stderr;
integer anfang;
integer ende;
var i;
var url = "http://www.scubw.de/templates/scubw/scubw_p/w_ansicht_hp.php";
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
!WriteLine(stdout);
anfang=stdout.Find("Au&szlig;entemp.:");
ende=stdout.Find("&deg;C");
anfang=anfang+80;
ende=ende-6;
!WriteLine(anfang);
!WriteLine(ende);
i=stdout.Substr(anfang,ende-anfang);
WriteLine(i);
dom.GetObject("Aussentemp_Hardtsee").State(i);
var aktuell = dom.GetObject("Aussentemp_Hardtsee").Value();
WriteLine(aktuell);


WriteLine(i);
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Temperatur aus Webseite lesen

Beitrag von alchy » 03.01.2019, 13:24

.Replace() wäre eine Variante.

Also so etwas

Code: Alles auswählen

string stdout;
string stderr;
integer anfang;
integer ende;
var i;
var url = "http://www.scubw.de/templates/scubw/scubw_p/w_ansicht_hp.php";
system.Exec("wget -q -O - '"#url#"'", &stdout, &stderr);
!WriteLine(stdout);
anfang=stdout.Find("Au&szlig;entemp.:");
ende=stdout.Find("&deg;C");
anfang=anfang+80;
ende=ende-6;
!WriteLine(anfang);
!WriteLine(ende);
i=stdout.Substr(anfang,ende-anfang);
WriteLine(i);
i= i.Replace(",", ".");
WriteLine(i.ToFloat());
Tipp: Versuch mal anders zu parsen.
Ohne genau geschaut zu haben würde ich behaupten früher oder später schmeißt dir das Script blöde Werte um die Ohren.
Und wenn du eh noch mehr Werte haben willst erst Recht.

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

duffy6
Beiträge: 184
Registriert: 14.03.2017, 10:29
Hat sich bedankt: 29 Mal
Danksagung erhalten: 1 Mal

Re: Temperatur aus Webseite lesen

Beitrag von duffy6 » 03.01.2019, 13:28

Super! Das mit dem Dezimaltrennzeichen funktioniert jetzt!
Danke!

Aber was meinst Du mit anders parsen? Hast Du einen Vorschlag?
——-
Raspberrymatic auf einem Raspi 3B, Funkmodul HM-MOD-RPI-PCB

alchy
Beiträge: 10752
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 672 Mal

Re: Temperatur aus Webseite lesen

Beitrag von alchy » 03.01.2019, 13:35

Zeichen zählen und Substring() ist abgesehen von der Verarbeitungsgeschwindigkeit *IMHO* auch fehlerträchtig
z.B. wenn es statt -X.XX Gard vielleicht mal um -XX.XX oder sonst welche Werte geht.
Aber ! nur meine Meinung, und ich habe mir den Code nicht wirklich angeschaut :!:

Vorschläge, naja dazu müsste ich mir das mal anschauen, aber es gibt immer andere Wege. :mrgreen:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Benutzeravatar
mirochen
Beiträge: 43
Registriert: 25.01.2019, 18:13

Re: Temperatur aus Webseite lesen

Beitrag von mirochen » 27.01.2019, 20:24

Wenn man es richtig kompliziert haben möchte, könnte man sich ein PHP-Script basteln (für PHP gibt es nämlich gute HTML-Parser-Klassen), dass den HTML-Code der Zielseite auseinanderbaut und dann per "echo" rauswirft - was man sich dann wiederum per wget per CUXD abrufen kann...

Auf diese Weise habe ich kurz überlegt, ob ich mir so einen Json-Parser baue... hab mich dann aber auch für die fehleranfällige Version entschieden und Zähle bzw. Suche bisschen informiert... :/
Signatur hat Urlaub

Antworten

Zurück zu „Softwareentwicklung für die HomeMatic CCU“