Q&A Highcharts - Multigraph V1.0

Hallo,

hast du zusätzlich schon folgendes ausprobiert:

...
$CfgDaten['yAxis'][0]['alignTicks'] = false;
$CfgDaten['yAxis'][0]['startOnTick'] = false;
$CfgDaten['yAxis'][0]['endOnTick'] = false;
$CfgDaten['yAxis'][0]['allowDecimals'] = true;
...

Das wars, 1000 Dank!!!

Gruß
hardlog

Bitte! Das hatte mir damals auch einige Zeit gekostet… :rolleyes:

Hallo,

ich brauch nochmal Hilfe:
Ich möchte in ein Säulendiagramm ähnlich diesem aus der Demo von Highchart

den jährlichen (geloggte Daten) Energieverbrauch in PV-Erzeugung, EInspeisung und Eigenverbrauch als „stacked“-Säule darstellen und die Jahre nebeneinander.
Ich bekomme es aber nicht allein hin:

	$serie = array();
	$serie['name'] = "Enerige";
    $serie['stacking'] = "normal";
	$serie['data'][] = array('name'=>'PV Ertrag', 'Id' => 26421, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Vertrauch', 'Id' => 59229, 'Unit'=>"kWh");
    $serie['data'][] = array('name'=>'Einspeisung', 'Id' => 39229, 'Unit'=>"kWh");
	$serie['Unit'] = "kWh";
	$serie['ReplaceValues'] =false;
	$serie['type'] = "column";
	$serie['step'] = false;
	$serie['yAxis'] = 0;
	$serie['shadow'] = true;
	$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;

Gruß
hardlog

einzelne Daten versuchsweise bekomme ich hin, aber keine Serien geloggter Daten.

   $serie['data'][] = array('color' => 'blue','TimeStamp'=> mktime(0,0,0,1,1,2020),'Value'=>5); 
    $serie['data'][] = array('color' => 'yellow','TimeStamp'=> mktime(0,0,0,1,1,2020),'Value'=>10); 
    $serie['data'][] = array('color' => 'red','TimeStamp'=> mktime(0,0,0,1,1,2020),'Value'=>7);

Bin nicht sicher, was Du genau darstellen willst. Wenn es Monatswerte aus mehreren Jahren nebeneinander sind, dann könnte das den Weg zeigen:

$Titel = "Gesamt";
	$Name = ["Kaltwasser", "Warmwasser", ];
	$ID = [15702 /*[Hardware - Haustechnik\Wasser\Wasserverbrauch\Kaltwasser - Zählerstand]*/, 35687 /*[Hardware - Haustechnik\Wasser\Wasserverbrauch\Warmwasser - Zählerstand]*/, ];
	$Color = ["#1A75FF", "#FF0000", ];

	$CfgDaten['title']['text'] = $CfgDaten['title']['text']." ".$Titel;
		
	for ($Stack = 0; $Stack <= count($ID)-1; $Stack++)
		{
		$Offset = 0;
		for ($Column = $kb_Vergangenheit; $Column >= 0; $Column--)
			{
			$serie = array();
			$serie['name'] = $Name[$Stack];
			$serie['Id'] = $ID[$Stack];
			$serie['Unit'] = "m³";
			$serie['color'] = $Color[$Stack];
			
			$serie['StartTime'] = strtotime(date("d.m.Y H:i:s", $CfgDaten["StartTime"])." -".$Column." years");
			$serie['EndTime'] = strtotime(date("d.m.Y H:i:s", $CfgDaten["EndTime"])." -".$Column." years");	
			$serie['Offset'] = $CfgDaten["StartTime"]-$serie['StartTime'];
			if ($kb_Einheit == 5 and $kb_Zeitraum == 2 and $kb_Aufloesung == 3) $serie['pointRange'] = 1000*60*60*24*31; // Bei Monatswerten korrekte Skala erzwingen
	
			$serie['name'] = $serie['name']." ".date("Y",$serie['StartTime']);
			$serie['ReplaceValues'] = false;
			$serie['RoundValue'] = 2;
			$serie['animation'] = false;
			$serie['type'] = "column";
			$serie['stack'] = $Column;
			$serie['stacking'] = "normal";
			$serie['yAxis'] = 0;
			$serie['shadow'] = true;
			$serie['lineWidth'] = 2;
			$serie['marker']['enabled'] = false;
			$serie['showInLegend'] = false;
			if ($Column == 0) $serie['showInLegend'] = true;
			//$serie['states']['hover']['lineWidth'] = 2;
			//$serie['marker']['states']['hover']['enabled'] = true;
			//$serie['marker']['states']['hover']['symbol'] = 'circle';
			//$serie['marker']['states']['hover']['radius'] = 4;
			//$serie['marker']['states']['hover']['lineWidth'] = 1;
			$CfgDaten['series'][] = $serie;
			}
		}

Die äussere Schleife generiert die Werte in einer Spalte übereinander, die innere Schleife die jeweiligen Monatswerte aus mehreren Jahren nebeneinander

$serie['stack'] = $Column;

. Musst Du sicher anpassen, weil mein Script nicht ganz Standard ist (und ja, die Darstellung ist nicht ‚korrekt‘ php ;-))

Moin, Moin,

ich muss jetzt noch mal hier nachfragen da es ja anscheinend bei Euch läuft. Ich erhalte folgenden Fehler:

Deprecated: The behavior of unparenthesized expressions containing both '.' and '+'/'-' will change in PHP 8: '+'/'-' will take a higher precedence in /var/lib/symcon/scripts/30550.ips.php on line 248

Ich habe nun schon versucht mit den Klammern zu bastelten (wobei ich nicht wirklich weiß, was ich da tue). Wenn ich die Klammern so setze:

" height=". ($cfg["HighChart"]["Height"] + 16) .

gibt es zwar keinen Fehler mehr,- der Chart wird aber auch nicht angezeigt.

Frage: Kann mir jemand sagen, wo ich genau die Änderungen vornehmen muss?

Danke und Gruß aus Hamburg

Möglicherweise hast Du davor oder danach einen Fehler eingebaut. Die von Dir geänderte Zeile ist nur ein Teil des Ausdrucks. Bei mir sieht der gesamte Ausdruck nach Korrektur wie folgt aus:

  $s = "http://" . $cfg['Ips']['Dashboard']['Ip'] . ":" . $cfg['Ips']['Dashboard']['Port'] .
				"/user/IPS-Highcharts.php?ScriptId=$scriptId " .
				" width=". $cfg["HighChart"]["Width"] .
				" height=". ($cfg["HighChart"]["Height"] + 16) .
				" ' frameborder='1' scrolling='no'";

Gruß, Uwe

Puh,- das war ja nen Akt, das Konto zu erstellen…Irgend wie hat das aber mit dem alten Usernamen nicht mehr geklappt. OK,- aber zum Problem.
Jetzt bin ich ein Stück weiter. Mit den Klammern ist zwar die Fehlermeldung weg, aber der Chart wird trotz dem nicht angezeigt. Jetzt habe ich das ganze mal auf wieder auf http umgestellt und siehe da,- es funktioniert. Leider kann ich http nicht nutzen weil IPS bei mir nach außen gelegt ist. Daher ist IPS nur via https über den Standard Port 443 zu erreichen. Auch wenn ich im Codeteil http:// durch https:// ersetze und in der Highcharts_config auch den Hostnamen und den Port angebe:

	$CfgDaten['Ips']['Dashboard']['Ip'] = "ipsymcon.xyz.com";
	$CfgDaten['Ips']['Dashboard']['Port'] = "443";

wird nichts angezeigt.

Frage: Wie kann ich das Problem lösen? Port 80 ist nicht möglich und via IP wird das nicht funktionieren weil dann das Zertifikat ja nicht mehr stimmt.

Also, ich habe mir das ganze jetzt noch einmal genauer angeschaut. Rufe ich die URL:

http://ipsymcon.xyz.com:3777/#32218

auf, so bekomme ich den Chart angezeigt. In dem Fall eben via http und nicht https und über den Port 3777

rufe ich die URL:

https://ipsymcon.xyz.com/#32218

wird der Chart nicht angezeigt.

Für das Webinterface Webfrontend habe ich folgendes eingestellt:

es scheint völlig egal zu sein, was ich in der Highchart_config eintrage:

	// Übergabe der IP-Adresse und des Ports für die Darstellung im Dashboard
	// Wichtig! Wenn Darstellung in Webfront diese Variablen auskommentieren
	$CfgDaten['Ips']['Dashboard']['Ip'] = "ipsymcon.xyz.com";
	$CfgDaten['Ips']['Dashboard']['Port'] = "443";

oder auch in der Highcharts die URL in https abändere:

			$s = "https://" . $cfg['Ips']['Dashboard']['Ip'] . ":" . $cfg['Ips']['Dashboard']['Port'] .
				"/user/IPS-Highcharts.php?ScriptId=$scriptId " .
				" width=". $cfg["HighChart"]["Width"] .
				" height=". ($cfg["HighChart"]["Height"] + 16) .
				" ' frameborder='1' scrolling='no'";

ändert das nichts daran, dass der Chart via https nicht angezeigt wird.

Bin ich wirklich der einzige der das Problem hat? Hat hier keiner eine Idee wie ich das zum laufen bekomme? Ich kann das doch unmöglich via Port 80 nach außen legen.

Also entweder bin ich mittlerweile viel zu blöd, nen einfachen Forum zu benutzen oder… ja was eigentlich…

Irgend wie verstehe ich das ganze hier nicht mehr. Seid der Umstellung des Forums finde ich persönlich gar nichts mehr. Bei diesem Beitrag hier, muss ich ganze 110 Sekunden am Mausrad drehen um ans Ende der 800 Beiträge zu gelangen. Nun stelle ich mir die Frage, ob es eventuell daran liegt, dass ich hier noch nicht mal nen ja/nein als Antwort erhalte oder ob ich schlichtweg nicht mehr die gewünschte Zielgruppe bin und doch auch eine fertige Lösung wie Fibaro setzen soll.

OK,- jetzt nehme ich´s sportlich… Ich setze jetzt einfach mal nen ioBroker auf und portiere meine Gerät auf ioBroker. Ich denke, das werde ich eher fertig bekommen, als das ich hier Hilfe bekomme. So spare ich mir wenigstens die jährlichen Subskription für IPS und kann meine IPS Lizenz verkaufen…

Gibt es bei den Highcharts noch Weiterentwicklungen, oder ist das inzwischen tot?
Ich wollte mit mittels einer Highcharts Gauge einen Anzeige für den BAtteriestand meiner Solarbatterie zusammenbauen, aber das bekomme ch die Fehlermeldung, dass „gauge“ als Serientyp nicht unterstützt wird.
Die Grafana-Schnittstelle hab ich mir auch mal angeschaut, aber die ist ja leider aktuell auch noch nicht das gelbe vom Ei.

Vielleicht ist das hier eine Alternative?

Michael

Hallo Gemeinde, vielleicht ist hier jemand der mir hier weiterhelfen kann. :slight_smile:

Ich habe aktuell mit Highcharts 3 Pies in einem Chart dargestellt:

Jetzt würde ich gerne über jedes Pie einen Titel haben mit „Tagesverlauf“ „Jahresverlauf“ „Gesamtverlauf“

Ich nutzte das Script vom User KHC und habe folgenden Code für die drei Pie’s:

$serie = array();
    $serie['name'] = 'Tageswerte';
   	$serie['type'] = 'pie';
	$serie['data'][] = array('name'=>'Netz', 'Id' => 14173, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Batterie', 'Id' => 24085, 'Unit'=>"kWh");
    $serie['data'][] = array('name'=>'Ohmpilot', 'Id' => 13473, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Direkt', 'Id' => 19738, 'Unit'=>"kWh");
   	$serie['allowPointSelect'] = true;
	$serie['cursor'] = 'pointer';
	$serie['center'] = array(300,200);
	$serie['size'] = 300;
	$serie['dataLabels']['enabled'] = true;
    $serie['dataLabels']['color'] = '#FFFFFF';
    $serie['dataLabels']['style']['fontFamily'] = '\Lato\, calibri';
    $serie['dataLabels']['style']['fontSize'] = 20;
    $CfgDaten['series'][] = $serie;

    $serie = array();
	$serie['name'] = 'Jahreswerte';
	$serie['type'] = 'pie';
	$serie['data'][] = array('name'=>'Netz', 'Id' => 28767, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Batterie', 'Id' => 29734, 'Unit'=>"kWh");
    $serie['data'][] = array('name'=>'Ohmpilot', 'Id' => 39464, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Direkt', 'Id' => 34385, 'Unit'=>"kWh");
	$serie['allowPointSelect'] = true;
	$serie['cursor'] = 'pointer';
	$serie['center'] = array(900,200);
	$serie['size'] = 300;
	$serie['dataLabels']['enabled'] = true;
    $serie['dataLabels']['color'] = '#FFFFFF';
    $serie['dataLabels']['style']['fontFamily'] = '\Lato\, calibri';
    $serie['dataLabels']['style']['fontSize'] = 20;
    $CfgDaten['series'][] = $serie;

    $serie = array();
	$serie['name'] = 'Lieftime';
	$serie['type'] = 'pie';
	$serie['data'][] = array('name'=>'Netz', 'Id' => 50073, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Batterie', 'Id' => 54046, 'Unit'=>"kWh");
    $serie['data'][] = array('name'=>'Ohmpilot', 'Id' => 46548, 'Unit'=>"kWh");
	$serie['data'][] = array('name'=>'Direkt', 'Id' => 47236, 'Unit'=>"kWh");
	$serie['allowPointSelect'] = true;
	$serie['cursor'] = 'pointer';
	$serie['center'] = array(1500,200);
	$serie['size'] = 300;
	$serie['dataLabels']['enabled'] = true;
    $serie['dataLabels']['color'] = '#FFFFFF';
    $serie['dataLabels']['style']['fontFamily'] = '\Lato\, calibri';
    $serie['dataLabels']['style']['fontSize'] = 20;
	$CfgDaten['series'][] = $serie; 

Wie bekomme ich hier nun die 3 Titel für die 3 Pie’s rein? Ich hab ein paar Sachen mit „label“ etc. versucht, aber es klappt irgendwie nicht.

Für jeden Tipp bin ich dankbar :slight_smile:

Hallo chemicalx81
hier ein Link zur Highcharts API Reference, speziell zum Pie.

habe da nichts auf die schnelle gefunden um einen Titel über den Pies direkt darzustellen.

Vg Heinz

Hi, danke, ich hab da auch schon geschaut aber nix gefunden. Dachte viellecht jemand hätte eine idee :slight_smile:

Probiere es mal mit Title

$serie['title'] = 'Mein Tortendiagramm';

Hi, danke für den Tipp aber der hat auch nicht geholfen. Ich kann mich aber aktuell damit arrangieren.

Derzeitig hab ich tatsächlich ein anderes Thema mit den Highcharts und komme nicht weiter bzw. verstehe den Grund nicht.

Lokal sehe ich alle Highcharts in der VIsu, aber sobald ich über die ipmagic gehe, sehe ich diese nicht mehr.

Ich habe schon in ein paar Themen geschaut und auch versucht, z.b. die änderung im IPS-Template und dem s bei https://ajax.goo… aber auch das hat nicht geholfen.