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 » 16.08.2010, 01:14

Hallo Burkhard,

mir fallen auch gleich ein paar Dinge auf und ein:
bumaas hat geschrieben:auf der Homematic Homematic habe ich die Firewall deaktiviert (HomeMatic XML-RPC API: Vollzugriff, Remote HomeMatic-Script API: Vollzugriff)
--> muss hier noch mehr konfguriert werden?
Soweit ich dass weiß, nein. Du solltest aber auch die Firewall deines NAS denken. Die Firewall des Servers ist oft das größere Problem.
bumaas hat geschrieben:includes/globals.inc.php habe ich angepasst:
define("XMLRPC_SERVER_ADDRESS", "192.168.178.46");
define("XMLRPC_CLIENT_ADDRESS", "192.168.178.27");
define("XMLRPC_CLIENT_PATH", "homematic/includes/php/xmlrpc_server.php");
Hier sehe ich einen Fehler. und zwar hast du einen / am Anfang des Pfads vergessen. Wenn du dir die konstruktion des XMLRPC_CLIENT_COMPLETE_PATH (define("XMLRPC_CLIENT_COMPLETE_PATH", "http://".XMLRPC_CLIENT_ADDRESS.":".XMLRPC_CLIENT_PORT.XMLRPC_CLIENT_PATH);) mal anschaust, siehst du dass deine Daten das hier ergeben würden (Port schätze ich mal 80):

Code: Alles auswählen

http://192.168.178.27:80homematic/includes/php/xmlrpc_server.php
Ich denke so sieht man es deutlicher. also richtig wäre:

Code: Alles auswählen

define("XMLRPC_CLIENT_PATH", "/homematic/includes/php/xmlrpc_server.php");
Um dass noch mal sicher zu stellen: 192.168.178.46 ist deinen CCU und 192.168.178.27 dein NAS?! so sollte es, deinen Angaben nach, zu mindest sein.
bumaas hat geschrieben:die angezeigte LED bleibt schwarz und blinkt nicht
das bedeutet normalerweise dass es beim verarbeiten des SITE_devicesArray ein Problem gab. Schau dir bitte noch mal genau dass Beispiel, bzw. die angehängte Datei an, und ob du auch wirklich alles so angepasst hast wie es soll. Also richtige SN und INTERFACE. (bie wired komponenten muss man das Interface ändern). sollte es immer noch probleme geben schicke oder poste einfach mal die index.html die du gebaut, bzw. angepasst hast.
Sobald falsche Aktoren im SITE_devicesArray stehen kommt es eben zu Probleme habe mich dem Fehler abfangen noch nicht SO gewidmet.

Und zu guter Letzt:
bumaas hat geschrieben:ein Aufruf von "http://server/homematic/includes/php/ph ... =homematic" zeigt
{"GEQ0008327:1":{"MOTION":"false","BRIGHTNESS":"36","LastUpdate":"August 03, 2010 19:27:11", ...
Das sind nicht die Daten von meiner CCU, sondern wohl eher die von deiner?
Das sagt mir dass du meinem Rat nicht gefolgt bist und dir große Packet gezogen hast. Zieh dir bitte einfach die webcontrol_0_1_tutorial.zip aus dem 1. Post, das ist für Einsteiger in Verbindung mit dem Tutorial sicher das richtige. Meine Oberflächen sind schon sehr spezialisiert und individualisiert.
außerdem ist all packet auch die index seite vom simulator enthalten mit der man das PHP-Session Array mit Inhalt versehen kann.
um das wieder zu löschen kannst du entweder in deiner globals.inc.php die Session ID ändern, oder du rufst auf deinem Server diese Seite auf:

Code: Alles auswählen

/includes/php/phpSession_unsetArray_once.php
also bei dir:

Code: Alles auswählen

http://192.168.178.27/homematic/includes/php/phpSession_unsetArray_once.php
dieser Aufruf sollte dein Array leeren.
danach schauste einfach noch mal in die phpSession_displayArray.php?array=homematic dann siehste ja ob alles weg ist, und dann kannst du auch sehen ob was von der CCU kommt. Habe ich ja schon erklärt mit LastUpdate und so.
bumaas hat geschrieben:Ich scheitere meiner Meinung nach am Zugriff auf die Homematic.
und das können wir auch einfach testen ;)
ruf doch mal die Seite

Code: Alles auswählen

/includes/php/xmlrpc_setValue.php?port=2001&dev=EEQ0000001:1&what=STATE&value=true
bei dir:

Code: Alles auswählen

http://192.168.178.27/homematic/includes/php/xmlrpc_setValue.php?port=2001&dev=EEQ0000001:1&what=STATE&value=true
natürlich bitte noch das EEQ0000001:1 durch einen Schaltaktor austauschen. Mit diesem Befehl kannst du den Aktor direkt anschalten. Achja. Falls es kein Funk Aktor ist musst du den Port noch auf 2000 austauschen.

Ich hoffe dass dir das ein bisschen weiter hilft. Sonst wie gesagt einfach mal dein Tutorial versuch an mich schicken oder hier posten. Die index.html reicht.

Viele Grüße
Daniel

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

Re: Homematic Webcontrol

Beitrag von ong » 16.08.2010, 11:40

Hallo,

@Burkhard: Welche Synology? Ich habe hier die DS209. Hast du noch irgendwelche Zusatzsoftware installiert?

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

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 » 16.08.2010, 14:13

Hallo Daniel,

vielen Dank für deine ausführlichen Tipps! Jetzt klappt es :D

Ich hatte zwei Punkte falsch gemacht:
  • es fehlte der / im Pfad
  • ich hatte im SITE_devicesArray noch weitere Beispiel- ("EEQ00...") Aktoren aufgezählt
Die erste Hürde ist genommen. Mein Ziel ist es, über einen iPod touch auf die HM zuzugreifen. Aber der Weg ist für mich noch sehr weit. :roll:
ong schrieb:
Welche Synology? Ich habe hier die DS209. Hast du noch irgendwelche Zusatzsoftware installiert?
Ich habe die DS109 mit DSM 2.3. Die bringt einen WebServer mit und auch PHP. Somit brauchte ich nichts weiter installieren.

Viele Grüße

Burkhard

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 » 16.08.2010, 22:31

Hallo Daniel,

ich habe angefangen, dein Beispiel der iPod Simulation auf meine Bedürfnisse anzupassen. Zu meiner eigenen Überraschung klappt das Schalten der Leuchten bereits wunderbar. :D

Nun sind der Bewegungsmelder und ein Türkontakt dran. Beide zeigen auch schon den korrekten Zustand an, selbst die Historienwerte werden angezeigt.

Mit den Historien des Türkontaktes (GEQ0146004) hatte ich jedoch zunächst Probleme. Erst nachdem ich die 'historyRules' in der globals.inc.php modifiziert habe, funktioniert es. Deren Bedeutung ist mir noch unklar. :?:

Hier mal mein Ausschnitt:

$GLOBALS['historyRules'] = array(
1 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^MOTION$/i", "VALUE" => "/^true$/i", "HISTORY" => 8, "LOG_TO_FILE" => false),
2 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^MOTION$/i", "VALUE" => "/^false$/i", "HISTORY" => 0, "LOG_TO_FILE" => false),
3 => array("DEVICE" => "/^(GEQ0146004:1|GEQ018:1)$/i", "DATAPOINT" => "/^STATE$/i", "VALUE" => "/^true$/i", "HISTORY" => 2, "LOG_TO_FILE" => false),
4 => array("DEVICE" => "/^(GEQ0146004:1|GEQ018:1)$/i", "DATAPOINT" => "/^STATE$/i", "VALUE" => "/^false$/i", "HISTORY" => 0, "LOG_TO_FILE" => false),
46 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^WORKING$/i", "VALUE" => "/.*/", "HISTORY" => 0, "LOG_TO_FILE" => false),
47 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^ERROR$/i", "VALUE" => "/.*/", "HISTORY" => 0, "LOG_TO_FILE" => false),
48 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^STICKY_UNREACH$/i", "VALUE" => "/.*/", "HISTORY" => 0, "LOG_TO_FILE" => false),
49 => array("DEVICE" => "/.*/", "DATAPOINT" => "/^CONFIG_PENDING$/i", "VALUE" => "/.*/", "HISTORY" => 0, "LOG_TO_FILE" => false),
50 => array("DEVICE" => "/.*/", "DATAPOINT" => "/.*/", "VALUE" => "/.*/", "HISTORY" => 0, "LOG_TO_FILE" => false)
);

Kannst du sie bitte etwas erklären?

Mit einem interessanten Phänomen kämpfe ich noch:
  • die Historiendaten sind immer genau 1000 sec zu hoch :?
    Bsp: der Bewegungsmelder spricht um 22:16:02 an, dann zeigt die WebUI der CCU das Änderungsdatum 22:16:02 an, als Historienwert wird jedoch 22:32:52 angezeigt.
    Auch ein Aufruf von phpSession_displayArray.php?array=homematic liefert bereits den um 1000 sec erhöhten Wert.
Kannst du dir darauf einen Reim machen?

Viele Grüße

Burkhard

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

Re: Homematic Webcontrol

Beitrag von ColdFireIce » 16.08.2010, 23:12

Hi,
bumaas hat geschrieben:die Historiendaten sind immer genau 1000 sec zu hoch :?
boah, also da bin ich jetzt echt erstmal ratlos :(
Werde mir dass noch mal genau anschaun und test. Wäre schön wenn du dass auch noch mal testen könntest. am besten mit der phpSession_displayArray.php?array=homematic seite. da sind die Daten immerhin in Rohform. auch einfach mal schaun ob sie erst 1000sec. zu spät eingetragen werden, oder ob der wert zwar gleich kommt, aber die zahl nicht stimmt. Zur Info: die History wird von deinem XML-RPC Server geschrieben. dass geschieht in der includes/php/xmlrpc_server.php Datei. etwa in Zeile 108. Der Code dafür:

Code: Alles auswählen

$ruleMatched = false;
foreach ($GLOBALS['historyRules'] as $rule){
	if(($ruleMatched == false) && preg_match($rule["DEVICE"], $ParamDevice) && preg_match($rule["DATAPOINT"], $ParamWhat) && preg_match($rule["VALUE"], $ParamValue)) {
		for ($i = $rule["HISTORY"]; $i >= 1; $i--) {
			if ($i > 1) {
				$_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][$i]['VALUE'] = $_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][$i-1]['VALUE'];
				$_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][$i]['TIME'] = $_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][$i-1]['TIME'];
			} else {
				$_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][1]['VALUE'] = $ParamValue;
				$_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][1]['TIME'] = $currentDateTime;
			}
		}
		$ruleMatched = true;
		if ($rule["LOG_TO_FILE"]){
			$inhalt = "$currentDateTime :".var_export($_SESSION['HOMEMATIC'][$ParamDevice], true)."\n";
			$handle  = fopen("log/".sanitize($ParamDevice, true).".txt", "a");
			fwrite ($handle, $inhalt);
			fclose ($handle);
		}
	}
}
Die interessant Zeile ist dabei eben:

Code: Alles auswählen

$_SESSION['HOMEMATIC'][$ParamDevice][$ParamWhat.'_HISTORY'][1]['TIME'] = $currentDateTime
d.h. die TIME des 1. History Werts wird mit $currentDateTime belegt. und diese wird am Anfang des Scripts berechnet und an mehreren Stellen genutzt.
unter anderem auch für das setzen der Werte LastUpdate und LastGlobalUpdate:

Code: Alles auswählen

$_SESSION['HOMEMATIC'][$ParamDevice]["LastUpdate"] = $currentDateTime;
$_SESSION['HOMEMATIC']["LastGlobalUpdate"] = $currentDateTime;
die aktuelle Zeit selbst wird dabei in Zeile 59 gesetzt:

Code: Alles auswählen

$currentDateTime = date(DATE_TIME_STRING);
wo bei der DATE_TIME_STRING wieder in deiner gloabls.inc.php steht. um die Formatierung des Strings zu ändern schau einfach mal hier rein: http://php.net/manual/de/function.date.php
Ehrlich gesagt klingt das ganze aber so als würde die interne Uhr deines NAS einfach 1000sec. vorgehen. Weil die php date() funktion nutzt natürlich die Zeit des Servers.

Zu der History kann ich dir natürlich einiges erklären, auch wenn ich gehofft hatte dass ich dass erst später machen kann. dachte nicht dass das schon jemand braucht :wink:

Es handelt sich dabei um reguläre Ausdrücke auch regexp genannt. Google ist dein Freund wenn du da mehr erfahren willst. Es ist eigentlich nur eine Art Stringsuche, aber mit mehr Möglichkeiten. Bei jedem Event werden eben 3 Werte mitgeschickt, dass sind das Device als Seriennummer, der Datenpunkt, un der Wert, und mit diesen 3 Werten DEVICE, DATAPOINT, VALUE kann man prüfen ob die aktuell empfangene Meldung dem entspricht was man loggen möchte
also, zB:
  • "DEVICE" => "/.*/" bedeutet für alle Geräte wahr.
  • "DEVICE" => "/^(GEQ0001234:1|GEQ0001111:1)$/i" nur für genau das Gerät GEQ0001234:1 oder GEQ0001111:1 wahr.
  • "DEVICE" => "/^GEQ0002222:1$/i" wäre nur für genau das Gerät GEQ0002222:1 wahr.
  • "DATAPOINT" => "/^MOTION$/i" ist nur für den Datenpunkt MOTION wahr.
  • "DATAPOINT" => "/.*/" ist für alle Datenpunkte wahr.
  • "VALUE" => "/.*/" ist für alle Werte wahr.
  • "VALUE" => "/^true$/i" ist nur genau für den Wert true wahr.
nur wenn alle 3 Bedingungen wahr sind wird die jeweilige History auswertung angegangen, und dafür sind die 2 anderen Werte da:
"HISTORY" => 8 gibt zB. an dass 8 History Einträge im PHP-Session Array angelegt werden sollen, die dann nach dem FIFO (first in first out, Warteschlange, wer zu erst kommt kommt auch als Erster wieder raus.) Prinzip gefüllt werden
"HISTORY" => 0 für die angegebene Konstelation der 3 erwähnten Werte wird kein History Eintrag geschrieben.
"LOG_TO_FILE" => true bedeutet einfach dass zusätlich zum PHP-Logging noch eine Datei angelegt wird die ebenfalls im "Anhänge"verfahren mit den aktuellen Werten des Devices gefült wird. für jedes Device wird eine eigene Datei angelegt. Die Logs liegen dann im includes/php/log/ Verzeichnis. Wäre auch was für die Todo Liste das Einstellbar zu machen.
Da diese Datei aber unendlich wächst würde ich davon wirklich nur sehr geziehlt gebrauch machen.
Jetzt erklär ich noch fix ein paar Regeln:

Code: Alles auswählen

array("DEVICE" => "/.*/",	"DATAPOINT" => "/.*/", "VALUE" => "/.*/", 	"HISTORY" => 0, "LOG_TO_FILE" => false)
Bei allen Geräten für alle Datenpunkte mit jedem Wert: Wird keine History erstellt und kein File geschrieben. Das ist der Standardfall für alle Events. wenn man wirklich für jedes Event eine History haben will könnte man bspw. "HISTORY" => 2 schreiben. ich rate davon aber eher ab. macht das Array doch sehr groß.

Code: Alles auswählen

array("DEVICE" => "/.*/","DATAPOINT" => "/^WORKING$/i","VALUE" => "/.*/","HISTORY" => 0, "LOG_TO_FILE" => false)
Fängt ab dass der WORKING Datenpunkt nicht geloggt wird.

Code: Alles auswählen

array("DEVICE" => "/.*/","DATAPOINT" => "/^MOTION$/i", "VALUE" => "/^true$/i","HISTORY" => 8, "LOG_TO_FILE" => false)
Wenn der Datenpunkt MOTION true ist werden 8 Historywerte geloggt. Egal von welchem Gerät.

so ich hoffe das hilft dir etwas weiter. Wie gesagt der entscheidende Punkt ist sicher sich mal mit RegExp ein bisschen zu beschäftigen.
Man sollte vielleicht noch sagen, dass
1. Nach der ersten zutreffenden Regel abgerochen wird.
2. Die IDs am Anfang der Zeile natürlich eindeutig sein sollten.
und 3. Immer die aktuelle Zeit und der aktuelle Wert in die History geschrieben werden. diese kann man dann mit dem Homematic Webcontrol Typen HISTORY_TIME und HISTORY_VALUE einbinden. zusätlich zu den standard Parametern müssen bei History Typen natürlich noch der DATAPOINT um den es geht und die HISTORY, also die Nummer angegeben werden.

Viele Grüße
Daniel
Zuletzt geändert von ColdFireIce am 06.12.2010, 19:03, insgesamt 2-mal geändert.

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, 08:55

Hallo Daniel,
ColdFireIce schrieb:
Ehrlich gesagt glingt das ganze aber so als würde die interne Uhr deines NAS einfach 1000sec. vorgehen. Weil die php date() funktion nutzt natürlich die Zeit des Servers
Treffer! Das war's. Es war wohl purer Zufall, dass es genau 1000 sec waren. Ich habe den NAS nun so eingestellt, dass er sich mit einem Zeitserver synchronisiert.

Vielen Dank auch für die Erläuterungen der historyRules. Eine interessante Lösung.

Viele Grüße

Burkhard

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, 10:34

Hallo Daniel,

im nächsten Schritt möchte ich mir einige Systemvariablen anzeigen lassen (z.B. "Feiertag") und andere setzen können (z.B. "Rolladenautomatik alle"). Beide Systemvariablen sind vom Typ "Logikwert"

Hier habe ich die folgendes Array gesetzt:

Code: Alles auswählen

			var SITE_devicesArray = {	
										'ID01':{'INTERFACE':'HSS', 'SN':'Feiertag', 		    	'HTML_CONTAINER':'var_feiertag',               'TYP':'REGAHSS_VARIABLE_STATE_DISABLED'},
										'ID02':{'INTERFACE':'HSS', 'SN':'Rolladenautomatik alle',  	'HTML_CONTAINER':'var_rolladenautomatik_alle', 'TYP':'REGAHSS_VARIABLE_STATE_IO'}
									};
und folgende Listelemente:

Code: Alles auswählen

                <li class="custom_button"><span class="name">Feiertag</span><div id="var_feiertag" class="custom_button_pic"></div></li>
                <li class="custom_button"><span class="name">Rolladenautomatik alle</span><div id="var_rolladenautomatik_alle" class="custom_button_pic"></div></li>
Im Ergebnis wird aber nur der '?-Button' angezeigt.

Im Eröffnungsposting schreibst du
REGAHSS_VARIABLE_STATE: benötigt zusätzlich das Element VARIABLE, liest boolean Systemvariable (0, 1) <VARIABLE>. Bild Schalter (ja / nein)
REGAHSS_VARIABLE_STATE_IO: benötigt zusätzlich das Element VARIABLE, liest boolean Systemvariable (0, 1) <VARIABLE>. Bild Schalter (an / aus)
REGAHSS_VARIABLE_STATE_DISABLED: benötigt zusätzlich das Element VARIABLE, boolean Systemvariable (0, 1) <VARIABLE>. Bild (ja / nein)
welche VARIABLE ist gemeint? Habe ich da noch etwas übersehen? Ich brauche mal wieder deine Hilfe :(

includes/php/phpSession_displayArray.php?array=homematic zeigt die Systemvariablen bei mir nicht an. Ist das OK?

Gibt es eine Möglichkeit, den Inhalt der Systemvariablen mit xmlrpc_getValue.php abzufragen? Mein Versuch mit

Code: Alles auswählen

http://.../includes/php/xmlrpc_getValue.php?port=2001&dev=Feiertag&what=VALUE
liefert die Fehlermeldung "Error: Connect error: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)"

Viele Grüße und vielen Dank für deine Geduld

Burkhard

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, 15:45

Hallo Burkhard
bumaas hat geschrieben:Im Eröffnungsposting schreibst du

REGAHSS_VARIABLE_STATE: benötigt zusätzlich das Element VARIABLE, liest boolean Systemvariable (0, 1) <VARIABLE>. Bild Schalter (ja / nein)
REGAHSS_VARIABLE_STATE_IO: benötigt zusätzlich das Element VARIABLE, liest boolean Systemvariable (0, 1) <VARIABLE>. Bild Schalter (an / aus)
REGAHSS_VARIABLE_STATE_DISABLED: benötigt zusätzlich das Element VARIABLE, boolean Systemvariable (0, 1) <VARIABLE>. Bild (ja / nein)

welche VARIABLE ist gemeint? Habe ich da noch etwas übersehen? Ich brauche mal wieder deine Hilfe :(
Sorry das war mein Fehler :( habe es schon geändert. Es wird tatsächlich nicht mehr benötigt als das was du geschrieben hast. Das sieht eigentlich sehr richtig aus.

Da man die ReGa-HSS Sachen nicht über die XML-RPC Schnittstelle abfragen kann, da diese eine Ebene darunter liegt, greife ich hier auf eine andere Methode zurück. Deswegen kann man das auch nicht mit xmlrpc_getValue.php ansprechen und es steht auch nicht im PHP-Session Array, da mich die CCU nicht über Änderungen an Systemvariablen informiert. Also geht dass nur über regelmäßiges "Nachfragen" (Polling).

es gibt die möglichkeit das manuell zu testen, wird aber wie gesagt nicht gespeichert:

Code: Alles auswählen

http://.../includes/php/regaHss_requestCommand.php?cmd=var ID01_VARIABLE = dom.GetObject("Feiertag").Variable();
Da der Code den du gepostet hast richtig aussieht tippe ich allerdings auf einen anderen Fehler. Schau dir bitte im Tutorial noch mal genau an welche Mehtoden aufrufe und includes enthalten seien müssen damit ReGa-HSS auch funktioniert. wie gesagt muss ich da auch eine andere Schnittstelle zugreifen.
im Prinzip sind es im <head>:

Code: Alles auswählen

<script type="text/javascript" src="../../includes/js/regaHss_functions.js"></script>
var SITE_regaHssRefreshRate = 3000;
var regaHss_requestString = '';

function updateRegaHssDevices(){
	regaHss_RequestGlobalDeviceArray(regaHss_requestString);
	setTimeout("updateRegaHssDevices()", SITE_regaHssRefreshRate);
}
und in der init Funktion:

Code: Alles auswählen

regaHss_requestString = regaHss_createRequestString();
updateRegaHssDevices();
Check doch einfach mal ob du dass auch wirklich alles drin hast. Wenns dann immer noch nicht geht schau mal was die LED macht... wie gesagt Rot ist für ReGa-HSS. Vielleicht hast du die auch bei den Variablen verschrieben. Ich tippe aber eigentlich eher auf die Includes im <head>. Du kannst ja auch mal mit dem manuellen Aufruf prüfen, ob es vielleicht doch an der Kommunikation liegt.

Viele Grüße
Daniel

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

DeInit Update

Beitrag von ColdFireIce » 17.08.2010, 16:50

Hi,

ein kleines Update als Einschub für die Leute die es brauchen. Die Datei im Anhang einfach über die alte drüber kopieren und ersetzen. die Datei liegt in includes/php/xmlrpc_init.php

Es ist damit jetzt möglich vom Event System der CCU wieder abzumelden.
einfach die Funktion

Code: Alles auswählen

xmlRpc_deinit();
aufrufen.

bspw könnte man das beim verlassen der Seite so einbinden:

Code: Alles auswählen

Event.observe(window, "beforeunload", leave);

function leave(){
   xmlRpc_deinit();
}
Es muss einem dann aber klar sein, dass man nicht mehr den aktuellen Status eines Aktors angezeigt bekommt. wenn dieser zB per Hand geschaltet wird.
Will man sich erst garnicht anmelden kann man natürlich auch einfach den Aufruf von xmlRpc_init(); weglassen.

Viele Grüße
Daniel
Dateianhänge
xmlrpc_init.zip
(632 Bytes) 220-mal heruntergeladen

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, 17:00

Hallo Daniel,

meine Versuche habe ich mit der sites\iphone\sysvars.html aus dem großen Paket gemacht. Hier ist ja alles bereits eingebunden und die Funktionen sind entsprechend gefüllt.

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"}

Zur Kontrolle - um ganz sicher zu gehen - habe ich das Kommando direkt in der WebUI im Scripteditor ausprobiert: hier erhalte ich "1" zurück, was stimmt :wink:

Nun habe ich es auch mit dem Tutorial Lektion 9 noch einmal probiert. Auch hier wird beim Zugriff auf "Anwesenheit" im Textfeld "null" angezeigt. Die LED blinkt ausschließlich schwarz.

Ich bin (mal wieder) ratlos ...

Dann noch gleich eine zweite Frage: ich habe versucht, mich in die Wetterabfrage beim iPod Beispiel einzuarbeiten und das Grundprinzip meine ich auch verstanden zu haben. Ich finde jedoch die Stelle nicht, wo WeatherXmlFeedForecast mit der PartnerID und dem LicenceKey instanziiert wird. Oder hast du das beim Simulator ganz weggelassen? Vielleicht kannst du mir auch da einen Hinweis geben.

Viele Grüße

Burkhard


Viele Grüße

Burkhard

Antworten

Zurück zu „Projektvorstellungen“