Temperaturen mitloggen

Hallo

ich habe eine Variable Bad_Temp_Ist und eine Bad_Temp_Soll.
Nun habe ich das Problem das die Ist Temp. häufig gleich der Soll Temp ist, was natürlich auch so mitgelogt wird.

Was kann ich da verkehrt gemacht haben?

Gruss
Horst

Hallo Horst,

hhm, so richtig weiss ich jetzt nicht, was Du genau wissen willst.

Gruss Torro

Ja, nee ist klar,

hätte auch `ne klare Frage stellen sollen :o

Wie kann ich erreichen das nur die IST-Temp. mitgelogt wird und nicht die Soll-Temp.?

Gruss
Horst

Meine einfache frage : Wie loggst du ? (oder wo siehst du die log werte)

Ist doch super dass der ist wert sich zum soll wert nähert :wink: (wieso steueren wir anders?)

@GGGss

Meine einfache frage : Wie loggst du ? (oder wo siehst du die log werte)

Habe ein Script aus dem Forum an mein System angepasst, werden als txt Dateigespeichert. Sehe den Wert aber auch in den Variablen.

Ist doch super dass der ist wert sich zum soll wert nähert :wink:

Naja wenn der Soll Wert 14°C ist, und mir als IST wert auch 14°C angezeigt werden, es aber tatsächlich 21.6°C im Bad sind ist es nicht wirklich super :frowning:

Gruss
Horst

Hallo Horst,

hhm, eventuell nicht richtig angepasst, also die Zeilen wieder andersrum geschrieben? Spass beiseite, bitte ueberpruefe folgendes:

bei der Instance Konfiguration, ob die Variablen richtig eingetragen sind. Die IST Temperatur wird immer durch die Status Variable (actual state) Temperature geliefert

pruefe, dass Du diese Variable niemals in einem Script ueberschreibst, damit waere Dein gemessener Wert weg

Ich weiss, klingt alles logisch und einfach, man beachtet das ja auch alles, aber ich habe in der Programmierung schon so viel erlebt und weiss, wie schnell mal die Variablennamen verwechselt werden und man sich dann wundert, warum es nicht mehr geht.

Uebrigens, in Kuerze steht ein Paket zur Verfuegung, mit dem Du Deine Ist Werte in eine Datenbank schreiben kannst und auch noch schoene Grafiken dazu generiert werden. Der Test sieht schon ganz gut aus…

Gruss Torro

@Torro

na klar schau ich mir das jetzt alles nochmal an, mir ist ja klar das dass Problem meistens vor dem Computer sitzt :wink:

Uebrigens, in Kuerze steht ein Paket zur Verfuegung, mit dem Du Deine Ist Werte in eine Datenbank schreiben kannst und auch noch schoene Grafiken dazu generiert werden. Der Test sieht schon ganz gut aus…

Da freu ich mich schon drauf, stehe nämlich auf Grafiken.

Gruss
Horst

@hbraun:

bei deinem Skript kann ich dir nicht helfen - ich kenne es ja nicht :wink:

aber ich kann dir ein generisches Skript anbieten, welches ohne weitere Anpassungen beliebige Variablen in Textdateien hineinloggt. Jede Variable bekommt automatische eine eigene Logdatei.

Beispiel:
Variable: ‚WZ_Heizung.IstTemp‘ wird geloggt in ‚WZ_Heizung.IstTemp.txt‘

Voraussetzung:

  1. das Verzeichnis ‚logs_var/‘ muss im IPS-Programmverzeichnis erstellt werden.

  2. der zu überwachenden Variable muss bei den Variable Events’ das Skript ‚LogVar‘ hinzugefügt werden (so muss das Logging-Skript heissen).

nun das Skript:


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
*/
//File: LogVar.ips.php
$separator = "	";  // separate fiels by TAB - good for Excel ;-)
if ($IPS_SENDER == "Variable")
{
   switch( IPS_GetVariableType($IPS_VARIABLE) )
   {
        case 'Float'  : $value = round(GetValueFloat($IPS_VARIABLE),2);
                        // change '.' to ',' - good for german Excel ;-)
                        $value = str_replace( ".", ",", $value );
                        break;
 
        case 'Boolean': $value = GetValueBoolean($IPS_VARIABLE) ? "1" : "0" ;
                        break;
 
        case 'Integer': $value = GetValueInteger($IPS_VARIABLE);
                        break;
 
        case 'String' : $value = GetValueString($IPS_VARIABLE);
                        break;
 
        default       : $value = 'unknown';
                        break;
   }
   $handle = fopen("logs_var/" .$IPS_VARIABLE. ".txt", "a");
   fwrite( $handle,  date("d.m.y").
                     $separator.
                     date("H:i:s").
                     $separator.
                     $IPS_VARIABLE.
                     $separator.
                     $value.
                     $separator.
                     IPS_GetVariableType($IPS_VARIABLE).
                     "
");
   fclose($handle);
}
?>

Viel Erfolg,
Oliver

ps: die erzeugten Logfiles können direkt per Drag & Drop in Excel hineingezogen werden (zumindest bei Excel 2003 vieleicht auch bei vorherigen Versionen) und werden dort richtig formatiert angezeigt :wink:

Danke Olli,

werde es auf jedefall mal testen.

Gruss
Horst

Hallo Olli,

koenntest Du die Zeilen kuerzen durch Umbruch, das ist sonst schwer lesbar. Leerzeichen sind ja schon im Variablennamen drin, das fuehrt dann sicher bei PHP Unkundigen, und da haben wir ne ganze Menge, zu Fehlern.
Und er braeuchte auch noch die globals.php.

Gruss Torro

Schon geschehen - der Code oben ist umformatiert…

Die ‚globals.php‘ braucht man in diesem Skript nicht - ich setzte sie allerdings bei fast allen meiner Skripte als Standard rein. Ich habe die Zeile oben rausgenommen.

Gruß,
Oliver

Das ist noch eine kleiner Fehler drin :slight_smile:


if ($IPS_SENDER= "Variable")

müsste so lauten:


 if ($IPS_SENDER == "Variable")

Hast du was dagegen, wenn ich deine Code als Beispiel für die Wiki nehme? (GetVariableType)

Grüße, paresy

oh, danke - da war ich wohl nicht ganz aufmerksam :wink:

natürlich - wenn ich hier was veröffentliche, dann kannst du es auch verwenden

Hallo Olli,

hab Dein Script mal auf die neue IPS-Version aktualisiert. Tat mich gestern abend sehr schwer,:frowning: da einige Befehle jetzt anders heißen. Ansonsten ist der Code prima :). Nutze Ihn vor allem um zu Testen, wie oft die Variablen aktualisiert werden. Z.B beim PIRI ist das 'ne große Hilfe.

$separator = ";";  // separate fiels by ; - good for Excel ;-)
 
if ($IPS_SENDER == "Variable")
{
   switch( IPS_GetVariableType($IPS_VARIABLE) )
   {
        case 'Float'  : $value = round(GetValueFloat($IPS_VARIABLE),2);
                        // change '.' to ',' - good for german Excel ;-)
                        $value = str_replace( ".", ",", $value );
                        break;
 
        case 'Boolean': $value = GetValueBoolean($IPS_VARIABLE)? "1" : "0";
                        break;
 
        case 'Integer': $value = GetValueInteger($IPS_VARIABLE);
                        break;
 
        case 'String' : $value = GetValueString($IPS_VARIABLE);
                        break;
 
        default       : $value = 'unknown';
                        break;
   }
   $handle = fopen("../logs_var/" .$IPS_VARIABLE. ".txt", "a");
   fwrite( $handle,  date("d.m.y").
                     $separator.
                     date("H:i:s").
                     $separator.
                     $IPS_VARIABLE.
                     $separator.
                     $value.
                     $separator.
                     IPS_GetVariableType($IPS_VARIABLE).
                     "
");
   fclose($handle);
}