ab V1.0004, damit kann der Script auch von anderen Scripten aufgerufen werden und bereits mit CfgDaten vorkonfiguriert werden Global $CfgDaten; // Überschriften //$CfgDaten['Ips']['ChartType'] = 'Highstock'; $CfgDaten["Title"]= "Serverraum"; $CfgDaten["SubTitle"]= ""; // "" = Automatisch über Zeitraum // => ab V1.0006, möglichkeit der Definition des automatisch erzeugten Subtitels $CfgDaten["SubTitleFormat"]= ""; // z.B. "Zeitraum: %StartTime% - %EndTime% (wird auch als Default herangezogen wenn nichts konfiguriert wurde) $CfgDaten["SubTitleDateTimeFormat"]= ""; // z.B.: "(D) d.m.Y H:i" (wird auch als Default herangezogen wenn nichts konfiguriert wurde) // IPS Variablen ID´s $CfgDaten["ArchiveHandlerId"]= 38739 /*[Archive Handler]*/ ; // Archive Handler // => ab V1.0005, damit kann braucht der ArciveHandler nicht mehr belegt werden // => ab V1.0006, unnötig, wird in Highcharts direkt ausgelesen //$CfgDaten["ArchiveHandlerId"] = IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}'); //$CfgDaten["ArchiveHandlerId"] = $CfgDaten["ArchiveHandlerId"][0]; $CfgDaten["ContentVarableId"]= 52576 /*[Hardware Komponenten / Software Routinen\Regeln / Routinen\Skripte\HighCharts\Content]*/ ; // 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"]= 26274 /*[Hardware Komponenten / Software Routinen\Regeln / Routinen\Skripte\HighCharts\Content\Highcharts]*/ ; // ID des Highcharts Scripts // => ab V1.0006, nur notwendig wenn Highcharts in einem WFCPopup angezeigt werden soll ($CfgDaten["RunMode"]= "popup") $CfgDaten["WebFrontConfigId"]= 26841 /*[Objekt #26841 existiert nicht]*/; // nur notwendig wenn Aufruf über RunMode="popup" $CfgDaten["WFCPopupTitle"]= "Ich bin der Text, welcher als Überschrift im Popup gezeigt wird"; // Zeitraum welcher dargestellt werden soll $CfgDaten["StartTime"] = mktime(0,0,0, date("m", time()), date("d",time()), date("Y",time())-2); // 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 // => ab V1.0003 neu // => ab V1.0006 neuer Parameter "popup" $CfgDaten["RunMode"]= "script"; // file, script oder popup // => ab V1.0003, neu // => ab V1.0007 zusäztlich WeekValues, MonthValues, YearValues (-1 wenn keine entsprechenden Werte eingelesen werden sollen) // 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"] = 5; // ist der Zeitraum größer als X Tage werden Tageswerte geladen $CfgDaten["AggregatedValues"]["WeekValues"] = 10; // 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"] = true; // => ab V1.0007, Änderung der 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 | // Die Parameter für die einzelnen Chart Serien (Achtung! unbedingt auf Groß-Kleinschreibung achten) // Name: Name der Kurve (Anzeige in Legende und Tooltip) // Unit: NULL = Einheit wird aus Suffix des eingestellten Profils übernommen // "string" = string wird als Einheit eingetragen // array(0=>'String für 0',1=>'String für 1', usw.) = Ist der Wert 0 wird 'Strung für 0' im Tooltip angezeigt, usw // ReplaceValues: false = Werte werden wie geloggt übernommen // array(0=>0.2,1=>10, usw.) = 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) Sinn // Param: Einstellungen der Kurve (hier können werden exakt Einstellungen aus Higcharts.com eingegeben) hier ein paar Beispiele // type: Art der Kurve: Sinn machen [area, areaspline, line, spline, pie], noch nicht sinnvoll dargestellt werden [scatter, bar, column] // step: true oder false - jeder Werte bildet eine Stufe (sinnvoll für Heizungsteller, oder Sollwertvorgaben) // yAxis: Nummer welche Y-Achse verwendet werden soll (ab 0) // shadow: true oder false - Darstellung mit oder ohne Schatten // lineWidth: Linienstärke // alles weitere bitte aus der Higcharts-Referenz entnehmen -> http://www.highcharts.com/ref/ // und so könnte für eine Achse seperate Einstellungen für die AggregattedValues getroffen werden // => ab V1.0005 gültig für Pies // AggType: [0=Hour, 1=Day, 2=Week, 3=Month, 4=Year] .. wie der Werte gelesen werden soll // AggNameFormat: entspricht dem PHP-date("xxx") Format, welches das Format der Pie Namen festlegt, wenn keine Eingabe werden Default Werte genommen // => ab V1.0005 ebenfalls gültig für Zählervariablen // AggType: [0=Hour, 1=Day, 2=Week, 3=Month, 4=Year] .. wie der Werte gelesen werden soll // => ab V1.0006 sind folgenden Konfigurationsdaten neu // Offset: in Minuten (z.B. 12 Minuten = 12*60) // StartTime und EndTime: wird für die entsprechende Serie eine Anfangs- und/oder Endzeitpunkt festgelegt wird dieser verwendet. Ansonsten wird // der Zeitpunkt der Zeitpunkt aus den $CfgDaten genommen // ScaleFactor: Skalierungsfaktor mit welchem der ausgelesene Werte multipliziert wird // RoundValue: Anzahl der Nachkommastellen z.B.: "RoundValue" => 2 // AggValue: über AggValue kann Min/Max oder Avg vorgewählt werden (Default bei keiner Angabe ist Avg) // Data: hier kann ein Array an eigenen Datenpunkten übergeben werden. (z.B.: array("TimeStamp"=>time(), "Value"=>13.3)) // In diesem Fall werden für diese Serie keine Daten aus der Variable gelesenen. $s = '{"a":1}'; $s = '{"type":"line", "step":false, "yAxis": 0, "shadow": true,"lineWidth": 1 , "states": {"hover":{"lineWidth": 2}}, "marker": { "enabled": false, "states": { "hover": { "enabled": true, "radius": 4}}}}'; $x = json_decode($s, true); //print_r($x); //$x = Array("a"=> "1"); $s = json_encode($x, true); $s = substr($s,1,-1); //Die Graphen die angezeigt werden sollen hier angeben $CfgDaten["Series"][] = array("Id"=>20045 , "Name" =>"Aussentemperatur", "Unit"=>"°C", "ReplaceValues"=>false, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1 , states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>29727 , "Name" =>"Serverraum Temperatur", "Unit"=>"°C", "ReplaceValues"=>false, "Param" =>$s); /* // => ab V1.0006 // Beispiel für Übergabe eigene Daten $DataForSerie[] = array("TimeStamp"=>time()- 13*60, "Value"=>13.3); $DataForSerie[] = array("TimeStamp"=>time()- 12*60, "Value"=>11.3); $DataForSerie[] = array("TimeStamp"=>time()- 11*60, "Value"=>12.3); $CfgDaten["Series"][] = array("Id"=>123, "Name" =>"Manueller Werte", "Unit"=>"°C", "ReplaceValues"=>false, "Data" => $DataForSerie, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); */ /* // => ab V1.0004, sind auch Pie-Charts möglich. Hierbei wird je Pie eine Serie definiert (Wichtig hierbei -> ID´s, Namen, Units als Array definieren) //Beispiel für ein PieChart // hier werden für die VariableId=23980 für den definierten Zeitraum abhängig von AggType die Werte eingelesen $CfgDaten["Series"][] = array( "Id"=>23960, "AggType"=>3, "Unit"=>array("°C"), "ReplaceValues"=>false, "Param" =>"type:'pie', center: [150, 320], size: 200, showInLegend: false, shadow: true,lineWidth: 1 , dataLabels: {enabled: true}"); //Beispiel für Übergabe von externen Werten in Bezug auf Pies..... // hier wird für jeder Id des Arrays der aktuelle Wert eingelesen $CfgDaten["Series"][] = array( "Value"=>array(12,256,24.5,122), "Name" =>array("Wert1","Wert2", "Wert3", "Wert4"), "Unit"=>array("A","B"), "ReplaceValues"=>false, "Param" =>"type:'pie', center: [100, 80], size: 200, showInLegend: true, shadow: true,lineWidth: 1 , dataLabels: {enabled: false}"); $CfgDaten["Series"][] = array("Id"=>array(23960 /*[Objekt #23960 existiert nicht]*/,13641,10674 /*[Objekt #10674 existiert nicht]*/), "Name" =>array("Aussentemperatur2","Luftfeuchte", "IST"), "Unit"=>array("°C","%","°F"), "ReplaceValues"=>false, "Param" =>"type:'pie', center: [300, 180], size: 100, showInLegend: true, shadow: true,lineWidth: 1 , dataLabels: {enabled: false}"); */ /* //Beispiel für Series.Parameter "RoundValue" und "ScaleFactor" $CfgDaten["Series"][] = array("Id"=>23960, "Name" =>"Aussentemperatur 2", "Unit"=>"°C oder °F", "ReplaceValues"=>false, "RoundValue" => 1, "ScaleFactor" => 1.5, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1 , states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); */ /* // => ab V1.0006 // Beispiel für Eingabe Anfangs-Endzeitpunkt je Serie // Beipsiel für Offset - Darstellung Monat und Vormonat in einem Chart // akt Monat $tStart1 = mktime(0,0,0, date("m", time()), 1, date("Y",time())); $tEnd1 = mktime(23,59,59, date("m", time())+ 1, 0, date("Y",time())); $offset1 = 0; //Vormonat $tStart2 = mktime(0,0,0, date("m", time())-1, 1, date("Y",time())); $tEnd2 = mktime(23,59,59, date("m", time())+1-1, 0, date("Y",time())); $offset2 = $tStart2 - $tStart1; //Vorjahr $tStart3 = mktime(0,0,0, date("m", time()), 1, date("Y",time())-1); $tEnd3 = mktime(23,59,59, date("m", time())+1, 0, date("Y",time())-1); $offset3 = $tStart3 - $tStart1; //Hier gelten in jedem Fall die hier übergebenen Zeiten $CfgDaten["StartTime"] = $tStart1; // ab heute 00:00 Uhr $CfgDaten["EndTime"] =$tEnd1; // ab heute 23:59 Uhr, oder //$CfgDaten["EndTime"] = time(); // = bis jetzt $CfgDaten["Series"][] = array("Id"=>23960, "Name" =>"Aussentemperatur aktueller Monat", "Unit"=>"°C oder °F", "ReplaceValues"=>false, "StartTime" => $tStart1 , "EndTime" => $tEnd1 , "Offset" => $offset1 , "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1 , states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"Aussentemperatur Vormonat","Unit"=>NULL, "ReplaceValues"=>false, "StartTime" => $tStart2 , "EndTime" => $tEnd2 , "Offset" => -$offset2 , "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"Aussentemperatur Vorjahr","Unit"=>NULL, "ReplaceValues"=>false, "StartTime" => $tStart3 , "EndTime" => $tEnd3 , "Offset" => -$offset3 , "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); /* //Beispiel für Series-Parameter "AggValue" $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"IST-Temperatur","Unit"=>NULL, "ReplaceValues"=>false, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"IST-Temperatur","Unit"=>NULL, "ReplaceValues"=>false, "AggValue" => "Max", "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"IST-Temperatur","Unit"=>NULL, "ReplaceValues"=>false, "AggValue" => "Min", "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); */ /* // Beispiel für Definition eigenem Start- und Endzeitpunkt in Serie $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"IST-Temperatur","Unit"=>NULL, "ReplaceValues"=>false, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>10674, "Name" =>"IST-Temperatur","Unit"=>NULL, "ReplaceValues"=>false, "StartTime" => mktime(0,0,0, date("m", time())-2, date("d",time()), date("Y",time())), "EndTime" => mktime(0,0,0, date("m", time())-1, date("d",time()), date("Y",time())), "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); */ /* $CfgDaten["Series"][] = array("Id"=>23264, "Name" =>"SOLL-Temperatur", "Unit"=>"°C","ReplaceValues"=>false, "ScaleFactor" => 1.5, "Param" =>"type:'line', step:true, yAxis: 0, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>13641, "Name" =>"Luftfeuchte","Unit"=>"%", "ReplaceValues"=>false, "Param" =>"type:'spline', step:false, yAxis: 1, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>29410, "Name" =>"Tür/Fenster Kontakt","Unit"=>NULL, "ReplaceValues"=>array(0=>0.2,1=>10), "Param" =>"type:'area', step: true, yAxis: 1, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, symbol: 'circle', radius: 4, lineWidth: 1}}}"); $CfgDaten["Series"][] = array("Id"=>44451, "Name" =>"Drehgriffkontakt", "Unit"=>array(0=>'geschlossen',1=>'gekippt',2=>'geöffnet'), "ReplaceValues"=>array(0=>0.2,1=>7,2=>10), "Param" =>"type:'area', step:true, yAxis: 1, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); $CfgDaten["Series"][] = array("Id"=>43639, "Name" =>"Heizungssteller", "Unit"=>"%","ReplaceValues"=>false, "Param" =>"type:'line', step:true, yAxis: 1, shadow: true,lineWidth: 1, states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); // => ab V1.0005 (Beispiel für einen Zählerwert, welcher als Column dargestellt wird $CfgDaten["Series"][] = array("Id"=>29842, "Name" =>"1", "Unit"=>NULL, "ReplaceValues"=>false, "Param" =>"type:'column', step:false, yAxis: 2, shadow: true,lineWidth: 1 , states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); */ /* // Beispiel: jier werdem alle Homematic-Temperaturen ausgelesen und in automatisch als Serie hinzugefügt foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $InstanceId) { $varId = @IPS_GetObjectIDByIdent("TEMPERATURE",$InstanceId); $var = @IPS_GetVariable($varId); if($var) { // Float Variable (.... ist schon etwas wage sich auf den VariablenTyp zu verlassen) if($var['VariableValue']['ValueType'] == 2 ) { //$V = GetVariableArray($InstanceId, "TEMPERATURE"); $Name = str_replace("Funk Devices\\", "", IPS_GetLocation($var["VariableID"])); $Name = str_replace("\\", "/", $Name ); $CfgDaten["Series"][] = array("Id"=>$var["VariableID"], "Name" =>$Name, "Unit"=>"°C", "ReplaceValues"=>false, "Param" =>"type:'spline', step:false, yAxis: 0, shadow: true,lineWidth: 1 , states: {hover:{lineWidth: 2}}, marker: { enabled: false, states: { hover: { enabled: true, radius: 4}}}"); } } } */ // => ab V1.0008, x-Achse kann als Higcharts-JS übergeben werden // Definition X-Achse ist autom. Time-Format //$CfgDaten["xAxis"] = array("Type"=>"datetime" ); // Definition Y-Achsen // Name oder TitleText: Bezeichnung der Achse // Unit: Einheit für die Beschriftung die Skalenwerte // Min: Achse beginnt bei Min (wenn nichts angegeben wird wird der Min der Achse automatisch eingestellt) // Max: Achse geht bis Max (wenn nichts angegeben wird wird der Max der Achse automatisch eingestellt) // TickInterval: Skalenwerte alle x (TickInterval) // Opposite: Achse wird auf der rechten (true) oder linken Seite (false) des Charts angezeigt (default = false) // PlotBands: genaue Definition bitte aus der Highcharts Konfiguration (www.highcharts.com) übernehmen - Beispiel siehe weiter unten // YAxisColor: Farbe der Achse // TitleStyle: Style der Aches (sollte an Stelle von YAxisColor verwendet werden) // $CfgDaten["yAxis"][] = array("Name" =>"Temperaturen", "Unit"=>"°C","Opposite"=>false,"TickInterval"=>5); //Diagrammname und Sklarierung angeben //$CfgDaten["yAxis"][] = array("Name" =>"Heizungssteller / Luftfeuchte", "TitleStyle"=>"color: '#6D869F'", "Unit"=>"°C","Min"=>-20, "Max"=>40,"TickInterval"=>5,"Opposite"=>true); //oder direkt den String für die Achsen übergeben // $CfgDaten["yAxis"][] = "title: { text: '123' }, min:0"; // Beispiel: Achse mit integrierten Higcharts-PlotBand $CfgDaten["yAxis"][] = array("Name" =>"Temperaturen", "Unit"=>"°C", "Opposite"=>false, "TickInterval"=>10, "Min" => -20, "Max" => 50, "PlotBands" => "[ { // Eistag from: -20.0, to: 0.0, color: 'rgba(68, 170, 213, 0.1)', label: { text: 'Eistag', style: { color: '#606060' } } }, { // kalter Tag from: 0.0, to: 15.0, color: 'rgba(255, 255, 0, 0.1)', label: { text: 'kalter Tag', style: { color: '#606060' } } }, { // Sommertag from: 25.0, to: 30.0, color: 'rgba(255, 90, 0, 0.1)', label: { text: 'Sommertag', style: { color: '#606060' } } }, { // heißer Tag from: 30.0, to: 50.0, color: 'rgba(255, 0, 0, 0.1)', label: { text: 'heißer Tag', style: { color: '#606060' } } }, ]" ); // => ab V1.0002 // HighchartConfig String $CfgDaten["HighChartCfg"] = false; // false = default String wird verwendet // Beispiel für ein von extern übergebener CfgString. Dies entspricht exakt dem Highcrats ConfigString aus der Highcharts.com/ref // zusätzlich können bzw. teilweise müssen folgenden Platzhalter verwendet werden. // %title.text% = $CfgDaten["Title"] // %subtitle.text% = CfgDaten["SubTitle"], oder bei "" der automatisch erzeugte Zeitraum // %yAxis% = die genierten y-Achsen welche durch $CfgDaten["yAxis"] konfiguriert wurden // %tooltip% = der generiert Tooltip // %xAxis.min% und %xAxis.may% = der durch $CfgDaten["StartTime"] und $CfgDaten["EndTime"] festgelegte Zeitraum // %data% = die aus der Datenbank gelesenen Daten, ohne diesen Platzhalter läuft gar nichts /* $CfgDaten["HighChartCfg"]=" chart: { renderTo: 'container' }, title: { text: '%title.text%', x: -20 }, subtitle: { text: '%subtitle.text%', x: -20 }, xAxis: [{ type: 'datetime', dateTimeLabelFormats: { second: '%H:%M:%S', minute: '%H:%M', hour: '%H:%M', day: '%e. %b', week: '%e. %b', month: '%b \'%y', year: '%Y' } }], yAxis: [ %yAxis% ], tooltip: { %tooltip% }, series: [ %data% ] });"; */ // Alle $CfgDaten["HighChart"] Parameter werden an das IP_Template übergeben // Highcharts-Themes $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"] = 600; // in px // und jetzt los ...... $s=IPS_GetScript($CfgDaten["HighChartScriptId"]); // Id des Highcharts-Scripts include($s['ScriptFile']); // => ab V1.0003 // hier werden die CfgDaten geprüft und bei Bedarf vervollständigt $CfgDaten = CheckCfgDaten($CfgDaten); // => ab V1.0003 neu, ab V1.0006 Erweiterung Parameter "popup" 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 } } ?>