Daten loggen

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Daten loggen

Beitrag von mfreye » 03.12.2008, 19:34

Hallo zusammen,

ich möchte gerne Daten in einer Textdatei loggen. Bei meinen Vorüberlegungen habe ich dann festgestellt das ich ein Problem habe, wenn das System mal ausfällt.

Es sollen jede Stunde die Temperatur, Feuchtigkeit und Windgeschwindigkeit geloggt werden, mit Datum und Uhrzeit. Soweit so gut. Aber wenn das System mal nicht an ist oder abgestürzt ist fehlen mir Einträge in der Textdatei. Wie bekomme ich es hin das dann für jede Stunde ein Eintrag mit Fehler nachgetragen wird.

Der Grund dahinter ist der, das ich immer die letzen 52Stunden an Werten aus der Textdatei heraus lesen möchte und dann in php als Diagramm darstellen möchte. Wenn ich jedoch Lücken habe Sie das nicht ganz doll aus. Oder gibt es ein Möglichkeit diese Fehler später per php auszuwerten über die Logdaten?!

Hoffe das die Frag nicht alt zu dumm ist, aber mein php ist ganz frisch :(

MfG
Maik Freye

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Daten loggen

Beitrag von tsa » 04.12.2008, 08:59

Hallo Maik,

beim Einlesen der Daten bekommst Du doch anhand der Zeitstempel mit, ob da Lücken sind.
Ausserdem könntest Du aber auch im Diagramm die Wertepaare mit Linien verbinden, dann gibt es in der Darstellung gar keine Lücken.
In den Minidiagrammen hatte ich bewusst nur Punkte gesetzt, weil ich die Lücken als Indikator für Sensorausfälle haben WOLLTE!

Einzig beim Sensor für meine Wärmepumpe habe ich mittlerweile ein Verbinden der Punkte reingebaut, weil es dort große Temperatursprünge gibt.
Das ganze sieht dann in etwa so aus:

Code: Alles auswählen

$PunkteVerbinden = 1;
...
		$x_Alt = 0;
		$y_Alt = 0;
		for (...)
		{
			...
			$x = ...			
			$y = ...
			...
			if ($PunkteVerbinden && $y_Alt != 0)
			{
				imageline($im, $x, $y, $x_Alt, $y_Alt, $Color);        
			}
			else 
			{
				imagesetpixel ($im, $x, $y, $Color);
			}
			$x_Alt = $x;
			$y_Alt = $y;
		}
Gruss
Thomas

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Daten loggen

Beitrag von mfreye » 04.12.2008, 17:26

Hallo Thomas.
Ausserdem könntest Du aber auch im Diagramm die Wertepaare mit Linien verbinden, dann gibt es in der Darstellung gar keine Lücken.
Also das Diagramm sollte aus Linien bestehen, die mit einander verbunden sind. Es sollte unten eine Kcaler von 72 71 70 ... 3 2 1 stehen, also die letzten 72 Stunden.
Es muss nur so sein, dass bei keinen geloggten Wert, einfach der letzte Wert für die Uhrzeit geschrieben wird. Aber das sollte ja gehen, denke ich mal?!

MfG
Maik Freye

mfreye
Beiträge: 237
Registriert: 22.12.2007, 08:01

Re: Daten loggen

Beitrag von mfreye » 04.12.2008, 20:08

Hallo zusammen.

Code: Alles auswählen

<?

// Symbole zuordnen
   function getdigit($digit) {
   if ($digit == "0") $digit = "0;
   elseif ($digit == "1") $digit = "1"
   elseif ($digit == "2") $digit = "2"
   elseif ($digit == "3") $digit = "3"
   elseif ($digit == "4") $digit = "4"
   elseif ($digit == "5") $digit = "5"
   elseif ($digit == "6") $digit = "6"
   elseif ($digit == "7") $digit = "7"
   elseif ($digit == "8") $digit = "8"
   elseif ($digit == "9") $digit = "9;
   elseif ($digit == "-") $digit = "-";
   elseif ($digit == ":") $digit = ":";
   else $digit = "Leer";
   return $digit;
   }


// Uhrzeit ermitteln und Werte zuordnen
   $Anz1 = substr($Uhr, -1);
   $Anz2 = substr($Uhr, -2, 1);
   $Anz4 = substr($Uhr, -4, 1);
   $Anz5 = substr($Uhr, -5, 1);
   $Anz7 = substr($Uhr, -7, 1);
   $Anz8 = substr($Uhr, -8, 1);


// Uhrzeit erstellen und Werte übergeben an DigiAnzeige
   $ZStd = getdigit($Anz8);
   $EStd = getdigit($Anz7);
   $ZMin = getdigit($Anz5);
   $EMin = getdigit($Anz4);
   $ZSek = getdigit($Anz2);
   $ESek = getdigit($Anz1);

?>

SchreibText := Datum + " " + ZStd + EStd + " " + KS_300_Feuchte + " " + KS_300_Wind + " " + KS_300_RegenAStunde
Schreibedatei("D:\Wetterdaten.txt",SchreibText)

warte("00:00:01")
Loggen_Wetterdaten ausschalten
Was mache ich da falsch? Die ZStd, EStd, .... sind als Variabel Zahl angelegt.

MfG
Maik Freye

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: Daten loggen

Beitrag von tsa » 04.12.2008, 22:09

homeputer-Hilfe hat geschrieben:Variablennamen müssen grundsätzlich qualifiziert angegeben werden ( also Objektname des Objekts, in dem die Variabele definiert ist und der Variablenname ). In PHP sind Punkte in Variablennamen nicht zulässig, daher wird anstelle des Punkts ein Unterstrich "_" verwendet. Weiterhin werden Variablennamen durch ein vorangestelltes V mit Unterstich gekennzeichnet ( "V_"), natürlich muss auch vor Variablennamen das obligatorischen "$" gesetzt werden.
Beispiele für Variablennamen:

Normaler Name in Makros . . . . . . Name in PHP
Schaltsteckdose.Autoschalter . . . $V_Schaltsteckdose_Autoschalter
Stehlampe_Wohnen.Zaehler . . . . $V_Stehlampe_Wohnen_Zaehler
Abgesehen davon fehlt in der ersten if-Bedingung am Ende der Zeile ein Ausführungszeichen.

Gruss
Thomas

PS: Bei Deiner vorherigen Antwort habe ich nicht so ganz kapiert, was Du mir sagen willst...

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“