Wert aus einer URL auslesen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
microsuck
Beiträge: 220
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Wert aus einer URL auslesen

Beitrag von microsuck » 10.04.2021, 20:28

Hi,

ich habe das Wasserzählerprojekt der aktuellen CT Make (https://www.heise.de/select/make/2021/2 ... 0897420296) gebaut und wollte den Wert in eine Variable schreiben.

Hierzu kann ich eine URL aufrufen:
http://IP-ESP32/wasserzaehler.html

und bekomme folgendes Ergebnisse:

Code: Alles auswählen

491.0709 Negative Rate - Returned old value - read value: 491.0101 - raw value: 00491.0101 - checked value: 491.010101
nun würde ich gerne den Wert hinter read value nehmen und in eine Variable schreiben.

ist übrigens ein GitHub Projekt wer Interesse hat kommt hier zur GitHub-Seite: https://github.com/jomjol/AI-on-the-edge-device

funktioniert recht gut soweit ich das bis dato beurteilen kann.

Kann mich jemand unterstützten?

Danke

Benutzeravatar
Black
Beiträge: 5469
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: Wert aus einer URL auslesen

Beitrag von Black » 10.04.2021, 20:41

eine mögliche Lösungwäre so:

Code: Alles auswählen

!Black in 2021
string st="491.0709 Negative Rate - Returned old value - read value: 491.0101 - raw value: 00491.0101 - checked value: 491.010101";
string s;
real wert;
foreach (s,st.Split("-")) {
 if (s.Contains("read value"))  {
    wert= (s.StrValueByIndex(":",1)).ToFloat();
    break;
 }
}     
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

microsuck
Beiträge: 220
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Wert aus einer URL auslesen

Beitrag von microsuck » 10.04.2021, 21:09

Hi,

Danke für deine Antwort aber erst muss ich den string auslesen oder?

Der Wert verändert sich sobald ich Wasser verbrauche. In deinem Beispiel wird der Wert aus der URL nicht ausgelesen oder?

Danke

Benutzeravatar
Black
Beiträge: 5469
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: Wert aus einer URL auslesen

Beitrag von Black » 10.04.2021, 21:10

ne, das war nur die auswertung, wenndu den string schon hast...
klar musste den vorher noch holen
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

microsuck
Beiträge: 220
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Wert aus einer URL auslesen

Beitrag von microsuck » 10.04.2021, 21:14

Black hat geschrieben:
10.04.2021, 21:10
ne, das war nur die auswertung, wenndu den string schon hast...
klar musste den vorher noch holen
Und kann man dies per Skript? URL aufrufen den Wert auslesen und dann in variable Schreiben.

Das war mein Ziel - sorry habe mich nicht richtig ausgedrückt.

Benutzeravatar
Black
Beiträge: 5469
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 419 Mal
Danksagung erhalten: 1070 Mal
Kontaktdaten:

Re: Wert aus einer URL auslesen

Beitrag von Black » 10.04.2021, 21:21

jo, geht auch... suchbegriff wäre wget gewesen

Code: Alles auswählen

string url = "http://IP-ESP32/wasserzaehler.html";
string stdOut;
string stdErr;

system.Exec("wget --no-check-certificate --timeout=2 -q -O - '"#url#"'" , &stdOut, &stdErr);
WriteLine (stdOut);
kriegste damit eine Ausgabe?
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

microsuck
Beiträge: 220
Registriert: 03.09.2012, 15:34
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal

Re: Wert aus einer URL auslesen

Beitrag von microsuck » 10.04.2021, 22:05

ja geht

Code: Alles auswählen


string url = "http://192.168.0.8/wasserzaehler.html";
string stdOut;
string stdErr;

system.Exec("wget --no-check-certificate --timeout=2 -q -O - '"#url#"'" , &stdOut, &stdErr);
string st=(stdOut);
string s;
real wert;
foreach (s,st.Split("-")) {
 if (s.Contains("read value"))  {
    wert= (s.StrValueByIndex(":",1)).ToFloat();
    break;
 }
}    
dom.GetObject("Wasserzaehler").State (wert);

habe die beiden zusammengeführt und mit dom.GetObject in die Variable Wasserzaehler geschrieben.

Danke für deine Unterstützung

schönen Abend noch
microsuck

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“