RRD_Execute

Hallo,

wäre es nicht interssant, eine Funktion Run/Stop zu haben, mit der man z.B. die Applikation „anhalten“ könnte, wenn man z.B. Umänderungen macht. Das kam mir zu Gedanken, als ich heute morgen mal Umänderungen machen musste, doch dieses ständige Aufpoppen von DOS Fenstern einem andauernd dazwischen funkt ! Einfach auf „STOP“ klicken, und kein Skript wird mehr ausgeführt. Das wäre so wie ein Run/Stop Schalter aus einer SPS !

mfG Franz

Hallo Franz,
was denn für DOS Fenster?
Die php-Scripte öffnen doch keine DOS Fenster.
Hast du interessante Scripte geschrieben?

Thorsten

Hallo,

es sieht so aus, wenn IPS_Execute massiv Speicher auffrisst, und dann irgendwann IPS sich aufhängt wegen Speichermangles.
Um das zu umgehen benutze ich anstelle IPS_Execute den PHP-Befehl „exec“. Doch leider poppt dann jedesmal ein unschönes DOS Fenster auf für die Dauer der Ausführung.
In meinem Fall ist es eben das RRDTool. Ich benutze zur Erstellung aller Grafen nicht das Webinterface, sondern nur das RRDTool ! Jedesmal, wenn ich RRDTool aufrufe, muss das eben per EXEC geschehen !

mfG Franz

Nutz doch einfach die neue RRD_Execute() Funktion.

paresy

Hallo Franz,

ich habe ein ähnliches Problem auf folgende Weise gelöst:

Einfach eine globale Variable stop anlegen und dann bei der Scriptausführung abfragen. Bei Scripten die über den Timer ausgeführt werden, reicht dann die Modifikation des Timerscripts, sonst muss man sich eben die Arbeit machen jedes einzelne Scr…

Ich habe mir mittlerweile eine Script-Datei für allgemeine Definitionen angelegt, die sowieso in jedes andere IPS-Script eingebunden wird. Dort setze ich z.B. auch ein Lock gegen mehrfaches Aufrufen (Semaphore) und andere allgemeine Sachen.

MfG
Fabian

Mann-o-mann, wann habe ich diese Funktion denn verschlafen? Seit wann gibt es die denn? Das muss ich mir sofort ansehen!

und wuuuuuschhhhhh…weg bin ich !

mfG Franz

Hallo,

ich habe gerade ein wenig mit RRD_Execute rumgespielt. Hat das die gleiche Syntax samt Parameter wie IPS_Execute, oder wird das anders angewendet?
Jedesmal, wenn ich IPS_Execute durch RRD_Execute ersetze, dann kriege ich folgende Fehlermeldung:

<b>Warning</b>: Wrong parameter count for rrd_execute() in <b>C:\IP-Symcon\scripts.currentscript</b> on line <b>16</b><br />

mfG Franz

Hallo Franz,

schau Dir doch einfach mal WIIPS aktuell an, da ist es so bereits implementiert.

Gruss Torro

Hallo Torro,

wäre es nicht einfacher, mit nur die Zeile hier reinzukopieren, anstatt ich jetzt das komplette Webinterface installieren muss, nur um mir das anzuschauen? :rolleyes:

update: Ich habe mir kurz die PHP Dateien aus dem Webinterface angeschaut, und konnte nur folgende Zeile finden : „RRD_Execute( $param );“

Da meine PHP Kentinsse hier begrentzt sind, kann ich damit leider nicht viel anfangen ! :frowning:

mfG Franz

Hallo Franz,

das haette ich mit Sicherheit gemacht :mad: , ich habe aber die Dateien hier nicht vorliegen, wo ich gerade bin. Deshalb kann ich Dir auch nur so helfen. Der $param besteht aus dem an RRDTool zu uebergebenden Befehl plus dessen Parameter, also beispielsweise

RRD_Execute ( 'info rrddatei.rrd' );

Damit kannste jetzt sicher etwas anfangen. Die graph etc. Sachen weis sich allerdings nicht aus dem Kopf.

Gruss Torro

Also, ich habe jetzt z.B. eine Zeile die so lautet:

$rrd_dir = "/IP-Symcon/graphs/";

// KITCHEN / DINING ------------------------------------------------------------
$temp_actual = GetValueFloat("KITCH_FHT_ACTUAL_TEMP");
$temp_target = GetValueFloat("KITCH_FHT_TARGET_TEMP");

RRD_Execute('update $rrd_dir'.'kitch.rrd N:$temp_actual:$temp_target');

Dies wird nicht ausgeführt, und ich kriege die Rückmeldung: „RRDTool died…!“
Muss ich jetzt Blumen niederlegen, oder was? :rolleyes:

Was heisst das denn??? :confused:

[edit] ok, habe es gefunden. meine RRD_Tool.exe version war ein wenig zu alt ! Ich habe sie durch die Version vom Webinterface ersetzt, habe dennoch Fehlermeldung, jetzt anderer Art

Jetzt habe ich andauernd folgende Meldung: ERROR: conversion of ‚$temp_actual‘ to float not complete: tail ‚$temp_actual‘[/edit]

mfG Franz

Hallo Franz,

N musst Du durch den tatsaechlichen timestamp ersetzen, der Parameter wird so nicht verarbeitet. Dazu kannste einfach im /web/modules/rrd/exe/RRD_GraphBuilder.ips.php mal nachschauen, wie ich das dort mache.

Und, bevor Du wieder fragst, warum ich das nicht gleich hier poste, ich bin immer noch unterwegs…

Gruss Torro

hmm, komisch ! Dann ist das aber neu in dieser RRD Version. VOrhin hat es immer funktionniert, und zudem, wenn ich den Heartbeat ein wenig überschreite, den ich beim RRD create eingab, dann funktionniert es auch mit „N“.

Ich werde dem mal nachgehen !

mfG Franz

Hallo Franz,

das hat nichts mit dem RRDTool.EXE zu tun, sondern mit dem IPS Modul, welches Du ja nunmehr nutzt. Darin ist eine Queue implementiert, welche sequentiell abarbeitet, und damit wuerde Deine Zeit niemals stimmen, wenn Du mehrere Befehle an RRD uebergibst.

Desweiteren haben sich einige Aenderungen im RRD selbst ergeben, da musst Du aber bitte mal auf Tobis Page schauen. Es sind auch noch einige Bugs drin in der jetzigen Version. Die alte geht nicht, weil sie keine Kommandozeilenuebergabe ausfuehrte, das war ein Bug darin.

Gruss Torro

Also, wenn ich das richtig verstehe, muss ich zu beginn des Skriptes einen Timestamp definieren, dass dann auch alle RRD_Executes den gleichen Timestamp kriegen, oder wie muss ich das verstehen?

Ja, ich bin gerade auf Tobis Webseite, wurde bislang noch nicht fündig !

Ja, wie ich sehe, sind deren Änderungen dann mehr in IPS getätigt worden.

mfG Franz

Hallo Franz,

genau.

[/quote]
Ja, ich bin gerade auf Tobis Webseite, wurde bislang noch nicht fündig !

Ja, wie ich sehe, sind deren Änderungen dann mehr in IPS getätigt worden.

mfG Franz[/quote]

Neu ist in IPS das RRD Modul, welches alle an RRDTool zu uebergebenden Befehle queued und direkt an RRDTool.EXE uebergibt.

Gruss Torro

Hallo,

also ich habe jetzt das neue RRDTool benutzt ohne das IPS-eigene Modul, und dann funktionniert es tadellos.
Da ich, ehrlich gesagt, mich auf der Stelle bewege, würde ich mich freuen, ob jemand mal hier ein wenig mehr zu der Syntax und Fehlermeldungen vom RRD_Execute Modul sagen könnte.
Tut mir leid, Torro, ich bewundere deine PHP Kentnisse, doch soweit versteh ich das nicht, wie du es mit dem Timestamp hinkriegst, mit mktime, usw… Dafür reichen meine PHP Kentnisse nicht !
Ich habe es versucht, meine RRD Datenbank per definierten Timestamp zu updaten, doch ich kriege dann immer folgende Fehlermeldung:

ERROR: conversion of ‚$temp_actual‘ to float not complete: tail ‚$temp_actual‘
ERROR: conversion of ‚$temp_actual‘ to float not complete: tail ‚$temp_actual‘
ERROR: conversion of ‚$temp_actual‘ to float not complete: tail ‚$temp_actual‘
ERROR: illegal attempt to update using time 115126465 when last update time is 1151264555 (minimum one second step)
ERROR: illegal attempt to update using time 115126465 when last update time is 1151264555 (minimum one second step)

Bitte ehrlich um eine genauere Beschriebung diese Modul, sonst muss ich eben bei EXEC bleiben ! :frowning:

mfG Franz

Hallo,

stell doch bitte mal Dein Script hier ein, damit man sieht, was Du denn genau machst.

Gruss Torro

Das Skript sieht folgendermassen aus:

$rrd_dir = " /IP-Symcon/graphs/";

// KITCHEN / DINING ------------------------------------------------------------
$temp_actual = GetValueFloat("KITCH_FHT_ACTUAL_TEMP");
$temp_target = GetValueFloat("KITCH_FHT_TARGET_TEMP");

$parameter = 'update'.$rrd_dir.'kitch.rrd N:$temp_actual:$temp_target';
RRD_Execute ($parameter);

Dann folgen noch weiter 11 Räume, ist aber immer das gleiche!

Die RRD Datenbank habe ich mit folgender Zeile generiert:

rrdtool create kitch.rrd --step 300 DS:actual:GAUGE:600:0:100 DS:target:GAUGE:600:0:100 RRA:AVERAGE:0.5:1:2304

Dabei werde ich nicht klug aus folgendem:

Ich habe den Skript Timer auf 300 Sekunden, also kommt dem „Heartbeat“ gleich, den ich eingab, nur wird die Datenbank nicht beschrieben, sondern nur nach Ablauf eines zweiten 300 Sekunden Zyklus? Und dann wird natürlich den Wert „NaN“ jedesmal eingetragen, da die Zeit abgelaufen ist !

Ich weis nicht was da schiefläuft. Das muss dann wohl mit dem RRD_Execute zusammen hängen

mfG Franz

ok, keine Antwort ist auch eine Antwort. Dann werde ich eben bei meinem alten RRD bleiben. Das tut ja auch seinen Dienst. Das DOS Fenster Aufpoppen kann ich verkraften.

mfG Franz