IP-Symcon 4.3 Features - Teil 1: Graphen

Hallo Community,
Die neue IP-Symcon Version 4.3 ist gerade als Beta herausgekommen und bietet verschiedene neue Features und Verbesserungen. Ich wollte euch in einer Reihe von Beiträgen diese ganzen Features einmal näherbringen und genauer beschreiben. Dabei würde ich sowohl über die neuen Funktionalitäten schreiben, die ihr direkt in eurem Zuhause benutzen könnt. Auf der anderen Seite schreibe ich auch noch ein wenig über die Entwicklung selbst, damit ihr einen kleinen Einblick in unseren Entwickleralltag erhaltet.

In der neuen Version erwarten euch komplett überarbeitete Graphen, eine Reihe von neuen unterstützten Geräten, einige Verbesserungen für PHP-Module und diverse kleinere Anpassungen und Fixes.

Heute möchte ich mit den neuen Graphen anfangen. Seit ich Anfang des Jahres bei Symcon angefangen habe, waren die Graphen mein erstes größeres Projekt und ich bin mit dem aktuellen Ergebnis sehr zufrieden. Schauen wir uns aber einfach mal zwei Bilder an:

Wir sehen zwei Graphen, die denselben Datensatz zeigen. Auf der linken Seite ist dies die alte Implementation und auf der rechten die neue. Es fallen direkt einige Änderungen ins Auge.

Mittlerweile befinden sich die Aggregationspunkte nicht mehr auf den senkrechten Linien, sondern mittig in einem Bereich. Dies soll einfach noch einmal verdeutlichen, dass es sich bei den Punkten nicht um einen genauen Zeitpunkt handelt, sondern um einen Zeitraum. Die Variable für Montag beschreibt beispielsweise den Durchschnitt über den gesamten Montag und nicht den Wert für Montag um 0:00 Uhr.

Die S-Bildung wurde ordentlich reduziert. Das sieht man bei den Graphen besonders schön am rechten Ende. Beim alten Graphen bilden sich S-förmige Wellen während die Linie beim neuen Graphen deutlich weniger ausschlägt.
Wir haben bei uns die Regel, dass die Linie zwischen zwei Punkten nicht über diesen Bereich hinausragen darf. Die Linie darf sich also nie unter dem niedrigeren Punkt und nie über dem höheren Punkt befinden. Zusätzlich soll die Linie keine Kanten beinhalten und darf die Richtung nie abrupt ändern.

Ursprünglich wurde dies durch die S-Linien gelöst. Durch die S-Linien kann die Linie nicht aus dem Bereich herausragen und ist auf den Punkten stets waagerecht. So können wir einfach die ganzen S-Linien aneinanderhängen und haben als Endergebnis einen Graphen der die Bedingungen erfüllt.

Das wurde jetzt gelockert und die Linien müssen in den Punkten nicht mehr waagerecht sein. So müssen wir uns während der Berechnung zwar die Ausrichtung eines Punktes merken und müssen ein paar Überprüfungen und Anpassungen einbauen, damit die Linien nicht ausschlagen. Das Ergebnis ist es aber sicherlich wert und wir haben schöne Graphen.

Als letzten Punkt für heute schauen wir noch einmal auf die Y-Achse mit den Temperaturwerten. Was man nicht sieht: Das verwendete Profil hat einen Minimalwert von 12 und einen Maximalwert von 30. Die Schrittgröße ist 0, es gibt also hier keine feste Vorgabe vom Profil.

Beim alten Graphen sehen wir oben allerdings 32 °C. Das liegt daran, dass die alten Graphen bei einer Schrittgröße von 0 immer fünf Y-Werte verwenden. Dies würde bei einem Spektrum von 12 bis 30 °C eine Schrittgröße von 4,5 bedeuten. Das würde nun wirklich nicht schön aussehen, daher wird die Schrittgröße auf 5 aufgerundet. Bei vier Schritten kommen wir daher bei 32 °C an.

In der neuen Version wird auf jeden Fall der gewünschte Maximalwert oben stehen. Wir versuchen eine schöne Schrittgröße zu bestimmen, so dass der Graph eine angenehme Menge an Datenpunkten hat. Und selbst wenn das Spektrum nicht schön aufgeteilt werden kann und wir beispielsweise im Watt-Profil ein Spektrum von 0 bis 3680 haben, dann bekommen wir das hin. In dem Falle nehmen wir eine Schrittgröße von 500. Auch wenn 3680 kein Vielfaches von 500 ist, so kommt das Maximum einfach nach 3500. Dadurch ist der Abstand von 3500 zum Maximum natürlich niedriger als der übliche Abstand zwischen zwei Punkten, aber wir haben trotz krummen Maximum einen schönen übersichtlichen Graphen.

Das soll es für heute über Graphen gewesen sein. Fühlt euch herzlich eingeladen die neuen Features hier zu diskutieren und verratet uns, was ihr davon haltet. In ein oder zwei Wochen kommt ein neuer Beitrag von mir, in dem ich auf andere Aspekte von IP-Symcon 4.3 und deren Entwicklung eingehe. Ihr dürft euch hier auch gerne Themen wünschen und ich schaue dann worüber ich schreibe.

Bis zum nächsten Mal
Dr. Niels

Hallo Dr. Niels
vielen Dank für die Information, etwas weniger „Prosa“ und mehr technische Informationen würden den Beitrag für die Forennutzer übersichtlicher machen.

Viele Grüße aus dem Urlaub in Frankreich

Das bekommen wir beim nächsten mal sicherlich hin. Dann wird es jetzt technischer und weniger Drumherum.

Sind das die einzigen bzw. größten Änderungen bei den Graphen?
Ich hab da irgend wie was anderes erwartet.
Verbesserter Multigraph, Zoom, Pan, Blättern, gemischte Graphen, mehrere Y-Achsen, synchronisierte Graphen, Rohwerte anzeigen usw…
Einfach Sachen die die TChart (Steema) zum Beispiel schon lange kann.
Gruß
Schuggi

Hallo Dr. Niels und restliches Symconteam,

vielen Dank, dass ihr endlich diese hässliche Graphendarstellung mit waagerechten Tangenten an den Schnittpunkten angeht. Das war ja fürchterlich. Ich habe im Bild mal einen Lichtstärkegraphen mit (gelb) und ohne (rosa) HD dargestellt. Die geglättete gelbe Kurve ist jetzt deutlich natürlicher als das vorherige S-Geschlingere. Im Vergleich zum rosa HD Graph wird für mein Gefühl etwas zu stark geglättet, ist aber Geschmackssache. Wäre schön wenn ihr für die Glättung einen Defaultparameter setzt, der aber vom Anwender bei Bedarf individuell konfiguriert werden kann.

Ansonsten schließe ich mich den Vorrednern an, dass die Graphenfunktionalität weiterhin doch sehr dürftig ist. Schön wäre, wenn zumindest graphisch wählbarer Zoom, selektierbare/deselktierbare Graphen (bei Multigraph) und exportierbare Bitmaps dazu kommen würden.

Gruss
Bernd

Ich habe mir jetzt nochmal die Mühe gemacht, um den PI mit IPS 4.2 aufzusetzen, dort den Graphen (Lichtstärke in gelb) darzustellen um anschließende auf IPS 4.3 Testing upzugraden um dort den Graphen (Lichtstärke in rot) darüber zu legen. Jetzt kann man deutlich die Verbesserung sehen.

Gruss
Bernd

Die Vergleichsbilder finde ich super! Herzlichen Dank für die Mühe.

Zum Glättungsgrad:
Technisch wird bei Normal und HD auf verschiedenen Aggregationen aufgesetzt. Bei Tagesgraphen wird beispielsweise normalerweise auf den Stundenwerten aufgesetzt. Wird HD aktiviert, dann wird die 5-minütige Aggregation verwendet. Damit haben wir bei normalen Graphen nur die Werte, die im Graphen als Punkt markiert sind, und keine Informationen wie sich der Wert dazwischen verhällt. Daher kann ich in der aktuellen Version „nur“ versuchen eine möglichst schöne Linie zwischen den beiden Punkten zu ziehen. Ich kann diese Linie allerdings nicht ohne extrem hohen Aufwand an den Werteverlauf dazwischen anpassen, da mir die Daten bei der Graphengenerierung einfach nicht vorliegen.

Zu neuen Features:
Mehrere Achsen sind aktuell bei uns im Fokus und sollten demnächst™ verfügbar sein. Bei den anderen Dingen kommt es immer darauf an wie groß hierzu der Wunsch ist und wie einfach oder kompliziert die Implementation ist. Ein Export ist beispielsweise eine sehr schöne Idee, allerdings ein bisschen trickreich, da wir die Graphen im SVG-Format extrahieren müssen und das ist nicht trivial. Aber wir sind bei den Wünschen aktiv am Zuhören und werden sehen, was davon in naher und ferner Zukunft kommt.

Ich würde mir eine Ansicht wünschen in der ich wirklich alle Rohdaten dargestellt bekomme.
Als ich mit IPS angefangen habe, war das für mich völlig unverständlich, das es soetwas nicht gibt.

Die „Kurvenkorrektur“ sollte abstellbar sein. Eine Solltemperatur, um 20:00 verstellt, sollte nun mal dann vom alten zum neuen Wert springen. Da gibt es auch keine Min/Max Spielerei.
Und die Animation, die Kurve schiebt sich so langsam nach oben, sollte auch verschwinden. Bei einer langsamen Verbindung dauert es eine gefühlte Ewigkeit bis die Graphendarstellung fertig ist.
Hoch lebe Highcharts! :smiley:

Hallo Dr. Niels,

Sehr gut, dass Ihr Euch jetzt mal dem Thema Graphen annehmt. Die verbesserte Glättung ist ein sehr guter Anfang.

Was mir (und ich glaube einigen anderen auch;-) besonders wichtig erscheint, sind multigraphen mit mehreren Achsen und gemischten Graphen (z.B. Linie und bar oder Bool) wer hat nicht schon mal gern ein Temperaturverlauf in einem Diagramm mit dem Heizstellantrieb (Boolean) darstellen wollen…

Ansonsten: Viele Grüße an das Team. Tolle Arbeit.

Beste Grüße
Tommes

Gesendet von iPad mit Tapatalk

Hallo,

mir fehlt am meisten eine Zusammenfassung, also min, max und avg Werte des gewählten Zeitraums wie ich es von zabbix gewohnt bin.

So habe ich schnell z. B. die min, max Temperatur seit gestern…

Auch bei anderen sogar Boolean Variablen ist das super um z. B. mit dem Durchschnitts Wert die dauer der Zeit in der ein Licht an war.

Was ich bis heute nicht verstehe warum bei einem Integer Datentyp der mit einem Profil für Anwesend, Nachtmodus, Unterwegs übersetzt wird im Chart X mal Anwesend und auch die anderen Werte Angezeigt werden?

Da ist die Kurvenglättung eigentlich nebensächlich…

Liebe Grüße
Paul

Für so eine Integer Variable werden im Profil ja für bestimmte Werte Assoziationen gesetzt. Bei den neuen Graphen sollte jede Assoziation allerdings höchstens einmal auftauchen. Wenn bei deinem Graph also mehrmals „Abwesend“ steht, dann wäre das ein Bug.

Werte die darüber hinaus in den gleichen Assoziationsraum fallen, werden als Werte angezeigt. Wenn du also Beispielsweise Anwesend, Unterwegs und Nachtmodus als 0, 1 und 2 codierst und dann die dynamische Ansicht aktivierst, dann wird der Graph Zwischenstellen als Zahlen anzeigen, also wahrscheinlich 0.5 und 1.5. Das kann man aber einfach umgehen indem man im Profil Minimum, Maximum und Schrittgröße setzt, in diesem Falle also auf 0, 3 und 1. Dann wird der Graph (sofern man nicht Dynamik aktiviert) korrekt die drei möglichen Werte anzeigen und keine Zwischenstufen.

Hallo,

Danke für den Hinweis, ich werde das mal Testen und hier Rückmeldung geben.

Liebe Grüße
Paul

Hallo,

wegen der Zusammenfassung hier ein Beispiel wie das mit Zabbix aussieht, diese Statistik ist wirklich sehr Praktisch und das vermisse ich mehr als glatte Kurven…


Die Daten werden mit Symcon aus einer Siemens S7 Ausgelesen aber dann von Zabbix gesammelt und Aufbereitet…

So sieht nun das Profil der Variable aus (habe die Min, Max und Schrittweite erst gerade eingestellt)
Bildschirmfoto vom 2017-07-27 19-46-25.png
Aber leider ändert sich nichts beim Graphen, kann es sein das dies erst nach einem Reaggregieren der Variable richtig angezeigt wird?

Übrigens ich habe die Version:
IP-Symcon 4.20, 17.05.2017

Vielen Dank im Voraus für die Unterstützung!

Du stellst den Graphen dynamisch dar, daher werden deine Angaben aus dem Profil nicht beachtet. Wenn du einfach auf das „DYN“ oben rechts klickst, dann schaltest du die dynamische Darstellung aus und der Graph sollte aussehen wie gewünscht.

Aber mit der Achsenbeschriftung hast du scheinbar wirklich einen Fehler entdeckt. Da setzte ich mich mal ran.

Edit: Das Problem ist deine Version. Du benutzt Version 4.2 und damit noch die „alten“ Graphen. Das kann man in deinem Screenshot auch ganz gut erkennen, da dort auch die alten S-Linien zu finden sind. Allerdings solltest du auch bei den alten Graphen die gewünschte Optik bekommen, wenn du einfach die dynamische Darstellung deaktivierst.

Hallo

Danke für die Rückmeldung und ja wenn ich nun die Dynamische Anzeige des Graphen deaktiviere wird es richtig angezeigt.

Die Frage ist nur was hat das eine mit dem anderen zu tun?

Auch sollte es z. B. möglich sein da die Anzeige je nach Datentyp anders Eingestellt werden muss diese auch pro Datentyp als Standard und nicht für alle Graphen einstellbar sein?

Liebe Grüße

An manchen Stellen verstehe ich deine Fragen nicht ganz. Ich versuche einfach mal zu interpretieren. Wenn ich daneben getippt habe, dann kannst du gerne noch einmal nachhacken.

Vorweg, schön dass es klappt.

Wenn du Dynamik aktivierst, dann richten sich diverse Vorgaben nicht mehr nach dem Profil sondern nach den gezeigten Daten. Insbesondere Minimum, Maximum und Schrittgröße werden gänzlich ignoriert. Für Minimum und Maximum werden Werte berechnet, so dass alle angezeigten Werte innerhalb des Spektrums liegen. Hierbei werden sozusagen der größte und kleinste Wert ein wenig auf- bzw. abgerundet, damit die Grenzen halbwegs glatte Zahlen sind. Auf Basis von den berechneten Grenzen wird dann eine Schrittgröße bestimmt, die eine angenehme Anzahl an Schritten von Minimum zu Maximum darstellt. Daher konntest du im Profil einstellen, was du möchtest, die Angaben wurden in der dynamischen Ansicht einfach nicht berücksichtigt.

Deinen letzten Wunsch verstehe ich so, dass du eine Art Standardprofil für alle Variablen haben möchtest, welches du selbst konfigurieren kannst? Das ist aktuell nicht möglich. Allerdings empfehle ich sowieso alle Variablen, die einen Darstellungscharakter besitzen, mit einem Profil zu versehen, da so die Übersicht deutlich erhöht wird und eine Variable intuitiv ihrer Funktion zugewiesen werden kann. Wenn du ein Standardprofil haben möchtest, dann müsstest du dafür eines erstellen (oder dir eines der vordefinierten aussuchen) und dies halt jeder neu erstellten Variablen zuweisen.

Hallo,

das stimmt so nicht, es kann pro Web Interface ein Standard für die Darstellung der Graphen hinterlegt werden, aber nicht für die Datentypen geschweige die mit den Profilen auszunehmen.
Bildschirmfoto vom 2017-07-28 18-40-14.png

Am besten wäre es bei dem Profil die Standard Einstellungen für die Graphen zu hinterlegen und nicht beim Web Interface!

Ich kann mir keinen Fall vorstellen wo so eine Anzeige wie ich es hochgeladen habe Sinnvoll wäre!

So oder so ist die Anzeige der Graphen in Symcon noch sagen wir es einmal sehr Ausbaufähig wenn es z.b. mit Highcharts verlgichen wird.

Danke und Liebe Grüße

Ach so, du möchtest kein Standardprofil, sondern die initialen Einstellungen bezüglich der Graphendarstellung individuell einstellen können. Die Idee finde ich nicht verkehrt. Hierfür müsste allerdings das Interface an einigen Stellen umgebaut werden, was wohl nicht in naher Zukunft passieren wird. Wir behalten das aber auf jeden Fall im Hinterkopf, wenn wir an diese Baustelle gehen.

Hallo,

da Symcon nicht selbst verhindern kann das solche Fehlerhaften Darstellungen bekommt, wäre das Sinnvoll.

Besser wäre es wenn Symcon hier selbst etwas mehr Intelligenz an den Tag legen würde.

Liebe Grüße