IPSHighcharts

Irgendwo in den tiefen von IPSHighcharts :smiley: Da sind eh noch einige Systemvariablen die noch in der alten Schreibweise sind…das Skript bräuchte mal eine Generalüberholung :slight_smile: Vlt. opfert sich ja jemand, der das im Einsatz hat :slight_smile:

Grüße,
Chris

Irgendwie bekomme ich bei IPSHighchart das nich hin das die Colums nebeinander dargestellt werden kann mir da wer helfen ?

Hier der code für die Chart


			$CfgDaten["yAxis"][0]['title']['text'] = "Strom";
    		$CfgDaten["yAxis"][0]['Unit'] = "kwh";
    		$CfgDaten["yAxis"][0]['opposite'] = false;

//         $CfgDaten["yAxis"][0]['tickInterval'] = 2.0;
//			$CfgDaten["yAxis"][0]['min'] = 10;
//    		$CfgDaten["yAxis"][0]['max'] = 20;

			$CfgDaten["yAxis"][1]['title']['text'] = "Ein/Aus";
    		$CfgDaten["yAxis"][1]['Unit'] = "";
    		$CfgDaten["yAxis"][1]['opposite'] = false;
         $CfgDaten["yAxis"][1]['tickInterval'] = 1;
         $CfgDaten["yAxis"][1]['gridLineWidth'] = 0;
			$CfgDaten["yAxis"][1]['min'] = 0;
    		$CfgDaten["yAxis"][1]['max'] = 1;

//			$CfgDaten["yAxis"][1]['min'] = 30;
//    		$CfgDaten["yAxis"][1]['max'] = 80;

			$CfgDaten["yAxis"][2]['title']['text'] = "Temperatur";
    		$CfgDaten["yAxis"][2]['Unit'] = "°C";
    		$CfgDaten["yAxis"][2]['opposite'] = true;
//         $CfgDaten["yAxis"][2]['tickInterval'] = 5.0;
			$CfgDaten["yAxis"][2]['gridLineWidth'] = 0;

			 $CfgDaten['series'][0]['name'] = 'Strom';
		   $CfgDaten['series'][0]['color'] = '#0000FF';
//			$CfgDaten['series'][0]['step'] = 'right';
   		$CfgDaten['series'][0]['type'] = 'column';
			$CfgDaten['series'][0]['yAxis'] = 0;
			$CfgDaten['series'][0]['pointPadding']        = 0.4;

			$CfgDaten['series'][1]['name'] = 'Gas';
			$CfgDaten['series'][1]['color'] = '#CCCC33';
			$CfgDaten['series'][1]['type'] = 'column';
			$CfgDaten['series'][1]['yAxis'] = 0;
			$CfgDaten['series'][1]['pointPadding']        = 0.1;
			
         $CfgDaten['series'][2]['name'] = 'Temperatur';
         $CfgDaten['series'][2]['color'] = '#B50F39';
			$CfgDaten['series'][2]['yAxis'] = 2;
			
			$CfgDaten['series'][3]['name'] = 'Heizung';
         $CfgDaten['series'][3]['color'] = '#B50F38';
			$CfgDaten['series'][3]['yAxis'] = 1;
			$CfgDaten['series'][3]['step'] = 'right';
			
			$CfgDaten['series'][4]['name'] = 'Boiler';
         $CfgDaten['series'][4]['color'] = '#B50F38';
			$CfgDaten['series'][4]['yAxis'] = 1;
			$CfgDaten['series'][4]['step'] = 'right';

Gruß
Bruno

setz mal in den plotOptions:

plotOptions: {
            column: {
                grouping: true
            }

grouping true => columns nebeneinander
grouping false => columns hintereinader

siehe Edit fiddle - JSFiddle

Hallo Andreas,

es gelingt mir nicht, über

$CfgDaten['HighChart']['Theme']='gray.js';

ein anderes theme file einzustellen.

Es scheint mir, als ob es in der IPSChart.php fest eingestellt ist:

		<script type="text/javascript" src="/user/IPSHighcharts/Highcharts/js/themes/ips.js"></script>

Sehe ich das richtig?

Viele Grüße

Burkhard

Sehe ich auch so - hab die Implementierung im Wesentlichen hier aus dem Forum „übernommen“ :cool:

Hi,

habe den Thread durchgestöbert. Eine smarte Anleitung, wie man ein simples Highchart testweise erzeugt, konnte ich leider nicht finden.

Habe das IPS Modul installiert. Und jetzt? Könnte mir einer mal bitte etwas auf die Sprünge helfen - mit einem kleinen Beispiel bspw. Temperaturwerte.

Es muss nur mal der Stein zum Rollen gebracht werden… Merci :smiley:

Hier ein Beispiel von mir:

<?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']		= 26429 /*[S\TEST\Highcharts\Test A]*/;  									// 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']	= 55639 /*[MyConfig\Scripte\Highcharts\Highcharts_V3.00.ips]*/;  				// 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)
	if (!isset($CfgDaten["StartTime"]))
	 	$CfgDaten["StartTime"] = mktime(4,50,0, date("m", time()), date("d",time())-0, date("Y",time())); // ab heute 00:00 Uhr
	 	
	if (!isset($CfgDaten["EndTime"]))
		$CfgDaten["EndTime"] = mktime(5,59,59, date("m", time()), date("d",time()), date("Y",time())); // ab heute 23:59 Uhr, oder //$CfgDaten["EndTime"] = time();   // = bis jetzt

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

	// wenn Popup dann muss die WebfrontConfigId und der Titele übergeben werden
	if ($CfgDaten['RunMode'] == "popup")
	{
		$CfgDaten['WebFrontConfigId'] = 23004 /*[WebFront]*/;
		$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'] = "Heizung";

	// **************************************************************************************
	// *** 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.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
	// $CfgDaten['TooltipDateTimeFormat'] = "%A %d.%m.%Y %H:%M";  // Standard Tooltip DateTime-Format

	// **************************************************************************************
	// *** 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'] = '#80FFC5';

	// **************************************************************************************
	// *** 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'] = "Temperatur";
	$CfgDaten['yAxis'][0]['Unit'] = "°C";
	$CfgDaten['yAxis'][0]['opposite'] = false;
	$CfgDaten['yAxis'][0]['tickInterval'] = 5;
	// $CfgDaten['yAxis'][0]['min'] = 0;
	// $CfgDaten['yAxis'][0]['max'] = 80;
   
	$CfgDaten['yAxis'][1]['title']['text'] = "Temperatur";
	$CfgDaten['yAxis'][1]['Unit'] = "°C";
	$CfgDaten['yAxis'][1]['opposite'] = true;
	$CfgDaten['yAxis'][1]['tickInterval'] = 5;
	// $CfgDaten['yAxis'][1]['min'] = 0;
	// $CfgDaten['yAxis'][1]['max'] = 80;
	
	
	// **************************************************************************************
	// *** 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'] = "Heizung Vorlauf";
	$serie['Id'] = 22939 /*[MyConfig\RaspPI\Sensor01]*/;
	$serie['Unit'] = "°C";
	$serie['color'] = "#FF0000";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "spline";
	$serie['yAxis'] = 0;
	$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'] = "Heizung Rücklauf";
	$serie['Id'] = 15695 /*[MyConfig\RaspPI\Sensor02]*/;
	$serie['Unit'] = "°C";
	$serie['color'] = "#FF6464";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "spline";
	$serie['yAxis'] = 0;
	$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'] = "Differenz";
	$serie['Id'] = 54829 /*[MyConfig\RaspPI\Sensor_Diff1]*/;
	$serie['Unit'] = "°C";
	$serie['color'] = "#FFB4B4";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "spline";
	$serie['yAxis'] = 0;
	$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'] = "Stellventil";
	$serie['Id'] = 10624 /*[OG\H	emp\R3 Stellventil\Status]*/;
	$serie['color'] = "#00FF00";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "area";
	$serie['step'] = true;
	$serie['ScaleFactor'] = 3;
	$serie['yAxis'] = 0;
	$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;
	
	// Highcharts-Theme
	$CfgDaten['HighChart']['Theme']="gray.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'] = "100%"; 	// in px,  0 wird auch in 100% konvertiert
	$CfgDaten['HighChart']['Height'] = 600; 		// in px

	// ab V3.000 sind diese Parameter hinzugekommen
	// lokale Skripte oder aus Internet
	// ['Ips']['ScriptsHighCharts']  		Verzeichnis in welchen sich die Scripte befinden falls man diese lokal hält,
	// ['Ips']['ScriptsHighstock']         default = leer, dann werden die Scripte aus dem Internet geholt
	// ['Ips']['Scriptsjquery']
	// ['Ips']['ScriptsTheme'] das ist das Themes Verzeichnis. Wenn man mit der ips.js arbeitet, sollte man dort alle Highchart Themes hinkopieren und den Pfad antprechend angeben

	// ['Ips']['HtmlScript'] default = leer, Script komplett erzeugen, wenn man z.B.: mit Dynamik arbeitet kann man hier Anpassungen machen.

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

	// das ist ab V3.000 der neue Aufruf
	RunHighcharts($CfgDaten);
	
?>

Danke :slight_smile:

Eine Frage hierzu hätte ich noch:

$CfgDaten['HighChartScriptId']    = 55639 /*[MyConfig\Scripte\Highcharts\Highcharts_V3.00.ips]*/; 

Ich habe IPSHighchart über die Module installiert. Wo finde ich allerdings das Script um es mittels ID anzugeben?

Folgende änderungen hab ich auf dem PI mit V4.0 gemacht das es läuft

IN /usr/share/symcon/webfront/user/IPSHighcharts/IPSChart.php

von: Zeile 2:IPSUtils_Include („IPSHighcharts_Custom.inc.php“, „IPSLibrary::config::modules::charts::IPSHighcharts“);

charts klein geschrieben umbenennen

Nach Zeile 2:IPSUtils_Include („IPSHighcharts_Custom.inc.php“, „IPSLibrary::config::modules::Charts::IPSHighcharts“);

IN /usr/share/symcon/webfront/user/IPSHighcharts/HighchartsCommand.php
Zeile 70

von $value = „<iframe src=’/User/IPSHighcharts/IPSChart.php?VarID=“.$varID."&ChartID=".$chartID."&Height=".$height."&Start=".$CfgDaten[‚StartTime‘]."&End=".$CfgDaten[‚EndTime‘]."’ width=‚100%‘ height=’".$height."’ frameborder=‚0‘ scrolling=‚no‘></iframe>";

User groß geschrieben umbenennen

auf $value = „<iframe src=’/user/IPSHighcharts/IPSChart.php?VarID=“.$varID."&ChartID=".$chartID."&Height=".$height."&Start=".$CfgDaten[‚StartTime‘]."&End=".$CfgDaten[‚EndTime‘]."’ width=‚100%‘ height=’".$height."’ frameborder=‚0‘ scrolling=‚no‘></iframe>";

==============
Bein einrichten der HTML Box

user kleinschreiben

<iframe src=’/user/IPSHighcharts/IPSChart.php?VarID=17952&ChartID=31155&Height=400&Start=1453191656&End=1453278056’ width=‚100%‘ height=‚400‘ frameborder=‚0‘ scrolling=‚no‘></iframe>

==============

In /usr/share/symcon/scripts/IPSLibrary/app/modules/Charts/IPSHighcharts/IPSHighcharts.inc.php

Funtion

function ReadLoggedValue($instanceID, $variableId, $time)
{
    if ($time &gt; time()) $time = time();
    $values = AC_GetLoggedValues($instanceID, $variableId, 0, $time+1, 1);
    
	if (empty($values)) {
//	echo "Bitte alle Felder ausfüllen";
	$currentVal['Value']= 0;
	$currentVal['TimeStamp'] = $time;	
}
	else 
	{
	$currentVal['Value']= $values[0]['Value'];
	$currentVal['TimeStamp'] = $time;
//	echo "Angaben korrekt";
} 


    return $currentVal;
}  

If Abfrage eingefügt ob Array leer ist damit der Fehler falscher index nicht kommt

=========

ich hoffe ich habe alles erwischt

vielleicht kann das jemand einpflegen in die IPSLibrary

Gruß
Bruno

Hallo FRAD,

  1. lege eine Stringvariable an „HC-Test“ mit Profil HTMLBox

  2. lege unterhalb der Variable „HC-Test“ ein Script an „HC-Config“

  3. Befühle die Variable „HC-Test“ mit


<iframe src='./user/IPSHighcharts/IPSTemplates/Highcharts.php?ScriptId=xxxxx' width='100%' height='366' frameborder='0' scrolling='no'></iframe>

wobei du xxxxx durch die ID des Script „HC-Config“ ersetzt.

  1. Befühle das Script „HC-Config“ mit folgendem Inhalt:

<?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']= 11836 /*[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'] == "script")

	{

		$CfgDaten['WebFrontConfigId'] = 28287 /*[WebFront]*/;

		$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'] = "Strom";



	// **************************************************************************************

	// *** 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'] = "Watt";

	$CfgDaten['yAxis'][0]['Unit'] = "W";

	$CfgDaten['yAxis'][0]['opposite'] = false;

	$CfgDaten['yAxis'][0]['tickInterval'] = 1000;

	//$CfgDaten['yAxis'][0]['min'] = 20;

	//$CfgDaten['yAxis'][0]['max'] = 26;



	$CfgDaten['yAxis'][1]['title']['text'] = "Eigenverbrauch";

	$CfgDaten['yAxis'][1]['Unit'] = "%";

	$CfgDaten['yAxis'][1]['opposite'] = true;

	$CfgDaten['yAxis'][1]['tickInterval'] = 5;

	//$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'=>'Temperatur', 'Id' => 20415, 'Unit'=>"°C");

	$serie['data'][] = array('name'=>'Luftfeuchte', 'Id' => 47780, 'Unit'=>"%");

	$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'] = "Verbrauch";

	$serie['Id'] = 39527 /*[Hardware\IPS-868\EKM-868 Strom\Verbrauch]*/;

	$serie['Unit'] = "W";

	$serie['ReplaceValues'] = false;

//	$serie['RoundValue'] = 1;

	$serie['type'] = "spline";

	$serie['color']= "#FF8000";

	$serie['step'] = false;

	//$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'] = "Ertrag";

	$serie['Id'] = 46534 /*[Hardware\IPS-868\EKM-868 PV\Verbrauch]*/;

	$serie['Unit'] = "W";

	$serie['ReplaceValues'] = false;

	$serie['type'] = "spline";

	$serie['color']= "#139e00";

	$serie['step'] = false;

	$serie['yAxis'] = 0;

	$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'] = "Delta";

	$serie['Id'] = 48161 /*[Program\Skripte\Energie\Strom\Delta]*/;

	$serie['Unit'] = "W";

	$serie['ReplaceValues'] = false;

	$serie['type'] = "area";

	$serie['step'] = true;

	$serie['color']= "#828282";

	$serie['fillOpacity']= 0.3;

	$serie['step'] = false;

	$serie['yAxis'] = 0;

	$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'] = 47256 /*[Objekt #47256 existiert nicht]*/;

//	$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'] = 350; 		// 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'] != "WebInterface")
		//if ($IPS_SENDER != "WebInterface")

		{

			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")
		//if ($IPS_SENDER != "WebInterface")

		{

			WriteContentWithFilename ($CfgDaten, $tmpFilename);   	// und jetzt noch die ContentTextbox

		}

	}







?>



Das Script musst du jetzt anpassen:
4.1 Die ID des Highcharts Scripts (sollte an der gleichen Stelle wie hier zu finden sein)

$CfgDaten['HighChartScriptId']= 11836 /*[Program\IPSLibrary\app\modules\Charts\IPSHighcharts\IPSHighcharts]*/;                  // ID des Highcharts Scripts 

4.2 Die Y-Achse (im Bsp. sind es 2)

$CfgDaten['yAxis'][0]['title']['text'] = "Watt"; 

    $CfgDaten['yAxis'][0]['Unit'] = "W"; 

    $CfgDaten['yAxis'][0]['opposite'] = false; 

    $CfgDaten['yAxis'][0]['tickInterval'] = 1000; 

    //$CfgDaten['yAxis'][0]['min'] = 20; 

    //$CfgDaten['yAxis'][0]['max'] = 26; 



    $CfgDaten['yAxis'][1]['title']['text'] = "Eigenverbrauch"; 

    $CfgDaten['yAxis'][1]['Unit'] = "%"; 

    $CfgDaten['yAxis'][1]['opposite'] = true; 

    $CfgDaten['yAxis'][1]['tickInterval'] = 5; 

4.3 Jetzt die Variablen: (Achtung, im Script sind 3 Variablen angegeben. Immer nach folgendem Prinzip.
Du kannst zum Test den 2. und 3. Datenblock einfach ausrasieren und nur die Daten mit Kommentar anpassen)

$serie = array(); 

    $serie['name'] = "Verbrauch"; //Name der Linie

    $serie['Id'] = 39527 /*[Hardware\IPS-868\EKM-868 Strom\Verbrauch]*/; //ID der Variablen die du darstellen möchtest

    $serie['Unit'] = "W"; // Einheit

    $serie['ReplaceValues'] = false; 

//    $serie['RoundValue'] = 1; 

    $serie['type'] = "spline"; //Art der Darstellung

    $serie['color']= "#FF8000"; //Farbe

    $serie['step'] = false; 

    //$serie['fillOpacity']= 0.3; 

    $serie['yAxis'] = 0; // Hie kannst du eine der 2 Y-Achsen die du oben angelegt hast angeben

    $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; 


  1. Wenn du dir jetzt die Variable „HC-Test“ im Webfront anschaust, solltest du ein Chart sehen in dem die Variable „39527 /*[Hardware\IPS-868\EKM-868 Strom\Verbrauch]“ dargestellt wird. (bei dir natürlich deine Variable)

Mit den restlichen Angaben in 4.3 kannst du dann noch spielen um die Darstellung zu ändern.

Gruß
Isi

Hi Isi,

vielen Dank für deine Super-Beschreibung. :slight_smile:

Probiere es gleich aus.

Hallo Isi,

super Beschreibung, funktioniert einwandfrei :slight_smile:

Besten Dank
Gruß Tobias

Mahlzeit,

nachdem ich mich jetzt ein bisschen mit den Highcharts eingefummelt habe, habe ich nun auch mal eine kleine Frage.

Bei Sonderzeichen z.b. $CfgDaten[‚yAxis‘][0][‚Unit‘] = „°C“; bekomme ich auf dem Raspberry PI mit IPS 4.0 immer folgendes angezeigt :

temperatur.JPG

Mache ich was falsch, oder ist das ein Fehler ?

Gleiches passiert mir auch bei den Umlauten und ß

Viele Grüße von der Ostseeküste

Robert

Ist bei mit seit der Version 4.0 (letzte Woche umgestellt) leider leider auch so:(.
In der Version 3.x war hie an der Stelle noch alle ok. Hab da leider auch noch keine Lösung.

IPS4 und Umlaute ist noch so ein Thema für sich :wink: Da gibt es noch so einige Threads, wo das Thema „IPS4 und Umlaute“ erwähnt wird :slight_smile: Da würde ich an eurer Stelle aktuell keine Arbeit investieren, bis IPS4 da einheitlich mit UTF8 umgeht…

Grüße,
Chris

Hallo Andreas,

unter 4.0 bekomme ich eine Fehlermeldung, da es das Element [‚VariableValue‘][‚ValueType‘] nicht mehr gibt:

Illegal string offset 'ValueType' in <b>C:\IP-Symcon\scripts\IPSLibrary\app\modules\Charts\IPSHighcharts\IPSHighcharts.inc.php

Statt:

if ($variable['VariableValue']['ValueType'] != 3)
   die ("Abbruch - Content-Variable ist keine STRING-Variable.");

könnte es - um kompatibel zu 4.0 zu sein - heißen:

if (isset($variable['VariableValue']['ValueType']) && ($variable['VariableValue']['ValueType'] != 3))
   die ("Abbruch - Content-Variable ist keine STRING-Variable.");

if (isset($variable['VariableType']) && ($variable['VariableType'] != 3))
   die ("Abbruch - Content-Variable ist keine STRING-Variable.");

Könntest du das bitte anpassen?

Viele Grüße

Burkhard

Danke, ist online …

Sagt mal bin ich hiermit :

Verfügbare Version
2.50.10
Repository
https://raw.githubusercontent.com/brownson/IPSLibrary/Development/
Aktuelle Version
2.50.10
Aktuelles Repository
https://raw.githubusercontent.com/brownson/IPSLibrary/Development/

noch aktuell ?

Ich habe seit dem Upgrade auf V4.0 mit ganz anderen Dingen „zu kämpfen“. Stichwort: aggregierte Daten
Ich nutze Highcharts unter anderem um meine PV-Anlage zu visualisieren. Seit meinem gestern (Upgrade), zeigt mit Highcharts jedoch keine aggregierten Daten mehr an. Keine Fehlermeldung.
Hier mal das Script:

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

	$year = GetValue(28289 /*[Scripte\Highcharts_V2.02\PV-Anlage pro Monat\Dummy Module\Highcharts_Jahre]*/  );

	// Sollwerte auslesen
	$Solldaten_ID = 57861 /*[Program\SMA Webbox\Sollwerte Monate]*/   ;
	$Solldaten_value = getValuestring($Solldaten_ID);

	// Solldaten in automatisch indiziertes Array einlesen
	$rawData = array();
	$Data = array();
	$rawData = explode(" ",$Solldaten_value);
	for($i = 0;$i<count($rawData); $i++)
	{
   $Data[$i] = explode(",", $rawData[$i]);
	}

	// Array-Keys anpassen
	for($i = 0;$i<count($Data)-1; $i++)
	{
   $ext_data[$i]['TimeStamp'] = $Data[$i][0];
   $ext_data[$i]['Value'] = $Data[$i][1];
   $ext_data[$i]['human_date'] = date("d.m.Y H:i", $ext_data[$i]['TimeStamp']);
	}

//	print_r($ext_data);

   // Quote auslesen

	$Quotedaten_ID = 23512 /*[Program\SMA Webbox\Quote Monate]*/   ;
	$Quotedaten_value  = getValuestring($Quotedaten_ID);

	// Solldaten in automatisch indiziertes Array einlesen
	$rawData = array();
	$Data = array();
	$rawData = explode(" ",$Quotedaten_value);
//	print_r($rawData);
	for($i = 0;$i<count($rawData); $i++)
    {
	$Data[$i] = explode(",", $rawData[$i]);
    }

    // Array-Keys anpassen
    for($i =0;$i<count($Data)-1; $i++)
    {
       if(isset($Data[$i][0])) {$quote_data[$i]['TimeStamp']                         = $Data[$i][0];}
       if(isset($Data[$i][1])) {$quote_data[$i]['Value']                                 = $Data[$i][1];}
       if(isset($quote_data[$i]['TimeStamp'])) {$quote_data[$i]['human_date']     = @date("d.m.Y H:i", ($quote_data[$i]['TimeStamp']));}
    }
//	$quote_data = array_reverse($quote_data);
// print_r($quote_data);

    // IPS Variablen ID´s
    $CfgDaten['ContentVarableId']= 57676 /*[Scripte\Highcharts_V2.02\PV-Anlage pro Monat\PV-Anlage Graphen pro Monat]*/ ;  // 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']= 32779 /*[Scripte\Highcharts_V2.02\Highcharts_V2.02]*/ ;                  // ID des Highcharts Scripts

    // Zeitraum welcher dargestellt werden soll (kann durch die Zeitvorgaben in den Serien verändert werden)
    $CfgDaten["StartTime"] = mktime(0,0,0, 1,1,$year); // ab heute 00:00 Uhr
    $CfgDaten["EndTime"] = mktime(23,59,59, 12,31,$year); // ab heute 23:59 Uhr, oder //$CfgDaten["EndTime"] = time();   // = bis jetzt

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

    // 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'] = "PV Ertrag $year";

    // **************************************************************************************
    // *** 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;

    // **************************************************************************************
    // *** 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']

    // Definition Y-Achse 5
	$Ai = 0;
	$CfgDaten["yAxis"][$Ai]['title']['text'] = "Ertrag in kWh";
	$CfgDaten["yAxis"][$Ai]['Unit'] = NULL;
	$CfgDaten["yAxis"][$Ai]['opposite'] = false;
	$CfgDaten["yAxis"][$Ai]['allowDecimals'] = false;
	$CfgDaten["yAxis"][$Ai]['min'] = 0;
	$CfgDaten["yAxis"][$Ai]['tickIntervall'] = NULL;
	$CfgDaten["yAxis"][$Ai]['max'] = NULL;
   $CfgDaten["yAxis"][$Ai]['labels']['style']['color'] = '#A5A5A5';
   $CfgDaten["yAxis"][$Ai]['title']['style']['color'] = $CfgDaten["yAxis"][$Ai]['labels']['style']['color'];

// Definition Y-Achse 6
//	$Ai = 1;
//	$CfgDaten["yAxis"][$Ai]['title']['text'] = "Quote";
//	$CfgDaten["yAxis"][$Ai]['Unit'] = NULL;
//	$CfgDaten["yAxis"][$Ai]['opposite'] = false;
//	$CfgDaten["yAxis"][$Ai]['allowDecimals'] = false;
//	$CfgDaten["yAxis"][$Ai]['min'] = 0;
//	$CfgDaten["yAxis"][$Ai]['tickIntervall'] = NULL;
//	$CfgDaten["yAxis"][$Ai]['max'] = 150;
// $CfgDaten["yAxis"][$Ai]['labels']['style']['color'] = '#AABBAA';
//   $CfgDaten["yAxis"][$Ai]['title']['style']['color'] = $CfgDaten["yAxis"][$Ai]['labels']['style']['color'];

    // **************************************************************************************
    // *** series *** http://www.highcharts.com/ref/#series
    // **************************************************************************************
    // $CfgDaten['name'] = "Temperatur; // Name der Kurve (Anzeige in Legende und Tooltip)
    //        -> veraltet: 'Name' -> verwende ['name']
    // $CfgDaten['Unit'] = "°C"; // Anzeige in automatisch erzeugtem Tooltip
    //     wenn $CfgDaten['Unit'] = NULL; // oder Unit wird gar nicht definiert, wird versucht die Einheit aus dem Variablenprofil automatisch auszulesen
    // $CfgDaten['ReplaceValues'] = false; // Werte werden wie geloggt übernommen
    // $CfgDaten['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)
    // $CfgDaten['type'] = 'spline'; // Festlegung des Kuventypes (area, areaspline, line, spline, pie, Column)
    // $CfgDaten['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
    // $CfgDaten['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
    // $CfgDaten['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
    // $CfgDaten['Offset'] = 24*60*60; hiermit können Kurven unterschiedlicher Zeiträume in einem Chart dargestellt. Angabe ist in Minuten
    //    $CfgDaten['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
    // CfgDaten['EndTime'] = mktime(0,0,0,2,1,2012);          // der Zeitpunkt der Zeitpunkt aus den $CfgDaten genommen
    // CfgDaten['ScaleFactor'] = 10; // Skalierungsfaktor mit welchem der ausgelesene Werte multipliziert wird
    // CfgDaten['RoundValue'] = 1; // Anzahl der Nachkommastellen
    //    CfgDaten['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
    // CfgDaten['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.

	// SOLL-Werte
	$serie = array("Data" => $ext_data,
						"Name" =>"SOLL-Ertrag",
						"Unit"=>" kWh",
						"zIndex"=> 2,
						"AggType"=>3,
						"AggValue"=>"Avg",
						"RoundValue"=>2,
						"ScaleFactor"=> 1,
						"ReplaceValues"=>false);
	$serie['type'] = "column";
	$serie['step'] = false;
	$serie['yAxis'] = 0;
	$serie['visible'] = true;
	$serie['showInLegend'] = true;
	$serie['enableMouseTracking'] = true;
	$serie['color'] = '#A5A5A5';
	$serie['shadow'] = true;
	$serie['dashStyle'] = NULL;
	$serie['lineWidth'] = 1;
	$serie['states']['hover']['lineWidth'] = 2;
	$serie['marker']['enabled'] = true;
	$serie['marker']['symbol'] = 'circle';
	$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;
	
	// Ertrag pro Monat
	// NS Dauer pro Monat
	$serie = array("Id"=>57373,
	               "Name" =>"IST-Ertrag",
						"Unit"=>" kWh",
						"zIndex"=> 3,
						"AggType"=>3,
						"AggValue"=>"Avg",
						"RoundValue"=>2,
						"ScaleFactor"=> 1,
						"ReplaceValues"=>false);
	$serie['type'] = "line";
	$serie['step'] = false;
	$serie['yAxis'] = 0;
	$serie['visible'] = true;
	$serie['showInLegend'] = true;
	$serie['enableMouseTracking'] = true;
	$serie['color'] = '#FFFF55';
	$serie['shadow'] = true;
	$serie['dashStyle'] = NULL;
	$serie['lineWidth'] = 2;
	$serie['states']['hover']['lineWidth'] = 0;
	$serie['marker']['enabled'] = true;
	$serie['marker']['symbol'] = 'circle';
	$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;
	
	// Quote-Werte
	$serie = array("Data" => $quote_data,
						"Name" =>"Quote",
						"Unit"=>" %",
						"zIndex"=> 1,
						"AggType"=>3,
						"AggValue"=>"Avg",
						"RoundValue"=>2,
						"ScaleFactor"=> 1,
						"ReplaceValues"=>false);
	$serie['type'] = "line";
	$serie['step'] = false;
	$serie['yAxis'] = 0;
	$serie['visible'] = true;
	$serie['showInLegend'] = false;
	$serie['enableMouseTracking']  = true;
	$serie['color'] = '#C00000';
	$serie['shadow'] = true;
	$serie['dashStyle'] = NULL;
	$serie['lineWidth'] = 0;
	$serie['states']['hover']['lineWidth'] = 0;
	$serie['marker']['enabled'] = true;
	$serie['marker']['symbol'] = 'circle';
	$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;
	
   // Tooltip anpassen
	$CfgDaten['tooltip']['useHTML'] = true;
	$CfgDaten['tooltip']['shared'] = true;
	$CfgDaten['tooltip']['crosshairs'][] = array('width' =>2,'color' =>'grey','dashStyle'=>'dashdot' );
	$CfgDaten['tooltip']['formatter'] = "@function() {
																		var s;
																		var s = '<b>' + Highcharts.dateFormat('%B %Y', this.x) + '</b>';
																		$.each(this.points, function(i, point)
																		{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']."',
																						'".@$CfgDaten['Series'][3]['Name']."': '".@$CfgDaten['Series'][3]['Unit']."',
																						'".@$CfgDaten['Series'][4]['Name']."': '".@$CfgDaten['Series'][4]['Unit']."',
																						'".@$CfgDaten['Series'][5]['Name']."': '".@$CfgDaten['Series'][5]['Unit']."',
																						'".@$CfgDaten['Series'][6]['Name']."': '".@$CfgDaten['Series'][6]['Unit']."',
																						'".@$CfgDaten['Series'][7]['Name']."': '".@$CfgDaten['Series'][7]['Unit']."',
																						'".@$CfgDaten['Series'][8]['Name']."': '".@$CfgDaten['Series'][8]['Unit']."',
																						'".@$CfgDaten['Series'][9]['Name']."': '".@$CfgDaten['Series'][9]['Unit']."',
																						}[point.series.name];
																						s += '<br>' + this.series.name + ': ' + '<b><span style=color:' + this.series.color + '>'
																						+ Highcharts.numberFormat(this.y, 2, ',', '.') + unit + '</b></span>'
																						});
																						return s;
																						}@";


	// 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'] = 700;         // in px
// print_r($CfgDaten);
	// -------------------------------------------------------------------------------------------------------------------------------------
	// 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 != "WebInterface")
			{
			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
			}
		}

?>

und einen Screenshot:


Jemand eine Idee? Vllt. das gleich Problem gehabt und eine Lösung für mich? :slight_smile:

Kurzes Update: ich habe ein wenig mit den csv-Dateien gespielt. Deutlich komfortabler als voher!!! DANKE dafür.
Danach kurz die Daten aggregiert und siehe da … „alles“ da. Augenscheinlich war das nötig und wurde vorher nicht durchgeführt (oder nicht ordentlich).
Leider sind die Daten aus dem Jahr 2011 korrupt. Ich bekomme keine Anzeige hin. Selbst wenn ich pro Monat nur einen einzigen Wert eintrage, baut er die Graphen nicht auf.
Kennt sich jemand mit der Struktur der neuen csv-Dateien aus? Ich denke es ist nicht schwer, aber ich bekomme es nicht hin.