Q&A Highcharts V2.0

OK, ich habe das Konzept jetzt einigermaßen verstanden und hingekriegt.

Ich war einfach verwirrt, warum hier vom mySQL die Rede war, wo ich doch nur meine „normal“ geloggten Daten haben wollte.

Installiert hatte ich alles nach dem ersten Post, nur der Transfer, wie ich dann da Grafike draus mache hatte ich nicht hinbekommen.

Wo ich jetzt aber noch dran hänge ist die Darstellung.
Meine Werte werden nur stündlich dargestellt, was ein unschönes Treppenmuster bringt.

aggType habe ich aber nicht gesetzt und auch die AggregatedValues habe ich Standard.

Was kann das noch sein?

// 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['yAxis'][0]['title']['text'] = "Temperaturen";
	$CfgDaten['yAxis'][0]['Unit'] = "°C";
	$CfgDaten['yAxis'][0]['opposite'] = false;
	$CfgDaten['yAxis'][0]['tickInterval'] = 5;

wenn du keinen dieser Parameter setzt, kann das Chart auch nicht viel anderes anzeigen:


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

wenn Du Tages(-Durchschnitts-)Werte sehen wilst, musst du z.B.


    $CfgDaten['AggregatedValues']['DayValues'] = -1; 

auf „1“ setzen -> die Werte werden ab dem 1. Tag im Betrachtungszeitraum als Tagesdurchschnitt gezeigt. „2“ würde die Werte ab dem 2. Tag als Tagesdurchschnitt zeigen usw.

Hmm, ich hab mit den Werten schon rumexperimentiert.
Ich will keine Durchschnittswerte ich will einfach alle geloggten Werte.

Wie mach ich das?

und warum schreibst du das nicht?:mad:
zeig mal deine gesamte Config

Ich hätte es von der Aggregation geren so wie IPS Standard (siehe Bild)

<?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']= 22812 /*[Global\Highchart\Temperaturen]*/ ;  							// 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']= 46691 /*[Global\Highcharts_V2.02]*/ ;  				// 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(0,0,0, date("m", time()), date("d",time())-10, date("Y",time())); // ab heute 00:00 Uhr
	$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

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

	if ($CfgDaten['RunMode'] == "popup")
	{
		$CfgDaten['WebFrontConfigId'] = 49302 /*[WebFront Configurator]*/;
		$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

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

	// **************************************************************************************
	// *** 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'] = "Temperaturen";
	$CfgDaten['yAxis'][0]['Unit'] = "°C";
	$CfgDaten['yAxis'][0]['opposite'] = false;
	$CfgDaten['yAxis'][0]['tickInterval'] = 5;
//	$CfgDaten['yAxis'][0]['min'] = 0;
//	$CfgDaten['yAxis'][0]['max'] = 40;

//	$CfgDaten['yAxis'][1]['title']['text'] = "Heizungssteller / Luftfeuchte";
//	$CfgDaten['yAxis'][1]['Unit'] = "%";
//	$CfgDaten['yAxis'][1]['opposite'] = true;

//	$CfgDaten['yAxis'][2]['title']['text'] = "Drehgriffkontakte / Türkontakte";
//	$CfgDaten['yAxis'][2]['labels']['formatter'] = "@function() { if (this.value == 0.5) return 'geschlossen'; if (this.value == 1) return 'gekippt';if (this.value == 2) return 'geöffnet' }@";
//	$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'] = 90;

//	$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'] = "Aussentemperatur";
	$serie['Id'] = 48051 /*[Homecontrol\Terrasse\Außenthermostat\TEMPERATURE]*/;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 0;
	$serie['type'] = "spline";
	$serie['yAxis'] = 0;
	//$serie['AggType'] = 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'] = "Wohnzimmer";
	$serie['Id'] = 13328 /*[Homecontrol\Wohnzimmer\Heizung\Temperatur (aktuell)]*/ ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 0;
	$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'] = "Kinderzimmer";
	$serie['Id'] = 40291 /*[Homecontrol\Kinderzimmer\Thermostat\TEMPERATURE]*/ ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 0;
	$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'] = "Arbeitszimmer";
	$serie['Id'] = 42730 /*[Homecontrol\Arbeitszimmer\Heizung\Temperatur (aktuell)]*/ ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 0;
	$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'] = "Wasserbett";
	$serie['Id'] = 15569 /*[Homecontrol\Schlafzimmer\Wasserbett\TEMPERATURE]*/ ;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 0;
	$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;

	
	// 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'] = 0; 			// in px,  0 = 100%
	$CfgDaten['HighChart']['Height'] = 900; 		// 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")
		{
			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
		}
	}



?>

Hab da nicht viel geändert.

Seh ich ein :o

lapidares Problem:


$serie['RoundValue'] = 0;

wenn der Wert auf 0 steht (wie bei dir), werden die Nachkommastellen logischerweise weggerundet. Bei einer sehr fein auflösenden Skalierung der y-Achse kommt es logischerweise zur Treppenbildung. Das hat nichts mit zeitlichen Auflösungen zu tun.
Stell den Wert auf 1 und alles wird gut.

Das war es.
Danke!

Hallo,

klann es sein, dass verschiedene Parameter, die ich in der Highcharts API sehen kann in IPS nicht darstellbar sind?

Versuche mich gerade an einem Pie Chart.
Damit das aber sinnvoll ist und die Objekte als Slices zeigt und nicht deren Werte, müsste ich den Parameter „inverted“ auf true setzen.

Das bewirkt aber nichts.


	$serie = array();
	$serie['name'] = "Wasserbettheizung";
	$serie['Id'] = 43994 /*[Program\IPSLibrary\data\hardware\Plugwise\Circles\Wasserbett\Gesamtverbrauch]*/ ;
	$serie['Unit'] = "kWh";
	$serie['ReplaceValues'] = false;
	$serie['RoundValue'] = 1;
	$serie['type'] = "pie";
	          $serie['inverted'] = true;
	$serie['xAxis'] = 0;
	$serie['AggType'] = 1;
	$serie['marker']['enabled'] = false;
	$serie['shadow'] = true;
	$serie['lineWidth'] = 0;
	$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;

Davon habe ich natürlich mehrere. Das Wasserbett ist nur eines von 10.

Ziel wäre alle Verbraucher entsprechend ihres Verbrauches in einem Pie Chart darzustellen.
Stacked Column geht das ohne Probleme.

Danke

Mic

die daten für ein Pie müssen so zusammen gestellt werden:


	// IPS-Objekte Pie
	    $serie = array();
    $serie['type'] 												= 'pie';
    $serie['name'] 												= 'Anzahl IPS-Objekte';
    $serie['data'][] 											= array('name'=>'Scripts', 'color'=>'#A60000', 'Id' => 31341, 'Unit'=>"#");
    $serie['data'][] 											= array('name'=>'Profiles', 'color'=>'#FF7400', 'Id' => 21783, 'Unit'=>"#");
    $serie['data'][] 											= array('name'=>'Variables', 'color'=>'#1D7373', 'Id' => 17934, 'Unit'=>"#");
	 $serie['data'][] 											= array('name'=>'Instances', 'color'=>'#269926', 'Id' => 43543, 'Unit'=>"#");
	 $serie['data'][] 											= array('name'=>'Links', 'color'=>'#00CC00', 'Id' => 52222, 'Unit'=>"#");
	 $serie['data'][] 											= array('name'=>'Categories', 'color'=>'#33CCCC', 'Id' => 24637, 'Unit'=>"#");
	 $serie['data'][] 											= array('name'=>'Modules', 'color'=>'#FF9640', 'Id' => 33461, 'Unit'=>"#");
	 $serie['data'][] 											= array('name'=>'Events', 'color'=>'#FF4040', 'Id' => 38455, 'Unit'=>"#");
    $serie['allowPointSelect'] 								= true;
    $serie['cursor'] 											= 'pointer';
    $serie['center'] 											= array(130,100);
    $serie['size'] 												= 200;
    $serie['innerSize'] 										= "60%";
    $serie['showInLegend']				 						= false;
    $serie['dataLabels']['enabled'] 						= true;
    $serie['dataLabels']['color'] 							= "#333333";
    $serie['dataLabels']['distance'] 						= -45;
    $serie['bordercolor'] 										= "#333333";
    $CfgDaten["Series"][] 										= $serie;

Hi,

ok, ich verstehe, das muss nochmal in ein Array vom Arry gepackt werden.
Es kommt aber trotzdem noch nicht raus, was ich will.

Es sieht jetzt so aus, wie in der Grafik, mit einem Slice pro Tag.
Ich will aber ein Slice pro Verbraucher :cool:

2012-07-25 21-27-49_IP-Symcon WebFront.png

Sorry, mein Fehler.
Hatte noch eine falsche ID drin.

Danke vielmals!

Gehts bei Euch noch mit Chrome? Seit heute gehen bei mir die HCs nur noch mit IE und FF.

Hallo khc,

nachdem ich nun fast alles nach 2.x migriert habe mach ich mich gerade an das verfeinern meiner Auswertungen.

Diesbezüglich sind mir in der HC-Doku die Donuts positiv ins Auge gestochen (nicht wörtlich nehmen).

Highcharts Demo - Donut chart

Derzeit kann man, oder zumindest ich, nur einen Ring im Donut erstellen. Gibt es dazu bereits jetzt eine Möglichkeit oder muss dein Skript dazu erweitert werden.

Hier mal ein Beispiel was ich derzeit erreicht habe.

Mein vorheriges Beispiel war aus Chrome.

ergänzend zu Werners Mail mein Stand dazu (ich bin natürlich auch brennend interessiert :D):
Für Candlestick und OHLC-Charts - und ich meine auch für Donut-, und Column-Charts mit Drilldown-Funktionalität benötigt man Array-Datensätze, die nicht nur einen Timestamp und den dazugehörigen Wert enthalten sondern einen Timestamp und (im Falle des OHCL) 4 dazugehörige Werte.

etwa so (Print aus dem .tmp-File):


data:[ 
[Date.UTC(2012,07,10,00,00,00,00), 18.517197585326, 22.2, 15.3, 22.2],  
[Date.UTC(2012,07,09,00,00,00,00), 17.932143518517, 21.2, 15.8, 21.2],  
[Date.UTC(2012,07,08,00,00,00,00), 19.135877791707, 26.3, 14, 26.3],

bisher werden solche Arrays zwar angenommen, aber der 2.-4. Wert wird ignoriert.

Ich hab mal Testweise Arrays für die Übergabe an HC gebaut, weiter bin ich aber auch noch nicht gekommen:


$CfgDaten["StartTime"] 										= mktime(0,0,0, date("m", time()), 1, date("Y",time()));
$CfgDaten["EndTime"] 										= mktime(23,59,59, date("m", time()), date("d", time())-1 , date("Y",time()));

$raw_data    = AC_GetAggregatedValues($CfgDaten["ArchiveHandlerId"], 44535 /*[Wetterdaten RS.loc\Außen\Aussentemperatur\°C Außen (Summary)]*/, 1, $CfgDaten['StartTime'],  $CfgDaten['EndTime'], 1000);

$dataString    = '';
for($i=0;$i<count($raw_data);$i++)
{
	$dataString    .= '[Date.UTC('.date("Y,m,d,H,i,s,00", $raw_data[$i]['TimeStamp']).'), '.$raw_data[$i]['Avg'].', '.$raw_data[$i]['Max'].', '.$raw_data[$i]['Min'].', '.$raw_data[$i]['Max'].'], '."
";

}
echo $dataString;


Hmmm…Chrome zeigt bei mir seit dem letzten update keine iframes mehr im WF an??? :confused:

Hallo DerStandart,

zu deinem Beitrag #134 sofern das Problem noch nicht gelöst ist.

… Für mich sehen die beiden Ausgaben von print_r identisch aus.

Entweder ist der Fehler so einfach, dass ich ihn nicht sehe, …

Die Values sind nicht identisch.
In der esten print_r-Ausgabe hast du Integer-Werte, in der zweiten Float-Werte. Bei mir funktioniert es, wenn ich die Float-Werte aus mySQL runde.

Gruß KH

Hallo zusammen,
hab mal versucht mich in das Thema einzulesen …
Hab auch schon lt Wiki einen einfachen Chart mit Temperaturen incl einem Zeitraumselector hinbekommen.
Beim weiteren suchen und lesen sind aber noch Fragen aufgetaucht die ich so ad hoc mit der Suche nicht beantworten konnte.

  • Ich habe eine Highcharts_V2.02.ips und eine Config_Highcharts_V2.02.ips (Abgesehen von denen im PlugWise-Modul). Nun steht im Wiki, dass ich für jeden Chart eine neue Config_Highcharts_V2.02.ips anlegen soll. Ist das der aktuelle Stand? Oder kann ich mittels einem Script bestimmte Variablen an das Config_Highcharts_V2.02.ips übergeben? Wenn ja dann wie? Und wie muss ich die Variablen in der Config_Highcharts_V2.02.ips gestalten, dass sie die übergebenen Variablen verarbeitet?

RS hat mir mal einen Tipp gegeben den ich aber nicht blick.

und so werden die daten an ein HC-Chart (1 Serie) übergeben:

PHP-Code:
$serie[‚Id‘] = 0;
$serie[‚Data‘] = $NS_today_array ;

Freue mich über jede Aufklärung,

Hi Wolfgang,

wenn du meinen Tipp auf deine oben stehende Fragen beziehst, wundert mich das nicht :wink:
Der Tipp kann eigentlich nur im Kontext einer Zuführung eigener Datenreihen innerhalb eines Config-Scripts gekommen sein und hat nichts mit deinen Fragen oben zu tun:

$serie['Id'] = 0; 
$serie['Data'] = $NS_today_array ;

meint: statt eine Variablen-ID ("$serie[‚Id‘]") anzugeben, aus der sich das Script dann selbst die Daten zieht und weiterverarbeitet, hat KHC eine Möglichkeit eingebaut, selbst Datenreihen zu generieren und der Series zuzuführen ("$serie[‚Data‘] = $NS_today_array ;"). Wobei „$NS_today_array“ die selbst generierten Daten enthält. Das ist aber mehrfach an verschiedenen Stellen im Forum beschrieben worden.