MySQLData V2 für IPS V2

Hi

Unknown MySQL server host '{192.168.115.1}

Bist Du sicher, daß das die IP des Rechners ist, auf dem die Datenbank installiert ist??, für mich klingt das eher nach Netzwerk Router bzw. Gateway zum Internet.

mfg

Bernd

Nein, der Router ist die 3, das stimmt schon so. Mit localhost gehts ja auch nicht.

Hallo Jürgen,
was hat den dein MySQL-Server für einen Port? Ich hätte jetzt hinter der IP-Adresse noch etwas erwartet; z.B. 192.168.115.1:85

viele Grüße
Otto

Port ist3306, aber auch damit gleicher Fehler

… kannst Du mal deine Einträge in mysql.php (steht im mysqldata-verzeichnis) nachschauen; da findest Du in den ersten Zeilen

$MySQLHost=„localhost“;
$username=„xyz“;
$password=„212223“;

die Daten zum IPS-user der MySQL-DB; stimmen die?

Gruß
Otto

Ich glaub, ich hab den Fehler. Ich hatte das Verzeichnis mysqldata2.0.2 im web-Verzeichnis. Damit gings nicht. Das Verzeichnis mysqldata dagegen funktioniert zumindest soweit, das ich die index.php aufrufen kann. Dort werden aber keine Variablen zur Auswahl angezeigt. Irgendwo liegt noch ein Fehler. Jemand eine Idee?
Gruß
Jürgen

Hallo @ alle

Wenn ich eine Boolean Variable aufzeichnen will erhalte ich diese Fehlermeldung:

Warning: Out of memory in D:\IP-Symcon2\scripts\MySQLDataExport.ips.php on line 22

Fatal error: Maximum execution time of 150 seconds exceeded in D:\IP-Symcon2\scripts\MySQLDataExport.ips.php on line 23

und es werden keine Daten mehr in mysql aufgezeichnet.
Wer kann mir weiter helfen?

ach ja Zeile
19:$counter = GetValue(VarMySQLDataCounter);
20:If ($counter >= 4 ) {
21: $select = „SELECT * FROM dataconf“;
22: SetValue(VarMySQLDataCounter, 0);
23: $polltime = 5;

mfg
Norbert

Hallo Norbert,

keine Ahnung, nur so viel, wo so eine { aufgeht, geht sie auch irgendwo wieder zu }

19:$counter = GetValue(VarMySQLDataCounter);
20:If ($counter >= 4 ) {
21: $select = "SELECT * FROM dataconf";
22: SetValue(VarMySQLDataCounter, 0);
23: $polltime = 5; }

Vielleicht so.

So, ich hab alles noch einmal neu installiert und siehe da, es klappt fast.
Ich kann Variable auswählen aber keine Grafiken erstellen. Beim ausführen der MySQLDataExport kommt folgende Fehlermeldung:
Fatal error: Cannot redeclare getvalue() in [MySQLDataExport] on line 55
Das script ist als fehlerhaft markiert. Ich hoffe, jemand hat auch für diese, hoffentlich letzte Hürde eine Idee.
Gruß
Jürgen

Hallo Jürgen,

kannst du bitte mal das komplette Skript MySQLDataExport.ips.php posten, bei mir endet das Skript in Zeile 53…

Hallo Werner,

bzgl. deines Postings

muss ich dir leider wiedersprechen!

Im PHP-Handbuch (guckst du hier: PHP: Installation - Manual) steht im Abschnitt Installation on Windows Systems im Part PHP 5+ geschrieben:

MySQL is no longer enabled by default, so the php_mysql.dll DLL must be enabled inside of php.ini. Also, PHP needs access to the MySQL client library. A file named libmysql.dll is included in the Windows PHP distribution and in order for PHP to talk to MySQL this file needs to be available to the Windows systems PATH.
Also müsste auch bei dir irgendwo die libmysql.dll zu finden sein.

Hallo Norbert

Bitte gib’ mir mal ein paar mehr Details:

  • Hattest du vorher schon andere Variablen (Int, Float) eingerichtet
  • Wurden diese einwandfrei aufgezeichnet?

Hast du ein Admintool für deinen mySQL-Server (z.B. MySQLAdmin)?

Wenn ja, kannst du dann bitte mal prüfen, ob die Konfiguration konsistent ist.
Zu jedem Eintrag in der Tabelle ‚dataconf‘ muss sich eine entsprechende Spalte in der Tabelle ‚data‘ befinden (die Datenspalten in ‚data‘ tragen als Namen die ID-Nummern der IPS-Variablen, die finden sich dann auch wieder in der ‚dataconf‘-Tabelle).

Deine Fehlermeldung an sich scheint mir nur ein sekundärer Fehler zu sein, denn eigentlich passiert in diesen Zeilen nix:


18: $counter = GetValue(VarMySQLDataCounter);
19: If ($counter >= 4 ) {
20:     $select = "SELECT * FROM dataconf";
21:     SetValue(VarMySQLDataCounter, 0);
22:     $polltime = 5;
23: } else {
24:     $select = "SELECT * FROM dataconf WHERE polltime='1'";
25:     SetValue(VarMySQLDataCounter, $counter + 1);
26:     $polltime = 1;
27: }
28:
29: $vardat = mysql_query($select);

In diesem Block wird nur anhand der Variable „MySQLDataCounter“ ermittelt, in welchem Polling-Intervall MySQLData sich befindet (Zeile 22 bzw. 26), was in der Var. $polltime gespeichert wird sowie ein entsprechender SELECT-Befehl für die Variablenauswahl erzeugt (Zeile 20 bzw. 24) und der MySQLDataCounter wird um 1 erhöht (Zeile 21 bzw. 25).
Erst in Zeile 29 wird die Datenbank dann angezapft um die abzufragenden Variablen zu ermitteln…

Hallo Thorsten

zu deiner frage:

  • Hattest du vorher schon andere Variablen (Int, Float) eingerichtet
  • Wurden diese einwandfrei aufgezeichnet?

Int, Float wurden fehlerfrei aufgezeichnet.

mfg
Norbert

Hallo Thorsten,
hier das script:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : MySQLDataExport.ips.php
Trigger  : 
Interval : 
*/
$MySQLHost="localhost";
$username="root";
$password="xxxx

$link = mysql_connect($MySQLHost, $username, $password) or die("Keine Verbindung möglich!");
mysql_select_db("ipsdata") or die("Auswahl der Datenbank fehlgeschlagen");

$counter=GetValueInteger("MySQLDataCounter");
If ($counter >= 4 ) {
   $select="SELECT * FROM dataconf";
   SetValueInteger("MySQLDataCounter",0);
   $polltime=5;
   }
   else {
   $select="SELECT * FROM dataconf where polltime='1'";
   SetValueInteger("MySQLDataCounter",$counter+1);
   $polltime=1;
}
   
$vardat=mysql_query($select);
$insert = "INSERT INTO data SET date='".date("Ymd")."', time='".date("His")."', polltime='".$polltime."'";

while ($row = mysql_fetch_array($vardat)){
   $insert=$insert.", `".$row['ipsvar']."`='".GetValue($row['ipsvar'],$row['vartype'])."'";
}

//echo $insert;
$query = mysql_query($insert);
mysql_close($link);

function GetValue($var, $vartype){
 if (IPS_VariableExists($var)) {
  if ($vartype == "Boolean"){
    $help=GetValueBoolean($var);
    if (!$help) { return 0;} else {return 1;}
    }
  elseif ($vartype == "Float"){
    return GetValueFloat($var);
    }
  elseif ($vartype == "Integer"){
    return GetValueInteger($var);
    }
 }
IPS_LogMessage("MySQLDataExport Script","Die IPS Variable '".$var."' existiert nicht mehr. Bitte aus der Poller Konfiguration entfernen ! Es wurde eine 0 in die Datenbank geschrieben");
return 0;
}
?> 

Hallo Thorsten,

glaube ich Dir, ich bin ja auch gleich auf die Suche gegangen damit ich das Jürgen verfizieren kann aber ausser in meine PHP-Komplettarchiven auf meinem Filesystem kann ich die nirgends finden. Glaube mir ich bin im Moment auch ein wenig ratslos.

Aber zumindest hast Du wieder was gefunden und es in der install.txt oder install.php zu überprüfen.

Sorry für die Umstände. Ich gehe jetzt nochmal auf die Suche der libmysql.dll :smiley:

Hallo Jürgen,

du hast definitiv noch das MySQLDataExport-Skript aus der V1 im Einsatz!
In diesem Skript wird am Ende eine Funktion namens GetValue definiert, die es in IPS V2 aber bereits gibt, daher die Fehlermeldung…
Bitte nimm das Skript aus dem Komplettpaket (siehe erstes Posting in diesem Thread) und tausche dein altes gegen das entsprechende neue aus - dann sollte das auch mit der Aufzeichnung funktionieren :wink:

Hallo Norbert,

hast du auch mal die mySQL-Datenbank überprüft? Ist dort alles korrekt und stimmig (jeder Eintrag in dataconf muss eine Spalte in data haben und umgekehrt).

Im Moment kann ich mir keinen Reim auf dein Problem machen. Was mich stutzig macht ist der „angebliche“ Speicherfehler. So etwas passiert meist nur in Schleifen. Das einzige was in dieser Ecke des Skripts speicher braucht ist das Ergebnis des mysql_query-Aufrufs… :confused:

Hallo Thorsten
in der mySQL-Datenbank wird in dataconf ein Eintrag gemacht , aber in der data nicht .
Ab diesen Zeitpunkt wird in der data garkein Eintrag mehr gemacht.

mfg
Norbert

Hallo Thorsten,
oh, ist das peinlich. Ich habe das Paket in das entsprechende Verzeichnis entpackt und vergessen, das neue script mit dem Editor hochzuladen. Jetzt klappt es bestens. Vielen Dank für die Tipps und viele Grüsse
Jürgen

Hallo zusammen und frohe weihnachten @all

Habe heute (eben) dieses Projekt mal installiert und bin absolut begeistert davon, installieren kann das nun wirklich jeder.

Ich habe das mit kleinen fehlern (selbst verursacht) sehr leicht und verständlich aus der install.txt installiert!

@bruns8234
kompliment großartige leistung das so leicht und verständlich für den nutzer zu programmieren und rüber zubringen!!

@paresy -> wenn nicht schon vorhanden sollte es in das wiki (meine meinung)!

Einen kleinen unbedeutenden schönheitsfehler hat das install.txt denke ich schon.

Unter Punkt 8.
„Einen Timer anlegen, der das Skript „MySQLDataExport.ips.php“ minütlich aufruft“

denke es sollte

Einen Timer anlegen, der das Skript „MySQLDataExport“ minütlich aufruft

heissen.

Aber wie gesagt ich als NO PHP Kenntnis Experte habe das auch hingekriegt!

Nochmal super Leistung und tolles Projekt.:):):slight_smile:

Gruß Michael