Erstmal > Michael >> VIELEN HERZLICHEN DANK!!! Dein Tipp hat mich auf die Lösung gebracht
Und jetzt noch für alle die Lösung
> Ihr braucht die „hmxml.inc.php“ in eurem IP-Symcon Skript Verzeichnis. Wenn ihr die noch nicht habt, dann erstmal [b]HIER[/b] laden (Upload by Swifty).
Diese verschiebt/kopiert ihr in euer „scripts“ Verzeichnis von IP-Symcon. Dann in der IP-Console das Skript importieren. Das Skript öffnen und die IP eurer CCU2 eintragen + die ID von dem Skript! Außerdem wichtig, das Skript muss den Namen „hmxml.inc.php“ haben! Hat es das nicht, dann umbennen (über den Schraubenschlüssel in der IPS-Console).
IP + SkriptID in „hmxml.inc.php“ (bei mir Zeile 64 und 70):
$GLOBALS['$BidCosServiceIP'] = "192.168.1.10"; // HomeMatic CCU2 IP eintragen
$GLOBALS['hmxml_ID']=56789; // ID vom Skript "hmxml.inc.php" eintragen
Dann müsst ihr noch diese Funktion in die „hmxml.inc.php“ reinkopieren. Ich habe sie ab Zeile 772 eingebaut, ist aber ziemlich egal wo die steht, passt so halt zur anderen Funktion darüber.
function HMXML_setParamBolean($Device, $param, $value, $channel=-1)
{
// $IPS_DeviceID: IPS Instance ID or HM Address
// $param: STRING - The parameter to set
// $value: DOUBLE - The value to set.
$HMAddress = Device_2_HMAddress($Device, $channel);
$params = array($param => new xmlrpcval("$value", "boolean"));
$values = new xmlrpcval();
$values->addStruct($params);
$content = new xmlrpcmsg("putParamset",
array( new xmlrpcval($HMAddress, "string"),
new xmlrpcval("MASTER", "string"),
$values ) );
$result = HMXML_send($content, $GLOBALS['$client']);
}
Damit habt ihr die Grundlage und könnt mit HMXML und XMLRPC „spielen“
Oder das machen, worum es hier in dem Thread geht >> die LOKALE BEDIENSPERRE der Heizungsthermostate über Skript de-/aktivieren:
<?
/* Ereignis hinzufügen - Variablenänderung - Bool-Variable auswählen die ihr bei "$Bediensperre_VarID" eintragt */
include 'hmxml.inc.php';
$Bediensperre_VarID = 12345; // Bool-Variable, über welche ihr die "Lokale Bediensperre" aktivieren/deaktivieren könnt
$Thermostate_Instanz_List = array(11111,22222,33333,44444); // Array mit allen HM-Instanz-IDs von euren Heizungs-Thermostaten
if (GetValue($Bediensperre_VarID) == true) {
foreach ($Thermostate_Instanz_List as $Device) {
HMXML_setParamBolean($Device, "BUTTON_LOCK", 1, -1); // Lokale Bediensperre aktivieren
}
}
else {
foreach ($Thermostate_Instanz_List as $Device) {
HMXML_setParamBolean($Device, "BUTTON_LOCK", 0, -1); // Lokale Bediensperre deaktivieren
}
}
?>
…warum jetzt die LOKALE und nicht die GLOBALE? Weil man dann noch die Möglichkeit hat, durch längeres gleichzeitiges drücken der linken und rechten Taste, die Bediensperre am Gerät aufzuheben und wieder zu setzen, falls man doch mal kurz etwas am Thermostat verändern möchte
Das Skript ist auf meine Bedürfnisse gebaut, deswegen über Variablenänderung. Aber ihr könnt euch das ja gerne auf WebFront/ActionSkript umbauen oder wie auch immer ihr möchtet
[HR][/HR]
Wer noch etwas mehr basteln möchte, kann mit diesem Skript alle Parameter auslesen. Da sieht man mal, was da alles so möglich ist Ich glaube ich werde da noch das ein oder andere basteln
<?
include 'hmxml.inc.php';
$Device = "LEQ0000000"; // HomeMatic-ID (z.B. LEQ000000) vom Gerät eintragen, dass ihr Abfragen möchtet
// Parameter vom Device abfragen und ausgeben
$result = HMXML_getParamSet($Device, null, false);
print_r($result);
?>
> Natürlich können HMXML und XMLRPC noch viel viel mehr, aber da dürft ihr euch, bei Interesse, dann selbst mit befassen
Grüße,
Chris