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
Daten loggen
Moderator: Co-Administratoren
Re: Daten loggen
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:
Gruss
Thomas
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;
}
Thomas
Re: Daten loggen
Hallo Thomas.
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
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.Ausserdem könntest Du aber auch im Diagramm die Wertepaare mit Linien verbinden, dann gibt es in der Darstellung gar keine Lücken.
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
Re: Daten loggen
Hallo zusammen.
Was mache ich da falsch? Die ZStd, EStd, .... sind als Variabel Zahl angelegt.
MfG
Maik Freye
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
MfG
Maik Freye
Re: Daten loggen
Abgesehen davon fehlt in der ersten if-Bedingung am Ende der Zeile ein Ausführungszeichen.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
Gruss
Thomas
PS: Bei Deiner vorherigen Antwort habe ich nicht so ganz kapiert, was Du mir sagen willst...