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
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?
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
Beitrag
von alchy » 02.07.2020, 19:08
Bitte JSON Ausgabe des funktionierenden Scripts
Alchy
-
Hobyist
- Beiträge: 139
- Registriert: 23.10.2019, 09:31
- System: CCU
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 1 Mal
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
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
-
Hobyist
- Beiträge: 139
- Registriert: 23.10.2019, 09:31
- System: CCU
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 1 Mal
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
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
-
Hobyist
- Beiträge: 139
- Registriert: 23.10.2019, 09:31
- System: CCU
- Hat sich bedankt: 39 Mal
- Danksagung erhalten: 1 Mal
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
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
-
chrimu
- Beiträge: 119
- Registriert: 18.08.2012, 17:10
- System: CCU
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 5 Mal
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