HomeMatic HM-CC-RT-DN >> Globale Bediensperre über Skript de-/aktivieren

Hallo allerseits!

Gibt es eine Möglichkeit, über ein IPS-Skript, den Punkt „Globale/Lokale Bediensperre“ der HomeMatic Heizungsaktoren HM-CC-RT-DN zu de-/aktivieren?

Befindet sich im HomeMatic WebInterface unter „Einstellungen > Geräte > Heizungsaktor > Einstellungen“.

Danke und Grüße,
Chris

Niemand eine Idee? :frowning:

Grüße,
Chris

Naja… kannst es ja mal über die hmxml.inc.php versuchen, bzw. erweitern.
Damit kannst du eigentlichen alles machen.
Den ursprünglichen Beitrag finde ich gerade nicht.
Aber so funktioniert auch das hier: Homematic Heizkörperthermostat - Heizprogramme per WebFront einstellen

Michael

Danke für den Tipp! Mal sehen, ob ich das verstehe :smiley:

Grüße,
Chris

Erstmal > Michael >> VIELEN HERZLICHEN DANK!!! Dein Tipp hat mich auf die Lösung gebracht :slight_smile:

Und jetzt noch für alle die Lösung :slight_smile:

> 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“ :slight_smile:

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 :slight_smile:
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 :slight_smile:

[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 :slight_smile: Ich glaube ich werde da noch das ein oder andere basteln :smiley:

<?
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 :stuck_out_tongue:

Grüße,
Chris

Bitte sehr :smiley:

Ich hatte auch schon vor 2 Jahren damit viel gespielt.
Aber das setzten von Parametern ist bei Batterie-Geräten teilweise sehr problematisch.
Die meisten Geräte (außer die Heizungsgeräte) müssen anschließend in den Anlernmodus gebracht werden um die Parameter zu übernehmen.
Darum habe ich dann irgendwann aufgehört zu versuchen mein Display-Wandtaster dynamisch zu programmieren.

Dafür gibt es ja nun den Display-Wandtaster mit Statusanzeige :smiley:

Michael

Ah, der Hinweis, dass manche Geräte danach in den Anlernmodus gehen ist gut - und wichtig :smiley:

Die Batterie ist in meinem Fall auch kein Problem. Wenn ich die Heizung auf SOMMER schalte, dann wird das einmal gesetzt und wenn ich dann am Winteranfang wieder auf WINTER schalte, dann wird die Sperre wieder aufgehoben, also verschmerzbar :slight_smile:

Mal sehen was da noch so geht. Das wichtigste „Problem“ ist gelöst, der Rest ist „Bonus“ :slight_smile:

Grüße,
Chris

Lösungsweg über HomeMatic RemoteScript Interface von Nall-chan

Objektbaum

hier das Toogle Script:

<?php $Status = GetValueBoolean(**Variable der Bediensperre**); if ($Status == true) { $HMScript = 'object obj = devices.Get("**Name des Gerätes**");' . PHP_EOL .'xmlrpc.PutParamset (obj.Interface(), obj.Address()#":0", "MASTER", "GLOBAL_BUTTON_LOCK", "true");' . PHP_EOL; $HMScriptResult = HM_RunScript(**RemoteScript Interface ID**, $HMScript); var_dump(json_decode($HMScriptResult)); } else { $HMScript = 'object obj = devices.Get("**Name des Gerätes**");' . PHP_EOL .'xmlrpc.PutParamset (obj.Interface(), obj.Address()#":0", "MASTER", "GLOBAL_BUTTON_LOCK", "false");' . PHP_EOL; $HMScriptResult = HM_RunScript(**RemoteScript Interface ID**, $HMScript); var_dump(json_decode($HMScriptResult)); } ?>

Funktioniert mit HmIP-BWTH, HmIP-WTH-1 u. HmIP-eTRV.

Wenn Interesse besteht habe ich auch noch Offset Temperatur u. Optimum Start/Stop zur Verfügung.

1 „Gefällt mir“