Homematic Webcontrol

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von ColdFireIce » 17.08.2010, 17:51

bumaas hat geschrieben:Der direkte Aufruf von

Code: Alles auswählen

http://server/homematic_ipod/includes/php/regaHss_requestCommand.php?cmd=var ID01_VARIABLE = dom.GetObject("Anwesenheit").Variable();
liefert jedoch {"ID01_VARIABLE":"null"}
Tja und da bin ich (mal wieder) ratlos. Ich kann jetzt auch nur raten.
Nun du erhälst immerhin eine Antwort. nur eben ohne Inhalt. D.h die CCU wertet den String irgendwie nicht richtig aus. Vielleicht auch wieder was mit der Firewall... diesemal ist es ja port 8181, glaub ich aber nicht.
Hab grad noch was gelesen:
ändere mal in der includes/php/regaHss_include.php in der Zeile 39 und 109 das "Content-length" in "Content-Length" also mit großem L

Code: Alles auswählen

$postString = $postString . "Content-Length: ". strlen($var_request) ."\r\n\r\n";
siehe http://homematic-forum.de/forum/viewtop ... exe#p18274

vielleicht hilft dir ja auch das weiter: http://homematic-forum.de/forum/viewtop ... .exe#p8075
vielleicht ist auch in der CCU noch was einzustellen damit die Script aufrufe funktionieren.
Ich weiß da aktuell echt keine gute Antwort. Bei mir geht es halt :oops:

aber zum Wetter kann ich was sagen ;)
ich lass von der CCU die Wetterdaten alle 4 Stunden runterladen, und Lokal speichern.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("wget http://xoap.weather.com/weather/local/GMXX0053?cc=*&dayf=5&link=xoap&pr"+"od=xoap&par=123456&key=789456123-O /usr/local/etc/config/addons/www/weathercache/karlsruhe.wth",&stdout,&stderr);
(ich muss den string aufspalten da sonst das &prod zu einem Sonderzeichen ausgewertet wird)

dann wird mit dieser Datei eine Klasse erstellt die diese Daten enhält:

Code: Alles auswählen

$gweather = new WeatherXmlFileFeedForecast(WEATHERFILE_SOURCE."karlsruhe.wth", "pictures/weather");
WEATHERFILE_SOURCE wir dabei in der includes/globals.inc.php
definiert. Bei mir:

Code: Alles auswählen

define("WEATHERFILE_SOURCE", "http://192.168.0.2:80/addons/weathercache/");
man kann die Wetterklasse aber auch direkt befüllen:

Code: Alles auswählen

$gweather = new WeatherXMLFeed("GMXX0063", "pictures/weather", "PARTNER_ID", "LICENCE_KEY");
Dabei wird halt eine Anfrage an weather.com geschickt. Da dass aber laut ABGs nur alle 3.5 std. passieren darf mach ich es eben über den Zwischenspeicher mit der CCU.

Vielleicht hilft dir dass ja schon weiter.

Viele Grüße
Daniel

bumaas
Beiträge: 128
Registriert: 29.03.2010, 16:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von bumaas » 17.08.2010, 21:49

Hallo Daniel,

mit der Abfrage der Systemvariablen komme ich leider nicht weiter. Das Tutorial Kapitel 9 erzeugt folgende Errorlogeinträge

Aug 17 21:03:40 (none) local0.err ReGaHss: Error: IseESP::SyntaxError= Error 1 at row 1 col 36 near ^\"Anwesenheit\").Variable();^M [../Platform/DOM/iseESP.cpp (1055)]
Aug 17 21:03:40 (none) local0.err ReGaHss: Error: ParseProgram: SyntaxError= \"Anwesenheit\").Variable(); [../Platform/DOM/iseESP.cpp (355)]

Also kommt der Aufruf durch, kann aber nicht interpretiert werden .. Schade.


Zum Wetterdienst:

Die Variante "new WeatherXmlFeedForecast("GMXX0218", "pictures/weather",...,...)" funktioniert. :D Aber wie du schon erwähnt hast, verstößt sie gegen die AGBs. Daher möchte auch gerne die von dir genutzte Variante wählen, und die XML Dateien periodisch von der CCU holen zu lassen. Vielleicht ist sie sogar performanter.

Hier scheitere ich mal wieder ;-) Die Ausgabedatei wird zwar erzeugt, aber der Zugriff vom Webserver funktionert noch nicht. Es kommt zu folgendem Fehler:

Warning: file_get_contents(http://192.168.178.46:80/addons/www/wea ... erborn.wth) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /volume1/web/homematic_ipod/includes/php/weather.php on line 118

Warning: Invalid argument supplied for foreach() in /volume1/web/homematic_ipod/includes/php/weather.php on line 128

Es sieht so aus, als ob der Pfad noch nicht stimmt. Oder sollte ich die Datei woanders hin erzeugen?


Viele Grüße

Burkhard

ong
Beiträge: 146
Registriert: 25.07.2010, 15:20
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von ong » 17.08.2010, 21:59

Hi Burkhard,

hast du dem PHP auf deinem Server erlaubt file_get_contents zu nutzen? Könnte vielleicht eine Fehlerquelle sein.

Wo muss ich denn den von Daniel genannten Code bzgl. Wetter einbauen? Als Script in die CCU?

Kann ich auch andere XML Files parsen? Z.B. http://www.wunderground.com/ als Wetterinfo - oder eben sonstwas.

PS: Hab dein Webcontrol jetzt auch auf einer Synology DS209 laufen. Klappt prima. Selbst den Grundriss konnte ich einbasteln.

Olaf
* ca. 70 Geräte (alle Wireless, Stand 2019/2013) *
* Datenbankentwicklung *
* Individuell, Qualitativ, Regional *
* https://datenbank-projekt.de *

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von ColdFireIce » 17.08.2010, 22:26

Hi,
ong hat geschrieben:Wo muss ich denn den von Daniel genannten Code bzgl. Wetter einbauen? Als Script in die CCU?
Ja ich habe einfach ein Programm in der CCU erstellt dass alle 4 Stunden diesen Script ausführt. ich lasse die Daten eben nach
/usr/local/etc/config/addons/www/weathercache/ legen damit ich von "außen" also vom Server auf dem die HP dann läuft auch an die Daten ran komme.
ong hat geschrieben:Kann ich auch andere XML Files parsen? Z.B. http://www.wunderground.com/ als Wetterinfo - oder eben sonstwas.
klar, aber dass musst du dir dann leider selbst bauen. Habe das Script nur für weather.com angepasst, da ich da am meisten gefunden habe. Wenn du mir allerdings bisschen mehr Infos gibst wie man bei diesem www.wunderground.com an so eine XML Seite oder so kommt werde ich mir das gerne auch mal anschauen.
ong hat geschrieben:PS: Hab dein Webcontrol jetzt auch auf einer Synology DS209 laufen. Klappt prima. Selbst den Grundriss konnte ich einbasteln.
Super, dass freut mich. Funktionieren bei dir testweise die Systemvariablen?
bumaas hat geschrieben:Warning: file_get_contents(http://192.168.178.46:80/addons/www/wea ... erborn.wth) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found in /volume1/web/homematic_ipod/includes/php/weather.php on line 118
Es sieht so aus als wäre dein define falsch, dass hier ist meiner:

Code: Alles auswählen

define("WEATHERFILE_SOURCE", "http://192.168.0.2:80/addons/weathercache/");
ich glaube du hast ein www/ zu viel drin. du kannst zum Test auch die Seite einfach mal mit dem Browser öffnen, dann siehst du ja ob die adresse richtig ist.
generell müsste es:

Code: Alles auswählen

http://CCU-IP:80/addons/weathercache/stadt.wth
sein.
bumaas hat geschrieben:Aug 17 21:03:40 (none) local0.err ReGaHss: Error: IseESP::SyntaxError= Error 1 at row 1 col 36 near ^\"Anwesenheit\").Variable();^M [../Platform/DOM/iseESP.cpp (1055)]
Aug 17 21:03:40 (none) local0.err ReGaHss: Error: ParseProgram: SyntaxError= \"Anwesenheit\").Variable(); [../Platform/DOM/iseESP.cpp (355)]
Hmm ich frage mich ob dass vielleicht durch das Escapen (die \ vor den ") kommt.
du könntest es mal testweise mit

Code: Alles auswählen

http://.../includes/php/regaHss_requestCommand.php?cmd=var ID01_VARIABLE = dom.GetObject('Anwesenheit').Variable();
testen.
das Problem ist wirklich dass ich es mir nicht erklären kann warum es zu einem "nicht auswerten" der Daten kommt.

Code: Alles auswählen

http://.../includes/php/regaHss_requestCommand.php?cmd=var ID01_VARIABLE = dom.GetObject("Anwesenheit").Variable();
muss eigentlich funktionieren. vielleicht kannst du einfach mal die CCU neustarten oder so. Das soll auch schon geholfen haben ;)

Viele Grüße
Daniel

bumaas
Beiträge: 128
Registriert: 29.03.2010, 16:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von bumaas » 18.08.2010, 10:09

Hallo Daniel,
ColdFireIce schrieb:
ich glaube du hast ein www/ zu viel drin
Tatsächlich. Ich hatte gedacht, da das File auf der CCU unter .../addons/www/weathercache gespeichert wird, müsste auch WEATHERFILE_SOURCE auf dieses Verzeichnis zeigen (also mit www). Aber scheinbar löst die CCU den Pfad anders auf.

Nun geht's! Vielen Dank! :D
ColdFireIce schrieb:
Hmm ich frage mich ob dass vielleicht durch das Escapen (die \ vor den ") kommt.
du könntest es mal testweise mit

Code: Alles auswählen

http://.../includes/php/regaHss_requestCommand.php?cmd=var ID01_VARIABLE = dom.GetObject('Anwesenheit').Variable();
testen.
' statt " hat leider nichts gebracht. Offensichtlich gibt es bei mir Probleme mit Strings

ein paar Versuche meinerseits:

cmd=var ID01_VARIABLE = dom.GetObject('Anwesenheit').Variable(); -> null
cmd=var ID01_VARIABLE = 10.0; -> 10.000000
cmd=var ID01_VARIABLE = "Hallo"; -> null
cmd=var ID01_VARIABLE = system.Date(); -> 09:36:31 18.08.2010
cmd=var ID01_VARIABLE = system.Date('%Y-%m-%d %H:%M:%S'); -> null

Wenn ich auf das Objekt "Anwesenheit" über die Object-ID (bei mir 950) zugreife gehts auch:

cmd=var ID01_VARIABLE = dom.GetObject(950).Variable(); -> 1

grundsätzlich gehts also, nur Strings führen zum Fehler ... :( :(

Ein Boot hat nichts gebracht.

Hat noch jemand eine Idee?

Etwas verzweifelt

Burkhard

mark
Beiträge: 13
Registriert: 18.08.2010, 11:33

Re: Homematic Webcontrol

Beitrag von mark » 18.08.2010, 11:47

Hallo Daniel,

ich habe eine Frage zum Download der Wetterdaten.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("wget http://xoap.weather.com/weather/local/GMXX0064?cc=*&dayf=5&link=xoap&pr"+"od=xoap&par=123456&key=7890
/usr/local/etc/config/addons/www/weathercache/kiel.wth",&stdout,&stderr);
Ich habe die drei Zeilen als script via WebUI eingetragen, dass alle 4h ausgeführt wird.
Den Ordern weathercache habe ich vorher mit telnet angelegt und mit allen Rechten versehen.

Leider bleibt er aber leer.

Ich habe es auch mit der Funktion script testen probiert, auch dann bleibt der Ordner leer, was könnt ich falsch machen?

Gruß,

Mark

bumaas
Beiträge: 128
Registriert: 29.03.2010, 16:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von bumaas » 18.08.2010, 13:53

Hallo Mark,

du hast dich doch bei weather.com angemeldet und die Partner ID sowie den Licence Key erhalten?

Probier doch mal, die folgenden Zeilen in der WebUI unter "Script testen" auszuprobieren:

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("wget http://xoap.weather.com/weather/local/GMXX0218?cc=*&dayf=5&link=xoap&pr"+"od=xoap&par=12......92&key=68977.....739194 -O /usr/local/etc/config/addons/www/weathercache/paderborn.wth",&stdout,&stderr);
WriteLine(stdout);
WriteLine(stderr);
Die Ausgabe von stdout und stderr weist dir dann bestimmt den Weg. ;-)

Wenn alles richtig läuft, ehältst du folgende Ausgabe:

Connecting to xoap.weather.com[65.212.121.29]:80

paderborn.wth 0% | | 0 --:-- ETA
paderborn.wth 100% |*****************************| 5832 00:00 ETA

Gruß

Burkhard

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von ColdFireIce » 18.08.2010, 14:57

bumaas hat geschrieben:cmd=var ID01_VARIABLE = dom.GetObject('Anwesenheit').Variable(); -> null
cmd=var ID01_VARIABLE = 10.0; -> 10.000000
cmd=var ID01_VARIABLE = "Hallo"; -> null
cmd=var ID01_VARIABLE = system.Date(); -> 09:36:31 18.08.2010
cmd=var ID01_VARIABLE = system.Date('%Y-%m-%d %H:%M:%S'); -> null

Wenn ich auf das Objekt "Anwesenheit" über die Object-ID (bei mir 950) zugreife gehts auch:

cmd=var ID01_VARIABLE = dom.GetObject(950).Variable(); -> 1

grundsätzlich gehts also, nur Strings führen zum Fehler ... :( :(
Hi,

sehr schöne eigen Initiative. Ich hätte noch eine Idee. versuch mal die " zu URL encodieren, also einfach anstelle von " ein %22 zu nehmen.

Code: Alles auswählen

cmd=var ID01_VARIABLE = %22Hallo%22;
nur mal so ein Test. wenn nicht schätze ich fast mal dass es was mit dem PHP zu tun hat. werde mir dass nach deiner Antwort mal genauer anschaun.
mark hat geschrieben:Ich habe die drei Zeilen als script via WebUI eingetragen, dass alle 4h ausgeführt wird.
Sieht für mich auch so aus, als hättest du hier einfach Copy und Paste betrieben. Ich habe dass hier eigentlich nur in Verbindung mit Burkhards frage gepostet. vielleicht sollte ich dazu aber auch mal nen Post schreiben.
Du musst dich natürlich bei weather.com anmelden und dir deine eigene Partner ID sowie den Licence Key zu schicken lassen, und diese dann einsetzen.
Such mal im Forum ist bei dem Wettervorhersage Script auch mit drin.

Viele Grüße
Daniel

mark
Beiträge: 13
Registriert: 18.08.2010, 11:33

Re: Homematic Webcontrol

Beitrag von mark » 18.08.2010, 15:04

Hallo Burkhard, Daniel,

ich hatte nur das -O mit weggelöscht als ich meine Daten eingetragen habe (Ich dachte das gehört zum fiktiven LicenceKey :-)

Vielen Dank für Eure Hilfe.

Gruß,
Mark

ColdFireIce
Beiträge: 407
Registriert: 06.03.2009, 15:38
Wohnort: Karlsruhe
Danksagung erhalten: 1 Mal

Re: Homematic Webcontrol

Beitrag von ColdFireIce » 18.08.2010, 15:10

mark hat geschrieben:Hallo Burkhard, Daniel,

ich hatte nur das -O mit weggelöscht als ich meine Daten eingetragen habe (Ich dachte das gehört zum fiktiven LicenceKey :-)

Vielen Dank für Eure Hilfe.

Gruß,
Mark
Hehe,
ähm ja, das gehört da wohl hin, aber frag mich nicht warum. Hab das auch einfach nur mal kopiert. Ich mein man könnte es ja nachschaun, da es aber einwandfrei funktioniert belassen wir es einfach dabei ;)

Grüße
Daniel

Antworten

Zurück zu „Projektvorstellungen“