veraltet: 'Title' -> verwende ['title']['text'] $CfgDaten['title']['text'] = "Verbindungsqualität"; // ************************************************************************************** // *** 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']['text'] = ""; //$CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i"; $CfgDaten['rangeSelector']['buttons'][] = Array('type'=>'hour','count'=>1,'text'=>'h'); $CfgDaten['rangeSelector']['buttons'][] = Array('type'=>'day','count'=>1,'text'=>'d'); $CfgDaten['rangeSelector']['buttons'][] = Array('type'=>'week','count'=>1,'text'=>'w'); $CfgDaten['rangeSelector']['buttons'][] = Array('type'=>'month','count'=>1,'text'=>'m'); $CfgDaten['rangeSelector']['selected'] =1; $CfgDaten['rangeSelector']['inputEnabled'] = false; //$CfgDaten['rangeSelector']['enabled'] = false; // ************************************************************************************** // *** 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'] = "Pings"; $CfgDaten['yAxis'][0]['Unit'] = ""; //$CfgDaten['yAxis'][0]['opposite'] = false; //$CfgDaten['yAxis'][0]['tickInterval'] = 1; //$CfgDaten['yAxis'][0]['min'] = 0; //$CfgDaten['yAxis'][0]['max'] = 10; $CfgDaten['yAxis'][1]['title']['text'] = "Zeit"; $CfgDaten['yAxis'][1]['Unit'] = "ms"; $CfgDaten['yAxis'][1]['offset'] = 80; /* $CfgDaten['yAxis'][1]['opposite'] = false; $CfgDaten['yAxis'][1]['tickInterval'] = 500; $CfgDaten['yAxis'][1]['min'] = 0; $CfgDaten['yAxis'][1]['max'] = 5000; */ // ************************************************************************************** // *** 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. // Id für Anzahl der Ping ermitteln // Ermittlung der Gerätelinks $lnkid = 0; $lnk_cat = GetObjectID('../../Device'); foreach (IPS_GetChildrenIDs($lnk_cat) as $l) if (IPS_GetObject($l)['ObjectType'] == 6) $lnkid = $l; // Überschrift für den Trend setzen $CfgDaten['title']['text'] = IPS_GetName($lnkid); $target = IPS_GetLink($lnkid)['TargetID']; $NumPingID = GetObjectID('./NumPing', $target); $PingTimeID = GetObjectID('./PingTime', $target); $serie = array(); $serie['name'] = "Pings"; $serie['Id'] = $NumPingID; $serie['Unit'] = ""; $serie['ReplaceValues'] = false; $serie['RoundValue'] = 0; $serie['type'] = "line"; $serie['yAxis'] = 0; $serie['step'] = true; $serie['marker']['enabled'] = false; $serie['shadow'] = true; $serie['lineWidth'] = 1; $serie['index'] = 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; /* $serie = array(); $serie['name'] = "Pings"; $serie['Id'] = $NumPingID; $serie['Unit'] = ""; $serie['type'] = "line"; $serie['step'] = true; $serie['yAxis'] = 0; $serie['lineWidth'] = 1; $CfgDaten['series'][] = $serie; */ $serie = array(); $serie['name'] = "Antwortzeit"; $serie['Id'] = $PingTimeID; $serie['Unit'] = ""; $serie['ReplaceValues'] = false; $serie['RoundValue'] = 0; $serie['type'] = "line"; $serie['yAxis'] = 1; $serie['step'] = true; $serie['marker']['enabled'] = false; $serie['shadow'] = true; $serie['lineWidth'] = 1; $serie['index'] = 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']="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'] = 250; // 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'], $CfgDaten['Ips']['ChartType'] ); // und ab damit ins tmp-Files if ($IPS_SENDER != "WebInterface") { WriteContentWithFilename ($CfgDaten, $tmpFilename); // und jetzt noch die ContentTextbox } } function GetObjectID($strObject, $parent = 0){ $child = 0; // "/" sowie "\" werden als Trennzeichen akzeptiert $Objects = explode("/", str_replace("\\", "/", $strObject)); //IPS_LogMessage("getObjectID", "Objects: " . print_r($Objects)); foreach ($Objects as $Object){ if($Object == ".") { if ($parent == 0) $child = $parent = IPS_GetParent($_IPS['SELF']); else $child = $parent; } elseif ($Object == "..") { if (($child == 0) && ($parent == 0)) $child = $parent = IPS_GetParent(IPS_GetParent($_IPS['SELF'])); elseif ($child == 0) $child = $parent = IPS_GetParent($parent); else $child = $parent = IPS_GetParent($child); } else { try { $child = IPS_GetObjectIDByName($Object, $parent); } catch(Exception $e){ return 0; } if ($child > 0){ $parent = $child; } else { return 0; } } } return $child; } ?>