Regensensor FS20 SR

Hier mal ein kleines Script für den Sensor.

Der Sensor sendet nur einen Ein-Befehl und muss dementsprechend wieder zurück gesetzt werden.
Die Sendeintervallzeit lässt sich im Sensor von 8-120 sek. einstellen.
Wenn es regnet, sendet der Sensor entsprechend der eingestellten Zeit immer einen Ein Impuls. Dieses wiederholt sich, bis die Sensorfläche wieder abgetrocknet ist.

Das Script fragt die aktuelle Zeit der Variable ab und vergleicht sie mit der Updatezeit. Ist der Sensor trocken bleibt die Variable noch die eingestellte Zeit, hier 1 Minute auf true und wird danach wieder zurückgesetzt.

Der Sensor funktioniert einwandfrei.

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Regensensor.ips.php
Trigger  : OnChange Regensensor
Interval : 
*/


$Sensor = GetValueBoolean("Regensensor");

$t1 = microtime(true);                        // aktuelle Zeit in Sekunden
$t2 = IPS_GetUpdateMicrotime("Regensensor");  // Update-Zeit   in Sekunden
if ($Sensor == true and (($t1 - $t2) > 60))   // Auswertung der Variable und Zeit
SetValueBoolean("Regensensor", false);        // Rücksetzen der Variable nach Zeitvergleich


?>

Hallo Rainer,

ich machs so:

/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Regenzaehler.ips.php
Trigger  : Regenmelder.Status
Interval : 60sec
Das Script liest den Status des FS20-Regenmelders und schreibt den Zustand
in eine Datei, wenn er sich ändert
*/
$logfilepath = "C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\IPS_Back\regendatei.txt"; //Benennen des txt-files
$format      = ' %d.%m.%Y %H:%M';     //Ausgabeformat
$format1     = ' %d.%m.%Y %H:%M';     //Ausgabeformat1
$Rz          = getvalueinteger("Regenzeit");
$Tz          = getvalueinteger("Trockenzeit");
$Regen       = getvalueboolean("Regenmelder.Status");
$Regenalt    = getvalueboolean("Regenmerk");
$Rupdate     = IPS_GetUpdateTime("Regenmelder.Status");
SetValueString("LZeit",(strftime($format1)));
if (time()- $Rupdate >30 )                     // Regenstatus 'trocken', wenn
{ SetValueBoolean("Regenmelder.Status",False); //Updatezeit >30 sec.
  $Regen = False;
}
if  ($Regen)                          //Es regnet -> Zähler +1 min
{   SetValueInteger("Regenzeit",(getvalueinteger("Regenzeit")+1));
    SetValueString("LRegenZeit",(strftime($format)));
    SetValueBoolean("Regenmerk",true);
//    TTS_Speak(58222,"regen");
}
else                                  //es ist trocken -> Zähler + 1 min
{   SetValueInteger("Trockenzeit",(getvalueinteger("Trockenzeit")+1));
    SetValueString("LTrockenZeit",(strftime($format)));
    SetValueBoolean("Regenmerk",false);
//    TTS_Speak(58222,"trocken");
}
if ($Regenalt != getvalueboolean("Regenmerk")) //nur bei Zustandsänderung schreiben
{
      // Dateioperation
      $handle=fopen("$logfilepath","ab");  // open file
      if (!$handle)					          // error cannot open file
   	{ echo("******* ERROR: Cannot open file '$logfilepath'
");
   	}
                       		           // Datensatz schreiben
      if ($Regen) {fwrite($handle,"R");}   // bei Regen R sonst T
      else        {fwrite($handle,"T");}
      fwrite($handle,(strftime($format))." R");
      fwrite($handle,(getvalueinteger("Regenzeit"))." T");
      fwrite($handle,(getvalueinteger("Trockenzeit"))."
");
      fclose($handle);                // close file
}

Allerdings zähle ich noch die Regen und Trockenminuten und schreibe das Ganze noch in eine Datei.

Aber — zur Zeit ist der FS20SR abgebaut, da ich was ändern will.