RRDTool Support wird für die 2.4 eingestellt

Nach langem überlegen und einer Alternative die sich heute ergeben hat, werden wir das völlig veraltete und mit kritischen Fehlern behaftete RRDTool Modul zum IP-Symcon 2.4 Release entfernen.

Wer es nutzt und darauf vorbereitet sein will, kann jetzt schon alle Befehle zu RRD_Execute gegen ein IPS_ExecuteEx Äquivalent austauschen. Die nötigen Binaries können hier heruntergeladen und im IP-Symcon Unterorder RRDTool abgelegt werden. (Danke an bbernhard für den Link-Heinweis)

RRDtool v. 1.4.4 Win32 Binaries | The Bits 2.0

RRDTool kann dann folgendermaßen genutzt werden:


function RRD_Execute_Alternative($str)
{
	IPS_ExecuteEx(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $str, false, false, 1);
}

Beachtet bitte, dass IP-Symcon als Systemdienst laufen muss, um IPS_ExecuteEx benutzen zu können. (Falls nicht, gibt es folgenden Fehler: There were no token found for specified session)

paresy

Wenn man folgenden PHP-Code per include/require einbindet, muss man weder heute noch später seine Befehle anpassen:

if (!function_exists('RRD_Execute'))
{
    function RRD_Execute($str)
    {
        IPS_ExecuteEx(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $str, false, false, 1);
    }
}

Und die wäre?

Nur weil ich mich gestern über Stunden mit RRD Tool i.V.m. IPS beschäftigt habe? :stuck_out_tongue:

Hi

Naja ganz so smooth ist die Umstellung nicht.
Paar kleinere Unterschiede in der Syntax gibts schon.

Schlimmer:
Die alte in IPS integrierte RRD Version benützt scheinbar ein anderes Datenbankformat.
Augenscheinlich war mal das zwar das Diagramm erstellt wurde, also der Rahmen, das Raster, Achsenbeschriftung ect. aber keine Daten reingeplottet.

Ich mußte alle Datenbanken löschen und mit der neuen Version neu anlegen, damits wieder flutscht.
Also Datentotalverlust.

Vielleicht wäre mit vorhergehendem Export (mit alter Version) und dann neuanlegen und reimportieren mit neuer Version ein Datenverlust zu vermeiden. Habs aber nicht probiert denn ich wollte eh schon lange mal einiges ändern da ist die Gelegenheit grad günstig und der Verlust zu verschmerzen.

… wenn das RRD Prinzip nicht so genial wäre, ich hätt sie schon lange eliminiert, so viel hab ich mich im Laufe der Zeit schon damit schon geärgert.
Aber für unsre Zwecke ist es halt trotzdem immer noch mit weitem Abstand das Beste.

der mit der RRD tanzt
bb

Offiziell hat sich nichts geändert: RRDtool - RRDtool - Page without a Title

paresy

Hier noch ein kleiner Nachschlag:

Die RRDTool.exe von der oben verlinkten Seite funktioniert ansich gut.

Aber leider nicht in Zusammenarbeit mit anderen RRDs von anderen Betriebsystemen, oder RRDs welche mit den Binaries der original RRD Homepage erstellt wurden.

Ja nichtmal transferieren der Daten per Dump/Restore klappt.

Nach ewiglangem Suchen bin ich aber draufgekommen das sich RRD recht zickig gegenüber irgendwelchen (keine Ahnung welche genau) Compileroptionen benimmt,- und daher nicht in jedem Fall kompatibel mit sich selbst ist.

Für mich war das ein Problem, da die unter IPS erstellten RRD auch von meinem Webserver ausgelesen werden.
Dort allerdings via Perl und PHP.

Für mich hies dies leider alles wieder alles zurück auf Version 1.2.30 stellen. Das ist die letzte welche offiziell für WIN32 releast wurde, und damit kompatibel zu den offiziellen Perl und PHP Bindings ist.

Pfff, ich hasse das.
bb

oh, da sehe ich aber dunkel für meine rrd-geschichte

Ach geh, RRD ist für unsere Zwecke doch zig mal besser geeignet als dieses MySQL, Google irgendwas Graph gefummel.

OK, spektakuläre 3D oder Pie Grafiken gehen nicht, aber fürs loggen und plotten periodischen Messwerten ist es doch ideal.

der mit RRD tanzt
bb

Hallo Bernhard,

kann Deine Ansicht so nicht ganz teilen. RRD ist ja so gebaut, dass es Werte vergisst, je älter sie sind. Ist ja auch praktisch. Ein relationale Datenbank wie MySQL ist hingegen ein ganz anderes Kaliber.

Wie dem auch sei. Steiner und paresy haben bestimmt, dass es nun mal SQLite ist und das ist bestimmt nicht die schlechteste Lösung. Macht also absolut Sinn, mit unseren Tools darauf aufzusetzen. Zumindest am zunkunftssichersten.

Gruss
Bernd

Hallo Bernd,

also ich gebe da Berndhard voll recht, deshalb ist damals auch WIIPS entstanden…

RRD ist ja so gebaut, dass es Werte vergisst, je älter sie sind. Ist ja auch praktisch.

genau das ist ja das geniale - aber immer, wie Du es einstellst. Mann kann auch Daten sehr lange noch im Detail speichern, kein Problem. Aber wozu braucht man die genauen Daten von vor einem oder fuenf Jahren? Man will ja Tendenzen und Verlaeufe sich aufzeigen, das ist das entscheidende. Und wer ehrlich zu sich selbst ist, wird sehr schnell feststellen, dass richtig alte Detaildaten uninteressant sind und man sich sofort Gedanken drueber macht, wie man das ganze verdichten kann.

Im uebrigen ist RRD ja nicht nur fuer die vergangene Zeit verwendbar, sondern man kann damit auch geniale Zukunftszeitreihen sichtbar machen. Und das kannste so ohne weiteres ohne enormen Programmier- und Logikaufwand mit MySQL oder SQLite nicht.

Ein relationale Datenbank wie MySQL ist hingegen ein ganz anderes Kaliber.

diese ist auch fuer voellig andere Aufgaben praedistiniert. Ein Vergleich mit RRD Datenbanken ist IMHO nicht zielfuehrend.

Wie dem auch sei. Steiner und paresy haben bestimmt, dass es nun mal SQLite ist und das ist bestimmt nicht die schlechteste Lösung. Macht also absolut Sinn, mit unseren Tools darauf aufzusetzen. Zumindest am zunkunftssichersten.

das lass ich mal so stehen. Auch diese Tools haben ihre Berechtigung.

Sie vergisst das was man ihr sagt sie solls vergessen. Man kann dieses Verhalten ja ganz genau definieren.
Das ist ja grad der große Vorteil. Man muß sich nicht ums löschen und reorganisieren von alten Daten kümmern.
Was interessiert zb. eine minutenfeine Auflösung von Stromverbrauchsdaten nach einem Jahr ?? Da sind wohl nur noch Stunden- oder Tagesmittelwerte von Interesse.
Das konfiguriert man einmal, und gut. Man muß nie wieder nachdenken ob reorganisieren, oder komprimieren der db nötig ist. Vergleiche auch so manche Threads hier zu dem Thema " …Hilfe meine db ist 800MB groß obwohl ich alles gelöscht habe…"

Keine Frage, eine RRD kann in sehr vielen Kriterien nicht mit einer ausgewachsenen SQL mithalten.
Eigentlich kann man die beiden überhaupt nicht vergleichen.
RRD ist viel mehr auf genau EINE Anwendungsnische hin optimiert. (loggen und Plotten von zyklisch anfallenden Daten)
Diese macht sie aber sehr gut und meiner Meinung nach besser als ein universeller Alleskönner welcher ein wesentlich breiteres Anwendungsspektrum abdecken muß.

Zum Glück ist IPS ja vorurteilslos offen sodaß jeder nach seinem
Bedarf glücklich werden kann.
Das gibts sonst nirgends, und darum :loveips:

greez
bb

Also ich mag RRD auch.
Du kennst schon beim Erstellen die Größe der Datenbank und die Darstellungsmöglichkeiten finde ich klasse und völlig ausreichend für meine Bedürfnisse.
Bin schon gespannt, was kommt.

Ja den Torro gibts auch noch !
Lustig, wir haben da zur gleichen Zeit den gleichen Gedankengang getippt.

Hallo Bernhard,

ja klar, aber mit nur sehr wenig Zeit…

Lustig, wir haben da zur gleichen Zeit den gleichen Gedankengang getippt.

tja, und das kann ja nun wirklich nicht falsch sein, wenn zwei Leute aus unterschiedlichen Regionen genau das wiedergeben, was RRD ausmacht.

Ich hatte zwischenzeitlich auch schon ueberlegt, ob ich auf das zurueckgreife, was da von verschiedenen Seiten entwickelt wurde, aber ich bleibe immer wieder bei RRD haengen und werde wohl mein WIIPS wieder fuer die 2.4 reaktivieren, kommt ja bald Weihnachten, wo ich hoffe mehr Zeit zu haben.

Hallo,

weil das RRDTool Modul ja demnächst wegfallen soll, bin ich auch dabei meine Scripte umzubauen.
Da bbernhard ja schon einige Probleme beschrieben hat, benutze ich auch die Version 1.2.30.
In IPS bekomme ich jedoch keine Graphen erzeugt und auch keinen Fehler angezeigt. (Script läuft einfach ohne Meldung durch)
Deshalb habe ich den Befehl im DOS Fenster ausführen lassen, da kommt wenigstens eine Fehlermeldung.
Mit der kann ich aber auch nach Recherche im Internet nichts anfangen.
Habe mit „try on error“ schon alle möglichen Syntaxänderungen getestet, aber es klappt nicht.

Vielleicht kann mir ja einer von Euch einen Tip geben was da nicht stimmt.

Hier der Befehl und Error:

C:\IP-Symcon2\rrdtool>rrdtool graph c:/IP-SYMCON2/media/wiga_hzg.png -s end-18h DEF:temp c:\IP-SYMCON2\web_data\rrd\data	j4yik1wb.rrd:DS0:AVERAGE
ERROR: Cannot parse vname from 'DEF:temp'

Schick dir am Abend ein Beispiel.
Auch wie du die Fehlermeldung angezeigt bekommst.
Grundsätzlich hat sich die Syntax aber nicht geändert.
Mußte bei mir nur den Aufruf von rrdtool.exe anstatt des Moduls einfügen, dann liefs wieder.

gruß
bb

So langsam bin ich mir nicht mehr sicher ob ich auf das richtige System gesetzt habe.

Nachdem die ganzen andern Tools oder wie sie sich auch immer nenen wie WIPPS, SQL???, GoogleGraph usw. entweder nicht richtig funktioniert oder mir meinen PC lahmlegten habe ich mich auf RRD konzentriert. Mittlerweile mutiere ich zum Progammierer, habe jedoch mit RRD das erreicht was ich wollte - einfach mitloggen und grafisch nach MEINEN Wünschen und Bedürfnissen anzeigen und das ganze ohne einen Server wie in einem Großunternehmen betreiben zu müssen.
Wenn ich das hier lese was so alles zu tun ist um RRD am laufen zu halten muss ich mich ja noch tiefer in die PC-, Prgrammier- und Systemwelt einarbeiten. Dazu habe ich weder die Lust noch die Zeit. Kann nur hoffen das das angekündigte auch so einfach und flexibel zu handhaben ist und mir meinen IPS-PC nicht lahmlegt.

Hallo khge,

so ist es nun mal in unserer dynamischen IT-Welt. Tools die man selber anflanscht, werden beim nächsten Releasewechsel nicht mehr unterstützt oder der Support für bestehende Module wie RRD wird eingestellt. Bei uns in der Frima nennt man das dann Planung einer Roadmap :):frowning: Deshalb ist es ja so wichtig, dass sich ein einheitlicher vom Hersteller unterstützter Standard auf breiter Basis durchsetzt. Das soll nun mal die interne IPS-SQLite werden. Ob es die beste Lösung ist, sei dahingestellt, wenn sie sich durchsetzt passt es schon ganz gut (siehe damals VHS von JVC gehen Video2000 von Grundig). Die SQLite soll ja sogar im Airbus A350 verbaut werden, mal schauen.

Ach ja, SQLite braucht keinen eigenen Server, der ist bei IPS automatisch dabei. Das Logging der Daten wird Dir bei entsprechender Einstellung auch abgenommen.

Ich würde mir nur wünschen, dass Steiner und paresy endlich mal eine Doku dafür veröffentlichen würden (ich wiederhole mich hier im Forum).

Gruss
Bernd

Hi

ich würde mal sagen da fehlt ein „=“ zwischen „temp“ und „c:\IP-SYMCON…“
ggfl. mußt auch noch die Linienfarbe definieren, weiß jetzt aber nicht auswendig obs da Defaultwerte gibt.

Die Fehlermeldung kriegst wenn du „IPS_Execute“ anstatt „IPS_ExecuteEx“ verwendest.

als zb:

$result= IPS_Execute(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $para, true, true);
print $result;

So kannst dir die Fehlermeldung ins log schreiben lassen.

$result= IPS_Execute(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $para, true, true);
if ($result <>NULL)  IPS_LogMessage(IPS_GetName($IPS_SELF),$result);

Ich hab mir alle Kontanten ( Farben, Pfade ect.) in eine include Datei geschrieben und kann so gemüßtlich darauf zugreifen ohne dauernd den unendlich langen String reinhacken zu müssen.

Weiters baue ich mir den Aufrufparamter aus lauter einzelnen thematisch zusammengehörenden Teilstrings zusammen.
So ist es sehr viel leichter den Überblick zu behalten
zb so:


$dir = GetValue(15648 /*[gemeinsame Objekte\Konstanten\RRD_Home_Dir]*/);
$dir_esc = GetValue(53773 /*[gemeinsame Objekte\Konstanten\RRD_Home_Dir- mit Escape]*/);
$dirpng = GetValue(46074 /*[gemeinsame Objekte\Konstanten\RRD_Plot_Dir - mit Escape]*/);
include "$dir/format_rrd_plot.php"; #style datei includen

$DB = "$dir_esc/FHT_Badezimmer.rrd";

if($IPS_SENDER == "TimerEvent") {
	$end = time();
	$start = time()-3600*24;
	}
else {

$einheit = GetValue(40363 /*[gemeinsame Objekte\RRD\Einheit]*/);
$end_time =  GetValue(35393 /*[gemeinsame Objekte\RRD\Anzeigestart]*/);
if ($einheit == 0) $end_time = $end_time*3600;
if ($einheit == 1) $end_time = $end_time*3600*24;
if ($einheit == 2) $end_time = $end_time*3600*24*7;
if ($einheit == 3) $end_time = $end_time*3600*24*7*32;

$start_time =  GetValue(51002 /*[gemeinsame Objekte\RRD\Anzeigezeitraum]*/);
if ($einheit == 0) $start_time = $start_time*3600;
if ($einheit == 1) $start_time = $start_time*3600*24;
if ($einheit == 2) $start_time = $start_time*3600*24*7;
if ($einheit == 3) $start_time = $start_time*3600*24*7*32;

$end = time()-$end_time;
$start = time()-$start_time-$end_time;
}

# Ist und Solltemperatur
$pngname = "$dirpng/Badezimmer_temp.png";
$VERT_LABEL = "--vertical-label=Grad°";
$TITEL =	"--title=";

$style = "--heigh=150 --width=800 --alt-autoscale --alt-y-grid $VERT_LABEL $TITEL";
$style1 = "--color=$COL_CANVAS --color=$COL_BACK --color=$COL_FONT --color=$COL_MGRID --color=$COL_GRID --color=$COL_SHADEA --color=$COL_SHADEB --color=$COL_ARROW --color=$COL_AXIS --color=$COL_FRAME ";

$plot_1 = "DEF:soll=$DB:SOLL:AVERAGE AREA:soll$COL_LINE3";
$plot_2 = "DEF:soll_line=$DB:SOLL:AVERAGE LINE2:soll_line$COL_LINE4:Soll-Temperatur";
$plot_3 = "DEF:ist=$DB:TEMP:AVERAGE";
$plot_4 =  "CDEF:smoothed=ist,3600,TREND SHIFT:smoothed:-1800 LINE2:smoothed$COL_LINE1:Ist-Temperatur";
$plot_5 = "VDEF:maximum=ist,MAXIMUM LINE1:maximum#DDA0DD:Maximum";
$plot_6 = "VDEF:minimum=ist,MINIMUM LINE1:minimum#87CEEB:Minimum";

$para= "graph $pngname --start=$start --end=$end $style $style1 $plot_1 $plot_2 $plot_3 $plot_4 $plot_5 $plot_6";
IPS_ExecuteEx(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $para, true, true,0);


# Ventilstellung
$pngname = "$dirpng/Badezimmer_vent.png";
$VERT_LABEL = "--vertical-label=Prozent";
$TITEL =	"--title=";

$style = "--heigh=100 --width=800 --upper-limit=100 --alt-y-grid $VERT_LABEL $TITEL";
$style1 = "--color=$COL_CANVAS --color=$COL_BACK --color=$COL_FONT --color=$COL_MGRID --color=$COL_GRID --color=$COL_SHADEA --color=$COL_SHADEB --color=$COL_ARROW --color=$COL_AXIS --color=$COL_FRAME ";

$plot_1 = "DEF:ventil_line=$DB:VENTIL:AVERAGE LINE3:ventil_line$COL_GREEN_VENT:Ventilstellung";
$plot_2 = "DEF:ventil=$DB:VENTIL:AVERAGE AREA:ventil$COL_GREEN_VENT1:Soll-Temperatur";

$para= "graph $pngname --start=$start --end=$end $style $style1 $plot_1 $plot_2";

IPS_ExecuteEx(IPS_GetKernelDir()."/rrdtool/rrdtool.exe", $para, true, true,0);
?>

Out-of-the-box wird obiges Script bei dir sicher nicht laufen, da viele Variablen genau auf meine Umgebung hingetrimmt sind. Bisl was brauchbares kannst aber sicher rauslesen.

Hätte noch ein paar andere nette Screenshots, an denen man sieht wie gut es sich optisch ins WF integrieren läßt.
Sind aber von der 2.4 Beta, da krieg ich Schimpf wenn ichs poste.

gruß und viel Erfolg
bb

Ach ja, SQLite braucht keinen eigenen Server, der ist bei IPS automatisch dabei. Das Logging der Daten wird Dir bei entsprechender Einstellung auch abgenommen.

Genau das kenn ich. SQLsonstnochwas, hat mir den PC samt der ganzen Messwerterfassung lahmgelegt. Eine Steuerung von Komponenten war nicht mehr möglich.