Datum letzter Regen

Liebe Gemeinde,

ich habe mir mit ein wenig basteln und dem Forum ein Skript für die Regenmenge geschrieben.

Nun würde ich gerne anzeigen lassen, wann der letzte Regentag war mit Menge.
Nur habe ich keine Ahnung, wie ich das Datum ausgebe.

Vielen Dank im Voraus.
Lieschen

und jetzt sollen wir alle rätseln, wie dein Script aussieht und sagen wie Du es machen musst. :confused:

Also stell dein Script hier rein und sag genau, was, wo, wie angezeigt werden soll.

Ich dachte ihr könnt hellsehen. Ich habe drei Skripte, da mein „Homematic- Wetterstations- Automatisationsroboter“ leider nur die Gesamtmenge zählt und ich ihn nicht jeden Tag auf „null“ setzten kann.

Ich hoffe die Variablen- Bezeichnung erklärt sich von selbst. „REGENMENGE“ ist der fortlaufende Wert vom Regenmesser.
Dann lasse ich mir im Webfront noch den Regen von Gestern und Vorgestern anzeigen. Tem

Das folgende Skript führe ich Morgens aus (00:01)

<?
$RegenGesamtTag = GetValueFloat ("RegenGesamtTag");
$Vorgestern = GetValueFloat ("Gestern");
$Gestern = $RegenGesamtTag;
SetValueFloat ("Gestern", $Gestern);
SetValueFloat ("Vorgestern", $Vorgestern);

$RegenMorgens = GetValueFloat("REGENMENGE");
SetValueFloat ("RegenMorgens", $RegenMorgens);
$RegenAktuell = 0;
SetValueFloat ("RegenAktuell", $RegenAktuell);

?>

Dieses Skript läuft Nachts um 23:59


<?
 $RegenGesamtTagTemp = GetValueFloat("REGENMENGE");
 $RegenMorgens = GetValueFloat ("RegenMorgens");
 $RegenGesamtTag = $RegenGesamtTagTemp - $RegenMorgens;
 SetValueFloat ("RegenGesamtTag", $RegenGesamtTag);
?>

Das letzte Skript zeigt mir auf „Knopfdruck“ den aktuellen Wert für den Tag an. Kann ich also mehrfach am Tag drücken, um zu sehen ob es noch regnet :D. Nein, so kann ich am Tag die gefallene Menge aktualisieren. Ein Regenwidget für die Statusleiste habe ich noch zusätzlich.


<?
 $RegenGesamtTagTemp2 = GetValueFloat("REGENMENGE");
 $RegenMorgens = GetValueFloat ("RegenMorgens");
 $RegenAktuell = $RegenGesamtTagTemp2 - $RegenMorgens;
 SetValueFloat ("RegenAktuell", $RegenAktuell);v
?>

Manch Profi denkt jetzt bestimmt: Von hinten durch die Brust in’s Auge… habe aber nichts im Forum gefunden, das mir helfen konnte. Das ist mein… wahrscheinlich sehr umständlicher Weg… der aber tadellos funktioniert.

Im Webfront lasse ich mir die Variablen anzeigen. Klappt super, auch die Graphen- Darstellung. Für meine Beregnungsanlage möchte ich mir nun aber gerne mehr anzeigen lassen.
Nun würde ich mir gerne anzeigen lassen, wann der letzte Regen fiel und die Menge. Ich habe keine Ahnung wie ich mir ein Datum in’s Webfront einbauen kann.

Vielen Dank fürs durchsteigen und die Mühe
Lieschen

Hi Lieschen,

wie wäre es, wenn du das Skript, das um 23:59 läuft so machst?:

<? 
 $RegenGesamtTagTemp = GetValueFloat("REGENMENGE");
 $RegenMorgens = GetValueFloat ("RegenMorgens");
 $RegenGesamtTag = $RegenGesamtTagTemp - $RegenMorgens;
 SetValueFloat ("RegenGesamtTag", $RegenGesamtTag);
 if(!empty($RegenGesamtTag)) {
  SetValueFloat("LetzterRegenTag",microtime());
  SetValueFloat("LetzteRegenMenge",$RegenGesamtTag);
 }
?>

und das Abfrage-Skript:

<? 
 $RegenGesamtTagTemp2 = GetValueFloat("REGENMENGE"); 
 $RegenMorgens = GetValueFloat ("RegenMorgens"); 
 $RegenAktuell = $RegenGesamtTagTemp2 - $RegenMorgens; 
 SetValueFloat ("RegenAktuell", $RegenAktuell);
 $tmp_LRT=GetValueFloat("LetzterRegenTag");
 if(!empty($tmp_LRT)) {
  $LetzterRegenTag=date("d.m.Y",$tmp_LRT);
  $LetzteRegenMenge=GetValueFloat("LetzteRegenMenge");
 }
 else {
  $LetzterRegenTag="-";
  $LetzteRegenMenge="-";
 }

?> 

Du müsstest halt zusätzlich die Variablen vom Typ „Float“ anlegen:

LetzterRegenTag
LetzteRegenMenge

UNGETESTET!

LG,
florida

Hallo Florida,

Vielen Dank für die schnelle Antwort. Da ich - wie erwähnt - Hobby- PHPler bin, muss ich fürs Verständnis nachfragen.

!empty ist was für ein Befehl?

gleiches gilt für: microtime

Sorry für die Nachfrage, aber ich möchte das Skript verstehen, damit ich beim nächsten mal nicht wieder „blöd“ nachfragen muss.

Danke im Voraus!
Lieschen

Hallo Florida,

noch ein kleiner Nachtrag.
Das AbfrageSkript läuft nur, wenn ich es im Webfront starte um zu wissen wie viel Regen heute bis jetzt (klick) gefallen ist. Kann also sein, das ich es mehrere Tage nicht starte. Sollte deine Ergänzung dann nicht lieber in das „00:01- Skript“?

LG
Lieschen

!empty(...)

heisst soviel, wie „nicht leer“. Das „!“ verneint die folgende Anweisung. „empty“ ist ein Synonym für einen Leerstring (""), den Wert 0 oder eine nicht existente Variable.

microtime()
time()

gibt die aktuell verstrichene Zeit (ich glaub seit 1970) in Millisekunden (microtime), bzw. in Sekunden (time) aus. (Ich gebe zu, der Befehl time() würde es auch tun!) :wink:
Den aktuellen Zeitpunkt als Sekundenwert zu speichern hat den Vorteil, dass du das Datum nachher beliebig formatieren kannst (Jahr, Monat, Tag, Stunde, Minute, Sekunde, Wochentag, Woche im Jahr, usw.)

Da das eigentliche Speichern der Variablen eh in dem Skript erfolgt, das regelmäßig ausgeführt wird, sollte das so passen.
Das Abfrage-Skript fragt ja nur die ohnehin bereits gespeicherten Variablen ab - egal wann es ausgeführt wird…

LG,
florida

Aha, verstanden… besten Dank für die Hilfe. Werde es heute Abend einbauen, ausprobieren und dich über die Funktionalität informieren.

LG
Lieschen