HighchartsPHP

Ich brauche mal ein wenig Hilfe,

ich glaub ich hab nen Denkfehler in meinem Ansatz zum Thema Zeit-Offset (Vergleich von zwei zeitverschobenen Diagrammen in einem Chart (Aktuell <> Vorjahr)):

Ausgehend vom Beispiel-Chart von RS ab ich folgendes probiert (aber irgendwie erfolglos):

Als Darstellungszeitraum wie um Orginal-Beispiel dient der heutige Tag.

// Zeitraum
$ts		= mktime(0,0,0, date("m"), date("d"), date("Y"));   // den ganzen heutigen Tag
$te         	= mktime(23,59,59, date("m"), date("d"), date("Y"));

Dann ein ersten Datensatz die Entsprechenden Daten aus dem Archiv auslesen und der Daten-Serien 1 zu ordnen.

######### Chart Series ################################################################
$S_ID                                                 	= 0;                 // Series-ID
$RoundedValue                                      = 1;
$chart->series[$S_ID]->name			= "Heute";
$chart->series[$S_ID]->data 			= IPS_Array_to_HCData($RoundedValue, array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $IPS_Strom_VarID, 0, $ts, $te, 100)));
$chart->series[$S_ID]->type 			= "column";

Für das Vergleichsjahr entsprechend „te und ts minus ein Jahr“ aus dem Archiv auslesen, aber vor dem Eintragen in die HC-Daten-Serie den Timestamp wieder um den zuvor verschoben Wert wieder in die Zukunft holen.


...
     // Array vor "$offset" Sekunden (hier ein Jahr) in die in die "Gegenwart" verschieben
     $offset=31536000;
     $a=array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $IPS_Strom_VarID, 0, $ts-offset, $te-$offset, 100));
      for ($i=0;$i<count($a);$i++)
        {
           $a[$i]['TimeStamp']=$a[$i]['TimeStamp']+31536000; // abgezogene zeit nach Bestimmung der werte zur Visualisierung wieder aufaddieren (damit sie auf selber x-Achse darstellbar sind)
          }
        $a=IPS_Array_to_HCData($RoundedValue, $a);

	$S_ID++;                                                                 // Series-ID
	$RoundedValue                                       = 1;
	$chart->series[$S_ID]->name			= "Vorjahr";
	$chart->series[$S_ID]->data 			= $a;
	$chart->series[$S_ID]->type 			= "column";
....

Klappt aber scheinbar nicht:

Steigt da jemand von euch durch meine Gedanken/script durch? Hab ich da nen grundsätzlichen Denkfehler? Kann mir jemand helfen?

Danke
hardlog

Hallo zusammen,

@hardlog: ich bin mir nicht sicher ob die Timestamps irgend wo in der HighCharts PHP mit 1000 multipliziert werden. Glaube das mal beim überfliegen gelesen zu haben. Wenn ich falsch liege, multiplizier mal Deinen Timestamp noch mit 1000.

Ich versuch schon seit geraumer Zeit in den HighCharts PHP V.RS ColumnRanges angezeigt zu bekommen. Leider bisher nicht mit dem gewünschten Erfolg. Mittlerweile bin ich so weit, dass ich alles so angezeigt bekomme wie ich es will, nur eben ohne Balken. X-Achse, Y-Achse, sogar die Tooltipps mit den RICHTIGEN Werten sind da.

Anbei das Script. Ist noch viel vom Testen auskommentiert. Und ein Screenshot mit den Tooltipps.

Hoffe, dass mir irgend jemand helfen kann auch diese letzte Hürde zu nehmen.

Danke im voraus.

<?
 ##### Project Exporter Comment: Script Version Stand 28.04.2014 21:26 #####

################## IPS-Konfig ##############################################################

   // HighCharts PHP includen
    include                                                                          "12413.ips.php";

    // Zeitraum
    $ts                                                                = mktime(0,0,0, date("m"), date("d"), date("Y"));
    $te                                                                = mktime(23,59,59, date("m"), date("d"), date("Y"));
    $ts_yet                                                                  = date("(D) d.m.Y H:i", $ts);
    $te_yet                                                                  = date("(D) d.m.Y H:i", $te);
    $Filename                                                              = $_IPS['SELF'].".hc.php";
    $Path                                                                  = "user/RS_HighCharts/tmp/";
    $HC_Content_ID                                           = 42402 /*[Test\HighChartsPHP\RS HC PHP Spielwiese\Beispiele\RS_HC Beispiel:  BoxPlot\RS HC Beispiel: BoxPlot]*/ ;

    // AC-Handler definieren
   define("AC_HANDLER_ID", IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);

################## HC-Konfig ###############################################################
$chart = new Highchart();
$chart->includeExtraScripts();

$chart->chart = array(
    'renderTo' => 'container',
    'type' => 'boxplot'
);
$chart->title->text = 'Highcharts Box Plot Example';
$chart->legend->enabled = false;
$chart->xAxis->gridLineWidth                               = 0;
$chart->xAxis = array(
    'categories' => array('1', '2', '3', '4', '5'),
    'title' => array(
        'text' => 'Experiment No.'
    )
);
$chart->yAxis->gridLineWidth                               = 0;
$chart->yAxis->title->text = 'Observations';
$chart->yAxis->plotLines[0]->value = 932;
$chart->yAxis->plotLines[0]->color = 'red';
$chart->yAxis->plotLines[0]->width = 1;
$chart->yAxis->plotLines[0]->label->text = 'Theoretical mean: 932';
$chart->yAxis->plotLines[0]->label->align = 'center';
$chart->yAxis->plotLines[0]->label->style->color = 'gray';

$chart->series[] = array(
    'name' => 'Observations',
    'data' => array(
        array(760, 801, 848, 895, 965),
        array(733, 853, 939, 980, 1080),
        array(714, 762, 817, 870, 918),
        array(724, 802, 806, 871, 950),
        array(834, 836, 864, 882, 910),
    ),
    'tooltip' => array(
        'headerFormat' => '<em>Experiment No {point.key}</em><br/>'
    )
);
$chart->series[] = array(
    'name' => 'Outlier',
    'color' => new HighchartJsExpr('Highcharts.getOptions().colors[0]'),
    'type' => 'scatter',
    'data' => array(
        array(0, 644),
        array(4, 718),
        array(4, 718),
        array(4, 969)
    ),
    'marker' => array(
        'fillColor' => 'rgba(255,255,255, 0.5)',
        'lineWidth' => 1,
        'lineColor' => new HighchartJsExpr('Highcharts.getOptions().colors[0]')
    ),
    'tooltip' => array(
        'pointFormat' => 'Observation: {point.y}'
    )
);

    // Chart Config II
    $chart->chart->backgroundColor                                     = "rgba(255,255,255, 0.0)";
    $chart->chart->plotBorderWidth                            = 1;
    $chart->chart->plotBorderColor                            = "rgba(255,255,255, 0.5)";
    $chart->chart->marginBottom                                         = 70;
    $chart->chart->height                                                 = 310;

################################ Ausgabe ##############################################################
// HC-Content in String umformen (für Einbau in HTML-Content)
    $HC_Option                                                             = '';//Highchart::setOptions($option);
    $HC_Chart                                                                 = $chart->render("chart");

// Pfadangaben für .js-Scripte (jquery, Highcharts). Die .js-Scripte sollten nur dann geladen werden, wenn sie wirklich im Chart benötigt werden (Performance im WFE!)
    $js_Scripts[]                                                           = '/user/RS_HighCharts/jquery/2.1.0/jquery.js';
    $js_Scripts[]                                                           = '/user/RS_HighCharts/js/highcharts.js';
    $js_Scripts[]                                                          = '/user/RS_HighCharts/js/highcharts-more.js';
//    $js_Scripts[]                                                           = '';

// HTML-Content in Variable schreiben
    $Content                                                               = HTML_Content($js_Scripts, $HC_Chart, $HC_Option);
    setValue($HC_Content_ID ,  '<iframe src="./'.$Path.$Filename.'" width="100%" height="300" name="HighChart" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">');
    write_content($Path, $Filename, $Content);

################################ Functions #############################################################
// Function write_content, schreibt das fertige HC als ID.hc.php auf die Platte
function write_content($Path, $Filename, $Content)
{
    $Path       = IPS_GetKernelDir()."webfront/".$Path;

    // Ordner anlegen, wenn nicht vorhanden
    if (!is_dir($Path))
        mkdir ($Path  , 0777, true);

    // File schreiben
    $handle = fopen($Path.$Filename,"w");
    fwrite($handle, utf8_encode($Content));
    fclose($handle);
}

// Function IPS_Array_to_HCData, wandelt ein Datenarray in Array mit Wertepaaren [Timestamp, Value] um
function IPS_Array_to_HCData($RoundValue, $Array)
{
    $result        = array();
    foreach($Array as $key=>$rs)
    {

       $result[$key][]   = $rs['TimeStamp']*1000;                                 // Timestamp für JS (*1000)
       if(isset($rs['Value']))
            $result[$key][]   = round($rs['Value'], $RoundValue);
        if(isset($rs['Avg']))
           $result[$key][]   = round($rs['Avg'], $RoundValue);
    }
    $result1    = array_values($result);

    return $result1;
}

// Function HTML_Content, erzeugt aus Eingabedaten einen vollständigen HTML/PHP-String für HC-File
function HTML_Content($js_Scripts, $HC_Content, $HC_Option)
{

    // 1. Teil
    $s = '<html>
    <head>
    <title>RS Energy Forecast</title>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <!-- 2. Add the JavaScript to initialize the chart on document ready -->';

    //  js-Scripte
    foreach($js_Scripts as $key=>$rs)
    {
      $s = $s.'
        <script type="text/javascript" src="'.$rs.'"></script>';
    }

    // 2. Teil
    $s = $s.'
        <script type="text/javascript">

            $(document).ready(function() {
               '.$HC_Option.'
                '.$HC_Content.'
            });
        </script>
    </head>
    <body></body>
</html>';

return $s;
}

?>

Diese, sorry, Scheiss Anhänge. Wie krieg ich die in klein/Vorschau hin. Manchmal gehts manchmal nicht. ???

Hallo zusammen,

ich häng immer noch an der Darstellung von columnranges. Hat das schon mal jemand mit der RS Version hinbekommen? Beispielscript?

Danke im voraus,

also mit boxplot (5 Daten pro Datensatz) hab ich hinbekommen. Die technisch sollte das doch das selbe sein nur eben mit nur 2 Daten pro datensatz. Oder?

Hallo,

wie kann ich erreichen, dass die Aggregationsstufe entsprechend des ausgewählten Zeitraumes geändert wird.
Verzweifle schon langsam:

<?
 ##### Project Exporter Comment: Script Version Stand 05.05.2014 18:10 #####


################## User-Konfig #############################################################
	// ID der IPS Quellvariable angeben:
	$IPS_Var01_ID                                       		= 23291 /*[Hardware\Homematic\Sensoren\Aussen Sensor\TEMPERATURE]*/ ;
	$HC3d = GetValue(10125 /*[Scripte\HighchartsPHP\Test wgreipl\3d]*/);

################## IPS-Konfig ##############################################################

   // HighCharts PHP includen
	include							  									  	  "20023.ips.php";

	$back = 0;
	$front = 10;
	$round_value = 1;
	$pixel_width = 17;
	$data_labels = true;
	if($HC3d) {
	   $label = false;
	   $border = 0;
	} else {
	   $label = true;
	   $border = 1;
	}

	// Zeitraum

//	$ts                        										= mktime(0,0,0, date("m")-1, date("d"), date("Y")-1);
//	$te                        										= mktime(23,59,59, date("m"), date("d"), date("Y"));


	$ts 																		= mktime(0,0,0,  date("m")-1, date("d",time())-1, date("Y",time())-1);
	$te 																		= mktime(23,59,59,  date("m"), date("d",time()), date("Y",time()));
	$ts_yet  																= date("(D) d.m.Y H:i", $ts);
	$te_yet  																= date("(D) d.m.Y H:i", $te);
	$Filename      														= $_IPS['SELF'].".hc.php";
	$Path          														= "user/RS_HighCharts/tmp/";
	$HC_Content_ID                                           = 50140 /*[Scripte\HighchartsPHP\Test jni	est1	est1]*/ ;
	$Chart_Height                                            = 500;

	// AC-Handler definieren
   define("AC_HANDLER_ID", IPS_GetInstanceListByModuleID('{43192F0B-135B-4CE7-A0A7-1475603F3060}')[0]);

################## HC-Konfig ###############################################################
   $chart 																	= new Highchart(Highchart::HIGHSTOCK);

	// Chart-Titel
	$chart->title->text			 										= "Temperaturverlauf 1 Jahr ";
	$chart->title->style->color			 							= 'rgba(255,255,255, 1.0)';
	$chart->title->style->fontSize			 						= '16px';
	$chart->subtitle->text			 									= 'Zeitraum: '.$ts_yet.' - '.$te_yet;
	$chart->subtitle->style->color			 						= 'rgba(255,255,255, 0.7)';

	// Chart Config I
	$chart->chart->type 													= "area"; //"ohlc"
	$chart->chart->options3d->enabled                        = $HC3d;
	$chart->chart->options3d->alpha	                        = 15;
	$chart->chart->options3d->beta	                        = 15;
	$chart->chart->options3d->depth 		                     = 100;
	$chart->chart->options3d->viewDistance                   = 60;

################### Chart Series ##################################################################################################
	$S_ID                                                 	= 0;                 // Series-ID
	// Temperatur
	$RoundedValue                                            = 1;
	$chart->series[$S_ID]->name										= "Temperatur";
	$chart->series[$S_ID]->data 										= IPS_Array_to_HCData($RoundedValue, array_reverse(AC_GetAggregatedValues(AC_HANDLER_ID, $IPS_Var01_ID, 1, $ts, $te, 1500)));
	$chart->series[$S_ID]->zIndex 									= 10;
	$chart->series[$S_ID]->type 										= "spline";
	$chart->series[$S_ID]->step 										= true;
	$chart->series[$S_ID]->yAxis 										= 0;
	$chart->series[$S_ID]->visible 									= true;
	$chart->series[$S_ID]->showInLegend 							= true;
	$chart->series[$S_ID]->enableMouseTracking 					= true;
	$chart->series[$S_ID]->color 										= '#FF7B00';
	$chart->series[$S_ID]->shadow 									= true;
	$chart->series[$S_ID]->marker->enabled 						= false;


	// Achsen-Definitionen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
	// y-Axis

	// y-Axis 0
	$yAxID                                                	= 0;
	$chart->yAxis[$yAxID]->title->text 								= "Temperatur (°C)";
	$chart->yAxis[$yAxID]->title->style->color 					= 'rgba(255,255,255, 0.8)';
   $chart->yAxis[$yAxID]->unit 										= NULL;
	$chart->yAxis[$yAxID]->opposite 									= true;
	$chart->yAxis[$yAxID]->allowDecimals 							= true;
	$chart->yAxis[$yAxID]->min 										= NULL;
	$chart->yAxis[$yAxID]->tickInterval 							= NULL;
	$chart->yAxis[$yAxID]->max 										= NULL;
	$chart->yAxis[$yAxID]->gridLineWidth                  	= 1;
	$chart->yAxis[$yAxID]->gridLineColor                  	= 'rgba(255,255,255, 0.1)';
	$chart->yAxis[$yAxID]->labels->x									= -5;
	$chart->yAxis[$yAxID]->labels->style->color 					= 'rgba(255,255,255, 0.8)';

	// x-Axis
	$chart->xAxis->type                                		= 'datetime';
	$chart->xAxis->labels->style->color                      = 'rgba(255,255,255, 0.6)';
	$chart->xAxis->gridLineWidth                       		= 1;
	$chart->xAxis->gridLineColor                       		= 'rgba(255,255,255, 0.1)';

	// Legend
	$chart->legend->enabled                           			= false;
	$chart->legend->align                           			= 'center';
	$chart->legend->verticalAlign                            = 'top';
	$chart->legend->float                           			= true;
	$chart->legend->x                           					= -40;
	$chart->legend->y                           					= 50;
	$chart->legend->backgroundColor                    		= 'rgba(255,255,255, 0.1)';
	$chart->legend->itemStyle->color                  			= 'rgba(255,255,255, 0.8)';
	$chart->legend->itemStyle->fontWeight                  	= 'normal';
	$chart->legend->itemHiddenStyle->color                	= 'rgba(255,255,255, 0.3)';
	$chart->legend->itemHoverStyle->color                  	= 'rgba(255,255,255, 1.0)';

	// Chart-Config "Credits" by RS
	$chart->credits->enabled                           		= true;
   $chart->credits->href                           			= '';
	$chart->credits->text                           			= '';
	$chart->credits->position->align                  			= "right";
	$chart->credits->position->x                  				= -10;
	$chart->credits->position->verticalAlign           		= 'top';
	$chart->credits->position->y                  				= 15;

	// Range Selector
	$chart->rangeSelector->selected									= 0;
	$chart->rangeSelector->inputEnabled								= true; // ori false
	$chart->rangeSelector->buttonTheme->fill 						= 'rgba(255,255,255, 0.2)';
	$chart->rangeSelector->buttonTheme->stroke 					= 'none';
	$chart->rangeSelector->buttonTheme->r 							= 0;
	$chart->rangeSelector->buttonTheme->style->color 			= 'rgba(255,255,255, 0.6)';
	$chart->rangeSelector->buttonTheme->states->hover->fill	= 'rgba(255,255,255, 0.2)';
	$chart->rangeSelector->buttonTheme->states->hover->style->color = 'rgba(255,255,255, 1.0)';
	$chart->rangeSelector->buttonTheme->states->hover->style->fontWeight = 'bold';
	$chart->rangeSelector->buttonTheme->states->select->fill	= 'rgba(255,255,255, 0.5)';
	$chart->rangeSelector->buttonTheme->states->select->style->color = 'rgba(0,0,0, 1.0)';
	$chart->rangeSelector->buttonTheme->states->select->style->fontWeight = 'normal';


	$btn_ID                                                  = 0;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'day';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 1;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '1T';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'day';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 3;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '3T';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'day';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 7;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '7T';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'month';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 1;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '1M';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'month';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 3;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '3M';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'month';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 6;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '6M';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'ytd';
	$chart->rangeSelector->buttons[$btn_ID]->text				= 'YtD';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'year';
	$chart->rangeSelector->buttons[$btn_ID]->count				= 1;
	$chart->rangeSelector->buttons[$btn_ID]->text				= '1J';
	$btn_ID++;
	$chart->rangeSelector->buttons[$btn_ID]->type				= 'all';
	$chart->rangeSelector->buttons[$btn_ID]->text				= 'All';


	// exporting
	$chart->exporting->enabled 										= true; //false
	$chart->navigation->enabled 										= true; //false

	// Tooltip
   $chart->tooltip->useHTML                           		= true;
   $chart->tooltip->backgroundColor                         = 'rgba(0,0,0, 0.7)';
   $chart->tooltip->shared                           			= true;
   $chart->tooltip->crosshairs[0]                     		= false;
   $chart->tooltip->crosshairs[1]                     		= array('width' =>1,'color' =>'grey','dashStyle'=>'longdash' );
   $chart->tooltip->style->color                      		= 'rgba(255,255,255, 0.9)';
   $chart->tooltip->style->fontSize                   		= '10px';
   $chart->tooltip->style->padding                  			= '18px';
//	$chart->tooltip->formatter 										= new HighchartJsExpr(formatter_String());
	$chart->tooltip->headerFormat                            = '{point.key}<table width="150px">';
	$chart->tooltip->pointFormat	                           = '<tr><td style="font-size: 12px; color: {series.color}">{series.name}: </td><td style="font-size: 12px; text-align: right; color: {series.color}"><b>{point.y}</td></tr>';
	$chart->tooltip->footerFormat                            = '</table>';
	$chart->tooltip->valueDecimals                           = 3;

	// Navigator
	$chart->navigator->adaptToUpdatedData 							= true;
	$chart->navigator->baseSeries 									= 0;
	$chart->navigator->enabled 										= true;
	$chart->navigator->height 											= 55;
	$chart->navigator->margin 											= 10;
	$chart->navigator->maskFill 										= 'rgba(255,255,255, 0.1)';
	$chart->navigator->maskInside 									= false;
	$chart->navigator->outlineColor 									= 'rgba(255,255,255, 0.3)';
	$chart->navigator->outlineWidth 									= 1;
	$chart->navigator->series->color 								= 'rgba(255,255,255, 0.4)';
	$chart->navigator->series->lineColor 							= '#FF7B00';

	// Scrollbar
	$chart->scrollbar->enabled                               = true;
	$chart->scrollbar->barBackgroundColor 							= 'rgba(255,255,255, 0.3)';
	$chart->scrollbar->barBorderColor 								= 'rgba(255,255,255, 0.7)';
	$chart->scrollbar->barBorderRadius 								= 0;
	$chart->scrollbar->barBorderWidth 								= 1;
	$chart->scrollbar->buttonArrowColor 							= 'rgba(0,0,0, 0.9)';
	$chart->scrollbar->buttonBackgroundColor 						= 'rgba(255,255,255, 0.5)';
	$chart->scrollbar->buttonBorderColor 							= 'rgba(255,255,255, 0.7)';
	$chart->scrollbar->buttonBorderRadius 							= 0;
	$chart->scrollbar->buttonBorderWidth 							= 1;
	$chart->scrollbar->enabled 										= true;
	$chart->scrollbar->height 											= 12;
	$chart->scrollbar->minWidth 										= 6;
	$chart->scrollbar->rifleColor 									= 'rgba(0,0,0, 0.9)';
	$chart->scrollbar->trackBackgroundColor 						= 'rgba(255,255,255, 0.5)';
	$chart->scrollbar->trackBorderColor 							= 'rgba(255,255,255, 0.7)';
	$chart->scrollbar->trackBorderRadius 							= 0;
	$chart->scrollbar->trackBorderWidth 							= 1;


	// Chart Config II
	$chart->chart->renderTo 											= "container";
	$chart->chart->backgroundColor 									= "rgba(255,255,255, 0.0)";
	$chart->chart->plotBorderWidth                        	= 1;
	$chart->chart->plotBorderColor                        	= "rgba(255,255,255, 0.5)";
//	$chart->chart->marginTop 											= 120;
//	$chart->chart->marginBottom 										= 120;
	$chart->chart->height 												= $Chart_Height;
	$chart->chart->zoomType		 										= 'x';


// HC-Options (global, lang)
   $option 																	= new HighchartOption();
	$option->global->useUTC 											= false;
   $option->lang->decimalPoint 										= ',';
   $option->lang->thousandsSep										= ".";
   $option->lang->months 												= array('Januar', 'Februar','Mrz', 'April','Mai', 'Juni','Juli', 'August','September', 'Oktber','November', 'Dezember');
   $option->lang->shortMonths 										= array('Jan', 'Feb','Mrz', 'Apr','Mai', 'Jun','Jul', 'Aug','Sep', 'Okt','Nov', 'Dez');
   $option->lang->weekdays 											= array('Sonntag', 'Montag', 'Dienstag','Mittwoch', 'Donnerstag','Freitag', 'Samstag');

################################ Ausgabe ##############################################################
// HC-Content in String umformen (für Einbau in HTML-Content)
	$HC_Option     														= Highchart::setOptions($option);
	$HC_Chart 																= $chart->render("chart");

// Pfadangaben für .js-Scripte (jquery, Highcharts). Die .js-Scripte sollten nur dann geladen werden, wenn sie wirklich im Chart benötigt werden (Performance im WFE!)
	$js_Scripts[]   														= '/user/RS_HighCharts/jquery/2.1.0/jquery.min.js';
	$js_Scripts[]       													= '/user/RS_HighCharts/js/highstock.js';
//	$js_Scripts[]  														= '/user/RS_HighCharts/js/highcharts-more.js';
	$js_Scripts[]	   													= '/user/RS_HighCharts/js/highcharts-3d.js';

// HTML-Content in Variable schreiben
	$Content       														= HTML_Content($js_Scripts, $HC_Chart, $HC_Option);
	setValue($HC_Content_ID ,  '<iframe src="./'.$Path.$Filename.'" width="100%" height="'.$Chart_Height.'" name="HighChart" scrolling="no" marginheight="0" marginwidth="0" frameborder="0">');
	write_content($Path, $Filename, $Content);

################################ Functions #############################################################

function formatter_String()
{
global $WeekDay;
$s =
"function()
{
	var s = '';
	s += '<table cellspacing=\"0\" cellpadding=\"0\" width=\"150px\" style=\" font-size:10px; color:rgba(255,255,255, 0.9);\">';
	s += '<tr><td style=\"width:155px;\"> </td><td style=\"width:80px;\"> </td></tr>';
	$.each(this.points, function(i, p){
	   if (p.series.type == 'ohlc')
	   {
	       s += '<tr><td colspan=\"2\"></td><b>Temperaturen am ' + Highcharts.dateFormat('%d.%B', this.x) + '</b></span></td></tr>' +
	              '<tr><td>Beginn:</td><td>' + p.point.open + ' °C' + '</span></td></tr>' +
	              '<tr><td>Max:</td><td>' + p.point.high + ' °C' + '</span></td></tr>' +
	              '<tr><td>Min:</td><td>' + p.point.low + ' °C' + '</span></td></tr>' +
	              '<tr><td>Ende:</td><td>' + p.point.close + ' °C' + '</span></td></tr>';
	   }
	});
	s += '</table>';
	return s;
}";

return $s;
}

?>

Hallo Leute,

Ich habe versucht von der Spielwiese das HS OHLC Skript anzupassen … komme aber nicht weiter.
Könnte man so eine Darstellung auch mit dem RS Spielwiese Skript in Highstocks basteln? Wo kommt z.B. die Funktion

IPS_Array_to_HSData_OHLC

her? Wie kann ich Boolvariablen im HS darstellen?

<?
	// bei der Konfiguration unbedingt auf die Groß/Kleinschreibung achten
/*
$actID 	= 46168 [Objekt #46168 existiert nicht];
$rangeID = 17902 [Objekt #17902 existiert nicht];
$aggID 	= 39463 [Objekt #39463 existiert nicht];

if($_IPS['SENDER'] == "WebFront")
{
  	SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
	if((GetValue($rangeID) == 0) && (GetValue($actID) == 0)) {
	   SetValue($aggID, 1);
	}
}

$false 	= 'inaktiv';
$true 	= 'aktiv';

$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);
*/
$ts = 0;
$te = 1;
$false 	= 'Offline';
$true 	= 'Online';


	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"]	= 42975 /*[Skripte\Highcharts\Highcharts_V2.02.ips]*/;

	// 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"] = "script"; 	// file, script oder popup
	if ($CfgDaten["RunMode"] == "popup")
	{
		$CfgDaten["WebFrontConfigId"] = 25342 /*[WebFront]*/;
		$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'] = "MPD Stauts und Netzwerk";

	// *** 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'] 													= 51204 /*[Multiroom\Wohnzimmer\MPD-Server\MPD Control]*/;
	$serie['Name'] 												= "MPD Control";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(0=>'Prev',3=>'Play', 2=>'Pause',1=>'Stop',4=>'Next');
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#FF7F00";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(0=>0, 3=>1, 2=>2, 1=>3, 4=>4);//array(0=>4.0, 1=>5.0, 2=>6.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'] 													= 42366 /*[Technik\Wohnzimmer\Netzwerk\SysPing RasPi Küche]*/;
	$serie['Name'] 												= "RasPi Küche SysPing";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>$false, true=>$true);
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00BFFF";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>5,true=>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'] 													= 28729 /*[Technik\Wohnzimmer\Netzwerk\Netzwerk_Check\RasPi Küche]*/;
	$serie['Name'] 												= "RasPi Küche";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>$false, true=>$true);
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00BFFF";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>7,true=>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'] 													= 39005 /*[Technik\Wohnzimmer\Netzwerk\SysPing NASGOND]*/;
	$serie['Name'] 												= "NAS SysPing";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>$false, true=>$true);
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00FF00";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>9,true=>10);
	$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'] 													= 17957 /*[Technik\Wohnzimmer\Netzwerk\Netzwerk_Check\RasPi Wohnzimmer]*/;
	$serie['Name'] 												= "RasPi XBMC";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>$false, true=>$true);
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00FF00";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>11,true=>12);
	$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'] 													= 32203 /*[Technik\Wohnzimmer\Netzwerk\SysPing HOME - PC - Linux Wlan]*/;
	$serie['Name'] 												= "Home Linux Wlan Edimax";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>$false, true=>$true);
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00BFFF";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>13,true=>14);
	$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'] 													= 21876 /*[Multiroom\Küche\Pulseaudio\Mute]*/;
	$serie['Name'] 												= "MPD - Mute";
	$serie['AggType'] 											= 0;
	$serie['Unit'] 												= array(false=>"UnMute", true=>"Mute");
	$serie['type'] 												= "line";
	$serie['zIndex'] 												= 10;
	$serie['color'] 												= "#00FF00";
	$serie['step'] 												= true;
	$serie['ReplaceValues'] 									= array(false=>15,true=>16);
	$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
	// --------------------------------------------------------------------------
//return;

	$CfgDaten["yAxis"][0]['title']['text'] = "";
	$CfgDaten["yAxis"][0]['Unit'] = "";
	$CfgDaten["yAxis"][0]['opposite'] = false;
	$CfgDaten["yAxis"][0]['tickInterval'] = 1.0;
	$CfgDaten["yAxis"][0]['min'] = 0;
	$CfgDaten["yAxis"][0]['max'] = 16;
	$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 'Prev'; if (this.value == 1) return 'Stop';  if (this.value == 2) return 'Pause';  if (this.value == 3) return 'Play';  if (this.value == 4) return 'Next';
																						if (this.value == 5) return '$false'; if (this.value == 6) return '$true';
																						if (this.value == 7) return '$false'; if (this.value == 8) return '$true';
																						if (this.value == 9) return '$false'; if (this.value == 10) return '$true';
																						if (this.value == 11) return '$false'; if (this.value == 12) return '$true';
																						if (this.value == 13) return '$false'; if (this.value == 14) return '$true';
																						if (this.value == 15) return 'UnMute'; if (this.value == 16) return 'Mute';
																						
																					}@";

		// PlotBands generieren

	for($sensor=0; $sensor < count($CfgDaten['Series']); $sensor++) {
		$pb['zIndex'] = NULL;
		$pb['from'] 									= $CfgDaten["Series"][$sensor]['ReplaceValues'][0];

		if (@$CfgDaten["Series"][$sensor]['ReplaceValues'][4]) {
			$pb['to'] 										= $CfgDaten["Series"][$sensor]['ReplaceValues'][4];
		}
		else
		{
			$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'] 							= 0;
		$pb['label']['y'] 							= -5;
		$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'] 					= 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 = 'Prev'; if (point.y == 1) unit = 'Stop'; if (point.y == 2) unit = 'Pause'; if (point.y == 3) unit = 'Play'; if (point.y == 4) unit = 'Next';
																									if (point.y == 5) unit = '$false'; if (point.y == 6) unit = '$true';
																									if (point.y == 7) unit = '$false'; if (point.y == 8) unit = '$true';
																									if (point.y == 9) unit = '$false'; if (point.y == 10) unit = '$true';
																									if (point.y == 11) unit = '$false'; if (point.y == 12) unit = '$true';
																									if (point.y == 13) unit = '$false'; if (point.y == 14) unit = '$true';
																									if (point.y == 15) unit = 'UnMute'; if (point.y == 16) unit = 'Mute';
																									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,

ich mache gerade meine ersten Versuche und habe dieselbe Situation mit dieser Fehlermeldung …

Wie hast Du diese gelöst?

BG Johannes

Wenn du mehrere Boolsche Variablen in einem Chart darstellen willst, so mußt du mit dem „Replace Values“ Operator arbeiten.

Damit kannst du die für jede Variable die 0/1 Werte auf beliebige andere Integerwerte mappen.
Wennst das geschickt machts, kriegst sowas wie im verlinkten Screenshot.

gruß
bb

Hiho,

hat schon jemand Probiert das ExportingModule in Verbindung HighchartsPHP zu verwenden ?
Ich würde gerne einmal am Tag den Chart in ein JPG o.ä. zwischenspeichern.

Geht meines Erachtens nicht. Hätte da einmal eine andere Lösung die zickt seit 3.x (HC) ein wenig.

GeTapatalked

Hallo zusammen,

Habs jetzt endlich hinbekommen mit HighchartsPHP Columnranges darzustellen.

Mein bisheriger Fehler war, dass ich den höheren Wert als ersten und den niedrigeren als 2. angegeben hatte.

Wenn mans umdreht gehts einwandfrei.

Hallo zusammen,

hat mit HC-php schon mal jemand Gauges mit laufender Änderung mit IPS-Daten realisiert?

Wenn ja, wäre für ein Beispielscript dankbar.

Danke und

Hallo wolfgang,

Post #36. Viel Erfolg.
Gruß
hoep

Hallo hoep,

danke für den Tipp. Kannte ich schon, wollte eigentlich ein Beispiel mit den Scripten von RS.

Habs trotzem mal versucht umzusetzen. Chart kommt, allerdings bewegen sich die Zeiger nicht nach Variablenänderung. Nur wenn ich das Script neu ausführe, aber dann wird ja neu gerendert. Hat jemand dazu eine Idee?

Ereignis auf das Skript… Timer oder Variablen-änderung.

Gruss,
Peter

Hallo Peter,

genau das meinte ich damit, dass dann komplett neu gerendert wird. In den Beispielen von HC (Highcharts - VU meter) bewegt sich nur der Zeiger.
Ich glaube in dem Beispielscript#36 ist diese Funktion auch ganz unten in der Variable $s (die ist auch ganz oben noch mal deklariert, versteh ich auch nicht) eingebaut, Funktioniert aber nicht.

Hallo Wolfgang,

genau so umgesetzt? Der Chart aktualisiert sich alle Sekunden selbst. Bei mir funktioniert das problemlos.

–schnipp–
function (chart) {
if (!chart.renderer.forExport) {
setInterval(function () {getvalCallback(CallbackFunc) }, 1000);
setInterval(function () {getvalCallback2(CallbackFunc2) }, 1000);
setInterval(function () {getvalCallback3(CallbackFunc3) }, 1000);
}
–schnipp–

Beste Grüße
hoep

„Eigentlich“ habe ich nur die String ~html, die Datenvariablen die Y-axis und die Plotbands angepasst.

 <?php
    if (!isset($_IPS['getHTML'])){
       $idOfContentVariable = 37365 /*[Logisch\System\HardWare\IPS-Server\HC\ServerCPU\ServerCPU]*/ ;  // eine String Variable mit Profil ~HTML
        $scriptId = $_IPS['SELF'];
        $s = "<iframe src='./user/IPS-HighchartsPHP.php?ScriptId=$scriptId' width='100%' height='150' frameborder='0' scrolling='no' ></iframe>";
        SetValueString($idOfContentVariable, $s);
        return;
    }

$varId    = 58822 /*[Logisch\System\HardWare\IPS-Server\IPS-ServerCPU\CPUAVG]*/; //Variable welche angezeigt werden soll
$varId2    = 52329 /*[Logisch\System\HardWare\IPS-Server\IPS-ServerCPU\CPU1]*/;
$varId3    = 56738 /*[Logisch\System\HardWare\IPS-Server\IPS-ServerCPU\CPU2]*/;

require_once "Ghunti/HighchartsPHP/Highchart.php";
require_once "Ghunti/HighchartsPHP/HighchartJsExpr.php";
require_once "Ghunti/HighchartsPHP/HighchartOption.php";
require_once "Ghunti/HighchartsPHP/HighchartOptionRenderer.php";

use Ghunti\HighchartsPHP\Highchart;
use Ghunti\HighchartsPHP\HighchartJsExpr;

$chart = new Highchart();
$chart->includeExtraScripts();
$chart->credits = array (
  'enabled' => false
);
$chart->exporting = array (
  'enabled' => false
);


$chart->chart = array(
    'type' => 'gauge',
    'backgroundColor' => "rgba(255,255,255, 0.0)",
    'plotBorderWidth' => 0,
    'plotBackgroundImage' => null,
    'height' => 200
);
$chart->title->text = '';
$chart->pane = array(
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('15%', '100%'),
        'size' => 300,
        'lineColor' => '#FFFFFF'
    ),
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('50%', '100%'),
        'size' => 300
    ),
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('85%', '100%'),
        'size' => 300
    )
);
$chart->yAxis = array(
    array( // CPU AVG
        'min' => 0, //angepasst
        'max' => 100, //angepasst
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 10, //angepasst
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'step' => 1,
            'style' => array(
                  'color' => 'grey' //angepasst
                ),
        ),
        'plotBands' => array(
            array(
                'from' => 0, //angepasst
                'to' => 25, //angepasst
                'color' => 'green', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 25, //angepasst
                'to' => 50, //angepasst
                'color' => 'yellow', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 50, //angepasst
                'to' => 75, //angepasst
                'color' => 'orange', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 75, //angepasst
                'to' => 100, //angepasst
                'color' => 'red', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 0,
        'title' => array(
            'text' => '<span style="color:grey">CPU AVG</span>', //angepasst
            'y' => -40
        )
    ),
    array( // CPU 1
        'min' =>0, //angepasst
        'max' => 100, //angepasst
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 10, //angepasst
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'style' => array(
                  'color' => 'grey' //angepasst
                ),
        ),
        'plotBands' => array(
            array(
                'from' => 0, //angepasst
                'to' => 25, //angepasst
                'color' => 'green', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 25, //angepasst
                'to' => 50, //angepasst
                'color' => 'yellow', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 50, //angepasst
                'to' => 75, //angepasst
                'color' => 'orange', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 75, //angepasst
                'to' => 100, //angepasst
                'color' => 'red', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 1,
        'title' => array(
            'text' => '<span style="color:grey">CPU 1</span>', //angepasst
            'y' => -40
        )
    ),
    array(
        'min' =>0, //angepasst
        'max' => 100, //angepasst
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 10, //angepasst
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'style' => array(
                  'color' => 'grey' //angepasst
                ),
        ),
        'plotBands' => array(
            array(
                'from' => 0, //angepasst
                'to' => 25, //angepasst
                'color' => 'green', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 25, //angepasst
                'to' => 50, //angepasst
                'color' => 'yellow', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 50, //angepasst
                'to' => 75, //angepasst
                'color' => 'orange', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 75, //angepasst
                'to' => 100, //angepasst
                'color' => 'red', //angepasst
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 2,
        'title' => array(
            'text' => '<span style="color:grey">CPU 2</span>', //angepasst
            'y' => -40
        )
    )
);
$chart->plotOptions->gauge->dataLabels->enabled = true;
$chart->plotOptions->gauge->dial->backgroundColor = 'grey'; //angepasst
$chart->plotOptions->gauge->dial->radius = '100%';
$chart->tooltip->valueSuffix = '';
$chart->tooltip->followPointer = true;
$chart->series = array(
    array(
        'data' => array(GetValue($varId /*CPU Avg*/)),
        'title' => 'CPU', //angepasst
        'name' => 'CPU AVG', //angepasst
        'tooltip' => array(
        'valueSuffix' => ' %' //angepasst
        ),
        'yAxis' => 0
    ),
    array(
        'data' => array(GetValue($varId2 /*CPU 1*/)),
        'name' => 'CPU 1', //angepasst
        'tooltip' => array(
        'valueSuffix' => ' %' //angepasst
        ),
        'yAxis' => 1
    ),
    array(
        'data' => array(GetValue($varId3 /*CPU 2*/)),
        'name' => 'CPU 2', //angepasst
        'tooltip' => array(
        'valueSuffix' => ' %' //angepasst
        ),
        'yAxis' => 2
    )
);
ob_start();
$chart->printScripts();
$hc_scripts = ob_get_contents();
ob_end_clean();

$hc_renderOptions =  $chart->renderOptions();

//echo $hc_renderOptions;
//return;


$s='
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          '.$hc_scripts.'
    </head>
    <body>
        <div id="container"></div>

        <script type="text/javascript" >


            function getvalCallback(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId.'\', function(data) {
                    callback(data);

                });
            }

            function getvalCallback2(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId2.'\', function(data) {
                    callback(data);

                });
            }
            function getvalCallback3(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId3.'\', function(data) {
                    callback(data);

                });
            }
            function CallbackFunc(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[0].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
                point.update(newVal);
            };
            function CallbackFunc2(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[1].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
                point.update(newVal);
            };
            function CallbackFunc3(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[2].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
                point.update(newVal);
            };

                $(\'#container\').highcharts(
                '. $hc_renderOptions . ',
                // Add some life
                function (chart) {
                    if (!chart.renderer.forExport) {
                        setInterval(function () {getvalCallback(CallbackFunc) }, 1000);
                        setInterval(function () {getvalCallback2(CallbackFunc2) }, 1000);
                        setInterval(function () {getvalCallback3(CallbackFunc3) }, 1000);
                    }
                }
            );
        </script>
    </body>
</html>';
echo $s;

?>


Wo sind denn die 3 Sek definiert? Timer? oder irgend wo im Script?

Hallo Wolfgang,

sorry bezügl. der 3 Sekunden hatte ich falsch aus dem Gedächtnis zitiert -> in der Zwischenzeit auch korrigiert, aber du hattest zu schnell geantwortet.
Ich schicke nochmal mein Originalskript, das bei mir problemlos funktioniert. Siehst du die Update-Tasks in der php-task-Anzeige ?
Beste Grüße
hoep

Hallo Wolfgang,

anbei Skript für eine (funktionierende) Anzeige meiner Wettersensoren auf der Startseite.


<?php
    if (!isset($_IPS['getHTML'])){
       $idOfContentVariable = IPS_GetParent($_IPS['SELF']);  // eine String Variable mit Profil ~HTML
        $scriptId = $_IPS['SELF'];
        $s = "<iframe src='./user/IPS-HighchartsPHP.php?ScriptId=$scriptId' width='100%' height='150' frameborder='0' scrolling='no' ></iframe>";
        SetValueString($idOfContentVariable, $s);
        return;
    }

//$value = 10311 /*[Haus\Erdgeschoss\Verpackung\EDS1068 Sensor\Alarm\LightHighAlarmState]*/;
require_once "Ghunti/HighchartsPHP/Highchart.php";
require_once "Ghunti/HighchartsPHP/HighchartJsExpr.php";
require_once "Ghunti/HighchartsPHP/HighchartOption.php";
require_once "Ghunti/HighchartsPHP/HighchartOptionRenderer.php";

use Ghunti\HighchartsPHP\Highchart;
use Ghunti\HighchartsPHP\HighchartJsExpr;

$chart = new Highchart();
$chart->includeExtraScripts();
$chart->credits = array (
  'enabled' => false
);
$chart->exporting = array (
  'enabled' => false
);


$chart->chart = array(
    'type' => 'gauge',
    'backgroundColor' => "rgba(255,255,255, 0.0)",
    'plotBorderWidth' => 0,
    'plotBackgroundImage' => null,
    'height' => 200
);
$chart->title->text = '';
$chart->pane = array(
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('15%', '100%'),
        'size' => 300,
        'lineColor' => '#FFFFFF'
    ),
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('50%', '100%'),
        'size' => 300
    ),
    array(
        'startAngle' => -55,
        'endAngle' => 55,
        'background' => null,
        'center' => array('85%', '100%'),
        'size' => 300
    )
);
$chart->yAxis = array(
    array(
        'min' => 0,
        'max' => 100,
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 10,
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'step' => 1,
            'style' => array(
				  'color' => '#FFFFFF'
				),
        ),
        'plotBands' => array(
            array(
                'from' => 0,
                'to' => 50,
                'color' => 'rgba(129, 223, 62, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 50,
                'to' => 65,
                'color' => 'rgba(244, 247, 35, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 65,
                'to' => 80,
                'color' => 'rgba(245, 119, 29, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 80,
                'to' => 100,
                'color' => 'rgba(245, 47, 29, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 0,
        'title' => array(
            'text' => '<span style="color:white">rel. LF / %</span>',
            'y' => -40
        )
    ),
    array(
        'min' =>950,
        'max' => 1050,
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 10,
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'style' => array(
				  'color' => '#FFFFFF'
				),
        ),
        'plotBands' => array(
            array(
                'from' => 950,
                'to' => 970,
                'color' => 'rgba(245, 47, 29, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 970,
                'to' => 990,
                'color' => 'rgba(245, 119, 29, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
           array(
                'from' => 990,
                'to' => 1020,
                'color' => 'rgba(244, 247, 35, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
         array(
                'from' => 1020,
                'to' => 1050,
                'color' => 'rgba(129, 223, 62, 0.9)',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 1,
        'title' => array(
            'text' => '<span style="color:white">Luftdruck / mBar</span>',
            'y' => -40
        )
    ),
    array(
        'min' =>0,
        'max' => 50,
        'minorTickPosition' => 'outside',
        'tickPosition' => 'outside',
        'tickInterval' => 5,
        'labels' => array(
            'rotation' => 'auto',
            'distance' => 15,
            'style' => array(
				  'color' => '#FFFFFF'
				),
        ),
        'plotBands' => array(
            array(
                'from' => 0,
                'to' => 10,
                'color' => '#00BFFF',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
            array(
                'from' => 10,
                'to' => 20,
                'color' => '#0080FF',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
           array(
                'from' => 20,
                'to' => 30,
                'color' => '#0040FF',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
         array(
                'from' => 30,
                'to' => 40,
                'color' => '#0000FF',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            ),
         array(
                'from' => 40,
                'to' => 50,
                'color' => '#4000FF',
                'innerRadius' => '100%',
                'outerRadius' => '105%'
            )
        ),
        'pane' => 2,
        'title' => array(
            'text' => '<span style="color:white">Regen heute l/m²</span>',
            'y' => -40
        )
    )
);
$chart->plotOptions->gauge->dataLabels->enabled = true;
$chart->plotOptions->gauge->dial->backgroundColor = 'white';
$chart->plotOptions->gauge->dial->radius = '100%';
$chart->tooltip->valueSuffix = '';
$chart->tooltip->followPointer = true;
$chart->series = array(
    array(
        'data' => array(GetValue(26003 /*[Garten\Klima\Klima Mittelwerte\Luftfeuchtigkeit]*/)),
        //'title' => 'Temperatur',
        'name' => 'rel. Luftfeuchtigkeit',
        'tooltip' => array(
        'valueSuffix' => ' %'
        ),
        'yAxis' => 0
    ),
    array(
        'data' => array(GetValue(11797 /*[Garten\Klima\Klima Mittelwerte\Luftdruck]*/)),
        'name' => 'Luftdruck',
        'tooltip' => array(
        'valueSuffix' => ' mBar'
        ),
        'yAxis' => 1
    ),
    array(
        'data' => array(GetValue(48499 /*[Garten\Klima\Regenmesser\Regen heute]*/)),
        'name' => 'Regenmenge',
        'tooltip' => array(
        'valueSuffix' => ' l/m²'
        ),
        'yAxis' => 2
    )
);
ob_start();
$chart->printScripts();
$hc_scripts = ob_get_contents();
ob_end_clean();

$hc_renderOptions =  $chart->renderOptions();

//echo $hc_renderOptions;
//return;

$varId = 26003 /*[Garten\Klima\Klima Mittelwerte\Luftfeuchtigkeit]*/ ; //Variable welche angezeigt werden soll
$varId2 = 11797 /*[Garten\Klima\Klima Mittelwerte\Luftdruck]*/;
$varId3 = 48499 /*[Garten\Klima\Regenmesser\Regen heute]*/;
$s='
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          '.$hc_scripts.'
    </head>
    <body>
        <div id="container"></div>

        <script type="text/javascript" >


            function getvalCallback7(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId.'\', function(data) {
                    callback(data);

                });
            }

            function getvalCallback8(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId2.'\', function(data) {
                    callback(data);

                });
            }
            function getvalCallback9(callback){
                $.getJSON(\'GetValueFromIPSVariable.php?VarId='.$varId3.'\', function(data) {
                    callback(data);

                });
            }
            function CallbackFunc7(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[0].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
               point.update(newVal);
            };
            function CallbackFunc8(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[1].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
               point.update(newVal);
            };
            function CallbackFunc9(data){
                var chart = $(\'#container\').highcharts();
                var point = chart.series[2].points[0],
                            newVal,
                            inc = 0;

                var newVal =  Number(data);
               point.update(newVal);
            };

                $(\'#container\').highcharts(
                '. $hc_renderOptions . ',
                // Add some life
                function (chart) {
                    if (!chart.renderer.forExport) {
                        setInterval(function () {getvalCallback7(CallbackFunc7) }, 5000);
                        setInterval(function () {getvalCallback8(CallbackFunc8) }, 5000);
                        setInterval(function () {getvalCallback9(CallbackFunc9) }, 5000);
                    }
                }
            );
        </script>
    </body>
</html>';
echo $s;

?>


Beste Grüße
hoep