Q&A Highcharts V2.0

An dem Code hätte auch Interesse :wink:

Sodala, hier das Config-Skript für die Aktivitätenauswertung.

Achtet bitte auf den Anfangsbereich, dort wird aus 3 Variablen der Plotzeitraum, in Form von Startzeit, Plotzeitraum und die Aggregationsstufe, geholt damit ich den Anzeigezeitraum frei wählen kann. Wer das nicht will muss nur bis zum IPS_SetHidden() alles löschen und die Start- und Endzeit entsprechend seinen Wünschen anpassen.

Des Weiteren hoffe ich das Ihr mit den Formatter-Options und den Plotbands nicht auf Kriegsfuß steht, von denen wird reichlich gebrauch gemacht und sind entsprechend den ReplaceValues anzupassen damit die yAxis, Tooltips und Plotbands korrekt angezeigt werden.

Derzeit werden max. 10 Variablen in dem Chart angezeigt. Wer weniger will muss nur die entsprechenden Variablendefinitionen löschen, wer mehr braucht muß an den Formatteroptions rumschrauben.

Viel Spaß damit :smiley:

<?
 // bei der Konfiguration unbedingt auf die Groß/Kleinschreibung achten
$actID  = 40711 /*[Test\Highchart2.0\Stromverbrauch\Einschaltzeiten\Plotbereich\Startzeit jetzt minus]*/;
$rangeID = 31556 /*[Test\Highchart2.0\Stromverbrauch\Einschaltzeiten\Plotbereich\Plotzeitraum]*/;
$aggID  = 28900 /*[Test\Highchart2.0\Stromverbrauch\Einschaltzeiten\Plotbereich\Aggregation]*/;
if($_IPS['SENDER'] == "WebFront")
{
   SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
 if((GetValue($rangeID) == 0) && (GetValue($actID) == 0)) {
    SetValue($aggID, 1);
 }
}
$act   = GetValue($actID);
$range  = GetValue($rangeID);
$agg   = GetValue($aggID);
switch($agg) {
 case 1:
    $agg_temp = 1;
 break;
 case 2:
    $agg_temp = 7;
 break;
 case 3:
    $agg_temp = 31;
 break;
}
$ts = $act * $agg_temp;
$te = ($agg_temp * $range) + $ts;

 IPS_SetHidden($_IPS['SELF'], true);
 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"] = 28548 /*[Test\Highchart2.0\Highcharts V2.01B]*/;      // ID des Highcharts Scripts
 // Highcharts oder Highstock (default = Highcharts
// $CfgDaten['Ips']['ChartType'] = 'Highstock';
 $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())-$te, date("Y",time())); // ab heute 00:00 Uhr
 $CfgDaten["EndTime"] = mktime(23,59,59,  date("m", time()), date("d",time())-$ts, date("Y",time())); // ab heute 23:59 Uhr, oder //$CfgDaten["EndTime"] = time();   // = bis jetzt
 // damit wird die Art des Aufrufes festgelegt
 $CfgDaten["RunMode"] = "file";  // file, script oder popup
 if ($CfgDaten["RunMode"] == "popup")
 {
  $CfgDaten["WebFrontConfigId"] = 43269 /*[WebFront Hauptsteuerung]*/;
  $CfgDaten["WFCPopupTitle"]   = "Ich bin der Text, welcher als Überschrift im Popup gezeigt wird";
 }
 // => 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"]   = 14;       // ist der Zeitraum größer als X Tage werden Tageswerte geladen
 $CfgDaten["AggregatedValues"]["WeekValues"]   = 30;      // ist der Zeitraum größer als X Tage werden Wochenwerte geladen
 $CfgDaten["AggregatedValues"]["MonthValues"]  = 40;      // 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     |

 // *** 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/
 // *** title *** siehe http://www.highcharts.com/ref/#title
 $CfgDaten['title']['text'] = "Geräteaktivitäten";
 // *** subtitle *** siehe http://www.highcharts.com/ref/#subtitle
 $CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%";  // "" = Automatisch über Zeitraum
 $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)

 // Datendefinition
 $serie['Id']              = 20247 /*[Keller\Waschküche\Trockner\in Betrieb]*/;
 $serie['Name']             = "Trockner";
 $serie['AggType']            = 0;
 $serie['Unit']             = array(false=>'aus', true=>'ein');
 $serie['type']             = "line";
 $serie['zIndex']             = 10;
 $serie['color']             = "#FF0000";
 $serie['step']             = true;
 $serie['ReplaceValues']          = array(false=>0,true=>0.4);
 $serie['yAxis']             = 0;
 $serie['visible']            = true;
 $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;
 // Datendefinition
 $serie['Id'] = 17114 /*[Keller\Waschküche\Waschmaschine\in Betrieb]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Waschmaschine";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFFF00";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>0.6, true=>1.0);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // Datendefinition
 $serie['Id'] = 55557 /*[Erdgeschoß\Wohnzimmer\Stehlampen\Stehlampen]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Stehlampen";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFAA7F";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>1.2, true=>1.6);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 57296 /*[Erdgeschoß\Wohnzimmer\Hintergrundbeleuchtung\Status]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Hintergrundbeleuchtung";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#AAFF2A";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>1.8, true=>2.2);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 44535 /*[Tools\PingII\Netzwerk\Arbeitsplatz Werner]*/;
 $serie['type'] = "line";
 $serie['Name'] = "APS Werner";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#AA2AFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>2.4, true=>2.8);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 22789 /*[Tools\PingII\Netzwerk\Reelbox]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Mediencenter";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#2AAAFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>3.0, true=>3.4);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 12797 /*[Außen\Terrasse\Blubbersteine\Status:]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Blubbersteine";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FF00D4";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>3.6, true=>4.0);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // Datendefinition
 $serie['Id'] = 13600 /*[Außen\Gartenhaus\Heizung HVO\Aktiv]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Heizung HVO";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFFF7F";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>4.2, true=>4.6);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 20907 /*[Obergeschoß\Robert Wohnzimmer\Arbeitsplatz\Status]*/;
 $serie['type'] = "line";
 $serie['Name'] = "APS Robert";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#D4AAFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>4.8, true=>5.2);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 27142 /*[Tools\Squeezebox\Auswertung Squeezeboxen\Musik Badezimmer\Power]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Radio Bad";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'aus', true=>'ein');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>5.4, true=>5.8);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // --------------------------------------------------------------------------
 // y-Achsen-Definition
 // --------------------------------------------------------------------------

 $CfgDaten["yAxis"][0]['title']['text'] = "";
 $CfgDaten["yAxis"][0]['Unit'] = "";
 $CfgDaten["yAxis"][0]['opposite'] = false;
 $CfgDaten["yAxis"][0]['tickInterval'] = 0.2;
 $CfgDaten["yAxis"][0]['min'] = 0;
 $CfgDaten["yAxis"][0]['max'] = 6;
 $CfgDaten["yAxis"][0]['title']['style']['color'] = "#FFFFFF";
 $CfgDaten["yAxis"][0]['labels']['style']['color'] = "#FFFFFF";
 $CfgDaten["yAxis"][0]['labels']['staggerLines'] = 2;
 $CfgDaten['yAxis'][0]['labels']['formatter'] = "@function() {  if (this.value == 0) return 'aus'; if (this.value == 0.4) return 'ein';
                      if (this.value == 0.6) return 'aus'; if (this.value == 1.0) return 'ein';
                      if (this.value == 1.2) return 'aus'; if (this.value == 1.6) return 'ein';
                      if (this.value == 1.8) return 'aus'; if (this.value == 2.2) return 'ein';
                      if (this.value == 2.4) return 'aus'; if (this.value == 2.8) return 'ein';
                      if (this.value == 3.0) return 'aus'; if (this.value == 3.4) return 'ein';
                      if (this.value == 3.6) return 'aus'; if (this.value == 4.0) return 'ein';
                      if (this.value == 4.2) return 'aus'; if (this.value == 4.6) return 'ein';
                      if (this.value == 4.8) return 'aus'; if (this.value == 5.2) return 'ein';
                      if (this.value == 5.4) return 'aus'; if (this.value == 5.8) return 'ein'
                     }@";
  // PlotBands generieren
 for($sensor=0; $sensor < count($CfgDaten['Series']); $sensor++) {
  $pb['zIndex'] = NULL;
  $pb['from']          = $CfgDaten["Series"][$sensor]['ReplaceValues'][0];
  $pb['to']           = $CfgDaten["Series"][$sensor]['ReplaceValues'][1];
  $pb['color']          = 'rgba(96, 96, 96, 0.3)';
  $pb['label']['text']       =  $CfgDaten["Series"][$sensor]['Name'];
  $pb['label']['verticalAlign']    = 'center';
  $pb['label']['align']       = 'left';
  $pb['label']['x']        = 5;
  $pb['label']['y']        = 15;
  $pb['label']['style']['color']    = $CfgDaten["Series"][$sensor]['color'];
  $CfgDaten["yAxis"][0]['plotBands'][] = $pb;
 }

 // Highcharts-Theme
 $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'] = 400;  // in px
 // weitere Optionen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 // Chart-Config "Credits"
 $CfgDaten['credits']['enabled']        = true;
 $CfgDaten['credits']['href']         = "";
 $CfgDaten['credits']['text']         = "greipl-it.de";
 $CfgDaten['credits']['position']['align']    = "right";
 $CfgDaten['credits']['position']['x']      = -10;
 $CfgDaten['credits']['position']['verticalAlign']  = "top";
 $CfgDaten['credits']['position']['y']      = 15;
 // *** exporting *** http://www.highcharts.com/ref/#exporting
 $CfgDaten['exporting']['enabled']       = false;
 $CfgDaten['navigation']['enabled']       = false;
 // Chart-Optionen "Tooltip"
   $CfgDaten['tooltip']['useHTML']        = true;
   $CfgDaten['tooltip']['shared']        = true;
   $CfgDaten['tooltip']['crosshairs'][]      = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
 $CfgDaten['tooltip']['crosshairs'][]      = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
 $CfgDaten['tooltip']['formatter']       = "@function() {
                        var s = '<b>' + Highcharts.dateFormat('%d.%m.%Y, %H:%M', this.x) +'</b><br/>';
                                   $.each(this.points, function(i, point) {
                         if (point.y == 0) unit = 'aus'; if (point.y == 0.4) unit = 'ein';
                         if (point.y == 0.6) unit = 'aus'; if (point.y == 1.0) unit = 'ein';
                         if (point.y == 1.2) unit = 'aus'; if (point.y == 1.6) unit = 'ein';
                         if (point.y == 1.8) unit = 'aus'; if (point.y == 2.2) unit = 'ein';
                         if (point.y == 2.4) unit = 'aus'; if (point.y == 2.8) unit = 'ein';
                         if (point.y == 3.0) unit = 'aus'; if (point.y == 3.4) unit = 'ein';
                         if (point.y == 3.6) unit = 'aus'; if (point.y == 4.0) unit = 'ein';
                         if (point.y == 4.2) unit = 'aus'; if (point.y == 4.6) unit = 'ein';
                         if (point.y == 4.8) unit = 'aus'; if (point.y == 5.2) unit = 'ein';
                         if (point.y == 5.4) unit = 'aus'; if (point.y == 5.8) unit = 'ein';
                                       var step = {}[this.series.name];
                                       s += '<br/>' + '<span style=color:' + point.series.color + '>' + point.series.name +': </span><b>' + unit + '</b>';
                                   });
                                   return s;
                               }
                   @";
 
   $CfgDaten['legend']['enabled']   = false;
   $CfgDaten['legend']['borderRadius']  = 0;
   $CfgDaten['legend']['borderColor']  = "#1b2b3b";
   $CfgDaten['legend']['shadow']    = true;
   $CfgDaten['chart']['zoomType']   = "x";
   $CfgDaten['chart']['animation']   = false;
 
 // -------------------------------------------------------------------------------------------------------------------------------------
 // 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
  }
 }
 
?>

Hier noch die Screenshots vom kompletten Bildschirm inkl. Plotzeitraum und der Console für die Variablentypen des Plotzeitraumes.

Hallo Werner,

vielen Dank. Ich gebe Feedback wenns läuft.Dauert aber bestimmt noch :wink:

Grüße, Stromer

Hoffentlich nur wenn es läuft :smiley:

Hi Werner,

danke für den Code.
Habe das nun exemplarisch für meine 2 Tracker gemacht.

Die Achsen werden zwar generiert, aber es ist kein Chart da:


Werte sind aber gelogged, bei der IPS Grafik sieht das aber entsprechend schlecht aus, weil dort Boolean nicht sauber dargestellt wird:

Außerdem ist erst beim Zoomen die x-Achse beschriftet:

Ich habe eine festen Zeitraum angegeben, und den Teil mit den Variablen, wie oben beschrieben gelöscht.

Zeig mir mal dein angepasstes Config-Skript oder zumindest die Zeit- und Variablendefinition.

Mein Fehler.
Die Startzeit sollte schon vor der Endezeit sein …:wink:

Danke,
sieht cool aus!

:D:D:D

Hat gewisse Vorteile

Hallo,
hab das Config Script mal auf 15 Geräte erweitert. Im Tooltip sehe ich alle 15, nur im Diagramm selbst nicht.
Wo muss ich noch schrauben?
ScreenShot376.jpg

<?
 // bei der Konfiguration unbedingt auf die Groß/Kleinschreibung achten
$actID  = 30868  /*[Scripte\Highcharts\Fenster\Plotbereich\Startzeit jetzt minus]*/;
$rangeID = 46019  /*[Scripte\Highcharts\Fenster\Plotbereich\Plotzeitraum]*/;
$aggID  = 16674  /*[Scripte\Highcharts\Fenster\Plotbereich\Aggregation]*/;
if($_IPS['SENDER'] == "WebFront")
{
   SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
 if((GetValue($rangeID) == 0) && (GetValue($actID) == 0)) {
    SetValue($aggID, 1);
 }
}
$act   = GetValue($actID);
$range  = GetValue($rangeID);
$agg   = GetValue($aggID);
switch($agg) {
 case 1:
    $agg_temp = 1;
 break;
 case 2:
    $agg_temp = 7;
 break;
 case 3:
    $agg_temp = 31;
 break;
}
$ts = $act * $agg_temp;
$te = ($agg_temp * $range) + $ts;

 IPS_SetHidden($_IPS['SELF'], true);
 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"] = 32134 /*[Scripte\Highcharts\Highcharts]*/ ;      // ID des Highcharts Scripts
 // Highcharts oder Highstock (default = Highcharts
// $CfgDaten['Ips']['ChartType'] = 'Highstock';
 $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())-$te, date("Y",time())); // ab heute 00:00 Uhr
 $CfgDaten["EndTime"] = mktime(23,59,59,  date("m", time()), date("d",time())-$ts, date("Y",time())); // ab heute 23:59 Uhr, oder //$CfgDaten["EndTime"] = time();   // = bis jetzt
 // damit wird die Art des Aufrufes festgelegt
 $CfgDaten["RunMode"] = "file";  // file, script oder popup
 if ($CfgDaten["RunMode"] == "popup")
 {
  $CfgDaten["WebFrontConfigId"] = 24114 /*[WebFront Configurator]*/ ;
  $CfgDaten["WFCPopupTitle"]   = "Ich bin der Text, welcher als Überschrift im Popup gezeigt wird";
 }
 // => 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"]   = 14;       // ist der Zeitraum größer als X Tage werden Tageswerte geladen
 $CfgDaten["AggregatedValues"]["WeekValues"]   = 30;      // ist der Zeitraum größer als X Tage werden Wochenwerte geladen
 $CfgDaten["AggregatedValues"]["MonthValues"]  = 40;      // 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     |

 // *** 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/
 // *** title *** siehe http://www.highcharts.com/ref/#title
 $CfgDaten['title']['text'] = "Fensteraktivitäten";
 // *** subtitle *** siehe http://www.highcharts.com/ref/#subtitle
 $CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%";  // "" = Automatisch über Zeitraum
 $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)

 // Datendefinition
 $serie['Id']              = 54772 /*[Homematic\Geräte\Kontakte\Flur Tür Eingang\STATE]*/ ;
 $serie['Name']             = "Flur Tür";
 $serie['AggType']            = 0;
 $serie['Unit']             = array(false=>'zu', true=>'auf');
 $serie['type']             = "line";
 $serie['zIndex']             = 10;
 $serie['color']             = "#FF0000";
 $serie['step']             = true;
 $serie['ReplaceValues']          = array(false=>0,true=>0.4);
 $serie['yAxis']             = 0;
 $serie['visible']            = true;
 $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;
 // Datendefinition
 $serie['Id'] = 29331  /*[Homematic\Geräte\Kontakte\Küche Fenster 1\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Küche Fenster 1";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFFF00";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>0.6, true=>1.0);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // Datendefinition
 $serie['Id'] = 45930  /*[Homematic\Geräte\Kontakte\Küche Fenster 2\STATE]*/;
 $serie['type'] = "line";
 $serie['Name'] = "Küche Fenster 2";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFAA7F";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>1.2, true=>1.6);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 26168  /*[Homematic\Geräte\Kontakte\Küche Fenster 3\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Küche Fenster 3";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#AAFF2A";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>1.8, true=>2.2);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 48986  /*[Homematic\Geräte\Kontakte\Küche Tür\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Küche Tür";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#AA2AFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>2.4, true=>2.8);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 43120  /*[Homematic\Geräte\Kontakte\Küche Fenster 4\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Küche Fenster 4";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#2AAAFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>3.0, true=>3.4);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 26731  /*[Homematic\Geräte\Kontakte\KiZi Fenster 1\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Kinderzimmer Fenster 1";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FF00D4";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>3.6, true=>4.0);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // Datendefinition
 $serie['Id'] = 21867  /*[Homematic\Geräte\Kontakte\KiZi Fenster 2\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Kinderzimmer Fenster 2";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#FFFF7F";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>4.2, true=>4.6);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition
 $serie['Id'] = 49867  /*[Homematic\Geräte\Kontakte\KiZi Fenster 3\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Kinderzimmer Fenster 3";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#D4AAFF";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>4.8, true=>5.2);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
 // Datendefinition #10
 $serie['Id'] = 59532  /*[Homematic\Geräte\Kontakte\Bad Fenster\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Bad Fenster";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>5.4, true=>5.8);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
// Datendefinition #11
 $serie['Id'] = 13460  /*[Homematic\Geräte\Kontakte\Schlafen Fenster 1\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Schlafen Fenster 1";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>6.0, true=>6.4);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
// Datendefinition #12
 $serie['Id'] = 15766  /*[Homematic\Geräte\Kontakte\Schlafen Fenster 2\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Schlafen Fenster 2";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>6.6, true=>7.0);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
// Datendefinition #13
 $serie['Id'] = 43012  /*[Homematic\Geräte\Kontakte\Stube Tür\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Stube Tür";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>7.2, true=>7.6);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
// Datendefinition #14
 $serie['Id'] = 41165  /*[Homematic\Geräte\Kontakte\Stube Fenster 1\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Stube Fenster 1";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>7.8, true=>8.2);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;
// Datendefinition #15
 $serie['Id'] = 19539  /*[Homematic\Geräte\Kontakte\Stube Fenster 2\STATE]*/ ;
 $serie['type'] = "line";
 $serie['Name'] = "Stube Fenster 2";
 $serie['AggType'] = 0;
 $serie['Unit'] = array(false=>'zu', true=>'auf');
 $serie['zIndex'] = 10;
 $serie['color'] = "#7FFFAA";
 $serie['step'] = true;
 $serie['ReplaceValues']          = array(false=>8.4, true=>8.8);
 $serie['yAxis'] = 0;
 $serie['visible'] = true;
 $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;

 // --------------------------------------------------------------------------
 // y-Achsen-Definition
 // --------------------------------------------------------------------------

 $CfgDaten["yAxis"][0]['title']['text'] = "";
 $CfgDaten["yAxis"][0]['Unit'] = "";
 $CfgDaten["yAxis"][0]['opposite'] = false;
 $CfgDaten["yAxis"][0]['tickInterval'] = 0.2;
 $CfgDaten["yAxis"][0]['min'] = 0;
 $CfgDaten["yAxis"][0]['max'] = 6;
 $CfgDaten["yAxis"][0]['title']['style']['color'] = "#FFFFFF";
 $CfgDaten["yAxis"][0]['labels']['style']['color'] = "#FFFFFF";
 $CfgDaten["yAxis"][0]['labels']['staggerLines'] = 2;
 $CfgDaten['yAxis'][0]['labels']['formatter'] = "@function() {  if (this.value == 0) return 'zu'; if (this.value == 0.4) return 'auf';
                      if (this.value == 0.6) return 'zu'; if (this.value == 1.0) return 'auf';
                      if (this.value == 1.2) return 'zu'; if (this.value == 1.6) return 'auf';
                      if (this.value == 1.8) return 'zu'; if (this.value == 2.2) return 'auf';
                      if (this.value == 2.4) return 'zu'; if (this.value == 2.8) return 'auf';
                      if (this.value == 3.0) return 'zu'; if (this.value == 3.4) return 'auf';
                      if (this.value == 3.6) return 'zu'; if (this.value == 4.0) return 'auf';
                      if (this.value == 4.2) return 'zu'; if (this.value == 4.6) return 'auf';
                      if (this.value == 4.8) return 'zu'; if (this.value == 5.2) return 'auf';
                      if (this.value == 5.4) return 'zu'; if (this.value == 5.8) return 'auf';
                      if (this.value == 6.0) return 'zu'; if (this.value == 6.4) return 'auf';
                      if (this.value == 6.6) return 'zu'; if (this.value == 7.0) return 'auf';
                      if (this.value == 7.2) return 'zu'; if (this.value == 7.6) return 'auf';
                      if (this.value == 7.8) return 'zu'; if (this.value == 8.2) return 'auf';
                      if (this.value == 8.4) return 'zu'; if (this.value == 8.8) return 'auf'
                     }@";
  // PlotBands generieren
 for($sensor=0; $sensor < count($CfgDaten['Series']); $sensor++) {
  $pb['zIndex'] = NULL;
  $pb['from']          = $CfgDaten["Series"][$sensor]['ReplaceValues'][0];
  $pb['to']           = $CfgDaten["Series"][$sensor]['ReplaceValues'][1];
  $pb['color']          = 'rgba(96, 96, 96, 0.3)';
  $pb['label']['text']       =  $CfgDaten["Series"][$sensor]['Name'];
  $pb['label']['verticalAlign']    = 'center';
  $pb['label']['align']       = 'left';
  $pb['label']['x']        = 5;
  $pb['label']['y']        = 15;
  $pb['label']['style']['color']    = $CfgDaten["Series"][$sensor]['color'];
  $CfgDaten["yAxis"][0]['plotBands'][] = $pb;
 }

 // Highcharts-Theme
 $CfgDaten['HighChart']['Theme']="ips.js";   // IPS-Theme muss per Hand in in Themes kopiert werden....
 // Abmessungen des erzeugten Charts
 $CfgDaten['HighChart']['Width']  = 0;  // in px,  0 = 100%
 $CfgDaten['HighChart']['Height'] = 500;  // in px old 400
 // weitere Optionen +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 // Chart-Config "Credits"
 $CfgDaten['credits']['enabled']        = true;
 $CfgDaten['credits']['href']         = "";
 $CfgDaten['credits']['text']         = "greipl-it.de";
 $CfgDaten['credits']['position']['align']    = "right";
 $CfgDaten['credits']['position']['x']      = -10;
 $CfgDaten['credits']['position']['verticalAlign']  = "top";
 $CfgDaten['credits']['position']['y']      = 7;
 // *** exporting *** http://www.highcharts.com/ref/#exporting
 $CfgDaten['exporting']['enabled']       = true;
 $CfgDaten['navigation']['enabled']       = false;
 // Chart-Optionen "Tooltip"
   $CfgDaten['tooltip']['useHTML']        = true;
   $CfgDaten['tooltip']['shared']        = true;
   $CfgDaten['tooltip']['crosshairs'][]      = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
 $CfgDaten['tooltip']['crosshairs'][]      = array('width' =>1,'color' =>'grey','dashStyle'=>'dashdot' );
 $CfgDaten['tooltip']['formatter']       = "@function() {
                        var s = '<b>' + Highcharts.dateFormat('%d.%m.%Y, %H:%M', this.x) +'</b><br/>';
                                   $.each(this.points, function(i, point) {
                         if (point.y == 0) unit = 'zu'; if (point.y == 0.4) unit = 'auf';
                         if (point.y == 0.6) unit = 'zu'; if (point.y == 1.0) unit = 'auf';
                         if (point.y == 1.2) unit = 'zu'; if (point.y == 1.6) unit = 'auf';
                         if (point.y == 1.8) unit = 'zu'; if (point.y == 2.2) unit = 'auf';
                         if (point.y == 2.4) unit = 'zu'; if (point.y == 2.8) unit = 'auf';
                         if (point.y == 3.0) unit = 'zu'; if (point.y == 3.4) unit = 'auf';
                         if (point.y == 3.6) unit = 'zu'; if (point.y == 4.0) unit = 'auf';
                         if (point.y == 4.2) unit = 'zu'; if (point.y == 4.6) unit = 'auf';
                         if (point.y == 4.8) unit = 'zu'; if (point.y == 5.2) unit = 'auf';
                         if (point.y == 5.4) unit = 'zu'; if (point.y == 5.8) unit = 'auf';
                         if (point.y == 6.0) unit = 'zu'; if (point.y == 6.4) unit = 'auf';
                         if (point.y == 6.6) unit = 'zu'; if (point.y == 7.0) unit = 'auf';
                         if (point.y == 7.2) unit = 'zu'; if (point.y == 7.6) unit = 'auf';
                         if (point.y == 7.8) unit = 'zu'; if (point.y == 8.2) unit = 'auf';
                         if (point.y == 8.4) unit = 'zu'; if (point.y == 8.8) unit = 'auf';
                                       var step = {}[this.series.name];
                                       s += '<br/>' + '<span style=color:' + point.series.color + '>' + point.series.name +': </span><b>' + unit + '</b>';
                                   });
                                   return s;
                               }
                   @";

   $CfgDaten['legend']['enabled']   = false;
   $CfgDaten['legend']['borderRadius']  = 0;
   $CfgDaten['legend']['borderColor']  = "#1b2b3b";
   $CfgDaten['legend']['shadow']    = true;
   $CfgDaten['chart']['zoomType']   = "x";
   $CfgDaten['chart']['animation']   = false;

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

?>

Hallo Jürgen,

erhöhe mal bei der yAxis-Definition den max-Wert auf 9 oder 10. Derzeit schneidet HC ja bei 6 ab.

$CfgDaten[„yAxis“][0][‚min‘] = 0;
$CfgDaten[„yAxis“][0][‚max‘] = 6; <-------

Danke, das wars.
Jetzt gehts.

Kleine Ursache, grosse Wirkung!

Hallo,

hat jemand eine Erklärung dafür, warum in den Highcharts bei mir ein Teil der Kurven, hier sind es die „SOLL-Temperatur“ und „Stellantribe“ so merkwürdige lange Anstiege haben ?

In den IP-S Graphen sehen die ganz normal aus, Anstieg von 0 auf x innerhalb von einem kurzen Moment.

schau mal, ob das mit step = false (Series) besser aussieht, evtl noch statt spline line nehmen

Müsste er nicht step=true verwenden, damit nicht interpoliert wird? :confused:

cu…

ups, ja stimmt. sorry

Danke Jungs,

habs bei einem Graphen mal geändert, mal sehen, obs nun besser wird. Dann mache ich den Rollout zu allen Graphen :slight_smile:

Grüsse

Thomas

Moin,

mal ein Update:

„step=true“ zu ändern hat keine Änderungen gebraucht.

Ich hab nun mal

$serie[‚type‘] = „spline“; in line geändern, damit sieht es besser aus. Aber nur bei den Graphen, die sprunghafte Änderungen machen, bei IST-Temperatur und Luftfeuchte hab ich nicht gemacht, da werden die Graphen total kantig.

Hallo Werner,

vielen Dank für das Blubberstein Script. Heute integriert und läuft von Anfang an. Herzlichen Dank dafür.

Dein Script hat meinen Ehrgeiz wieder geweckt und so gibt es doch noch eine Frage:
Derzeit läuft es nur mit Boolschen Werten. Lässt es sich auch so umbauen, das Integer Werte (1-4) anzeigbar werden. Würde da aus Deiner Sicht was dagegensprechen? Müsste ich ausser dem Datenblock noch irgendwo was verändern?

// Datendefinition
$serie[‚Id‘] = 12625 /[41 Sicherheit\Alarmanlage\Alarmanlage Status]/;
$serie[‚type‘] = „line“;
$serie[‚Name‘] = „Alarmanlage Status“;
$serie[‚AggType‘] = 0;
$serie[‚Unit‘] = array(false=>‚aus‘, true=>‚ein‘);
$serie[‚zIndex‘] = 10;
$serie[‚color‘] = „#FFFF7F“;
$serie[‚step‘] = true;
$serie[‚ReplaceValues‘] = array(false=>4.2, true=>4.6);
$serie[‚yAxis‘] = 0;
$serie[‚visible‘] = true;
$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;

Und eine Grundsätzliche Frage ist noch offen:
Lässt sich die Aktualisierung der Auswertungen nicht mit dem Aufruf der Seite im Webfront verbinden? Dann würde das zyklische Aufrufen oder F5 entfallen.

Auf jeden Fall Herzlichen Dank für Deine Unterstützung und Hilfe.
Viele Grüße,
Stromer

du musst statt spline einfach line nehmen, dann ist die Kurve linearer.

das ips.js findest im Download-Thread etwas weiter hinten

lg, chris

Hi,

habt ihr das Skript auch schon mal mit einer mysql Datenbank kombiniert - sprich die Daten anstatt aus einer Variable aus einer DB eingelesen?

Viele Grüße