Q&A Highcharts V2.0

Hallo wgreipl,

wo genau muss ich das ersetzen?

Habe es probiert, aber erhalte immer den Fehler " Undefined index: Series in C:\IP-Symcon_2_0\scripts\38918.ips.php on line"

Genau da wo es steht.

Ersetze den Teil CfgDaten[…] durch den Farbwert den Du möchtet.

Also statt dem Cfg… Steht dort der Farbwert.

Sent from my iPhone using Tapatalk

Danke,

jetzt habe ich nur noch einen Fehler.

" Notice: Undefined index: HighChart in [Allgemein\Grafiken\Highcharts_V2.02.ips] on line 87 "

Der sich auf diese Zeile im Highcharts Script bezieht.

" $height = $cfg[‚HighChart‘][‚Height‘] + 16; "

So den Fehler habe ich auch raus. hatte was vergessen.

Habe jetzt auch schon ein Ergebnis, sieht aber noch etwas komisch aus :stuck_out_tongue:

Wenn ich da noch 'nen Tip bekommen könnte :o

Muss jetzt aber erstmal zur Arbeit, Geld verdienen. :smiley:

Das liegt daran das es Werte gibt die größer als 100% sind.

Die Summe aller Werte mi PIE müssen 100% ergeben.

Sorry wegen der fehlenden Grafik, habe den vorherigen Beitrag wegen Doppelposting gelöscht und da hat das Forum wohl auch den Anhang dazu gelöscht. :cool:

Ja habe ich auch gerade gesehen das es Werte > 100% gibt. Muss dann mal schauen was ich noch falsch gemacht habe.

Kein Problem, Du hast die Grafik ja gesehen :wink: T’schuldigung für’s Doppelposting.

Hallo wgreipl,

den Fehler der % > 100 habe ich gefunden, hatte auf eine falsche variable verwiesen :o

Meine Grafik sieht jetzt so aus.

PIE_.jpg

Was jetzt noch nicht richtig passt ist, dass die „Tortenstücke“ nur farbig werden wenn ich mit der Mouse drauf gehe.
Und die Linien zur Legende/Beschreibung fehlen, bis auf die bei Mediageräte Schlafzimmer-

Kannst Du nochmal schauen was fehlt?

Mein Script sieht so aus:

 $mon_gesamt    = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 34244, 3, $ts, $te, 1)[0]['Avg'], 1);
 $mon_wasserbett = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 35359, 3, $ts, $te, 1)[0]['Avg'], 1);
 $mon_edv    = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 46940, 3, $ts, $te, 1)[0]['Avg'], 1);
 $mon_mediawohn   = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 27179, 3, $ts, $te, 1)[0]['Avg'], 1);
 $mon_mediaschlaf    = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 55918, 3, $ts, $te, 1)[0]['Avg'],1);
 $mon_server    = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 26172, 3, $ts, $te, 1)[0]['Avg'], 1);
 $mon_server    = round(AC_GetAggregatedValues(13953 /*[Archive Handler]*/, 26172, 3, $ts, $te, 1)[0]['Avg'], 1);



 $rest = round($mon_gesamt-($mon_wasserbett + $mon_edv + $mon_mediawohn + $mon_mediaschlaf + $mon_server), 2);

//echo $rest;


$serie = array();
 $serie['name']          = 'Leistungsanteile';
 $serie['type']          = 'pie';
 $serie['data'][]          = array('name'=>'Wasserbett',     'y' => $mon_wasserbett,   'Unit'=>"kW", 'color' => '#B45F04#') ; //, 'dataLabels' => array('color' => '#B45F04#')) ;
 $serie['data'][]          = array('name'=>'EDV Horst',   'y' => $mon_edv, 'Unit'=>"kW", 'color' => '#DF7401#');
 $serie['data'][]          = array('name'=>'Mediageräte Schlafzimmer',     'y' => $mon_mediaschlaf,   'Unit'=>"kW", 'color' => '#FF8000' );
 $serie['data'][]          = array('name'=>'Mediageräte Wohnzimmer',    'y' => $mon_mediawohn,   'Unit'=>"kW", 'color' => '#FE9A2E#');
 $serie['data'][]          = array('name'=>'Serverraum',   'y' => $mon_server,   'Unit'=>"kW", 'color' => '#FAAC58#' );
 $serie['data'][]          = array('name'=>'Sonstige',     'y' => $rest,     'Unit'=>"kW", 'color' => '#F5D0A9#' );
 $serie['animation']         = true;
 $serie['RoundValue']        = 2;
 $serie['innerSize']         = '';
 $serie['allowPointSelect']      = true;
 $serie['dataLabels']['connectorPadding']  = 15;
 $serie['dataLabels']['distance']    = 25;
 $serie['tooltip']['formatter']     = "@function() { return '<b><span style=color:' + this.series.color + '>'+ this.point.name + '</b></span>: '+ this.y.toFixed(2) +' %'}@";
 $serie['cursor']          = 'pointer';
 $serie['center']          = array(600,250);
 $serie['size']          = 250;
 $serie['dataLabels']['enabled']     = true;
 $serie['dataLabels']['formatter']         = "@function() { return '<b>' + this.point.name + '</b>: '+ this.percentage.toFixed(2) +'%'}@";
 $CfgDaten['Series'][]        = $serie;

Nimm mal bei den Farbwerten des hinter # raus

#FE9A2E#

War glauche ich ein C&P-Fehler von mir

Danke, das war’s.

Hallo zusammen,
versuche seit einiger Zeit MySQL-Daten mit HighCharts darzustellen.
Habs in einem anderen Projekt auch schon hinbekommen. Hier leider nicht.

Bekomme im WF nur einen Leeren Chart. Hat jemand einen Tipp wo ich suchen muss?

Hole die Daten aus der DB:

$MySQLConn=mysql_connect($MySQLIP.$MySQLPort, $MySQLAdmin, $MySQLAdminPW);
$db = $IPS_DB;
$SQLTable = $TBL_FB_AnrLstAusw;
$Criteria = "";
//------------------------------------------------------------------------------
if (!$MySQLConn)
 {IPS_LogMessage('FB_AnrLst_MySQL_Auswertung_AnrAnzahl', 'error= '. mysql_error());}
     $db_selected = mysql_select_db($db, $MySQLConn);

if (!$db_selected)
    {IPS_LogMessage('FB_AnrLst_MySQL_Auswertung_AnrAnzahl', 'opendb= '. mysql_error());}
    else
        {
// Anrufe Tag ----------------------------------------------------------------
        $sql_Ergebnis_AnrTag = mysql_query("SELECT DateX, alleGesp as AnrufeTag, alleDauer as AnrufDauer, shaGesp, shaDauer, whaGesp, whaDauer
                                                FROM " . $SQLTable . " " .
                                                $Criteria . "
                                                ;")
                                                OR die("'".$sql_Ergebnis_AnrTag."':".mysql_error());
             if($sql_Ergebnis_AnrTag)
            
            {$i = 0;
                while($data = mysql_fetch_array($sql_Ergebnis_AnrTag, MYSQL_ASSOC))
                {
                     $DataForSerie[]  = array("Value"=>$data['AnrufeTag'], "TimeStamp"=>strtotime($data['DateX']), "TimeStampHuman"=>date("d.m.Y H:i",strtotime($data['DateX'])));
                     }
            $i++;
            }
        }
//print_r($DataForSerie);

Ergebnis print_r($DataForSerie):

Array
(
    [0] => Array
        (
            [Value] => 4
            [TimeStamp] => 1325372400
            [TimeStampHuman] => 01.01.2012 00:00
        )

    [1] => Array
        (
            [Value] => 11
            [TimeStamp] => 1325458800
            [TimeStampHuman] => 02.01.2012 00:00
        )

    [2] => Array
        (
            [Value] => 16
            [TimeStamp] => 1325545200
            [TimeStampHuman] => 03.01.2012 00:00
        )
.
.
.

Übergebe die Daten im Config-Script:

    $serie['name'] = "Anrufe Alle";
    $serie['type'] = "column";
    $serie['yAxis'] = 0;
    $serie['Data'] = $DataForSerie;  //für eigene daten aus MySQL. zeile aus http://www.ip-symcon.de/forum/f52/q-highcharts-v2-0-a-18312/index5.html#post164205
    $CfgDaten['series'][] = $serie;

Ergebnis im WF:

Falls o.g. Code zu wenig ist anbei noch das komplette Config-Script.

Danke für Eure Hilfe,

FB_AnrLst_Ausw_HC_Tage.txt (17 KB)

Hallo zusammen,

ich hab vor von googlecharts zu Highcharts zu wechseln. Sieht einfach schöner :wink: Gute Arbeit !
Obwohl es sehr sehr einfach klingt, hab ich hier ein Fehler den ich nicht so ganz verstehen, da die Einrichtung doch sehr einfach ist.

  1. Dateien und Ordner aus der Highcharts ZIP --> \usr\Highcharts
  2. ips.js --> \user\Highcharts\js hemes
  3. IPS_Template.php --> \user\Highcharts

Dann hab ich diesen Beitrag befolgt mit dem ersten darauf folgendem Beispielscript (Cfg V2.x - Bsp: Columns)

ID vom Highcharts Script eingetragen - CHECK
ID vom leeren Config Script eingeragen - CHECK
ID von einem Aussentemperaturfühler eingtragen - CHECK


Was kann man da denn noch falsch machen ?
Hier die Fehler die mir im Browser angezeigt werden, wo normalerweise das Chart stehen sollte.

Notice: Undefined index: Param in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 352

Notice: Undefined index: Param in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 903

Notice: Undefined index: Name in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 958

Notice: Undefined index: Name in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 960

Notice: Undefined index: Param in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 470

Notice: Undefined index: Name in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 792

Notice: Undefined index: Param in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 792

Notice: Undefined index: Title in C:\IP-Symcon\scripts\Highcharts_V1.0007.ips.php on line 481

Was für ein Fehler mache ich hier ?
(Habe gerade mal den ganzen Plugwise Scriptbaum installiert) Da funktioniert Highcharts.

So wie ich das intepretiere nutzt Du Highcharts 1.0007 aber ein Config-File für die 2.0x. Das kann nicht gehen.

Nimm das HC2.02 aus dem ersten Beitrag http://www.ip-symcon.de/forum/threads/17625-Highcharts-Multigraph und probiere es nochmal.

Ich blindfisch… Danke Dir ! Werds gleich testen…

Hallo,

wie würdet ihr den Anlagenstatus (AN / AUS) mit Higcharts abbilden?

1 = an
0 = aus

Ich will im Prinzip eine Übersicht erstellen wo ich sehen kann, wann die Heizung AN / AUS war bzw. welche Vor- und Rücklauftemperatur geherrscht hat.

So sieht mein Datenarray aus:

    [0] => Array
        (
            [TimeStamp] => 1351638003
            [Value] => 1
        )

    [1] => Array
        (
            [TimeStamp] => 1351638303
            [Value] => 1
        )

Hi Frad,

Hast du mal geschaut, wie Fensterkontakte visualisiert werden können?

damit könnte ich es probieren - danke.

Hänge noch an einem anderen Problem… Habe meine ganzen Highcharts außerhalb von IPS bereits am laufen. Will diese nun „umziehen“ zu IPS. Bei folgender Config-Script erhalte ich zwar das Chart aber ohne Inhalt:

<?php

    Global $CfgDaten; // damit kann der Script auch von anderen Scripten aufgerufen werden und bereits mit CfgDaten vorkonfiguriert werden

    // IPS Variablen ID´s
    $CfgDaten['ContentVarableId']= 51277 /*[Heizung\Charts\LWZ Anlagenzustände\Anlagenzustände]*/;  // 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']= 20569 /*[.Highcharts\Highcharts]*/;                  // 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'] = 54984 /*[WebFront Admin]*/;
        $CfgDaten['WFCPopupTitle'] = "Ich bin der Text, welcher als Überschrift im Popup gezeigt wird";
    }


    // Serienübergreifende Einstellung für das Laden von Werten
    $CfgDaten['AggregatedValues']['HourValues'] = -1;      // ist der Zeitraum größer als X Tage werden Stundenwerte geladen
    $CfgDaten['AggregatedValues']['DayValues'] = -1;       // ist der Zeitraum größer als X Tage werden Tageswerte geladen
    $CfgDaten['AggregatedValues']['WeekValues'] = -1;      // ist der Zeitraum größer als X Tage werden Wochenwerte geladen
    $CfgDaten['AggregatedValues']['MonthValues'] = -1;      // ist der Zeitraum größer als X Tage werden Monatswerte geladen
    $CfgDaten['AggregatedValues']['YearValues'] = -1;          // ist der Zeitraum größer als X Tage werden Jahreswerte geladen
    $CfgDaten['AggregatedValues']['NoLoggedValues'] = 1000;     // ist der Zeitraum größer als X Tage werden keine Boolean Werte mehr geladen, diese werden zuvor immer als Einzelwerte geladen    $CfgDaten['AggregatedValues']['MixedMode'] = false;     // alle Zeitraumbedingungen werden kombiniert
    $CfgDaten['AggregatedValues']['MixedMode'] = false;


    $CfgDaten['title']['text'] = "LWZ Anlagenstatus";

    $CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%";
    $CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i";

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



//  Daten aus mySQL holen -------------------------------------------------------------------------------------------------------------------------------
// --- Zugangsdaten
$MySQLHost = "192.168.10.10";
$username  = "IPS";
$password  = "aaaa";
$DB = "myenergy";

// --- DB öffnen
$link = mysql_connect($MySQLHost, $username, $password) or die ("Keine Verbindung möglich!");
mysql_select_db($DB) or die("Auswahl der Datenbank fehlgeschlagen");
mysql_select_db($DB) or die (mysql_error());

// --- SQL-Abfragen aktuelles Jahr ausführen und Daten auslesen  ------------------------------------------------

$sql_avg = "SELECT ROUND(AVG( `Aussentemp` ),2) AS avg_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS avg_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY avg_date
ORDER BY NULL
";

$sql_min = "SELECT MIN( `Aussentemp` ) AS min_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS min_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY min_date
ORDER BY NULL
";

$sql_max = "SELECT MAX( `Aussentemp` ) AS max_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS max_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY max_date
ORDER BY NULL
";


// ++++++++++++++++ AVG ++++++++++++++++++++++++++++++
$result_avg = mysql_query($sql_avg) or die('Query failed: ' . mysql_error());

while($row_avg = mysql_fetch_array($result_avg))
{
  $data_avg[]  = $row_avg["avg_aussentemp"];
  $date_avg[] = $row_avg["avg_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_avg as $key_avg => $entry_avg ) $date_avg[$key_avg] = "'".$entry_avg."'";
$erg_date_avg = join(", ", $date_avg);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_avg = implode(',', $data_avg);



// ++++++++++++++++ MIN ++++++++++++++++++++++++++++++
$result_min = mysql_query($sql_min) or die('Query failed: ' . mysql_error());
//print_r($sql_min);
while($row_min = mysql_fetch_array($result_min))
{
  $data_min[]  = $row_min["min_aussentemp"];
  $date_min[] = $row_min["min_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_min as $key_min => $entry_min ) $date_min[$key_min] = "'".$entry_min."'";
$erg_date_min = join(", ", $date_min);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_min = implode(',', $data_min);

//print_r($erg_date_min);

// ++++++++++++++++ MAX ++++++++++++++++++++++++++++++
$result_max = mysql_query($sql_max) or die('Query failed: ' . mysql_error());

while($row_max = mysql_fetch_array($result_max))
{
  $data_max[]  = $row_max["max_aussentemp"];
  $date_max[] = $row_max["max_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_max as $key_max => $entry_max ) $date_max[$key_max] = "'".$entry_max."'";
$erg_date_max = join(", ", $date_max);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_max = implode(',', $data_max);

//print_r($erg_data_avg);
//print_r($erg_date_min);
//print_r($erg_data_max);

// --- Speicher freigeben
mysql_free_result($result_avg);
mysql_free_result($result_min);
mysql_free_result($result_max);

// --- Schließen der Verbinung
mysql_close($link);
//  Ende mySQL ------------------------------------------------------------------------------------------------------------------------------------------


      $CfgDaten['title']['text'] = "Durschnittliche Außentemperatur der letzten 7 Tage";  // Überchrift des gesamten Charts
      $CfgDaten['subtitle']['text'] = "Stiebel Eltron LWZ";
    $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;


    //$StatusAnlage2 = '7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 39.9, 9.6';

    $serie = array();
    $serie = array("Id"=>0, "Name" =>"WP Max", "Data"=>$erg_data_max);
//    $serie['name'] = "WP Max";
//    $serie['data'] = $erg_data_max;
    //$serie['ReplaceValues'] = false;
    $serie['type'] = "line";
    //$serie['yAxis'] = 0;
    //$serie['marker']['enabled'] = false;
    //$serie['shadow'] = true;
    //$serie['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'] = 600;         // 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
        }
    }



?>

Dieses Ergebnis schmeißt mir Firebug aus:


<script type="text/javascript" src="js/highcharts.js"></script>                  <!-- 1a) add a theme file -->         <script type="text/javascript" src="js/themes/ips.js"></script>                      <!-- 1b) the exporting module -->         <script type="text/javascript" src="js/modules/exporting.js"></script>                  <!-- 2. Add the JavaScript to initialize the chart on document ready -->                  <script type="text/javascript">          var chart;             Highcharts.setOptions({lang:{decimalPoint:',',thousandsSep:'.',months:['Januar','Februar','M\u00e4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],shortMonths:['Jan','Feb','M\u00e4r','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'],weekdays:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag']}});                              $(document).ready(function() {                 chart = new Highcharts.Chart({ chart:{renderTo:'container',zoomType:'xy'},credits:{enabled:false},exporting:{buttons:{printButton:{enabled:false}}},title:{text:'Durschnittliche Au\u00dfentemperatur der letzten 7 Tage'},subtitle:{text:'Stiebel Eltron LWZ'},tooltip:{formatter:function() {var serieIndex = this.series.index;var unit = [[this.y ]][serieIndex];var offset = [0][serieIndex] * 1000;var offsetInfo ='';if (offset != 0)offsetInfo = '<br\/>(Achtung Zeitwert hat einen Offset)';elseoffsetInfo ='';if (this.series.type == 'pie'){return '<b>' + this.point.name +': <\/b> '+ unit +'<br\/>= ' + this.percentage.toFixed(1) + ' %';  }else               {return '<b>' + this.series.name + ': <\/b> '+ unit + '<br\/>'+ Highcharts.dateFormat('%A %d.%m.%Y %H:%M', this.x - offset)+ offsetInfo;}} },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'},allowDecimals:false,min:Date.UTC(2012,10,4,00,00,00),max:Date.UTC(2012,10,14,23,59,59)},yAxis:[{title:{text:'Temperaturen'},opposite:false,tickInterval:5,min:0,max:40,Unit:'\u00b0C',labels:{formatter:function() { return this.value +' \u00b0C'; }}}],series:[{Id:0,type:'line',name:'WP Max',data:'10.3,10.4,11.7,10.6,12.3,10.8,5.8,6.2'}]}); });          </script>

Hier ist mein Script, welches ich außerhalb von IPS laufen lassen und welches funktioniert:


<?
/*****************************************************************************************************************************************************
 *
 * LWZ Auswertung - Außentemperatur der letzten 7 Tage
 *
 *****************************************************************************************************************************************************/

$sql_avg = "SELECT ROUND(AVG( `Aussentemp` ),2) AS avg_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS avg_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY avg_date
ORDER BY NULL
";

$sql_min = "SELECT MIN( `Aussentemp` ) AS min_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS min_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY min_date
ORDER BY NULL
";

$sql_max = "SELECT MAX( `Aussentemp` ) AS max_aussentemp, DATE_FORMAT(creation_date, '%d.%m') AS max_date
FROM `se-isg_info_werte`
WHERE DATE( `creation_date` )
BETWEEN DATE_SUB( DATE( NOW( ) ) , INTERVAL 7
DAY )
AND DATE( NOW( ) )
GROUP BY max_date
ORDER BY NULL
";

//http://www.tutorials.de/relationale-datenbanksysteme/330949-mittelwert-einer-mysql-datenbank-von-stundenwerten.html
//http://www.humbug.in/stackoverflow/de/highcharts-mysql-3722784.html    
    
//print_r($sql4);

// ++++++++++++++++ AVG ++++++++++++++++++++++++++++++
$result_avg = mysql_query($sql_avg) or die('Query failed: ' . mysql_error());    

while($row_avg = mysql_fetch_array($result_avg))
{
  $data_avg[]  = $row_avg["avg_aussentemp"];
  $date_avg[] = $row_avg["avg_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_avg as $key_avg => $entry_avg ) $date_avg[$key_avg] = "'".$entry_avg."'";
$erg_date_avg = join(", ", $date_avg);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_avg = implode(',', $data_avg);



// ++++++++++++++++ MIN ++++++++++++++++++++++++++++++
$result_min = mysql_query($sql_min) or die('Query failed: ' . mysql_error());    
//print_r($sql_min);
while($row_min = mysql_fetch_array($result_min))
{
  $data_min[]  = $row_min["min_aussentemp"];
  $date_min[] = $row_min["min_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_min as $key_min => $entry_min ) $date_min[$key_min] = "'".$entry_min."'";
$erg_date_min = join(", ", $date_min);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_min = implode(',', $data_min);

//print_r($erg_date_min);

// ++++++++++++++++ MAX ++++++++++++++++++++++++++++++
$result_max = mysql_query($sql_max) or die('Query failed: ' . mysql_error());    

while($row_max = mysql_fetch_array($result_max))
{
  $data_max[]  = $row_max["max_aussentemp"];
  $date_max[] = $row_max["max_date"];
}

// Hier werden die Daten für die X-Achse formatiert
foreach ( $date_max as $key_max => $entry_max ) $date_max[$key_max] = "'".$entry_max."'";
$erg_date_max = join(", ", $date_max);
// Hier werden die Daten für die Y-Achse formatiert
$erg_data_max = implode(',', $data_max);


?>
    
<script type="text/javascript">

(function($){ // encapsulate jQuery

var chart;
$(document).ready(function() {
    chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container1',
            type: 'line',
            marginRight: 130,
            marginBottom: 25
        },
        title: {
            text: 'Durschnittliche Außentemperatur der letzten 7 Tage',
            x: -20 //center
        },
        subtitle: {
            text: 'Stiebel Eltron LWZ',
            x: -20
        },
        xAxis: {
            categories: [<? echo $erg_date_avg?>]
        },
        yAxis: {
            title: {
                text: 'Temperature (°C)'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        tooltip: {
            formatter: function() {
                    return '<b>'+ this.series.name +'</b><br/>'+
                    this.x +': '+ this.y +'°C';
            }
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'top',
            x: -10,
            y: 100,
            borderWidth: 0
        },
        series: [{
            name: 'WP Max',
            data: [<? echo $erg_data_max?>]
        }, {
            name: 'WP Durchschnitt',
            data: [<? echo $erg_data_avg?>]

        }, {
            name: 'WP Min',
            data: [<? echo $erg_data_min?>]
        }]
    });
});

})(jQuery);
</script>

<div id="container1" style="min-width: 400px; height: 400px; margin: 0 auto"></div><br />


Hallo FRAD,
scheint gerade ziehmlich ruhig hier zu sein.
Hab auch schon Daten aus einer MySQL in IPS mit HC dargestellt.
So sieht grundlegend meine Series Config aus: !! ohne

$serie = array();
$serie = array(„Id“=>0, „Name“ =>„WP Max“, „Data“=>$erg_data_max);

sondern so:

$serie['Data'] = $DataForSerie; //für eigene daten aus MySQL. zeile aus http://www.ip-symcon.de/forum/f52/q-highcharts-v2-0-a-18312/index5.html#post164205
$CfgDaten["series"][] = $serie;

wobei $DataForSerie Deinen $row_avg, $row_min, $row_max entsprechen müsste (wenn ichs richtig interpretiert hab)
Hope it helps

Drauf gestossen bin ich, weil ich symptomatisch das selbe Problem habe aber vermutlich eine ganz andere Ursache. Siehe Post 410. Hab erst gedacht ich hab ein Timestamp-Problem. Scheint aber alles zu stimmen. Hast Du dazu eine Idee?

Hallo all,

ich habe eine Verständnissfrage:

Ich möchte meine Highchart abändern, das der Bereich unter den Kurve gefüllt wird, so wie in der Demo-Gallerie:
http://www.highcharts.com/demo/area-basic

Wähle ich allerdings Type = Area aus, bekomme ich eine gefüllte Kurve und alle Kurve, die dahinter / darunter liegen, sind nicht mehr zu sehen.

Wie kann ich die Kurvenfüllung teiltransparent einstellen, so das man die anderen Kurve immer noch sehen kann ?

Danke euch im voraus

Grüsse

Thomas

Hallo Tuxtom007,
überschneiden sich die Werte-Reihen? Wenn nein, kannst du die Reihen mit den höchsten Werten in Deinen Series ganz nach unten und die mit den niedrigsten ganz nach oben in der Config schreiben.
Hope it helps,

ach ja, vergessen zu bemerken, dass sich die Farben mischen.

Moin,

ich möchte den Gasverbrauch und Außentemp den Vorjahreswerten gegenüberstellen. Hab das Beispielskript als Vorlage genommen, aber folgende Probleme:

  1. Aggregieren die Vorjahreswerte auf Stunden, die aktuellen auf Tage. Wie kann ich alles auf Tage setzen?
  2. Überlagern sich die Columns dermassen, das man sie nicht mehr unterscheiden kann
  3. Werde ich bei den Vorjahrswerten im Tooltipp gewarnt: "Achtung: Zeitwert hat ein Offset

Any idea?

Hier der Screenshot

und das Skript:

<?php
	// bei der Konfiguration unbedingt auf die Groß/Kleinschreibung achten
	// es wurde versucht folgende Namensgebeung in der Konfiguration zu verwenden
	// Parameter mit kleinen Anfangsbuchstaben = Parameter welche von Highcharts übnernommen wurden. Siehe dazu: http://www.highcharts.com/ref/
	// Parameter mit großen Anfangsbuchstaben = für das IPS-Highcharts-Script eingeführte Parameter

	Global $CfgDaten; // damit kann der Script auch von anderen Scripten aufgerufen werden und bereits mit CfgDaten vorkonfiguriert werden

	// IPS Variablen ID´s
	$CfgDaten['ContentVarableId']= -1;  // ID der String Variable in welche die Daten geschrieben werden (-1 oder überhaupt nicht angeben wenn die Content Variable das übergordnete Element ist)
	$CfgDaten['HighChartScriptId']= 35299 /*[System\Software\Highcharts\Highcharts_V2.02]*/;  				// ID des Highcharts Scripts

	// Zeitraum welcher dargestellt werden soll (kann durch die Zeitvorgaben in den Serien verändert werden)
	// $CfgDaten['StartTime'] = mktime(0,0,0, 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

	$ZeitRaum = GetValue(48796 /*[System\Software\Highcharts\HC_Zeitraum]*/);
	// AggType: [0=Hour, 1=Day, 2=Week, 3=Month, 4=Year] .. wie der Werte gelesen werden soll
	Switch ($ZeitRaum) {
	   Case 0:
	   Case 1:
	      $AggType = 0;
	      Break;
	   Case 7:
	   Case 33:
	      $AggType = 1;
	      Break;
	   Case 365:
		Case 90:
	   Case 180:
	      $AggType = 3;
	      Break;
		Default:
			$AggType = 0;
			Break;
	};

	If ($ZeitRaum == 0) {$ZeitRaum = (8/24);};
	$EndPunkt = GetValue(14844 /*[System\Software\Highcharts\HC_Zeitraum\HC_EndPunkt]*/);
	// $CfgDaten["EndTime"] = time() + 60 * 60 * 24 * $ZeitRaum * $EndPunkt;
   // $CfgDaten["StartTime"] = $CfgDaten["EndTime"] - 60 * 60 * 24 * $ZeitRaum;
	$CfgDaten['EndTime'] = mktime(23,59,59, date("m", time())+1, 0, date("Y",time())); // ab heute 23:59 Uhr, oder //$CfgDaten['EndTime'] = time();   // = bis jetzt
	$CfgDaten['StartTime'] = mktime(0,0,0, date("m", time()), 1, date("Y",time())); // ab heute 00:00 Uhr

    //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 - $CfgDaten["StartTime"]);

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

	if ($CfgDaten['RunMode'] == "popup")
	{
		$CfgDaten['WebFrontConfigId'] = 45035 /*[WebFront Full]*/;
		$CfgDaten['WFCPopupTitle'] = "Chart";
	}

	// Serienübergreifende Einstellung für das Laden von Werten
	$CfgDaten['AggregatedValues']['HourValues'] = 0.9;      // ist der Zeitraum größer als X Tage werden Stundenwerte geladen
	$CfgDaten['AggregatedValues']['DayValues'] = 6;       // ist der Zeitraum größer als X Tage werden Tageswerte geladen
	$CfgDaten['AggregatedValues']['WeekValues'] = 90;      // ist der Zeitraum größer als X Tage werden Wochenwerte geladen
	$CfgDaten['AggregatedValues']['MonthValues'] = 180;      // ist der Zeitraum größer als X Tage werden Monatswerte geladen
	$CfgDaten['AggregatedValues']['YearValues'] = 366;      	// ist der Zeitraum größer als X Tage werden Jahreswerte geladen
	$CfgDaten['AggregatedValues']['NoLoggedValues'] = 60; 	// 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'] = "Verbrauchsvergleich";

	// **************************************************************************************
	// *** subtitle *** siehe http://www.highcharts.com/ref/#subtitle
	// **************************************************************************************
	// $CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%" // Sub-Überschrift. Wenn nichts angegeben wird wird dieser String als Default verwendet
	//		-> veraltet: 'SubTitle' -> verwende ['subtitle']['text']
	// $CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i"	// z.B.: "(D) d.m.Y H:i" (wird auch als Default herangezogen wenn nichts konfiguriert wurde)
	//		-> veraltet: 'SubTitleDateTimeFormat' -> verwende ['subtitle']['Ips']['DateTimeFormat']
	//    -> entfallen: 'SubTitleFormat' ->unnötiger Paramter, wird jetzt in ['subtitle']['text'] angegeben

	$CfgDaten['subtitle']['text'] = "Zeitraum: %STARTTIME% - %ENDTIME%";
	$CfgDaten['subtitle']['Ips']['DateTimeFormat'] = "(D) d.m.Y H:i";

	// **************************************************************************************
	// *** tooltip *** http://www.highcharts.com/ref/#tooltip
	// **************************************************************************************
	//$CfgDaten['tooltip']['enabled'] = false;

	// **************************************************************************************
	// *** exporting *** http://www.highcharts.com/ref/#exporting
	// **************************************************************************************
	//$CfgDaten['exporting']['enabled'] = true;

	// **************************************************************************************
	// *** lang *** http://www.highcharts.com/ref/#lang
	// **************************************************************************************
	//$CfgDaten['lang']['resetZoom'] = "Zoom zurücksetzten";

	// **************************************************************************************
	// *** legend *** http://www.highcharts.com/ref/#legend
	// **************************************************************************************
	//$CfgDaten['legend']['backgroundColor'] = '#FCFFC5';

	// **************************************************************************************
	// *** xAxis *** http://www.highcharts.com/ref/#xAxis
	// **************************************************************************************
	//$CfgDaten['xAxis']['lineColor'] = '#FF0000';
	//$CfgDaten['xAxis']['plotBands'][] = array("color"=>'#FCFFC5',"from"=> "@Date.UTC(2012, 3, 29)@","to"=> "@Date.UTC(2012, 3, 30)@");

	// **************************************************************************************
	// *** yAxis *** http://www.highcharts.com/ref/#yAxis
	// **************************************************************************************
	// $CfgDaten['yAxis'][0]['title']['text'] = "Temperaturen"; // Bezeichnung der Achse
	//		-> veraltet: 'Name' und 'TitleText' -> verwende ['title']['text']
	// $CfgDaten['yAxis'][0]['Unit'] = "°C";	// Einheit für die Beschriftung die Skalenwerte
	//	$CfgDaten['yAxis'][0]['min'] = 0; // Achse beginnt bei Min (wenn nichts angegeben wird wird der Min der Achse automatisch eingestellt)
	//	$CfgDaten['yAxis'][0]['max'] = 40; // Achse geht bis Max (wenn nichts angegeben wird wird der Max der Achse automatisch eingestellt)
	//		-> veraltet: 'Min' und 'Max'
	//	$CfgDaten['yAxis'][0]['opposite'] = false; // Achse wird auf der rechten (true) oder linken Seite (false) des Charts angezeigt (default = false)
	//		-> veraltet: 'Opposite'
	//	$CfgDaten['yAxis'][0]['tickInterval'] = 5; // Skalenwerte alle x (TickInterval)
	//		-> veraltet: 'TickInterval'
	//    -> entfallen: 'PlotBands' -> verwende ['yAxis'][0]['plotBands'],  (siehe Beispiel 'cfg - drehgriff und tf-kontakt')
	//    -> entfallen: 'YAxisColor' -> verwende ['yAxis'][0]['title']['style']
	//    -> entfallen: 'TitleStyle'-> verwende ['yAxis'][0]['title']['style']

	$CfgDaten['xAxis'][1]['title']['text'] = "Titel";
//	$CfgDaten['xAxis'][1]['categories'] = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];
	// $CfgDaten['xAxis'][1]['opposite'] = true;
	$CfgDaten['xAxis'][1]['tickInterval'] = 1;


	$CfgDaten['yAxis'][0]['title']['text'] = "Temperatur";
	$CfgDaten['yAxis'][0]['Unit'] = "°C";
	$CfgDaten['yAxis'][0]['opposite'] = false;
	$CfgDaten['yAxis'][0]['tickInterval'] = 5;
//	$CfgDaten['yAxis'][0]['min'] = 0;
//	$CfgDaten['yAxis'][0]['max'] = 40;


	$CfgDaten['yAxis'][1]['title']['text'] = "Verbrauch";
	//$CfgDaten['yAxis'][1]['Unit'] = "kWh";
	$CfgDaten['yAxis'][1]['opposite'] = true;


	// **************************************************************************************
	// *** series *** http://www.highcharts.com/ref/#series
	// **************************************************************************************
	// $CfgDaten['name'] = "Temperatur; // Name der Kurve (Anzeige in Legende und Tooltip)
	//		-> veraltet: 'Name' -> verwende ['name']
	// $CfgDaten['Unit'] = "°C"; // Anzeige in automatisch erzeugtem Tooltip
	// 	wenn $CfgDaten['Unit'] = NULL; // oder Unit wird gar nicht definiert, wird versucht die Einheit aus dem Variablenprofil automatisch auszulesen
	// $CfgDaten['ReplaceValues'] = false; // Werte werden wie geloggt übernommen
	// $CfgDaten['ReplaceValues'] = array(0=>0.2,1=>10) // der Wert 0 wird in 0.2 geändert, der Wert 1 wird in 10 geändert
	//   	das macht für die Darstellung von Boolean Werte Sinn, oder für Drehgriffkontakte (Werte 0,1,2)
	// $CfgDaten['type'] = 'spline'; // Festlegung des Kuventypes (area, areaspline, line, spline, pie, Column)
	// $CfgDaten['yAxis'] = 0; // Nummer welche Y-Achse verwendet werden soll (ab 0)
	// 	-> veraltet: 'Param' -> verwende die Highcharts Parameter - sollte eigentlich noch so funktionieren wie in IPS-Highcharts V1.x
	// $CfgDaten['AggType'] = 0 // Festlegung wie die Werte gelesen werden soll (0=Hour, 1=Day, 2=Week, 3=Month, 4=Year), hat Vorrang gegenüber den Einstellungen in AggregatedValues
	//    wird kein AggType definiert werden alle gelogten Werte angezeigt
	// $CfgDaten['AggNameFormat'] = "d.m.Y H:i"; // (gilt nur bei den Pies, wenn eine Id verwendet wird), entspricht dem PHP-date("xxx") Format, welches das Format der Pie Namen festlegt, wenn keine Eingabe werden Default Werte genommen
	// $CfgDaten['Offset'] = 24*60*60; hiermit können Kurven unterschiedlicher Zeiträume in einem Chart dargestellt. Angabe ist in Minuten
	//	$CfgDaten['StartTime'] = mktime(0,0,0,1,1,2012); 	// wird für die entsprechende Serie eine Anfangs- und/oder Endzeitpunkt festgelegt wird dieser verwendet. Ansonsten wird
	// CfgDaten['EndTime'] = mktime(0,0,0,2,1,2012);  		// der Zeitpunkt der Zeitpunkt aus den $CfgDaten genommen
	// CfgDaten['ScaleFactor'] = 10; // Skalierungsfaktor mit welchem der ausgelesene Werte multipliziert wird
	// CfgDaten['RoundValue'] = 1; // Anzahl der Nachkommastellen
	//	CfgDaten['AggValue'] ='Min' // über AggValue kann Min/Max oder Avg vorgewählt werden (Default bei keiner Angabe ist Avg)
	//		ist sinnvoll wenn nicht Einzelwerte sondern Stundenwerte, Tageswerte, usw. ausgelesen werden
	// CfgDaten['data'] = array('TimeStamp'=> time(),'Value'=12) // hier kann ein Array an eigenen Datenpunkten übergeben werden. In diesem Fall werden für diese Serie keine Daten aus der Variable gelesenen.

	$serie = array();
	$serie['name'] = "Gas";
	$serie['Id'] = 50735 /*[System\Hardware\1-Wire\Data\Gaszähler]*/;
	$serie['Unit'] = "m³";
	$serie['ReplaceValues'] = false;
	$serie['type'] = "column";
	// $serie['step'] = true;
	$serie['yAxis'] = 1;
	// $serie['xAxis'] = 1;
	$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;
	$serie['RoundValue'] = 2;
	$CfgDaten['series'][] = $serie;

	// Gas Vorjahr
	$serie = array();
	$serie['name'] = "Gas Vorjahr";
	$serie['Id'] = 50735 /*[System\Hardware\1-Wire\Data\Gaszähler]*/;
	$serie['Unit'] = "m³";
	$serie['ReplaceValues'] = false;
	$serie['type'] = "column";
	// $serie['step'] = true;
	$serie['yAxis'] = 1;
	// $serie['xAxis'] = 1;
	$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;
    $serie['dashStyle '] = 'ShortDot';
	$serie['RoundValue'] = 2;
    $serie['StartTime'] = $tStart3;
    $serie['EndTime'] = $tEnd3;
    $serie['Offset'] = $offset3;
	$CfgDaten['series'][] = $serie;


	$serie = array();
	$serie['name'] = "Aussentemperatur";
	$serie['Id'] = 37958 /*[System\Hardware\eBus\Data\B504\Außentemperatur]*/;
	$serie['Unit'] = "°C";
	$serie['ReplaceValues'] = false;
	$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;
	$serie['RoundValue'] = 1;
	$CfgDaten['series'][] = $serie;

    // Aussentemp - Vorjahr
    $serie = array();
    $serie['Id'] = 41476 /*[System\Software\Wetter\Aktuell\Aktuell\Außentemperatur]*/;
    $serie['name'] = "Vorjahr";
    $serie['Unit'] = NULL;  // Einheit automatisch aus Variablenprofil
    $serie['AggType'] = 0;  // Stundenwerte
    $serie['ReplaceValues'] = false;
    $serie['RoundValue'] = 2;
    $serie['type'] = 'spline';
    $serie['step'] = false;
    $serie['yAxis'] = 0;
    $serie['shadow'] = true;
    $serie['lineWidth'] = 2;
    $serie['dashStyle '] = 'ShortDot';
    $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;
    $serie['StartTime'] = $tStart3;
    $serie['EndTime'] = $tEnd3;
    $serie['Offset'] = $offset3;
	 $serie['RoundValue'] = 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'] = 450; 		// 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
		}
	}



?>

Danke & Gruß, Axel