Heizkörperthermostat Heizprogramme per WebFront einstellen

Hallo Zusammen,
bin ein Newbie in IP Symcon und habe noch so meine Probleme.

Wenn ich das Script „Funktionen\HM_Heizung_Raumsteuerung“ ausführe erhalte ich folgende Fehlermeldung erhalten:

Warning:  require(./xmlrpc.inc.php): failed to open stream: No such file or directory in C:\IP-Symcon\scripts\HMXML_11-2013.inc.php on line 73

Fatal error:  require(): Failed opening required './xmlrpc.inc.php' (include_path='.;C:\php\pear') in C:\IP-Symcon\scripts\HMXML_11-2013.inc.php on line 73
Abort Processing during Fatal-Error: require(): Failed opening required './xmlrpc.inc.php' (include_path='.;C:\php\pear')
   Error in Script C:\IP-Symcon\scripts\HMXML_11-2013.inc.php on Line 73

Ich habe danach eine xmlrpc.inc.php im Script Verzeichnis von IP Symcon erstellt und den Inhalt aus diesem Thread gefüllt:

Das bringt mich dann zur folgenden Fehlermeldung:

Fatal error:  Cannot redeclare CreateVariableByName() (previously declared in C:\IP-Symcon\scripts\HM_Heizung_Funktionen.ips.php:182) in C:\IP-Symcon\scripts\xmlrpc.inc.php on line 86
Abort Processing during Fatal-Error: Cannot redeclare CreateVariableByName() (previously declared in C:\IP-Symcon\scripts\HM_Heizung_Funktionen.ips.php:182)
   Error in Script C:\IP-Symcon\scripts\xmlrpc.inc.php on Line 86

Hat jemand einen Plan wo mein Fehler liegt?

Das Homematic Thermostat HM-CC-RT-DN welches ich mir zum testen bestellt habe, habe ich mit dem Modul aus der IPS Library IPSHomematic mit folgenden Zeilen hinzugefügt:

'Heizung_Tim_Büro'                   => array('KEQXXXXXXX', 1, HM_PROTOCOL_BIDCOSRF, HM_TYPE_SWITCH),
'Heizung_Tim_Büro_Status'        => array('KEQXXXXXXX, 4, HM_PROTOCOL_BIDCOSRF, HM_TYPE_SWITCH),

Ich hatte vorher noch die anderen Kanäle bis 6 drinnen. Allerdings wurde unter denen nichts angelegt also habe ich sie entfernt. In dem Screenshot kann man sehen wie das Thermostat bei mir angezeigt wird. Noch zur Info: Ich nutze den LAN Adapter statt der CCU.

Viele Grüße
Tim

Ich habe danach eine xmlrpc.inc.php im Script Verzeichnis von IP Symcon erstellt und den Inhalt aus diesem Thread gefüllt:

Das ist natürlich Quark.
Lies doch mal den Anfang im Script Deines Links:

include IPS_GetKernelDir().„scripts\xmlrpc.inc“;

In dem Thread hängt die xmlrpc.inc Datei an, die das dort abgebildete Skript nutzt und auch swifty nutzt.
Also laden und unverändert nach script ablegen.

Steht auch hier:

The HMXML library requires the xmlrpc library. Copy the library and
// xmlrpc.inc.php in the IPS script directory

IPSLibrary ist ne ganz andere Baustelle. Das ist diesem Script völlig egal, was Du sonst noch mit der Instanz unternimmst. Du benötigst nur die über den IPS Homematic Konfigurator angelegte Instanz in Reinform. Also die entsprechende ID. Links von Heizung_Tim_Büro_Status abzulesen. :wink:

Wenn ich richtig recherchiert habe, sollte die xml-rpc-Schnittstelle auch mit dem LAN-Adapter zugänglich sein.

Die Datei ist im rar-File in Rainers Beitrag angehängt, runterladen, ins Script-Verzeichnis entpacken und .php anhängen, Dateiname xmlrpc.inc.php !! Rest wie von Boui beschrieben.

Kann aber sein, dass die Geschichte mit dem LAN-Adapter nicht geht.

Gruß
Bruno

Hi,

danke für Euere schnelle Rückmeldung.

Bin jetzt einen Schritt weiter :slight_smile:

Hänge aber beim nächsten wieder. :rolleyes: Und zwar erhalte ich beim ausführendes des Skripts „Zeitplan - Editieren\HM_Edit“ folgende Ausgabe:

Notice:  Undefined variable: HM_Edit_Wfe_ID in C:\IP-Symcon\scripts\57523.ips.php on line 60

Notice:  Undefined variable: HM_Edit_Wfe_ID in C:\IP-Symcon\scripts\57523.ips.php on line 65

Notice:  Undefined variable: HM_Edit_Wfe_ID in C:\IP-Symcon\scripts\57523.ips.php on line 68

Hast Du denn HM_Edit_Wfe_ID mit einer eigenen ID aus deinem Objektbaum vergeben?

Nachtrag: In der Config fehlt ein Semikolon im Beispiel hinter der Variablen. Bin ich auch drauf reingefallen.

Danke Dir Boui. Manchmal macht man echt blöde Fehler :rolleyes:

Hab es jetzt soweit installiert bekommen. Funktioniert aber leider noch nicht alles. Ich kann z.B. die Soll Temperatur im Manuellen Modus nicht umstellen. Ausserdem kann ich den Zeitplan nicht editieren. Sieht auch was merkwürdig aus. Z.B. steht Zimmer Auswahl bei den Wochentagen!? (Siehe Screenshot) Wie habe ich das nur hinbekommen :smiley:

Tja, dann sollte man auch lesen lernen. :stuck_out_tongue:

Benutzung:
Nachdem Ihr ein neues Thermostat im „HM_Heizung_Konfig“ Skript eingetragen muss das Skript „HM_Heizung_Raumsteuerung“ einmal manuell gestartet werden. Nunmehr solltet ihr im WFE (auf der Seite dieses Thermostates) zunächst versuchen das bereits werksseitig im Thermostat enthaltene Profil abzurufen. hierzu betätigt Ihr einfach den Button „Aktualisieren“. Erscheint sodann nach kurzer Zeit ein Wochenprofil ist alles OK und Ihr könnt weitermachen.

Um dieses Profil bearbeiten zu können muss es noch in IPS gespeichert werden. Hierzu betätigt den Button „Profil speichern“ (dieser wird rot) und sodann noch einmal den Button „Aktualisieren“. Jetzt wurde das im Thermostat bereits vorhandene Profil in die IPS-Variable geschrieben. Ihr könnt es sodann unter „Zeitplan editieren“ unter beliebig bearbeiten. (Hinweis: Das Profil wurde unter dem Profil „Normal“ gespeichert"

Die Funktionen in Tab „Zeitplan editieren“ könnt ihr beliebig ausprobieren. Solange Ihr nicht den Button „Profil speichern“ drückt werden weder die Werte in IPS noch im Thermostat geändert.

Und das mit der Zimmerauswahl bei Wochentagen ist halt ein Fehler, den der Erfinder auch drin hat. Kannste ja von Hand ändern.

Hallo…

das mit der Zimmerauswahl ist mir ja peinlich :o … Da hast wohl der Copy-Paste-Teufel zugeschlagen.

Um dies zu korrigieren bitte die Zeile 67 im Skript >>HM_Edit<< wie folgt ändern:

SetLinkByName($DumID, "Wochentag", $Profil_Wochentage_id, 1);

Dann das Skript einmal manuell ausführen und sodann den noch vorhandenen falschen Link in der Kategorie „Zeitplan - Editieren - Anzeige recht“ (ups da fehlt das ‚s‘) löschen.

PS:
Bitte nicht einfach die Links/Kategorien/Dummys etc. umbenennen, denn mein Script geht in diesem Fall davon aus, dass diese Objekte nicht mehr existent ist und legt diese (wiederum mit dem falschen Namen) erneut an. Sollte die Umbenennung für das WFE erforderlich sein, dann bitte auch die Namen im jeweiligen Script (in Frage kommen da die Zeilen 53-82 in >>HM_Edit<< oder 396-404 bzw. 439-447 in >>HM_Heizung_Funktionen.ips.php<<) anpassen.

PPS:
Ich habe mal in meiner „Anleitung“ einen Hinweis auf die xmlrpc.inc.php aufgenommen

Gruß

Swifty

@Boui

… hier mein Config-Skript für die Highstocks-Chart:

<?// ---->  hier muss EURE HighChartScriptId eingebenen werden
   $CfgDaten['HighChartScriptId']= 47969 /*[Program\Zentrale Scripte\Highcharts\Highcharts_V2.02.ips]*/ ;                  // ID des Highcharts Scripts

// Highcharts oder Highstock (default = Highcharts
	$CfgDaten['Ips']['ChartType'] = 'Highstock';

   // Überschriften
   $CfgDaten['title']['text']= "Heizung-Bad";
   $CfgDaten['title']['style']['fontWeight']= "bold";
   $CfgDaten['title']['style']['color']= "#6D869F";

	
	// Zeitraum welcher dargestellt werden soll
   $CfgDaten['StartTime'] = time() - (60*60*24*7*4*6); // 60sek x 60min x24h x7d *4w * 6m
   $CfgDaten['EndTime'] = time();

	// Highstocks
	$CfgDaten['rangeSelector']['inputStyle']['color']= '#E0E0E0'; // Schriftfarbe

	// Highstocks Range Selector (Buttons)
	/*********************************************
		An array of configuration objects for the buttons. The individual options for each item are:

		type
		Defines the timespan, can be one of 'millisecond', 'second', 'minute', 'day', 'week', 'month', 'ytd' (year to date), 'year' and 'all'.

		count
		Defines how many units of the defined type to use.

		text
		The text for the button itself
	************************************************/

	$CfgDaten['rangeSelector']['buttons'][] = array('type'=>'day', 'count'=> 1, 'text'=>'1d');
	$CfgDaten['rangeSelector']['buttons'][] = array("type"=>'week', "count"=> 1, "text"=>'1w');
	$CfgDaten['rangeSelector']['buttons'][] = array("type"=>'month', "count"=> 1, "text"=>'1m');
	$CfgDaten['rangeSelector']['buttons'][] = array("type"=>'all', "text"=>'all');
	$CfgDaten['rangeSelector']['enabled'] = true;
	//$CfgDaten['rangeSelector']['buttonSpacing'] = 20;
   $CfgDaten['rangeSelector']['selected'] = 1;


   $CfgDaten['navigator']['enabled'] = true;
   $CfgDaten['scrollbar']['enabled'] = true;



   // damit wird die Art des Aufrufes festgelegt
   $CfgDaten['RunMode'] = "script";     // file, script oder popup


   $CfgDaten['exporting']['enabled'] = FALSE;
	$CfgDaten['legend']['enabled'] = true;

    // Achse
    $CfgDaten["yAxis"][0]['title']['text'] = "Temperatur";
    $CfgDaten["yAxis"][0]['unit'] = "°C";
    $CfgDaten["yAxis"][0]['opposite'] = false;
    $CfgDaten["yAxis"][0]['offset'] =40;
    $CfgDaten["yAxis"][0]['min'] =10;

    $CfgDaten["yAxis"][1]['title']['text'] = "Luftfeuchte";
    $CfgDaten["yAxis"][1]['unit'] = "%";
    $CfgDaten["yAxis"][1]['opposite'] = true;
	 $CfgDaten["yAxis"][1]['offset'] =40;
    $CfgDaten["yAxis"][1]['min'] =40;

    $CfgDaten["yAxis"][2]['title']['text'] = "Soll-Temp";
    $CfgDaten["yAxis"][2]['unit'] = "°C";
    $CfgDaten["yAxis"][2]['opposite'] = false;
    $CfgDaten["yAxis"][2]['offset'] =100;
    $CfgDaten["yAxis"][2]['min'] =10;
    $CfgDaten["yAxis"][2]['max'] =40;




	 $CfgDaten["xAxis"][0]['showLastLabel'] = true;


  	 // ---->  hier mussen in folge natürlich EURE Variablen IDs eingebenen werden

	 $serie = array();
	 $serie['Id'] = 15401 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\WEATHER\TEMPERATURE]*/  ;
    $serie['name'] = "Temperatur";
    $serie['unit'] = "°C";
	 $serie['color'] = "#57A5FF";
	 $serie['AggType'] = 0;  // Stundenwerte
    $serie['ReplaceValues'] = false;
    $serie['RoundValue'] = 1;
    $serie['type'] = "spline";
    $serie['yAxis'] = 0;
    $serie['lineWidth'] = 1;
    $serie['states']['hover']['lineWidth'] = 2;
    $serie['marker']['enabled'] = false;
	 $CfgDaten["series"][] = $serie;

    $serie = array();
	 $serie['Id'] = 15046 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\WEATHER\HUMIDITY]*/  ;
    $serie['name'] = "Luftfeuchte";
    $serie['unit'] = "%";
	 $serie['color'] = "#F5F53D";
	 $serie['AggType'] = 0;  // Stundenwerte
    $serie['ReplaceValues'] = false;
    $serie['RoundValue'] = 1;
    $serie['type'] = "spline";
    $serie['yAxis'] = 1;
    $serie['lineWidth'] = 1;
    $serie['states']['hover']['lineWidth'] = 2;
    $serie['marker']['enabled'] = false;
	 $CfgDaten["series"][] = $serie;

    $serie = array();
	 $serie['Id'] = 46733 /*[Hardware\Haus\Erdgeschoss\Küche\Heizung\HM-CC-TC - Küche\CLIMATECONTROL_REGULATOR\SETPOINT]*/  ;
    $serie['name'] = "Soll-Temp.";
    $serie['unit'] = "°C";
	 $serie['color'] = "#FFFFFF";
	 $serie['AggType'] = 0;  // Stundenwerte
    $serie['ReplaceValues'] = false;
    $serie['RoundValue'] = 1;
    $serie['type'] = "spline";
    $serie['yAxis'] = 2;
    $serie['lineWidth'] = 1;
    $serie['states']['hover']['lineWidth'] = 2;
    $serie['marker']['enabled'] = false;
	 $CfgDaten["series"][] = $serie;


	// **************************************************************************************
	// *** tooltip *** http://www.highcharts.com/ref/#tooltip
	// **************************************************************************************


   // Chart-Optionen "Tooltip"
   $CfgDaten['tooltip']['useHTML']                          = true;
   $CfgDaten['tooltip']['shared']                           = false;
   $CfgDaten['tooltip']['crosshairs'][]                     = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
   $CfgDaten['tooltip']['crosshairs'][]                     = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
   //$CfgDaten['tooltip']['backgroundColor']['linearGradient'] = array (0, 0, 0,80);
   //$CfgDaten['tooltip']['backgroundColor']['stops'][] =array (0,'#000000');
   //$CfgDaten['tooltip']['backgroundColor']['stops'][] =array (1,'#6B6969');
   $CfgDaten['tooltip']['formatter']                         = "@function() {var unit = {
                                                                            '".@$CfgDaten['series'][0]['name']."': '".@$CfgDaten['series'][0]['unit']."',
                                                                            '".@$CfgDaten['series'][1]['name']."': '".@$CfgDaten['series'][1]['unit']."',
                                                                            '".@$CfgDaten['series'][2]['name']."': '".@$CfgDaten['series'][2]['unit']."',
                                                                            }[this.series.name];
                                                                            return '<b>' + Highcharts.dateFormat('%A, %d.%m.%Y, %H:%M', this.x) + ' Uhr</b><br>' + this.series.name
                                                                                        + ': ' + '<b><span style=color:' + this.series.color + '>' + this.y
                                                                                        + ' ' + unit + '</b></span>';
                                                                            }@";


	 // Highcharts-Theme
	 // $CfgDaten['HighChart']['Theme']="grid.js";   // von Highcharts mitgeliefert: dark-green.js, dark-blue.js, gray.js, grid.js
	 $CfgDaten['HighChart']['Theme']="ips.js";   // IPS-Theme muss per Hand in in Themes kopiert werden....

	 $CfgDaten['HighChart']['Width'] = 0; 			// in px,  0 = 100%
	 $CfgDaten['HighChart']['Height'] = 545; 		// in px

    // ---->  hier muss die ScriptId des "leeren Cfg-Scripts" eingetragen werden
    $id = 14936 /*[Program\Zentrale Scripte\Highcharts\Config - leer]*/ ;
    $s = IPS_GetScript($id);      // Id des Highcharts-Config-Scripts
    include($s['ScriptFile']);
?>

Gruß

Swifty

Bei mir ist es Zeile 70 und auf der Seite Zeitplan editieren hast Du noch ein Prüfil versteckt.
Profil übertragen / Profil übernehmen.

Und danke für das HC-Script

Ein Problem, das bei mir auftritt.
Auf der Seite Zeitplan editieren drücke ich auf PräsenzProfilAuswahl Frei und nun fügt er die gleiche Dummy Instanz Profil übertragen / Prüfil übernehmen unter die alte. Das ist aber einfach eine Copy.

Hallo…

hast du „zufällig“ nur den Dummy umbenannt ? :smiley:

Du musst dann auch im zugehörigen Skript den Namen des umbenannten Objektes anpassen (siehe Anmerkungen in #88).

In Fall des „Prüfil“ sollte es die Zeile 76 im Script >>HM_Edit<< sein

$Dum_uebertragenID=SetDummyByName($KatID, "Profil übertragen / Prüfil übernehmen", "", 4);

Gruß

Swifty

:smiley: Wenn Du es nicht noch erklärt hättest. :o

Stichwort SetDummyByName

Asche über mein Haupt.

Ich verstehe noch nicht, wie man innerhalb eines Thermostaten ein Profil Normal nach Frei überträgt, um es dann anzupassen. :o

Hallo…

Ich verstehe noch nicht, wie man innerhalb eines Thermostaten ein Profil Normal nach Frei überträgt, um es dann anzupassen.

  1. Du wählst auf der Linken Seite das zu überschreibende Profil aus - z.B. „Abwesend“ - (ggf. ist dieses profil sogar noch leer)

  2. Auf der rechten Seite im Bereich „Wochenprofil übernehmen von“ wählst du zuerst das zu übernehmende Profil aus und klickst dann darunter auf den Raum, von dem das gerade ausgewählte WochenProfil übernommen werden soll. Der Klick auf den Raum veranlasst das übertragen in den Arbeitsbereich (rechts).

Beispiel:

Du hast dür Dein GästeWc das werkseitig hinterlegte Profil eingelesen und in IPS abgespeichert. Dieses Profil erscheint dann im TAB „Zeitplan Editieren“ im Arbeitsbereich (rechts) unter der Präsenzauswahl „Normal“. Willst Du dieses Profil dann auch als Profil „Frei“ übernehmen, wählst du im Arbeitsbereich (rechts) das noch leere Profil „Frei“ aus, klickst sodann auf der linken Seite im Bereich „Wochenprofil übernehmen von“ auf das Profil „Normal“ und sodann auf „GästeWC“.
Jetzt wird das Profil Normal des Thermostaes „GästeWc“ übertragen zum Profil „Frei“ des Thermostates „GästeWC“.

Abspeichern nicht vergessen !!! :smiley:

Hinweis:
Speicherst Du das gerade editierte Profil ab, so wird es zunächst nur in IPS abgelegt. Eine sofortige Übertragung an das Thermostat findet nur dann statt, wenn das gerade editierte Profil dem Profil entspricht, welches bei dem Thermostat aktiviert ist.

Beispiel:
Beim Thermostat/Raum „GästeWC“ ist aktuell das Profil „Normal“ aktiv. Editierst du das Profil „Abwesend“ des Thermostates/Raumes „GästeWC“, bewirk der Klick auf den Button „Profil speichern“ nur eine Aktualisierung des gerade editierten Profils in IPS. Wirksam wird dies erst, wenn Du das Profil des Thermostates (im TAB „GästeWC“) umschaltest.
Editierts Du jedoch das Profil „Normal“, so wird das geänderte Profil mit dem Klick auf „Profil speichern“ nicht nur in IPS aktualisiert, sondern zugleich auch ans Thermostat übertragen.

Gruß

Swifty

Hi Swifty ,

ich habe jede verson deines Scripts mitgemacht , und konnte mit der vorletzen Version auch meine Daten aus dem „HM-CC-RT-DN“ auslesen, das Button ist jetzt war noch da , es wird aber kein Heizplan mehr ausgelesen , da passiert garnix mehr.

Könntest du nicht mal auf Seite 1. dieses Beitrags alle Informationen , immer aktuell , zusammenfassen .

Der Fehler unterlief mir auch während des ganzen Testens.

  1. In der Datei „Funktionen\HMXML_11-2013.inc.php“ die IP und den Port der CCU anpassen.

Bingo !!! Siehst da konzentriert man sich aus alles andere und vergisst das wichtigste :slight_smile:
Dann muss ich jetzt alles nochmal machen ?

Danke

Nee, IP eintragen und wenn Du nun im WebFront auf Aktualisieren drückst, ist das Ergebnis da.

Hallo Zusammen,

bei mir funktioniert jetzt soweit alles! Super Arbeit. :slight_smile:

@Swifty ich habe mich mal an deinem Highcharts Skript versucht. Wie stelle ich dies jetzt im Webfront da?
Das Skript habe ich angelegt und kann es auch ausführen ohne Fehlermeldung. Highcharts ist auch installiert. Ich habe bestimmt wieder nur etwas überlesen wie ich mich kenne… :o

@Superior

@Swifty ich habe mich mal an deinem Highcharts Skript versucht. Wie stelle ich dies jetzt im Webfront da?
Das Skript habe ich angelegt und kann es auch ausführen ohne Fehlermeldung. Highcharts ist auch installiert. Ich habe bestimmt wieder nur etwas überlesen wie ich mich kenne…

… da ich gerade nicht an meinen IPS-Rechner sitze, versuche ich es mal aus dem Kopf:

  1. Ich habe für die Darstellung nicht Highcharts sondern Highstock verwandt. (Gibts auch bei Highcharts.com zum download). Funktioniert genau so wie Highcharts, hat jedoch ein paar Spielereien mehr :smiley:

  2. Das „leere Config-Skript“ von http://www.ip-symcon.de/forum/threads/17625-Highcharts-Multigraph?p=160931#post160931 herunterladen und in IPS integrieren
    (danke an Fraunhofer für den Hinweis)

  3. String Variable (Profil ~HTML-String) anlegen

  4. darunter „mein“ Konfigurationsscript (#89) einfügen und anpassen. Insbesondere die ID des „leeren Config-Skriptes“ in der drittletzten Zeile nicht vergessen!

… fertig … :smiley:

siehe auch: http://www.ip-symcon.de/forum/threads/17625-Highcharts-Multigraph

Da ich die Beschreibung aus meinem Gedächnis aufgeschrieben habe, das Ganze ohne Gewähr.
Ich werde es heute Abend mal kontrollieren und ein Bildchen vom Objektbaum einfügen.

Gruß

Swifty

PS: … natürlich die String Variable ins WFE einbinden … :loveips:

Ergänzung: … na da war wohl jemand schneller … #103 :smiley: