Reporting mit Graphen und MySQL on Demand

Hallo elektrofreak.

Habe dein Tool seit 3 Tagen am laufen und hatte bis dato keine Probleme damit.

Seit heute bekomme ich bei den Tages- und Multicharts folgenden Fehler:

JpGraph Error Graph::SetScale(): Dar Maximalwert muss größer sein als der Mindestwert.

Der Stundenchart klappt einwandfrei.

Fällt Dir dazu was ein?

Des weiteren fände ich es genial wenn man dein Tool ähnlich ausbauen würde wie WIIPS, also so eine Art mySQL-WIIPS. Die mySQL-Datenbank ist ja schon genial, aber mit der Oberfläche von Torro´s WIIPS, gerade was die Funktionen der Menüführung und die Graphen betrifft, wäre es der absolute Renner.

Hallo,

weis jemand welche GD2lib.DLL ich fürdir aktuelle IP-Symcon brauche? Und wo ich die her bekomme?

Vielen Dank

Hallo manfred,

steht im Thread von paresy bezgl. Update http://www.ip-symcon.de/forum/showpost.php?p=14543&postcount=1.

Komplettes php laden, entpacken und die passenden Extensions in das IPS-Verzeichnis.

Hallo zusammen,

naja beim Stricken entstehen auch schonmal Laufmaschen. Ich habe die mal korrigiert.

Fix: Letzter Tag des Monats. Die Graph Scripten glaubten wohl das es den 32.08. gibt :smiley:

Ich hoffe das wars jetzt erstmal:
Es müssen nur die Dateien chartgen.php, chartdgen.php und multigen.php ausgetauscht werden. Anbei das ganze Paket.

Ich habe noch einen Fix eingebaut. Falls Ihr mal eine Variable im IPS löscht und dies nicht in der Pollerkonfiguration, wird das nun abgefangen und eine 0 wird geschrieben (Vorher wurden keine Daten mehr geschrieben). Zusätzlich gibt es auch noch eine Fehlermeldung im Kernel unter Custom welche Variable mucken macht. Bitte auch das IPS Script austauschen.

*** www.apfelstiege.de/ips/mysqldata1.0.5.zip ***

@wgreipl: Zum Thema WIIP hatte ich schon einen kurzen Kontakt zu Torro, da sollte Torro aber bitte ein Statement zu abgeben.

Gruß

Oliver

Hallo elektrofreak,

das haettest Du ja auch selbst schreiben koennen. So wie ich Oliver verstanden habe, hat er keine Zeit, sich damit so zu beschaeftigen, dass im WIIPS dies zur Verfuegung stehen koennte.

Nun koennten wir das ja einbauen, aber welchen Zweck hat das. Damit wir hier nicht vom Thema abdriften, habe ich einen neuen Thread hieraufgemacht. Ich bitte um rege Beteiligung, auch von Dir, Oliver.

Gruss Torro

Hallo zusammen,

nur ne kurze Fragen, läuft es jetzt bei euch ohne Fehler ? MSR hat wohl immer noch den 31. Bug und ich weis halt nicht warum. Gibt es noch mehr die noch Probleme haben ?

Danke Gruß

Oliver

@elektrofreak

Nein kein Fehler mehr seit dem update 4

@elektrofreak

Keine Probleme, läuft super…:slight_smile: (Update 5)

Hallo zusammen,

Dank Paresy gibt es jetzt ja neue SYS Befehle :smiley: :smiley: . Die habe ich mal direkt verwendet um die Systemwerte in MySqlData zu integrieren.

Dafür git es nun ein neues Script. Einfach anlegen und den Suffix für die Variable bestimmen und $initial auf true setzen.

Achtung: Danach werden dann eine Menge IPS Variablen angelegt die dann mit dem Suffix beginnen.
Bei mir z.B. SysMemPhysical… wobei Sys der Suffix ist.

Nach dem ersten Ausführen, einfach $initial auf false setzen und das Script über den Timer jede Minute ausführen lassen. Danach braucht ihr nur noch die Variablen in der PollerKonfiguration von MySQLData anlegen.

Übrigens, ich übernehme natürlich keine Haftung für mein Gestricke.

PS: Alle Memory Angaben sind in MB !

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : SystemInfo.ips.php
Trigger  : 
Interval : 
*/

$suffix="Sys";
$initial=false;

// IPS Process Info in IPS Variablen schreiben

if ($initial) {
$IpsIntVars=array($suffix."IpsHandlecount",$suffix."IpsNumthreads",$suffix."IpsVirtualsize",
      $suffix."IpsWorkingsize",$suffix."IpsPagefile",$suffix."ProcessCount");
varfloatcheck($IpsIntVars);
}

$PInfo=Sys_GetProcessInfo();
SetValueFloat($suffix."IpsHandlecount",(Float)$PInfo["IPS_HANDLECOUNT"]);
SetValueFloat($suffix."IpsNumthreads",(Float)$PInfo["IPS_NUMTHREADS"]);
SetValueFloat($suffix."IpsVirtualsize",(Float)$PInfo["IPS_VIRTUALSIZE"]);
SetValueFloat($suffix."IpsWorkingsize",(Float)$PInfo["IPS_WORKINGSETSIZE"]);
SetValueFloat($suffix."IpsPagefile",(Float)$PInfo["IPS_PAGEFILE"]);
SetValueFloat($suffix."ProcessCount",(Float)$PInfo["PROCESSCOUNT"]);

// System Memory Info in IPS Variablen schreiben
if ($initial) {
$IpsIntVars=array($suffix."MemTotalPysical",$suffix."MemAvailPhysical",
   $suffix."MemTotalPageFile",$suffix."MemAvailPageFile",$suffix."MemTotalVirtual",
   $suffix."MemAvailVirtual");
varfloatcheck($IpsIntVars);
}
$MInfo=Sys_GetMemoryInfo();
SetValueFloat($suffix."MemTotalPysical",round($MInfo["TOTALPHYSICAL"]/1024/1024,0));
SetValueFloat($suffix."MemAvailPhysical",round($MInfo["AVAILPHYSICAL"]/1024/1024,0));
SetValueFloat($suffix."MemTotalPageFile",round($MInfo["TOTALPAGEFILE"]/1024/1024,0));
SetValueFloat($suffix."MemAvailPageFile",round($MInfo["AVAILPAGEFILE"]/1024/1024,0));
SetValueFloat($suffix."MemTotalVirtual",round($MInfo["TOTALVIRTUAL"]/1024/1024,0));
SetValueFloat($suffix."MemAvailVirtual",round($MInfo["AVAILVIRTUAL"]/1024/1024,0));

// System CPU Info in IPS Variablen schreiben
if ($initial) {
$IpsIntVars=array($suffix."CPU0",$suffix."CPUAverage",);
varfloatcheck($IpsIntVars);
}
$CPUInfo=Sys_GetCPUInfo();
SetValueFloat($suffix."CPU0",(Float)$CPUInfo["CPU_0"]);
SetValueFloat($suffix."CPUAverage",(Float)$CPUInfo["CPU_AVG"]);

// System DD Info in IPS Variablen schreiben

$HDDInfo=Sys_GetHardDiskInfo();
$HD=0;
while ($HD < $HDDInfo["NUMDRIVES"]){
 if ($initial) {
  $IpsIntVars=array($suffix."Hdd".$HD."TotalMem",$suffix."Hdd".$HD."FreeMem",);
  $IpsStrVars=array($suffix."Hdd".$HD."Letter",$suffix."Hdd".$HD."Label",);
  varfloatcheck($IpsIntVars);
  varstrcheck($IpsStrVars);
 }
  SetValueFloat($suffix."Hdd".$HD."TotalMem",round($HDDInfo["HDD".$HD]["TOTAL"]/1024/1024,0));
  SetValueFloat($suffix."Hdd".$HD."FreeMem",round($HDDInfo["HDD".$HD]["FREE"]/1024/1024,0));
  SetValueString($suffix."Hdd".$HD."Letter",(string)$HDDInfo["HDD".$HD]["LETTER"]);
  SetValueString($suffix."Hdd".$HD."Label",(string)$HDDInfo["HDD".$HD]["LABEL"]);
$HD=$HD+1;
}

function varfloatcheck($var){
$i=0;
while ($i < count($var)){
  if (!IPS_VariableExists($var[$i])) {
    if (IPS_CreateVariable((string)$var[$i],"Float")) {
      echo $var[$i]."/Float wurde angelegt
";
    }
    else {
       echo $var[$i]."/Float konnte nicht angelegt werden
";
    }
  }
  else {
    echo $var[$i]." existiert bereits
";
  }

$i=$i+1;
}
}

function varstrcheck($var){
$i=0;
while ($i < count($var)){
  if (!IPS_VariableExists($var[$i])) {
    if (IPS_CreateVariable((string)$var[$i],"String")) {
      echo $var[$i]."/String wurde angelegt
";
    }
    else {
       echo $var[$i]."/String konnte nicht angelegt werden
";
    }
  }
  else {
    echo $var[$i]." existiert bereits
";
  }

$i=$i+1;
}
}
?>

Gruß
Oliver

Hallo zusammen,

ich habe das Script noch um die Netzwerkkarten erweitert. Das Loopback Interface wird nicht angelegt. Die IPS Systemdaten werden jetzt in MB Angezeigt. Die Netzwerkdaten sind in KB angelegt.
Die Installation geht genau so wie das Script davor.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : SystemInfo.ips.php
Trigger  : 
Interval : 
*/

$suffix="Sys";
$initial=true;

// IPS Process Info in IPS Variablen schreiben

if ($initial) {
$IpsIntVars=array($suffix."IpsHandlecount",$suffix."IpsNumthreads",$suffix."IpsVirtualsize",
      $suffix."IpsWorkingsize",$suffix."IpsPagefile",$suffix."ProcessCount");
varfloatcheck($IpsIntVars);
}

$PInfo=Sys_GetProcessInfo();
SetValueFloat($suffix."IpsHandlecount",(Float)$PInfo["IPS_HANDLECOUNT"]);
SetValueFloat($suffix."IpsNumthreads",(Float)$PInfo["IPS_NUMTHREADS"]);
SetValueFloat($suffix."IpsVirtualsize",round($PInfo["IPS_VIRTUALSIZE"]/1024/1024,0));
SetValueFloat($suffix."IpsWorkingsize",round($PInfo["IPS_WORKINGSETSIZE"]/1024/1024,0));
SetValueFloat($suffix."IpsPagefile",round($PInfo["IPS_PAGEFILE"]/1024/1024,0));
SetValueFloat($suffix."ProcessCount",(Float)$PInfo["PROCESSCOUNT"]);

// System Memory Info in IPS Variablen schreiben
if ($initial) {
$IpsIntVars=array($suffix."MemTotalPysical",$suffix."MemAvailPhysical",
   $suffix."MemTotalPageFile",$suffix."MemAvailPageFile",$suffix."MemTotalVirtual",
   $suffix."MemAvailVirtual");
varfloatcheck($IpsIntVars);
}
$MInfo=Sys_GetMemoryInfo();
SetValueFloat($suffix."MemTotalPysical",round($MInfo["TOTALPHYSICAL"]/1024/1024,0));
SetValueFloat($suffix."MemAvailPhysical",round($MInfo["AVAILPHYSICAL"]/1024/1024,0));
SetValueFloat($suffix."MemTotalPageFile",round($MInfo["TOTALPAGEFILE"]/1024/1024,0));
SetValueFloat($suffix."MemAvailPageFile",round($MInfo["AVAILPAGEFILE"]/1024/1024,0));
SetValueFloat($suffix."MemTotalVirtual",round($MInfo["TOTALVIRTUAL"]/1024/1024,0));
SetValueFloat($suffix."MemAvailVirtual",round($MInfo["AVAILVIRTUAL"]/1024/1024,0));

// System CPU Info in IPS Variablen schreiben
if ($initial) {
$IpsIntVars=array($suffix."CPU0",$suffix."CPUAverage",);
varfloatcheck($IpsIntVars);
}
$CPUInfo=Sys_GetCPUInfo();
SetValueFloat($suffix."CPU0",(Float)$CPUInfo["CPU_0"]);
SetValueFloat($suffix."CPUAverage",(Float)$CPUInfo["CPU_AVG"]);

// System HDD Info in IPS Variablen schreiben

$HDDInfo=Sys_GetHardDiskInfo();
$HD=0;
while ($HD < $HDDInfo["NUMDRIVES"]){
 if ($initial) {
  $IpsIntVars=array($suffix."Hdd".$HD."TotalMem",$suffix."Hdd".$HD."FreeMem",);
  $IpsStrVars=array($suffix."Hdd".$HD."Letter",$suffix."Hdd".$HD."Label",);
  varfloatcheck($IpsIntVars);
  varstrcheck($IpsStrVars);
 }
  SetValueFloat($suffix."Hdd".$HD."TotalMem",round($HDDInfo["HDD".$HD]["TOTAL"]/1024/1024,0));
  SetValueFloat($suffix."Hdd".$HD."FreeMem",round($HDDInfo["HDD".$HD]["FREE"]/1024/1024,0));
  SetValueString($suffix."Hdd".$HD."Letter",(string)$HDDInfo["HDD".$HD]["LETTER"]);
  SetValueString($suffix."Hdd".$HD."Label",(string)$HDDInfo["HDD".$HD]["LABEL"]);
$HD=$HD+1;
}

// System Net Info in IPS Variablen schreiben

$NetInfo=Sys_GetNetworkInfo();
$Net=0;
while ($Net < count($NetInfo)){
 if ($initial && $NetInfo[$Net]["MAC"]<>"00-00-00-00-00-00") {
   $IpsIntVars=array($suffix."Net".$Net."InSec",$suffix."Net".$Net."InAvgSec",
    $suffix."Net".$Net."InPeakSec",$suffix."Net".$Net."InTotal",
    $suffix."Net".$Net."OutSec",$suffix."Net".$Net."OutAvgSec",
    $suffix."Net".$Net."OutPeakSec",$suffix."Net".$Net."OutTotal",);

  $IpsStrVars=array($suffix."Net".$Net."IP",$suffix."Net".$Net."Mac",);
  varfloatcheck($IpsIntVars);
  varstrcheck($IpsStrVars);
 }
 if ($NetInfo[$Net]["MAC"]<>"00-00-00-00-00-00") {
  SetValueFloat($suffix."Net".$Net."InSec",round($NetInfo[$Net]["InPerSec"]/1024,3));
  SetValueFloat($suffix."Net".$Net."InAvgSec",round($NetInfo[$Net]["AverageInPerSec"]/1024,0));
  SetValueFloat($suffix."Net".$Net."InPeakSec",round($NetInfo[$Net]["PeakInPerSec"]/1024,0));
  SetValueFloat($suffix."Net".$Net."InTotal",round($NetInfo[$Net]["InTotal"]/1024,0));
  SetValueFloat($suffix."Net".$Net."OutSec",round($NetInfo[$Net]["OutPerSec"]/1024,3));
  SetValueFloat($suffix."Net".$Net."OutAvgSec",round($NetInfo[$Net]["AverageOutPerSec"]/1024,0));
  SetValueFloat($suffix."Net".$Net."OutPeakSec",round($NetInfo[$Net]["PeakOutPerSec"]/1024,0));
  SetValueFloat($suffix."Net".$Net."OutTotal",round($NetInfo[$Net]["OutTotal"]/1024,0));

  SetValueString($suffix."Net".$Net."IP",(string)$NetInfo[$Net]["IP"]);
  SetValueString($suffix."Net".$Net."Mac",(string)$NetInfo[$Net]["MAC"]);

 }
$Net=$Net+1;
}


function varfloatcheck($var){
$i=0;
while ($i < count($var)){
  if (!IPS_VariableExists($var[$i])) {
    if (IPS_CreateVariable((string)$var[$i],"Float")) {
      echo $var[$i]."/Float wurde angelegt
";
    }
    else {
       echo $var[$i]."/Float konnte nicht angelegt werden
";
    }
  }
  else {
    echo $var[$i]." existiert bereits
";
  }

$i=$i+1;
}
}

function varstrcheck($var){
$i=0;
while ($i < count($var)){
  if (!IPS_VariableExists($var[$i])) {
    if (IPS_CreateVariable((string)$var[$i],"String")) {
      echo $var[$i]."/String wurde angelegt
";
    }
    else {
       echo $var[$i]."/String konnte nicht angelegt werden
";
    }
  }
  else {
    echo $var[$i]." existiert bereits
";
  }

$i=$i+1;
}
}

?>

Gruß

Oliver

Hallo zusammen,

es gibt einen neuen Sommer/Winterzeit Fix.
Danke an MSR_Junky für den Hinweis.

www.apfelstiege.de/ips/mysqldata1.0.6.zip

Für ein Update von 1.0.5 auf 1.0.6 sind die Dateien auszutauschen:

chartgen.php
chartdgen.php
multigen.php
chartautogen.php

Gruß

Oliver

PS: @ MSR_Junky Habe leider die Änderungen nicht mehr gefunden. Wenn du aber die oben genannten Dateien austauschst wird es rennen :slight_smile:

Hallo zusammen!

Ich hab mir auch mal die Mysql-Lösung installiert.
Ich muss schon zugeben, es gefällt mir sehr gut.

Einen Punkt hab ich mir allerdings noch dazugestrickt.
Da bei mir die Sensoren nicht immer die korrekten Werte liefern, habe ich der Sensortabelle einfach eine zusätzliche Spalte „KorrekturWert“ hinzugefügt.
Dort trage ich dann entsprechende Werte ein die dann dem jeweiligen Messpunkt hinzugerechnet werden.

Ansonsten „alle Achtung“

mfg Marco

Bevor ichs vergesse!

Das darstellen des Graphen funktioniert bei mir mit Opera nicht!
Sobald ich aber IE nehme funkt es einwandfrei.

Woran kann das liegen?
Es scheint als ob er den Graphen irgendwo cached.

Weiß dazu jemand eine Lösung?

Danke
Marco

hast du den cache runtergeregelt und auf „immer neu laden eingestellt“? das war bei meinem ipshomecontrol früher auch immer das problem (statusbild der geräte wurde nicht aktualisiert).

vielleicht ist es ja hier auch das problem?!?

Hallo Marco,

speicherst du die veränderten Werte (Faktor) in der Datenbank oder berechnest Du diese beim Auslesen ?

Mit dem Browser keiner Ahnung ich nutze den Firefox da gehts auch.

Gruß
Oliver

Hallo,
also ich bin absoluter neuling hier…dies schonmal vorweg…
ich habe mir alles runtergeladen… jedoch komme ich einfach nicht
weiter… was muss nun wie installiert werden?! komme mit der kurz-
anleitung nicht zurecht…

was ich bisher verstanden habe… ich muss eine mysql datenbank installieren,
habe mir also mysql 5.X runtergeladen und installiert…
die scheint zu laufen…

aber wie geht es nun weiter? was ist ein webordner in ips und wie kommen die daten nun erstmal in die datenbank?!

ich weiss…viele fragen…hoffe ihr helft mir…habe mir ips hauptsächlich gekauft damit ich meine terrarien graphisch überwachen kann…

LG

bin nun schon soweit das er die daten scheinbar in die datenbank packt…jippihhh

jetzt muss ich eigentlich nur noch eine php_gd2.dll finden die passt… naja mal schauen :smiley: falls mir da jemand eine schicken kann wäre ich sehr dankbar !
php version 5.1.6

habe schon alle links im forum verfolgt aber ich finde einfach diese dll nicht…

im php Museum findest du alles was du brauchst…

Gruß,

Toni

hallo,
ich bin begeistert…denn es läuft :wink:
wirklich wunderbar…
werde als nächstes mal schauen ob man die chartautogen so anpassen kann das sie auch einen zeitraum von 5 tagen usw erstellen kann… mal schauen ob das mit meinen programmierkenntnissen hinhaut.
oder hat das jemand schon mal gemacht und kann mir evtl tips geben? was ich auch noch suche… eine automatische erzeugung für ein multichart… geht das?
bin für jede hilfestellung dankbar…
warum ich das brauche… weil ich diese grafiken im designer verwende und da nur „platz für eine grafik“ ist…

freue mich über eure hilfe! wirklich ein tolles forum

Hallo pinki99,

teste einfach mal WIIPS, da ist das alles drin, und in Kuerze noch viel mehr.

Gruss Torro