IPSHighcharts

Hallo Werner,

könntest du evtl. nochmal dein komplettes Config-File von den 3 Tage Chart posten?
Ich suche noch ein Anregungen und Beispiele für diese Konfiguration.

Danke u. viele Grüße,
Doc

Büddeschön.

Ist aber so nicht lauffähig da ich noch die Variablen zur Umschaltung auf 3D und den Monat mit drin habe. Ebenso include ich Farbwerte extra.

Solltest Du aber selbst schnell rausfinden.

43285.ips.rar (3.31 KB)

Danke dir,

ist dabei, was ich gesucht habe.
Müssen für die 3D Charts noch Java Bibliotheken nachgeladen werden?

Grüße,
Doc

Jepp.

Steht aber im Quelltext.

 $js_Scripts[]                 = '/user/RS_HighCharts/js/highcharts-3d.js';

Hallo,

ich habe mich heute auch mal an IPSHighcharts getraut … und gleich mal kläglich versagt.

  • Ich habe ein IPS Media Chart mit 4 Variablen erstellt.
  • Ich habe die Stringvariable mit Profil ~HTMLBox angelegt
  • Ich habe den geposteten Inhalt in die Stringvariable kopiert
  • Ich habe die ChartID angepasst mit der ID vom IPS Media Chart
  • Ich habe die Kategorie oberhalb der Stringvariable ins WebFront eingebunden
  • Ich habe zwar ein Chart, jedoch kann nicht gesteuert/umgeschalten werden

Was stelle ich mit der VarID an ??? Das mit der Variablen habe ich nicht verstanden. Für was brauche ich die und mit was beschreibe ich sie und überhaupt … keine Ahnung was ich mit der Variablen anstellen soll ???

Prima wäre ein HowTo für Voll-Dummies. Wie, wo, wer und was ??? :o:o:o

Gruß Proxima

Hi Proxima,

Habe mich heut auch mal mit den IPSHighcharts beschäftigt. Die VarID ist jene ID von der Stringvariable mit Profil ~HTMLBox. Diese ID musst du, wie im Post http://www.ip-symcon.de/forum/threads/20210-IPSHighcharts?p=215761#post215761 angegeben, statt 58663 eintragen. Weiteres musst du statt 35060 die ID des IPS Media Charts eintragen. Dann funktioniert auch das Ändern des Zeitbereiches. Siehe auch Post http://www.ip-symcon.de/forum/threads/20210-IPSHighcharts?p=216321#post216321

Habe allerdings auch eine Verständnisfrage. Hier meine aktuelle Callbackfunktion:

	function IPSHighcharts_BeforeBuildChart($varID, $chartID, &$CfgDaten) {


	   $CfgDaten['series'][0]['type']   = 'spline';
	   $CfgDaten['series'][0]['color']  = '#7ffd62';
	    
	   $CfgDaten['series'][1]['type']   = 'line';
	   $CfgDaten['series'][1]['color']  = '#eeffa3';

		$CfgDaten['yAxis'][0]['title']['text'] = "Temperaturen";
		$CfgDaten['yAxis'][0]['Unit'] = "°C";
		$CfgDaten['yAxis'][0]['opposite'] = false;
		$CfgDaten['yAxis'][0]['tickInterval'] = 1.0;
		$CfgDaten['yAxis'][0]['min'] = 15.0;
		$CfgDaten['yAxis'][0]['max'] = 35.0;

		$CfgDaten['yAxis'][1]['title']['text'] = "Stellventil";
		$CfgDaten['yAxis'][1]['labels']['formatter'] = "@function() { if (this.value == 0) return 'AUS'; if (this.value == 1) return 'EIN';}@";
		$CfgDaten['yAxis'][1]['allowDecimals'] = true;
		$CfgDaten['yAxis'][1]['showFirstLabel '] = false;
		$CfgDaten['yAxis'][1]['showLastLabel '] = false;
		$CfgDaten['yAxis'][1]['opposite'] = true;
		$CfgDaten['yAxis'][1]['labels']['rotation'] = 45;  	
	}

Jetzt wäre es doch so, dass in jedem Chart, den ich erstellen möchte, die ersten beiden Variablen (Serie 0 und Serie 1) im IPS Chart vom Type ‚spline‘ bzw. ‚line‘ sind. Und die Y-Achsen wären auch immer gleich.
Wie wäre die Vorgehensweise, wenn man unterschiedliche Charts mit jeweils 2 Variablen (Serie 0 und Serie 1) mit wieder unterschiedlichen Y-Achsen haben möchte. Die CallbackFunktion wird doch für Alle Charts aufgerufen :confused:

Ich versuche es nochmal ein wenig verständlicher zu erklären. :slight_smile:
Im Grunde möchte ich 2 verschiedene Charttypen bekommen.

- mit Temperaturverläufen
- mit Boolvariablen (http://www.ip-symcon.de/forum/threads/24643-HighchartsPHP?p=237209#post237209)

Wie ich das Grundsätzlich mit Highcharts hinbekomme ist mir klar. Leider sind mir die Zusammenhänge bei IPSHighcharts noch nicht ganz klar.

  • Callbackfunktion (Zentrale Änderung über alle Skripts oder?)
  • Im Wiki beschriebener Aufruf
  // Configuration
  $CfgDaten = ...

  // Create Chart with Config File
  IPSUtils_Include ("IPSHighcharts.inc.php", "IPSLibrary::app::modules::Charts::IPSHighcharts");
  $CfgDaten    = CheckCfgDaten($CfgDaten);
  $sConfig     = CreateConfigString($CfgDaten);            
  $tmpFilename = CreateConfigFile($sConfig, 'IPSPowerControl');    
  WriteContentWithFilename ($CfgDaten, $tmpFilename);     

Habe mal die Callback erweitert.

	function IPSHighcharts_BeforeBuildChart($varID, $chartID, &$CfgDaten) {
// ------------------- SERIEN -----------------------------------------------------------
		$y0_von  =  24;
		$y0_bis  =  27;
		$y1_von  =  29;
		$y1_bis  =  32;
		
		$CfgDaten['series'][0]['type']   = 'spline';
	   $CfgDaten['series'][0]['color']  = '#7ffd62';
  	   $CfgDaten['series'][0]['step']   = false;
		$CfgDaten['series'][0]['yAxis']  = 0;
		
	   $CfgDaten['series'][1]['type']   = 'line';
	   $CfgDaten['series'][1]['color']  = '#eeffa3';
  	   $CfgDaten['series'][1]['step']   = false;
		$CfgDaten['series'][1]['yAxis']  = 0;
  	   
		$CfgDaten['series'][2]['Unit']   = array(0=>'OFF', 1=>'ON');
 	   $CfgDaten['series'][2]['ReplaceValues']  = array(0=>$y0_von, 1=>$y0_bis);
	   $CfgDaten['series'][2]['type']   = 'line';
	   $CfgDaten['series'][2]['color']  = '#eb566b';
  	   $CfgDaten['series'][2]['step']   = true;
		$CfgDaten['series'][2]['yAxis']  = 1;

		$CfgDaten['series'][3]['Unit']   = array(0=>'Geschlossen', 1=>'Offen');
 	   $CfgDaten['series'][3]['ReplaceValues']  = array(0=>$y1_von, 1=>$y1_bis);
	   $CfgDaten['series'][3]['type']   = 'line';
	   $CfgDaten['series'][3]['color']  = '#619cd6';
  	   $CfgDaten['series'][3]['step']   = true;
		$CfgDaten['series'][3]['yAxis']  = 1;
// ------------------- SERIEN -----------------------------------------------------------


// ------------------- ACHSEN -----------------------------------------------------------
	   $CfgDaten['chart']['zoomType']			= "x";
   	$CfgDaten['chart']['animation']			= false;

		$CfgDaten['yAxis'][0]['title']['text'] = "Temperaturen";
		$CfgDaten['yAxis'][0]['Unit'] = "°C";
		$CfgDaten['yAxis'][0]['labels']['rotation'] = 0;
		$CfgDaten['yAxis'][0]['opposite'] = false;
		$CfgDaten['yAxis'][0]['tickInterval'] = 1.0;
		$CfgDaten['yAxis'][0]['min'] = 15.0;
		$CfgDaten['yAxis'][0]['max'] = 35.0;

		$CfgDaten['yAxis'][1]['title']['text'] = "";
		$CfgDaten['yAxis'][1]['labels']['formatter'] = "@function()	{
																							 if (this.value == $y0_von) return 'Aus'; if (this.value == $y0_bis) return 'Ein';
																							 if (this.value == $y1_von) return 'Geschlossen'; if (this.value == $y1_bis) return 'Offen';
																						}@";
		$CfgDaten['yAxis'][1]['allowDecimals'] = true;
		$CfgDaten['yAxis'][1]['showFirstLabel '] = false;
		$CfgDaten['yAxis'][1]['showLastLabel '] = false;
		$CfgDaten['yAxis'][1]['labels']['rotation'] = 0;
		$CfgDaten['yAxis'][1]['opposite'] = true;
		$CfgDaten['yAxis'][1]['tickInterval'] = 1;
		$CfgDaten['yAxis'][1]['min'] = 15;
		$CfgDaten['yAxis'][1]['max'] = 35;
		
// ------------------- ACHSEN -----------------------------------------------------------

 
	}

Ich glaube, dass ich hier eher am Holzweg bin, da dies über alle Charts Auswirkung hat
Mit dem Aufruf vom Wiki (siehe oben) werden anscheinend Config-Dateien erzeugt. Wie ich diese aber einsetze habe ich noch nicht herausgefunden :o
Könnte man für die oben beschriebenen Charttypen jeweils eine Konfig basteln?

@Brownson: Könnte man das Wiki eventuell mit Bespielen versehen um so den Zusammenhang besser erkennen zu können?

Folgende Zeilen habe ich in einem „Standard-khc“ Skript für das Tooltip eingebaut:

	// Chart-Optionen "Tooltip"
   $CfgDaten['tooltip']['useHTML'] 							= true;
   $CfgDaten['tooltip']['shared'] 							= true;
   $CfgDaten['tooltip']['crosshairs'][] 					= array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
	$CfgDaten['tooltip']['crosshairs'][] 					= array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
	$CfgDaten['tooltip']['formatter'] 						= "@function() {
																								var s = '<b>' + Highcharts.dateFormat('%d.%m.%Y, %H:%M', this.x) +'</b><br/>';

																			                $.each(this.points, function(i, point) {
																									if (point.y == 0) unit = 'Prev'; if (point.y == 1) unit = 'Stop'; if (point.y == 2) unit = 'Pause'; if (point.y == 3) unit = 'Play'; if (point.y == 4) unit = 'Next';
																									if (point.y == 5) unit = '$false'; if (point.y == 6) unit = '$true';
																									if (point.y == 7) unit = '$false'; if (point.y == 8) unit = '$true';
																									if (point.y == 9) unit = '$false'; if (point.y == 10) unit = '$true';
																									if (point.y == 11) unit = '$false'; if (point.y == 12) unit = '$true';
																									if (point.y == 13) unit = '$false'; if (point.y == 14) unit = '$true';
																									if (point.y == 15) unit = 'UnMute'; if (point.y == 16) unit = 'Mute';
																									if (point.y == 17) unit = '$false'; if (point.y == 18) unit = '$true';
																									var step = {}[this.series.name];
																			                    s += '<br/>' + '<span style=color:' + point.series.color + '>' + point.series.name +': </span><b>' + unit + '</b>';
																			                });

																			               return s;
																			            }
																			@";

Folgendes Tooltip bekomme ich dadurch:
Tooltip.png
Wenn ich den gleichen Code in die Callback Funktion einfüge ändern sich lediglich die Crosshairs, ich bekomme aber kein Fenster mit den Werten so wie oben.

Hat jemand einen Rat?

Hmm meine alten configs geben folgenden Fehler :

Notice: Undefined index: HighChart in [Program\IPSLibrary\app\modules\Charts\IPSHighcharts\IPSHighcharts] on line 103

	$height = $cfg['HighChart']['Height'] + 16;

was fehlt mir denn da ?

Update: OK hat sich erledigt… fehlte halt einfach ein Parameter

Hi,

ich hab meine Charts basierend auf den Highcharts Script jetzt auf IPSHighcharts umgestellt. Dabei ist die Config bis auf die letzten Zeilen mit dem Aufruf des Scripts ja identisch geblieben zur Erstellung des CfgDaten Objekts.

Jetzt sieht das Ergebnis auch ähnlich aus, nur fehlen die Tooltips, was muss ich hier anpassen?

LG
Sebastian

Hallo zusammen,

ich versuche mich gerade daran ein Chart zu erstellen.
Folgendes habe ich getan:

IPS läuft auf pi und Library Inkl. IPSHighcharts ist installiert.
Dann habe ich eine Variable angelegt von Typ String „HTMLBox“
Darunter das Configscript:

	// IPS Variablen ID´s
	$CfgDaten['ContentVarableId']= 24116;  // ID der String Variable in welche die Daten geschrieben werden (-1 oder überhaupt nicht angeben wenn die Content Variable das übergordnete Element ist)
	$CfgDaten['HighChartScriptId']= 54272 /*[Program\IPSLibrary\app\modules\Charts\IPSHighcharts\IPSHighcharts]*/;  				// ID des Highcharts Scripts

wenn ich das Script jetzt ausführe bekomme ich folgenden Fehler:

Warning: Illegal string offset ‚ValueTxpe‘
Error in Script
/user/share/Symcon/IPSLibrary/app/modules/Charts/IPSHighcharts/IPSHighcharts.inc.php on Line 342

Ich habe schon eine neue Variable erstellt und auch schon die ID in dem Configscript eingetragen…
Immer der gleiche Fehler.

Kann mir jemand auf die Sprünge helfen?

Danke
Isi

Also ich musste auch etwas anpassen. Allerdings ist deine Zeilenangabe nicht passend zu meiner Version.

Daher hier die Methode die ich angepasst habe:

	function Check_ContentVariable($cfg, $scriptId)
	{
	   DebugModuleName($cfg,"Check_ContentVariable");

		// wenn keine Id übergeben wurde wird das übergeordnete Objekt als Content verwendet
		if (!isset($cfg['ContentVarableId']) || $cfg['ContentVarableId'] <= 0)
			$cfg['ContentVarableId'] = IPS_GetParent($scriptId);

		$variable = @IPS_GetVariable($cfg['ContentVarableId']);
		if ($variable == false)
	   	die ("Abbruch - Content-Variable nicht gefunden.");
		if ($variable['VariableType'] != 3)
	   	die ("Abbruch - Content-Variable ist keine STRING-Variable.");

	   if ($variable['VariableCustomProfile'] != "~HTMLBox")
	   	die ("Abbruch - Content-Variable muss als Profil '~HTMLBox' verwenden.");

		return $cfg;
	}

Um genau zu sein habe die Zeile mit dem Fehler in folgendes geändert:

$variable['VariableType']

Besten Dank!
Der Fehler ist weg.
Jetzt habe ich noch ein kleines Problem mit dem Configscript.

Ganz unten (ca. Zeile 360) steht:

If($IPS_SENDER != „Webinterface“)

Das scheint bei mir nicht zu funktionieren.
Bekomme immer den Fehler " Undefined Variable: IPS_SENDER.

Hast du da evtl. auch noch etwas ändern müssen?

Richtig wäre:
if ($_IPS[‚SENDER‘] != „WebFront“)

Hier gibt es eine Übersicht:
Systemvariablen — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

Besten Dank,
Ich habe jetzt das Configscript so weit dass es ohne Fehler durchläuft.
Leider wird aber meine Variable nicht richtig befüllt.
Muss ich da noch mehr anpassen um es auf dem Pi zum Laufen zu bekommen?

Es wäre hilfreich, wenn du dein Skript mal hier posten würdest :wink: Dann könnte man schneller/einfacher sagen, was nicht stimmt :slight_smile: Ich hab das IPSHighchart schon ewig nicht mehr benutzt, bin also da momentan nicht so in der Materie…

Grüße,
Chris

aber gerne doch!

<?php
	// bei der Konfiguration unbedingt auf die Groß/Kleinschreibung achten
	// es wurde versucht folgende Namensgebeung in der Konfiguration zu verwenden
	// Parameter mit kleinen Anfangsbuchstaben = Parameter welche von Highcharts übnernommen wurden. Siehe dazu: http://www.highcharts.com/ref/
	// Parameter mit großen Anfangsbuchstaben = für das IPS-Highcharts-Script eingeführte Parameter

	Global $CfgDaten; // damit kann der Script auch von anderen Scripten aufgerufen werden und bereits mit CfgDaten vorkonfiguriert werden

	// IPS Variablen ID´s
	$CfgDaten['ContentVarableId']= -1;  // ID der String Variable in welche die Daten geschrieben werden (-1 oder überhaupt nicht angeben wenn die Content Variable das übergordnete Element ist)
	$CfgDaten['HighChartScriptId']= 54272 /*[Program\IPSLibrary\app\modules\Charts\IPSHighcharts\IPSHighcharts]*/;  				// ID des Highcharts Scripts

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

	// Zeitraum welcher dargestellt werden soll (kann durch die Zeitvorgaben in den Serien verändert werden)
	//$CfgDaten['StartTime'] = mktime( date("m", time()), date("d",time()), date("Y",time())); // ab jetzt -1Tag
	$CfgDaten['StartTime'] = time()-60;  //*60*24 ;
	//$CfgDaten['EndTime'] = mktime(23,59,59, date("m", time()), date("d",time()), date("Y",time())); // ab heute 23:59 Uhr, oder //$CfgDaten['EndTime'] = time();   // = bis jetzt

	$CfgDaten['EndTime'] = time();   // = bis jetzt

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

	if ($CfgDaten['RunMode'] == "popup")
	{
		$CfgDaten['WebFrontConfigId'] = 27036 /*[Objekt #27036 existiert nicht]*/;
		$CfgDaten['WFCPopupTitle'] = "Ich bin der Text, welcher als Überschrift im Popup gezeigt wird";
	}

	// Übergabe der IP-Adresse und des Ports für die Darstellung im Dashboard
	// Wichtig! Wenn Darstellung in Webfront diese Variablen auskommentieren
	//$CfgDaten['Ips']['Dashboard']['Ip'] = "127.0.0.1";
	//$CfgDaten['Ips']['Dashboard']['Port'] = "82";


	// Serienübergreifende Einstellung für das Laden von Werten
	$CfgDaten['AggregatedValues']['HourValues'] = -1;      // ist der Zeitraum größer als X Tage werden Stundenwerte geladen
	$CfgDaten['AggregatedValues']['DayValues'] = -1;       // ist der Zeitraum größer als X Tage werden Tageswerte geladen
	$CfgDaten['AggregatedValues']['WeekValues'] = -1;      // ist der Zeitraum größer als X Tage werden Wochenwerte geladen
	$CfgDaten['AggregatedValues']['MonthValues'] = -1;      // ist der Zeitraum größer als X Tage werden Monatswerte geladen
	$CfgDaten['AggregatedValues']['YearValues'] = -1;      	// ist der Zeitraum größer als X Tage werden Jahreswerte geladen
	$CfgDaten['AggregatedValues']['NoLoggedValues'] = 1000; 	// ist der Zeitraum größer als X Tage werden keine Boolean Werte mehr geladen, diese werden zuvor immer als Einzelwerte geladen	$CfgDaten['AggregatedValues']['MixedMode'] = false;     // alle Zeitraumbedingungen werden kombiniert
	$CfgDaten['AggregatedValues']['MixedMode'] = false;
	// Systematik funktioniert jetzt additiv. D.h. die angegebenen Werte gehen ab dem letzten Wert
	//
	//            -5 Tage           -3 Tage    					EndTime
	// |           |              	|            				 |
	// |           |DayValue = 2     |HourValues = 3          |
	// |Tageswerte |Stundenwerte     |jeder geloggte Wert     |

	// **************************************************************************************
	// *** Highcharts Options ***
	// **************************************************************************************
	// Ab hier werden die Bereiche des Highchart-Objektes parametriert.
	// Dieser Bereich wurde (soweit möglich) identisch der Originalstruktur gehalten.
	// Informationen über die Parametrierung findet man unter http://www.highcharts.com/ref/

	// **************************************************************************************
	// *** chart *** http://www.highcharts.com/ref/#chart
	// **************************************************************************************
	// $CfgDaten['chart']['zoomType'] = "'x'";			//default: $CfgDaten['chart']['zoomType'] = "'xy'";

	// **************************************************************************************
	// *** credits *** siehe http://www.highcharts.com/ref/#credits
	// **************************************************************************************
	// $CfgDaten['credits']['text'] = "used by IPS";
	// $CfgDaten['credits']['href'] = "http://www.ip-symcon.de/forum/f53/highcharts-multigraph-v1-0-a-17625/#post120721";

	// **************************************************************************************
	// *** title *** siehe http://www.highcharts.com/ref/#title
	// **************************************************************************************
	// $CfgDaten['title']['text'] = "Chart-Überschrift";  // Überchrift des gesamten Charts
	//		-> veraltet: 'Title' -> verwende ['title']['text']

	$CfgDaten['title']['text'] = "Stück / min";

	// **************************************************************************************
	// *** subtitle *** siehe http://www.highcharts.com/ref/#subtitle
	// **************************************************************************************
	// $CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%" // Sub-Überschrift. Wenn nichts angegeben wird wird dieser String als Default verwendet
	//		-> veraltet: 'SubTitle' -> verwende ['subtitle']['text']
	// $CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i"	// z.B.: "(D) d.m.Y H:i" (wird auch als Default herangezogen wenn nichts konfiguriert wurde)
	//		-> veraltet: 'SubTitleDateTimeFormat' -> verwende ['subtitle']['Ips']['DateTimeFormat']
	//    -> entfallen: 'SubTitleFormat' -> unnötiger Paramter, wird jetzt in ['subtitle']['text'] angegeben

	$CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%";
	$CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i";

	// **************************************************************************************
	// *** tooltip *** http://www.highcharts.com/ref/#tooltip
	// **************************************************************************************
	// $CfgDaten['tooltip']['enabled'] = false;
	//$CfgDaten['tooltip']['formatter'] = Null; // IPS erstellt selbständig einen Tooltip
	 $CfgDaten['tooltip']['formatter'] = ""; // Standard - Highcharts Tooltip

	// **************************************************************************************
	// *** exporting *** http://www.highcharts.com/ref/#exporting
	// **************************************************************************************
	// $CfgDaten['exporting']['enabled'] = true;

	// **************************************************************************************
	// *** lang *** http://www.highcharts.com/ref/#lang
	// **************************************************************************************
	// $CfgDaten['lang']['resetZoom'] = "Zoom zurücksetzten";

	// **************************************************************************************
	// *** legend *** http://www.highcharts.com/ref/#legend
	// **************************************************************************************
	// $CfgDaten['legend']['backgroundColor'] = '#FCFFC5';

	// **************************************************************************************
	// *** xAxis *** http://www.highcharts.com/ref/#xAxis
	// **************************************************************************************
	// $CfgDaten['xAxis']['lineColor'] = '#FF0000';
	// $CfgDaten['xAxis']['plotBands'][] = array("color"=>'#FCFFC5',"from"=> "@Date.UTC(2012, 3, 29)@","to"=> "@Date.UTC(2012, 3, 30)@");

	// **************************************************************************************
	// *** yAxis *** http://www.highcharts.com/ref/#yAxis
	// **************************************************************************************
	// $CfgDaten['yAxis'][0]['title']['text'] = "Temperaturen"; // Bezeichnung der Achse
	//		-> veraltet: 'Name' und 'TitleText' -> verwende ['title']['text']
	// $CfgDaten['yAxis'][0]['Unit'] = "°C";	// Einheit für die Beschriftung die Skalenwerte
	//	$CfgDaten['yAxis'][0]['min'] = 0; // Achse beginnt bei Min (wenn nichts angegeben wird wird der Min der Achse automatisch eingestellt)
	//	$CfgDaten['yAxis'][0]['max'] = 40; // Achse geht bis Max (wenn nichts angegeben wird wird der Max der Achse automatisch eingestellt)
	//		-> veraltet: 'Min' und 'Max'
	//	$CfgDaten['yAxis'][0]['opposite'] = false; // Achse wird auf der rechten (true) oder linken Seite (false) des Charts angezeigt (default = false)
	//		-> veraltet: 'Opposite'
	//	$CfgDaten['yAxis'][0]['tickInterval'] = 5; // Skalenwerte alle x (TickInterval)
	//		-> veraltet: 'TickInterval'
	//    -> entfallen: 'PlotBands' -> verwende ['yAxis'][0]['plotBands'],  (siehe Beispiel 'cfg - drehgriff und tf-kontakt')
	//    -> entfallen: 'YAxisColor' -> verwende ['yAxis'][0]['title']['style']
	//    -> entfallen: 'TitleStyle'-> verwende ['yAxis'][0]['title']['style']

	$CfgDaten['yAxis'][0]['title']['text'] = "Anzahl Teile";
	$CfgDaten['yAxis'][0]['Unit'] = "ppm";
	$CfgDaten['yAxis'][0]['opposite'] = false;
	$CfgDaten['yAxis'][0]['tickInterval'] = 1;
	//$CfgDaten['yAxis'][0]['min'] = 20;
	//$CfgDaten['yAxis'][0]['max'] = 26;

	//$CfgDaten['yAxis'][1]['title']['text'] = "Heizungssteller / Luftfeuchte";
//	$CfgDaten['yAxis'][1]['Unit'] = "%";
//	$CfgDaten['yAxis'][1]['opposite'] = true;
//	$CfgDaten['yAxis'][1]['tickInterval'] = 20;
	//$CfgDaten['yAxis'][1]['min'] = 0;
	//$CfgDaten['yAxis'][1]['max'] = 100;

/*
	$CfgDaten['yAxis'][2]['title']['text'] = "FBH";
	$CfgDaten['yAxis'][2]['labels']['formatter'] = "@function() { if (this.value == 0) return 'zu'; if (this.value == 1) return 'auf' }@";
	$CfgDaten['yAxis'][2]['allowDecimals'] = true;
	$CfgDaten['yAxis'][2]['showFirstLabel '] = false;
	$CfgDaten['yAxis'][2]['showLastLabel '] = false;
	$CfgDaten['yAxis'][2]['opposite'] = true;
	$CfgDaten['yAxis'][2]['labels']['rotation'] = 0;
	$CfgDaten['yAxis'][2]['tickInterval'] = 1;
	$CfgDaten['yAxis'][2]['min'] = 0;
	$CfgDaten['yAxis'][2]['max'] = 7;
/*
	$CfgDaten['yAxis'][3]['title']['text'] = "Columns";
	$CfgDaten['yAxis'][3]['Unit'] = "kWh";
*/



	// **************************************************************************************
	// *** series *** http://www.highcharts.com/ref/#series
	// **************************************************************************************
	// $serie['name'] = "Temperatur; // Name der Kurve (Anzeige in Legende und Tooltip)
	//		-> veraltet: 'Name' -> verwende [series']['name']
	// $serie['Unit'] = "°C"; // Anzeige in automatisch erzeugtem Tooltip
	// 	wenn $serie['Unit'] = NULL; // oder Unit wird gar nicht definiert, wird versucht die Einheit aus dem Variablenprofil automatisch auszulesen
	// $serie['ReplaceValues'] = false; // Werte werden wie geloggt übernommen
	// 	$serie['ReplaceValues'] = array(0=>0.2,1=>10) // der Wert 0 wird in 0.2 geändert, der Wert 1 wird in 10 geändert
	//   	das macht für die Darstellung von Boolean Werte Sinn, oder für Drehgriffkontakte (Werte 0,1,2)
	// $serie['type'] = 'spline'; // Festlegung des Kuventypes (area, areaspline, line, spline, pie, Column)
	// $serie['yAxis'] = 0; // Nummer welche Y-Achse verwendet werden soll (ab 0)
	// 	-> veraltet: 'Param' -> verwende die Highcharts Parameter - sollte eigentlich noch so funktionieren wie in IPS-Highcharts V1.x
	// $serie['AggType'] = 0 // Festlegung wie die Werte gelesen werden soll (0=Hour, 1=Day, 2=Week, 3=Month, 4=Year), hat Vorrang gegenüber den Einstellungen in AggregatedValues
	//    wird kein AggType definiert werden alle gelogten Werte angezeigt
	// $serie['AggNameFormat'] = "d.m.Y H:i"; // (gilt nur bei den Pies, wenn eine Id verwendet wird), entspricht dem PHP-date("xxx") Format, welches das Format der Pie Namen festlegt, wenn keine Eingabe werden Default Werte genommen
	// $serie['Offset'] = 24*60*60; hiermit können Kurven unterschiedlicher Zeiträume in einem Chart dargestellt. Angabe ist in Minuten
	//	$serie['StartTime'] = mktime(0,0,0,1,1,2012); 	// wird für die entsprechende Serie eine Anfangs- und/oder Endzeitpunkt festgelegt wird dieser verwendet. Ansonsten wird
	// $serie['EndTime'] = mktime(0,0,0,2,1,2012);  		// der Zeitpunkt der Zeitpunkt aus den $CfgDaten genommen
	// $serie['ScaleFactor'] = 10; // Skalierungsfaktor mit welchem der ausgelesene Werte multipliziert wird
	// $serie['RoundValue'] = 1; // Anzahl der Nachkommastellen
	//	$serie['AggValue'] ='Min' // über AggValue kann Min/Max oder Avg vorgewählt werden (Default bei keiner Angabe ist Avg)
	//		ist sinnvoll wenn nicht Einzelwerte sondern Stundenwerte, Tageswerte, usw. ausgelesen werden
	// $serie['data'] = array('TimeStamp'=> time(),'Value'=12) // hier kann ein Array an eigenen Datenpunkten übergeben werden. In diesem Fall werden für diese Serie keine Daten aus der Variable gelesenen.

	$serie = array();
	$serie['name'] = 'Pie';
	$serie['type'] = 'pie';
	$serie['data'][] = array('name'=>'E1', 'Id' => 31660, 'Unit'=>"ppm");
	$serie['data'][] = array('name'=>'E2', 'Id' => 44741, 'Unit'=>"ppm");
	$serie['data'][] = array('name'=>'E3', 'Id' => 18595, 'Unit'=>"ppm");
	$serie['data'][] = array('name'=>'E4', 'Id' => 37153, 'Unit'=>"ppm");
	$serie['allowPointSelect'] = true;
	$serie['cursor'] = 'pointer';
	$serie['center'] = array(300,100);
	$serie['size'] = 100;
	$serie['dataLabels']['enabled'] = true;
	$CfgDaten['series'][] = $serie;

/*
	$serie = array();
	$serie['name'] = "Temperatur";
	$serie['Id'] = ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "line";
	$serie['color']= "#FF8000";
	//$serie['fillOpacity']= 0.3;
	$serie['yAxis'] = 0;
	$serie['marker']['enabled'] = false;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 3;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['states']['hover']['enabled'] = true;
	$serie['marker']['states']['hover']['symbol'] = 'circle';
	$serie['marker']['states']['hover']['radius'] = 4;
	$serie['marker']['states']['hover']['lineWidth'] = 1;
	$CfgDaten['series'][] = $serie;

	$serie = array();
	$serie['name'] = "Vorgabe";
	$serie['Id'] = ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "line";
	$serie['color']= "#FFFFFF";
	$serie['yAxis'] = 0;
	$serie['step'] = true;
	$serie['marker']['enabled'] = false;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 1;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['states']['hover']['enabled'] = true;
	$serie['marker']['states']['hover']['symbol'] = 'circle';
	$serie['marker']['states']['hover']['radius'] = 4;
	$serie['marker']['states']['hover']['lineWidth'] = 1;
	$CfgDaten['series'][] = $serie;

	$serie = array();
	$serie['name'] = "Luftfeuchte";
	$serie['Id'] = ;
	$serie['Unit'] = "%";
	$serie['ReplaceValues'] = false;
	$serie['type'] = "spline";
	$serie['color']= "#139e00";
	$serie['step'] = false;
	$serie['yAxis'] = 1;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 3;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['enabled'] = false;
	$serie['marker']['states']['hover']['enabled'] = true;
	$serie['marker']['states']['hover']['symbol'] = 'circle';
	$serie['marker']['states']['hover']['radius'] = 4;
	$serie['marker']['states']['hover']['lineWidth'] = 1;
	$CfgDaten['series'][] = $serie;

$serie = array();
	$serie['name'] = "Ventil";
	$serie['Id'] =;
	$serie['Unit'] = "%";
	$serie['ReplaceValues'] = false;
	$serie['type'] = "area";
	$serie['step'] = true;
	$serie['color']= "#828282";
	$serie['fillOpacity']= 0.3;
	$serie['step'] = true;
	$serie['yAxis'] = 1;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 1;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['enabled'] = false;
	$serie['marker']['states']['hover']['enabled'] = true;
	$serie['marker']['states']['hover']['symbol'] = 'circle';
	$serie['marker']['states']['hover']['radius'] = 4;
	$serie['marker']['states']['hover']['lineWidth'] = 1;
	$CfgDaten['series'][] = $serie;

	$serie = array();
	$serie['name'] = "FBH";
	$serie['Id'] = ;
	$serie['Unit'] = array(0=>'zu', 1=>'auf');
	$serie['ReplaceValues'] = array(0=>2, 1=>15);
	$serie['RoundValue'] = 1;
	$serie['type'] = "area";
	$serie['color']= "#FFFFFF";
	$serie['fillOpacity']= 0.3;
	$serie['yAxis'] = 1;
	$serie['step'] = true;
	$serie['marker']['enabled'] = false;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 1;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['states']['hover']['enabled'] = true;
	$serie['marker']['states']['hover']['symbol'] = 'circle';
	$serie['marker']['states']['hover']['radius'] = 4;
	$serie['marker']['states']['hover']['lineWidth'] = 1;
	$CfgDaten['series'][] = $serie;
	*/
//	$serie = array();
//	$serie['name'] = "Schiebetüre";
//	$serie['Id'] = 42655 /*[Objekt #42655 existiert nicht]*/;
//	$serie['Unit'] = array(0=>'geschlossen', 1=>'gekippt', 2=>'geöffnet');
//	$serie['ReplaceValues'] = array(0=>0.5, 1=>1, 2=>2);
//	$serie['type'] = "line";
//	$serie['step'] = true;
//	$serie['yAxis'] = 2;
//	$serie['shadow'] = true;
//	$serie['lineWidth'] = 1;
//	$serie['states']['hover']['lineWidth'] = 2;
//	$serie['marker']['enabled'] = false;
//	$serie['marker']['states']['hover']['enabled'] = true;
//	$serie['marker']['states']['hover']['symbol'] = 'circle';
//	$serie['marker']['states']['hover']['radius'] = 4;
//	$serie['marker']['states']['hover']['lineWidth'] = 1;
//	$CfgDaten['series'][] = $serie;
//
//	$serie = array();
//	$serie['name'] = "Column";
//	$serie['Id'] = 28968 /*[Objekt #28968 existiert nicht]*/ ;
//	$serie['Unit'] = "W";
//	$serie['ReplaceValues'] =false;
//	$serie['type'] = "column";
//	$serie['step'] = false;
//	$serie['yAxis'] = 3;
//	$serie['shadow'] = true;
//	$serie['states']['hover']['lineWidth'] = 2;
//	$serie['marker']['enabled'] = false;
//	$serie['marker']['states']['hover']['enabled'] = true;
//	$serie['marker']['states']['hover']['symbol'] = 'circle';
//	$serie['marker']['states']['hover']['radius'] = 4;
//	$serie['marker']['states']['hover']['lineWidth'] = 1;
//	$CfgDaten['series'][] = $serie;


	// 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....

	// Abmessungen des erzeugten Charts
	$CfgDaten['HighChart']['Width'] = 0; 			// in px,  0 = 100%
	$CfgDaten['HighChart']['Height'] = 500; 		// in px

	// -------------------------------------------------------------------------------------------------------------------------------------
	// und jetzt los ......
	$s = IPS_GetScript($CfgDaten['HighChartScriptId']); 	// Id des Highcharts-Scripts
	include($s['ScriptFile']);

  	// hier werden die CfgDaten geprüft und bei Bedarf vervollständigt
	$CfgDaten = CheckCfgDaten($CfgDaten);

	// abhängig von der Art des Aufrufs -> json String für Highcharts erzeugen
	if (isset($CfgDaten['RunMode'])
		&& ($CfgDaten['RunMode'] == "script" || $CfgDaten['RunMode'] == "popup"))
	{
		// Variante1: Übergabe der ScriptId. Daten werden beim Aufruf der PHP Seite erzeugt und direkt übergeben. Dadurch kann eine autom. Aktualisierung der Anzeige erfolgen
		if ($_IPS['SENDER'] != "WebFront")
		{
			WriteContentWithScriptId ($CfgDaten, $_IPS['SELF']);     		// und jetzt noch die ContentTextbox
			return;                                               	// Ende, weil durch die Zuweisung des Script sowieso nochmals aufgerufen wird
		}

		$sConfig = CreateConfigString($CfgDaten);             		// erzeugen und zurückgeben des Config Strings
	}
	else
	{
		//Variante2: Übergabe des Textfiles. Daten werden in tmp-File gespeichert. Eine automatische Aktualisierung beim Anzeigen der Content-Textbox erfolgt nicht
		$sConfig = CreateConfigString($CfgDaten);             		// erzeugen und zurückgeben des Config Strings

		$tmpFilename = CreateConfigFile($sConfig, $IPS_SELF);     	// und ab damit ins tmp-Files
		if ($IPS_SENDER != "WebInterface")
		{
			WriteContentWithFilename ($CfgDaten, $tmpFilename);   	// und jetzt noch die ContentTextbox
		}
	}



?>

Das schreibt in die Variable:

<iframe src='./User/IPSHighcharts/IPSTemplates/Highcharts.php?ScriptId=47505' width='100%' height='516' frameborder='0' scrolling='no'></iframe>

Im WebFront kommt dann die Meldung:

File not found in der HTML-Box.

Ich habe auch schon auf dem Pi geschaut,

die Datei Highcharts.php ist am angegebenen Ort vorhanden und mit den Rechten rw-rw-rw versehen.

Und hier der Pfad:
./User/IPSHighcharts/IPSTemplates/Highcharts.php

Stimmt das komplett? Liegt die Datei wirklich da? Groß-Klein-Schreibung muss beachtet werden! Normal ist es doch „user“ und nicht „User“?! Könntest testweise mal den kompletten Pfad eintragen mit „/user/bla/blubb/symcon/webfront/user/…“.

Grüße,
Chris

Hallo Chris,

danke für den Hinweis.
Du hast recht, das „user“ muss klein.
Leider finde ich nicht wo das gesetzt wird.
Wenn ich es von Hand in der Variable ändere kommt kurz ein weiser Hintergrund.
Da dies aber bewirkt, dass die Variable neu geschrieben wird, wird mein „kleines user“ sofort überschrieben und ich kann es nicht vollständig laden.

Kannst du mir sagen wo der String für die Variable zusammen gebaut wird?

Danke
Isi