Reporting mit Graphen und MySQL on Demand

Hallo Oliver,

super Arbeit, strickt fast ohne Probleme.:smiley:

Ich habe nur ein Problem bei Bool Variablen. Dort steht dann im SQL Statement MB_Garten_Halogen.Status=’’ wenn sie false ist, und der mysql gibt dann eine Fehlermeldung aus, dass dies kein gültiger Integer Wert ist.

Hast du eine Idee?

Grüße, Keule

Hallo Keule,

kann ich nicht bestätigen.

Bei mir ist es die Teichpumpe. False=0 und True=1 in der DB und wird dann auch so in der Auswertung angezeigt.

… „irdendwie“ hatte ich auch Probleme mit True und False.
Als „Notlösung für Helden“ habe ich die Variable in Integer umgewandelt.

MST

Hallo Keule,

hast du einen Punkt im Variablennamen?? Der machte bei mir auch Ärger.

Gruß
Thomas

Ja da hatte ich auch schonmal drüber nachgedacht.
Ich muß jetzt jedoch erstmal meine Stellaktoren für die Heizung bauen der Winter wird einkehren.

Gruß
Oliver

Hallo Keule,

hattest Du das Update nochmal eingespielt ?
Wo kommt die Fehlermeldung ? Im IPS Script oder auf dem Webfrontend ?
@Steiner was und wo hast du was geändert ?
Ich habe das Problem mit den Bools nicht.

Gruß

Oliver

Hallo Thomas,

ich könnte ja mal ein Script, ich würde da Stundenauswertung vogschlagen, so umbauen, dass du automatisch die Letzten 24 Stunden angezeigt bekommst. Übergeben brauchst du dann nur den Exakten Variablen Namen. Würde dir das reichen ?

Gruß

Oliver

Hallo Thomas,

anbei etwas schnelles aus meiner Strickmaschine:

Einfach die URL mit den Variablen aufrufen dann kommen die Graphen der letzten zwei Tage. Bitte alle Variablen mit einem Komma trennen. Kannst du auch auf das Multichart adaptieren denke ich. Ich hoffe das reicht Dir so. :smiley:

./chartautogen.php?fselect=Temp_Kamin,Temp_Arbeiten :cool:

Gruß

Oliver

chartautogen.zip (1.93 KB)

Hi Olli,

deine Strickmaschine arbeitet perfekt :stuck_out_tongue: Genauso wie ich mir das gedacht habe.

Besten Dank, jetzt kann ich weiterhäckeln :wink:

Gruß
Thomas

Hallo zusammen,

ich habe nochmal ein paar Kleine Fixes vorgenommen und ein Addon für MSR gestrickt.

Fixes:
Alle Selection funktioniert jetzt wieder.
Sonderzeichen in Variablen funktionieren jetzt auch.
neues Script chartautogen.php siehe install.txt

Jetzt muss ich mich aber um meine Heizung und Lüftungssteuerung kümmern.

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

Gruß

Oliver

Hallo Oliver,

ich habe mir per Echo das SQL Statement aus dem IPS geholt und im mysql direkt ausgeführt, dort kommt dann der Fehler. Im IPS sieht man den Fehler leider nicht, es werden halt nur keine Daten aufgezeichnet. Kann es vielleicht an der Konfiguration oder Version des mysql Servers liegen? (mysql V5.0) Das erste Update habe ich eingespielt. Ich schätze das mein mysql ein Problem hat sobald der übergebene Wert leer ist.

@Steiner
Ich werde die Heldenlösung mal testen…:smiley:

Grüße, Keule

Hm finde ich schon Komisch … ich habe auch 5.0 Laufen.
Kannst Du mir mal den Query posten ? Welche Fehlermeldung sagt Mysql denn genau ?

Gruß

Oliver

Hi,

Hier das Statement:


INSERT INTO data SET date='20060829', time='211348', polltime='1', `KS300_Regensensor`=''

Das Query Tool meldet dann "Incorect integer value: ''for coulumn ‚KS300_Regensensor‘ at row 1 ". Trage ich dagegen in der Abfrage als Wert ‚0‘ oder ‚1‘ ein ist alles OK, ist der Wert ‚‘ leer gibt es den Fehler.

Die Spalte für die Variable, in der Tabelle „data“ steht auf dem Datentyp „TINYINT(1)“.

Grüße, Keule

Hallo Keule,

ist deine IPS Variable auch ein Boolean ? oder ein Intger ? Hast Du evtl die Variable in der Pollkonfig angelegt und danach im IPS wieder neu erstellt ?
TINYINT(1) ist ein Boolwert. Was passiert wenn du die Variable in der Pollerkonfig löscht und wieder neu anlegst geht es dann ?
Bitte überprüfe mal bei die welchen default Wert MySQL für das Feld angelegt hat.

Gruß

Oliver

@alle hat das Problem noch jemand bei Boolean Werten ?

Hallo Oliver

Sobald ich eine Boolean in die Konfig aufnehme, werden keine Datensätze mehr in die DB geschrieben. Lösche ich sie wieder raus, kommen die Sätze wieder. Im IPS sehe ich keine Fehler und das MySql-Log weiss ich noch nicht wie anschauen.

gruss remo

Hallo Oliver,

ist eine Bool Variable

nein, ich habe auch andere Bool Variablen aus dem IPS getetstet, es reagieren aber alle gleich

auch dann ändert sich nichts:(

der default Wert steht auf Null (0). Kannst du das Statement ohne Wert bei dir im Query Tool ausführen?? Wenn ja müssen wir nur noch im mysql suchen.:wink:

Grüße, Keule

PS: Einen hab ich noch. Wenn Variablen mit Umlauten benutzt werden, können die erzeugten Grafen nicht angezeigt werden (mit Update 2). Ich möchte dich aber nicht von deinen anderen Projekten abhalten, also nur zur Info.:slight_smile:

Hallo,

also das Boolean Problem werde ich dann mal fixen, ich denk spätestenz morgen früh. Das mit den Umlauten in den Variablen verstehe ich nicht so ganz. Mal abgesehen davon, das man veileicht keine Umlaute in Vars nehmen sollte.
Meintest Du mit Update 2 seit Version 1.0.2 und ind den Versionen davor war es ok ?
Gruß

Oliver

Hallo Keule,

kannst du mal bitte dein Script im IPS durch das hier ersetzen und mir sagen ob es funst ?

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

$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 ($vartype == "Boolean"){
    $help=GetValueBoolean($var);
    if (!$help) { return 0;} else {return 1;}
    }
  elseif ($vartype == "Float"){
    return GetValueFloat($var);
    }
  elseif ($vartype == "Integer"){
    return GetValueInteger($var);
    }
return;
}
?>

Gruß

Oliver

Hallo zusammen,

laut schlimmerfinger, der das Boolean Problem auch hatte funktioniert es jetzt.
Dafür muss nur das MySqlDataExportScript ausgetauscht werden.

Anbei somit Version 1.03:

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

Auserdem habe ich noch ein kleineres Speicher Problem behoben, da fehlten ein paar mysql_closes in den Scripts.

@keule: Bzgl. der Umlaute in Variablennamen, wie hast du die Variablen angelegt bei mir geht das im IPS nicht. Somit ist das doch auch nicht notwendig oder ?

Viel Spass

Gruß

Oliver

Hallo Oliver,

funzt hervorprächtig… :smiley:

Vielen Dank!

Grüße, Keule

PS:Zum Thema Grafen anzeigen. Wenn ein Graf der erzeugt wurde z.B. temp_Küche.png heißt, wird er auf der Weboberfläche nicht angezeigt. Ich jetzt auch dazu übergegangen keine Variablen mit Umlauten mehr zu benutzen und werde jetzt bei mir die Variablen ändern.