Homematic Thermostat auf "Cent" stellen

Hallo Zusammen,
da ich gerade meine Steuerung auf die Thermostate umstelle grabe ich hier in diesem Thread nochmal rum. Ich bekomme eine Fehlermeldung beim Auslesen der Thermostate.

Der Aufruf erfolgt über

$tempProfile = HMXML_getTempProfile($IPS_DeviceID,false, false);

Folgende Meldung kommt (Gekürzt):


Notice:  Undefined index: TEMPERATUR_MONDAY_1 in E:\IP-Symcon\scripts\hmxml.inc.php on line 195
Notice:  Undefined index: TIMEOUT_MONDAY_1 in E:\IP-Symcon\scripts\hmxml.inc.php on line 196
Notice:  Undefined index: TEMPERATUR_MONDAY_2 in E:\IP-Symcon\scripts\hmxml.inc.php on line 195
Notice:  Undefined index: TIMEOUT_MONDAY_2 in E:\IP-Symcon\scripts\hmxml.inc.php on line 196

Das ganze kommt für jeden Wochentag und immer von 1 bis 24. Ich bin leider noch nicht so gut in Php um die Ursache in der hmxml.inc.php zu finden.
Das Array was raus kommt sieht folgendermaßen aus. (Gekürzt)


Array
(
    [MONDAY] => Array
        (
            [EndTimes] => Array
                (
                    [0] => 00:00
                    [1] => 00:00
                    [2] => 00:00

                    [23] => 00:00
                )

            [Values] => Array
                (
                    [0] => 
                    [1] => 
                    [2] => 

                    [23] => 
                )

        )

    [TUESDAY] => Array

Das Speichern der Profile auf den Thermostaten kommen an und sehen auf der CCU in Ordnung aus. Das Auslesen mach aber dann Probleme.
Zurücksetzen der Thermaostat, Speichern über CCU etc ppp hat leider nichts gebracht. :confused:
Ich hoffe mir kann jemand helfen.

Gruß
Steffen

:loveips: Ich habe den Fehler gefunden. Hat sich damit erledit.

@ Raketenschnecke
Seitdem ich auf die Version 3.0 geupdatet habe, bekomme ich beim Ausführen des Scriptes zur Einstellung des Hand/Auto-Modus nur noch folgende Meldung:

Notice: Undefined index: VARIABLE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 5

Notice: Undefined index: VALUE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 5

Warning: Variable #0 existiert nicht in C:\IP-Symcon\scripts\9Heizungsmode.php on line 5

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 12

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 37

Notice: Undefined variable: IPS_VARIABLE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 39

Notice: Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 39

Warning: Variable #0 existiert nicht in C:\IP-Symcon\scripts\9Heizungsmode.php on line 39

Folgendes Script hatte ich bis zu letzt benutzt !

<?

include "xmlrpc.inc.php" ;

SetValueInteger($_IPS['VARIABLE'], $_IPS['VALUE']);

// für ccu muss die passende Adresse eingetragen werden
$c=new xmlrpc_client("http://192.168.178.16: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("JEQ0012624: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("JEQ0012624: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";
}
?>

Das Script ist nicht zur Direktausführung geeignet. Die Variablen sind nur gefüllt, wenn es über ein Event gestartet wird.

Gruß

Burkhard

Und bitte PHP-Tags über den Editor einfügen.

Erleichtert das Lesen des Beitrages ungemein.

Hallo tron76de,

Undefined variable: IPS_VALUE in C:\IP-Symcon\scripts\9Heizungsmode.php on line 12

IPS_VALUE muss geändert werden auf $_IPS[‚VALUE‘].
Und natürlich auch bei $IPS_VARIABLE auf $_IPS[‚VARIABLE‘]

Versionsbedingt ändert sich mal was :wink:

Die alte Version ist weiterhin gültig.

Gruß

Burkhard

Yepp, gültig schon, funktioniert bei meinem IPS aber auch überwiegend nicht mehr oder nur eingeschränkt (Details habe ich noch nicht untersucht) :cool:

Ich habe meine alte IPS Installation (v3.4) von 2013 inzwischen auf Win 10 64bit migriert und somit IPS auf v6.0 aktualisiert. Ich verwende noch ein paar ältere HM Wandthermostate und habe die xmlrpc.inc.php zum abfragen und setzen des Heizmodus (Manu, Auto, Cent, Party) verwendet.
Mit der neueren PHP Version kommen jetzt einige Fehler beim Ausführen der xmlrpc.inc.php:

  • The each function is deprecated
  • count(): Parameter must be an array or object …

Hierzu zwei Fragen:

  1. Gibt es eine aktualisierte xmlrpc.inc.php welche unter IPS v6 verwendet werden kann?
  2. Gibt es inzwischen eine andere (bessere) Methode um den Heizmodus der HM Thermostate abzufragen bzw. zu setzen?

Danke
Christian

Du musst mal im Forum auf die Suche gehen. Das ist ja schon ne ganze Weile her, dass das Problemchen aufgetaucht ist und besprochen wurde.

Ich hatte das damals auch umgestellt, um diesen Hinweis zu entfernen aber finde das auf die Schnelle nicht mehr.

1 „Gefällt mir“

@Boui Danke für den Hinweis! Ich habe noch etwas weitergesucht und auch gefunden.

Lösung:

In kurz:

  1. Auf Github die aktuelle xmlrpc Version herunterladen (aktuell: 4.5.1).
  2. Den ganzen Inhalt des xmlrpc Packetes nach /scripts/phpxmlrpc-4.5.1 extrahieren.
  3. Im ausführenden Skript diesen Code einbinden:
require "./phpxmlrpc-4.5.1/lib/xmlrpc.inc";
$GLOBALS['xmlrpc_detectencodings'] = 'ISO-8859-1';
PhpXmlRpc\PhpXmlRpc::importGlobals();

Vielen Dank an alle die in diesem wie im verlinkten Beitrag zur Lösung beigetragen haben.
Status holen und senden zu den HM Thermostaten funktioniert jetzt wieder ohne Fehlermeldung.

Hast du bitte auch den Pfad zur 4.5.1? Ich finde nur die alten Versionen.

Ich habe sie gefunden!
phpxmlrpc_V4.5.1

Genau von dort habe ich es heruntergeladen und dann mit den oben genanntem Code eingebunden.

@mr_cg

Ich versuche mich aktuell in dieses Thema einzuarbeiten.
Ich möchte gerne die Datenpunkte (hier die Wochenprogramme) der WTH-2 mit IPSymcon auslesen bzw. auch ändern können.

Mein erster Versuch mit „Bordmitteln“ war:

$ret = HM_WriteValueFloat(13156, „P1_TEMPERATURE_MONDAY_1“, 13.0);

Das wird aber mit Fehler

Warning: HomeMatic Fehler: Invalid parameter or value in /var/lib/symcon/scripts/36058.ips.php on line 4
abgewiesen.

Ob das überhaupt so funktionieren kann weiß ich noch nicht.
Ich habe dazu nach längerer Suche hier im Forum auch noch nichts konkretes gefunden.
Zumal es ja auch keine HM_ReadValue…() Befehle gibt.

Magst Du mir (oder gerne jeder andere der mitliest) mit ein paar Codeschnipseln auf die Sprünge helfen ?
Würde mich freuen :slightly_smiling_face:

P.S.: Das HM_Inventory Script habe ich zum laufen bekommen.

Gruß
lueralba

@lueralba
Bezüglich der Wochenprogramme habe ich leider überhaupt keine Ahnung.
Aus meiner Sicht wäre es ohnehin besser das Temperatur-Program via IPS zu realisieren und von dort immer nur die Soll-Temperatur zu senden.

Sicher das es Datenpunkte und nicht Konfig-Parameter sind?
Die kannst du über IPS Bordmitteln nicht direkt ansprechen.

Es gibt HM_RequestState um den aktuellen Wert von einem Datenpunkt in die Symcon Variable zu bekommen.
Wobei dies i.d.R. unnötig ist, da die CCU Wertänderungen zu Symcon pusht.
Michael
PS: Es gibt aktuell nur den Weg über die xmlrpc in PHP oder in Zukunft (3-5 Monate) auch über mein HomematicExtended Modul.

Welch interessante Informationen man so nebenbei liest. :grinning_face_with_smiling_eyes:

Nicht zu viel erhoffen. Es gibt dann nur PHP-Befehle um die Konfig der Geräte zu ändern.
Welche Parameter und was man einstellen kann, muss jeder selbst für sich bauen :wink:
Dafür gibt es einfach zu viele verschiedene Geräte.
Und alle als Symcon-Variablen anlegen, sprengt den Rahmen :stuck_out_tongue:
Michael

Ich hab immer noch das tolle Skript von Swifty am Laufen und freue mich nur über jede Innovation auf diesem Gebiet.

Erwartungen habe ich keine speziellen. Ich schaue nur, was da ggf. Neues kommt.

Gruß
Andreas

@Nall-chan

Hab ich mir schon gedacht :persevere:

Bin mal gespannt was Du da so zauberst !

Ich trainiere jetzt mal XMLPRC …

Schönes WE
lueralba