Homematic Thermostat auf "Cent" stellen

Funktioniert das Ganze eigentlich nur exklusiv mit der CCU oder geht das auch mit dem Lan Adapter?

Gruß
Jens

Das ist ja mal richtig Klasse, dass das ganz ohne Skripte auf der CCU funktioniert. Respekt.

Und natürlich alles Gute zum Geburtstag!

Volle Zustimmung. Da hieß es die ganze Zeit, dass es nicht geht und da kommt ein neuer User und erlöst uns mit ein paar Zeilen Code.

Respekt. Habs gerade auch mit Erfolg getestet. :loveips:

Nachtrag: Ich korrigiere: Da kommt ein schreibfauler Altuser. LOL

Wirklich feine Sache, auch gerade getestet, nutze aber weiterhin die Skriptversion aus den ersten Beiträgen da ich hier nur eine Variable in IPS setze und alle anderen Sachen CCU gesteuert laufen und IPS Ruhe hat.

Wenn jetzt ein XML-Profi noch eine schöne Class mit allen Funktionen bastelt die das IPS-Konzept nicht abdeckt wären alle (ich) glücklich. So es nur die Zeitenfenster eines WT/RT anpassen oder Rampen setzen eines Direktverknüpfung, und und und. Geht zwar eigentlich alles via CCU aber wenn man aus IPS manipulieren könnte wäre es gut.

Was vielleicht ein XMPRPC-Profi mal testen könnte…

… kann man das Heizprogramm eines WT/RT auslesen?

Wirklich cool - Respekt! :cool::smiley:

Ich werde das Thema Raumregelung jetzt wohl auch mal angehen und mir mal ein Set besorgen (als „Winterpojekt“).

Laut der Doku sollte man eigentlich problemlos an die meisten Infos kommen.

IPS scheint ja auch über Port 2100 mit dem Lan Adapter über den Bidcos Service zu sprechen - vermutlich sollten die Funktionen also prinzipiell auch direkt in IPS machbar sein?! :smiley:

Grüße, Benjamin

@alle: Danke für die Glückwünsche

@wgreipl: Das Auslesen geht mit „getParamset“ s. Beispiel unten

@Boui: „Schreibfauler Altuser“ ist super getroffen („alt“ ist seit heute um so treffender, „schreibfaul“ naja, hab zwar seit 2 Jahren ein IPS :loveips: aber eigentlich nur als „standard“ ohne besondere Gimicks eingerichtet und mich erstmal nur ums Haus und den Nachwuchs gekümmert :rolleyes:).
Vielleicht gibts ja demnächst mehr von mir s.u. :stuck_out_tongue:

@bengie: Genau so ist es bei mir auch. Dies ist auch mein erstes (Winter-)Projekt wo ich meine Heizungssteuerung, nebst Oberfläche für ein kleines günstiges Android Tablet umsetzen möchte (ein hoher WAF sollte auch erreicht werden :D)
Ich habe mir ja die letzten Abende um die Ohren geschlagen und mich mit der XMLRPC beschäftigt, schaut eigentlich alles ganz einfach aus. Ich bin leider mit PHP noch nicht so fit, so dass es mir mit dem Rest etwas schwerer fällt.
Zum Auslesen eines Sets wird der Befehl „getParamset“ verwendet, welcher alle möglichen Parameter und deren gesetzten Werten inkl. Datentyp liefert. Mit dem Befehl „getParamsetDescription“ kann man sich alle möglichen bzw. zugelassenen Werte und deren Beschreibung anzeigen lassen.
Interessant ist auf jedenfall auch , dass man mit dem putParamset auch mehrere Werte auf einmal übergeben kann.

Beispiel zum „getParamset“:


<?
include "xmlrpc.inc.php" ;

// für ccu muss die passende Adresse eingetragen werden
$hm=new xmlrpc_client("http://ccu:2001", "", "");

// die entsprechende Adresse muss hier hinterlegt werden
$request = new xmlrpcmsg("getParamset", 
  array(new xmlrpcval("FEQ0000000:2", "string"), 
           new xmlrpcval("MASTER", "string")) );

$response=$hm->send($request);
$messages = php_xmlrpc_decode($response->value());
print_r($messages);
?>

Beispiel zum „getParamsetDescription“:


<?
include "xmlrpc.inc.php" ;

// für ccu muss die passende Adresse eingetragen werden
$hm=new xmlrpc_client("http://ccu:2001", "", "");

// die entsprechende Adresse muss hier hinterlegt werden
$request = new xmlrpcmsg("getParamsetDescription", 
  array(new xmlrpcval("FEQ0000000:2", "string"), 
           new xmlrpcval("MASTER", "string")) );

$response=$hm->send($request);
$messages = php_xmlrpc_decode($response->value());
print_r($messages);
?>

Sollte folgender Fehler auftreten, nicht verzweifeln ggf. öfter probieren, da es hier wohl noch einen XMLRPC Bug in der CCU existiert (s. auch FHZ-Forum), welcher das XML nicht komplett zurückliefert. Bei mir klappt es dann meistens irgendwann. Sollte ein Ergebnis geliefert werden, am besten speichern :wink: dann hat man zumindest mal die einzelnen Parameternamen. Vielleicht ist der Bug mit der nächsten FW der CCU behoben :confused:


Fatal error:  Call to a member function kindOf() on a non-object in C:\IP-Symcon\scripts\xmlrpc.inc.php on line 3289

Hallo Skaven,

ich hab noch keine Heizungsregelung über HM, aber einige Fenster und Türmelder (Alarmmeldung), darum kann ich leider aktuell nicht mit den Wandthermos experimentieren. Dein Beitrag und Andere zu XMLRPC und HM (Config auslesen) haben mich sehr neugierig gemacht und ich versuche mir mal ein Set bei nächster Gelegenheit zu kaufen, um experimentieren zu können. :smiley:

Wenn ich Dir bei kleinen PHP Problem helfen kann, schreib mir gerne eine PM.

Viele Grüße, Benjamin

Danke für die Fortsetzung.
Für ein Ergebnis Skript1 musste ich gefühlte 50mal das Script neu starten. Bei Skript 200mal. :o

Zu dem Fehler gab es in diesem Threadschon was dazu.

Habe die 1.504Beta5 und den XML-API-Patch auf der CCU laufen und die Skripte funktionieren bisher ohne Aussetzer.

Ist der der hier?

Ja, das ist er.

Der Patch über die 1.503 gebügelt funktioniert nicht. Ich hab dann die 1.504beta5 nachgeschoben und dann geht es perfekt.

Nachtrag: Die 1.054beta5 ist ja klasse. Die überträgt ja nun auch die Funksignalstärke RSSI_PEER / RSSI_DEVICE u.a bei den WTs. :slight_smile:

Für die Profies dürfte es klar sein aber für die Normalos habe ich mal die Systematik der Übermittelten Werte dargestellt.:

[TEMPERATUR_MONDAY_1] => 17
[TIMEOUT_MONDAY_1] => 340

Startzeit 00:00 Uhr
Endzeit 05:40 Uhr (340 Minuten)
Temperatur 17 Grad

[TEMPERATUR_MONDAY_2] => 22
[TIMEOUT_MONDAY_2] => 430

Startzeit 05:40 Uhr
Endzeit 07:10 Uhr (430 Minuten)
Temperatur 22 Grad

[TEMPERATUR_MONDAY_3] => 20
[TIMEOUT_MONDAY_3] => 1200

Startzeit 07:10 Uhr
Endzeit 20:00 Uhr (1200 Minuten)
Temperatur 20 Grad

[TEMPERATUR_MONDAY_4] => 22
[TIMEOUT_MONDAY_4] => 1350

Startzeit 20:00 Uhr
Endzeit 22:30 Uhr (1350 Minuten)
Temperatur 22 Grad

[TEMPERATUR_MONDAY_5] => 17
[TIMEOUT_MONDAY_5] => 1440

Startzeit 22:30 Uhr
Endzeit 24:00 Uhr (1440 Minuten)
Temperatur 17 Grad

Nach 24:00 Uhr ist der Inhalt der ebenfalls übermittelten freien unbelegten Speicherplätze uninteressant

Viel Spaß

Kein Grund, dass es nicht funktioniert. So wird es auch sowohl für CCU als auch LAN Adapter z.B. in Andreas skript gemacht.

Habe es gerade getestet und funktioniert. Danke skaven.

Komischerweise habe ich bei den ersten Tests jedoch die übliche xmlrpc CCU Fehlermeldung bekommen, obwohl ich das über LAN Adapter gemacht habe. Ich dachte, das wäre nur ein Bug der CCU? Jetzt läuft es komischerweise ohne Änderungen. Ich habe aber mal vorsichtshalber ein Error-catch integriert.

Gruß,

Zapp

so, ich klinke mich auch mal ein, da ich das thema sehr sehr interessant finde…

Habe jetzt die CCU auf Firmware 1.504beta5 gesetzt da das folgende Skript sonst nicht funktioniert…
Jetzt kann man eine Variable Typ Integer anlegen mit den Werten 0,1,2,3 und dem text Manuell. Automatik, Zentrale und Party anlegen.
Als Aktion folgendes Skript drauf:

<?

include "xmlrpc.inc" ;

// für ccu muss die passende Adresse eingetragen werden
$c=new xmlrpc_client("http://192.168.0.199:2001", "", "");

// die 1 bei xmlrpcval muss für den entsprechenden Modus gesetzt werden
// 0 = MANUAL; 1 = AUTO; 2=CENTRAL; 3 = PARTY
$param1= array("MODE_TEMPERATUR_REGULATOR" => new xmlrpcval($IPS_VALUE, "i4"));

$valPs = new xmlrpcval();
$valPs->addStruct($param1);

// die entsprechende Adresse des WT muss hier hinterlegt werden
$g = new xmlrpcmsg("putParamset",
                    array(  new xmlrpcval("IEQ0077732:2", "string"),
                            new xmlrpcval("MASTER", "string"),
                            $valPs ) );

$r=$c->send($g);
$messages = php_xmlrpc_decode($r->value());


// status prüfen
$g = new xmlrpcmsg("getParamset",
                    array(  new xmlrpcval("IEQ0077732:2", "string"),
                     new xmlrpcval("MASTER", "string")

									 ) );

$r=$c->send($g);
$messages = php_xmlrpc_decode($r->value());
//print_r($messages);
if($messages['MODE_TEMPERATUR_REGULATOR']==$IPS_VALUE)
{
SetValue($IPS_VARIABLE, $IPS_VALUE);
}
else
{
echo "Fehler: Modus am Thermostat wurde nicht geändert";
}
?>

Ihr müsst dann die IP der CCU für euch anpassen und die includes eventuell in xmlrpc.inc.php umbennenen, bei mir heißt die eben nur xmlrpc.inc
Man kann jetzt über 4 Taster im Webfront den Modus setzen, der wird an das Thermostat geschickt und gleich überprüft ob er richtig gesetzt wurde… :wink:
Sieht dann wie folgt aus:

So funktioniert das ganze doch schon sehr sehr gut… :slight_smile:
Hoffe ich konnte etwas helfen…
Grüße
Oli

Mal 'ne doofe Frage, wo bekommt man denn die 1.504beta5 her?!? Bei mir zeigt er als Verfügbare Version die 1.503 an!

Stimmt, doofe Frage. :stuck_out_tongue:

hier

Ja genau dort… :wink:

Wird aber trotzdem noch ganz schön Arbeit das sauber zu integrieren wie ich gemerkt habe.
Werde mal versuchen, dass ich ein Script fertig mache, mit welchem man die Automatikprogramme auslesen und dann direkt im Webfront ändern kann, das wäre natürlich der Optimalfall…

Melde mich sobald das fertig ist… :slight_smile:

Oli

P.S. Wenn der Modus geändert wird, kann es u.U. bis zu 2 Minuten dauern bis sich der Wandthermostat meldet und dann die neue Konfiguration auch empfängt, also nicht wundern… Aktiv kann man da wohl nichts hinschicken… :slight_smile:

Das Verhalten ist systembedingt so. Die WTs hören nicht auf jeden und schon gar nicht direkt. Darum gibt es auch bei den Instanzen den Haken „Status emulieren“. Ist der nicht gesetzt, so verwirrt dies jeden Homematic-Neuling.