Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Hobyist
Beiträge: 139
Registriert: 23.10.2019, 09:31
System: CCU
Hat sich bedankt: 39 Mal
Danksagung erhalten: 1 Mal

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von Hobyist » 02.07.2020, 19:07

Die Ausgabe lautet: keine Rueckgabe

Die JSON Rückgabe ist:

Code: Alles auswählen

{
  "srueck": "",
  "sessionId": "",
  "error": "--2020-07-02 18:59:02--  http:\/\/192.168.178.66\/cgi-bin\/livedata.cgi\nConnecting to 192.168.178.66:80... connected.\nHTTP request sent, awaiting response... 401 Authorization Required\n\nUsername\/Password Authentication Failed.",
  "httpUserAgent": "",
  "url": "http:\/\/192.168.178.66\/cgi-bin\/livedata.cgi",
  "STDOUT": "keine Rueckgabe\r\n"
}
Danke für die Unterstützung. Ich hoffe alles richtig verstanden zu haben.

Wenn ich die URL anpassen http://nutzer:passwort@192.168.178.66/c ... vedata.cgi

Funktionierts mit folgender Ausgabe:

Code: Alles auswählen

Abfrage in Ordnung 

20200702170005 th0 18.2 93 17.0 0
20200702165957 sol0 5 0
20200702170037 wind0 5 0.0 0.4 18.2 0
20200702165953 rain0 0.0 299.8 0.0 0
20200702170013 thb0 24.9 61 16.9 963.5 1020.4 3 0
Super! Nun habe ich die Daten schon mal in der CCU3. Doch nun wie weiter? :D
Zuletzt geändert von alchy am 02.07.2020, 19:09, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
CCU3 Start Up, Wohnort Schweiz

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

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von alchy » 02.07.2020, 19:08

Bitte JSON Ausgabe des funktionierenden Scripts :roll:

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.

Hobyist
Beiträge: 139
Registriert: 23.10.2019, 09:31
System: CCU
Hat sich bedankt: 39 Mal
Danksagung erhalten: 1 Mal

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von Hobyist » 02.07.2020, 19:35

Ok, hier nun die JSON-Ausgabe:

Code: Alles auswählen

{
  "srueck": "20200702173217 th0 17.9 94 16.9 0\n20200702173217 sol0 5 0\n20200702173313 wind0 261 0.0 0.0 17.9 0\n20200702173221 rain0 10.6 303.4 0.0 0\n20200702173311 thb0 24.8 62 17.0 964.1 1021.0 3 0",
  "sessionId": "",
  "error": "--2020-07-02 19:33:16--  http:\/\/user:*password*@192.168.178.66\/cgi-bin\/livedata.cgi\nConnecting to 192.168.178.66:80... connected.\nHTTP request sent, awaiting response... 401 Authorization Required\nAuthentication selected: Basic realm=\"MeteoBridge\"\nConnecting to 192.168.178.66:80... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: unspecified \[text\/plain]\nSaving to: 'STDOUT'\n\n     0K                                                        25.0K=0.007s\n\n2020-07-02 19:33:16 (25.0 KB\/s) - written to stdout \[186]",
  "httpUserAgent": "",
  "url": "http:\/\/user:passwort@192.168.178.66\/cgi-bin\/livedata.cgi",
  "STDOUT": "Abfrage in Ordnung \n\r\n20200702173217 th0 17.9 94 16.9 0\n20200702173217 sol0 5 0\n20200702173313 wind0 261 0.0 0.0 17.9 0\n20200702173221 rain0 10.6 303.4 0.0 0\n20200702173311 thb0 24.8 62 17.0 964.1 1021.0 3 0\n\r\n"
}
Leider muss ich weg an eine Sitzung. Vielen Dank.
Zuletzt geändert von alchy am 02.07.2020, 19:40, insgesamt 1-mal geändert.
Grund: Code in Codetags posten
CCU3 Start Up, Wohnort Schweiz

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

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von alchy » 02.07.2020, 23:20

Sollte die ersten Daten auf den Bildschirm ausgeben.

Code: Alles auswählen

! Meteobridge auslesen
! v0.1 (c) by Alchy https://homematic-forum.de/forum/viewtopic.php?f=26&t=59598&start=10#p591111
string url = "http://meteobridge:meteobridge@192.168.178.66/cgi-bin/livedata.cgi";
! +++++++++++ Finger weg ++++++++++++
string srueck;string error;
system.Exec("wget --no-check-certificate -O - '"#url#"'" , &srueck, &error);
if (!srueck== "") {WriteLine("Abfrage in Ordnung \n");
string sPart; 
foreach (sPart, srueck.Split("\n") ){
integer iValue=0;string sName;
!SensorA
if (sPart.Contains("th0")){ 
string lSensor = "Zeitpunkt Sensor Temperatur Luftfeuchte Taupunkt unbekannt";
foreach (sName, lSensor.Split(" ")) {
WriteLine(sName #": " #sPart.StrValueByIndex(" ", iValue) );
iValue= iValue +1;
}}
}
}else{WriteLine("keine Rueckgabe");}
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.

Hobyist
Beiträge: 139
Registriert: 23.10.2019, 09:31
System: CCU
Hat sich bedankt: 39 Mal
Danksagung erhalten: 1 Mal

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von Hobyist » 03.07.2020, 12:09

Scheint zu funktionieren. Du bist ein Künstler!

Ausgabe normal:
Abfrage in Ordnung

Zeitpunkt: 20200703100646
Sensor: th0
Temperatur: 17.3
Luftfeuchte: 85
Taupunkt: 14.8
unbekannt: 0
Und noch JSON

Code: Alles auswählen

{
  "sName": "",
  "srueck": "20200703100646 th0 17.3 85 14.8 0\n20200703100642 sol0 186 0\n20200703100648 wind0 298 0.0 0.0 17.3 0\n20200703100622 rain0 0.0 336.2 0.0 0\n20200703100618 thb0 23.8 55 14.2 967.8 1025.4 2 0",
  "sessionId": "",
  "lSensor": "Zeitpunkt Sensor Temperatur Luftfeuchte Taupunkt unbekannt",
  "iValue": "0",
  "sPart": "20200703100618 thb0 23.8 55 14.2 967.8 1025.4 2 0",
  "error": "--2020-07-03 12:06:52--  http:\/\/meteobridge:*password*@192.168.178.66\/cgi-bin\/livedata.cgi\nConnecting to 192.168.178.66:80... connected.\nHTTP request sent, awaiting response... 401 Authorization Required\nAuthentication selected: Basic realm=\"MeteoBridge\"\nConnecting to 192.168.178.66:80... connected.\nHTTP request sent, awaiting response... 200 OK\nLength: unspecified \[text\/plain]\nSaving to: 'STDOUT'\n\n     0K                                                        28.5K=0.006s\n\n2020-07-03 12:06:52 (28.5 KB\/s) - written to stdout \[187]",
  "httpUserAgent": "",
  "url": "http:\/\/meteobridge:meteobridge@192.168.178.66\/cgi-bin\/livedata.cgi",
  "STDOUT": "Abfrage in Ordnung \n\r\nZeitpunkt: 20200703100646\r\nSensor: th0\r\nTemperatur: 17.3\r\nLuftfeuchte: 85\r\nTaupunkt: 14.8\r\nunbekannt: 0\r\n"
}

Super!
CCU3 Start Up, Wohnort Schweiz

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

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von alchy » 03.07.2020, 20:35

Hobyist hat geschrieben:
03.07.2020, 12:09
Scheint zu funktionieren. Du bist ein Künstler!
Sehr schön, dann sollte das auch funktionieren.

Code: Alles auswählen

! Meteobridge auslesen und in Systemvariablen speichern sofern vorhanden
! v0.2 (c) by Alchy https://homematic-forum.de/forum/viewtopic.php?f=26&t=59598&start=10#p591111
string url = "http://meteobridge:meteobridge@192.168.178.66/cgi-bin/livedata.cgi";
! +++++++++++ Finger weg ++++++++++++
string srueck;string error;
system.Exec("wget --no-check-certificate -O - '"#url#"'" , &srueck, &error);
if (!srueck== "") {WriteLine("Abfrage in Ordnung \n");
string sPart; 
foreach (sPart, srueck.Split("\n") ){
WriteLine("\nAusgabe des Sensor: "#sPart);
integer iValue=0;string sName;
!Sensor th0 
if (sPart.Contains("th0")){ 
string lSensor = "th0_Zeitpunkt|th0_SensorName|th0_Temperatur|th0_Luftfeuchte|th0_Taupunkt|th0_Wert6";
foreach (sName, lSensor.Split("|")) {
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName)){ dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName).State(sPart.StrValueByIndex(" ", iValue) ); WriteLine("\t der Wert: "#sPart.StrValueByIndex(" ", iValue) #" wurden in Variable: " #sName #" gespeichert"); }else{ WriteLine("\t\t der Wert: " #sPart.StrValueByIndex(" ", iValue)  #" konnten nicht in Variable: "#sName #" gespeichert werden"); }
iValue= iValue +1;
}}
!Sensor sol0 
if (sPart.Contains("sol0")){ 
string lSensor = "sol0_Zeitpunkt|sol0_SensorName|sol0_Wert1|sol0_Wert2";
foreach (sName, lSensor.Split("|")) {
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName)){ dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName).State(sPart.StrValueByIndex(" ", iValue) ); WriteLine("\t der Wert: "#sPart.StrValueByIndex(" ", iValue) #" wurden in Variable: " #sName #" gespeichert"); }else{ WriteLine("\t\t der Wert: " #sPart.StrValueByIndex(" ", iValue)  #" konnten nicht in Variable: "#sName #" gespeichert werden"); }
iValue= iValue +1;
}}
!Sensor wind0
if (sPart.Contains("wind0")){ 
string lSensor = "wind0_Zeitpunkt|wind0_SensorName|wind0_Windrichtung|wind0_Windgeschwindigkeit|wind0_gemittelte Windgeschwindigkeit|wind0_Windchill Temperatur";
foreach (sName, lSensor.Split("|")) {
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName)){ dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName).State(sPart.StrValueByIndex(" ", iValue) ); WriteLine("\t der Wert: "#sPart.StrValueByIndex(" ", iValue) #" wurden in Variable: " #sName #" gespeichert"); }else{ WriteLine("\t\t der Wert: " #sPart.StrValueByIndex(" ", iValue)  #" konnten nicht in Variable: "#sName #" gespeichert werden"); }
iValue= iValue +1;
}}
!Sensor rain0
if (sPart.Contains("rain0")){ 
string lSensor = "rain0_Zeitpunkt|rain0_SensorName|rain0_Regenrate|rain0_Regenwippenzaehler|rain0_delta_Regenmenge";
foreach (sName, lSensor.Split("|")) {
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName)){ dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName).State(sPart.StrValueByIndex(" ", iValue) ); WriteLine("\t der Wert: "#sPart.StrValueByIndex(" ", iValue) #" wurden in Variable: " #sName #" gespeichert"); }else{ WriteLine("\t\t der Wert: " #sPart.StrValueByIndex(" ", iValue)  #" konnten nicht in Variable: "#sName #" gespeichert werden"); }
iValue= iValue +1;
}}
!Sensor thb0 
if (sPart.Contains("thb0")){ 
string lSensor = "thb0_Zeitpunkt|thb0_SensorName|thb0_Wert1|thb0_Wert2|thb0_Wert3|thb0_Wert4|thb0_Wert5|thb0_Wert6";
foreach (sName, lSensor.Split("|")) {
if (dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName)){ dom.GetObject(ID_SYSTEM_VARIABLES).Get(sName).State(sPart.StrValueByIndex(" ", iValue) ); WriteLine("\t der Wert: "#sPart.StrValueByIndex(" ", iValue) #" wurden in Variable: " #sName #" gespeichert"); }else{ WriteLine("\t\t der Wert: " #sPart.StrValueByIndex(" ", iValue)  #" konnten nicht in Variable: "#sName #" gespeichert werden"); }
iValue= iValue +1;
}}

}
}else{WriteLine("keine Rueckgabe");}
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.

Hobyist
Beiträge: 139
Registriert: 23.10.2019, 09:31
System: CCU
Hat sich bedankt: 39 Mal
Danksagung erhalten: 1 Mal

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von Hobyist » 04.07.2020, 09:27

Nachdem ich die Systemvariablen angelegt hatte, wurden die Werte sauber abgelegt und die Abfrage mit "in Ordnung" quittiert.

Vielen Dank alchy. Du bist wirklich ein Künstler und Könner! Jetzt kann ich die Werte meiner Davis Vantage Pro 2 in HomeMatic über die Meteobridge abspeichern. Das ist wahrlich eine sehr grosse Hilfe! Noch einmal vielen Dank für deine wertvolle Unterstützung.
CCU3 Start Up, Wohnort Schweiz

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

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von alchy » 04.07.2020, 09:55

Gern geschehen. Das Script ist so aufgebaut, daß man mit wenigen Anpassungen weitere Sensoren oder andere Namen für die Systemvariablen benutzen kann.
Will man einen Wert nicht speichern einfach die Variable nicht anlegen. Aber die Anzahl der Namen in der Liste sollte mit der Anzahl der Werte übereinstimmen.

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.

chrimu
Beiträge: 119
Registriert: 18.08.2012, 17:10
System: CCU
Hat sich bedankt: 4 Mal
Danksagung erhalten: 5 Mal

Re: Meteobridge HTTP-Request Wetter mit einfachem HM-Skript holen

Beitrag von chrimu » 12.03.2023, 13:12

@alchy:
Auch von mir vielen Dank!

Ich hatte sowas gefühlt vor hundert Jahren auf dem Wunderground Parser basierend gemacht, und musste das jetzt potentiell auf neue Sensoren umfrickeln. Mit Deinem Skript ging das jedoch wie geschnitten Brot.

Schönes Wochenende,
Christian

Antworten

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