Hallo Oliver,
also - haste mal 4 Stunden Zeit
?
Mit diesem Thema habe ich mich schon vor meiner IPS-Ära beschäftigt und meine Erfahrungen auch letztendlich übernommen.
Zur Berechnung der Beregnungsdauer nutze ich den sogenannten Evapotranspiratiosfaktor - dieser Wert repräsentiert die Wassermenge, die verdunstet und wird errechnet um 14:00 Uhr anhand der momentanen Luftfeuchtigkeit, der Temperatur und einem Faktor der für Rasen ermittelt wurde.
Mehr Details dazu hier
Jetzt wird es kompliziert, da ich die Berechnerei und Instanzenzuordnung über meine MySQL Datenbank abwickel (ich bevorzuge dies, da ich von jedem Computer mit Internetzugang die Parameter ändern kann).
So gibt es 4 (oder mehr) Profile in denen ich jeweils nach minimaler Dauer, maximaler Dauer, minimaler Evap. und maximaler Evap. die resultierende Beregnungszeit berechne.

Hier das script - falls es interessiert:
<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
File : update_watering_timer.ips.php
Trigger :
Interval :
*/
include("Konstanten.ips.php");
$evap = GetValueFloat("Evapotranspiration");
// ab in die Datenbank
$link = mysql_connect($server, $user, $password)
or die("Keine Verbindung möglich: " . mysql_error());
mysql_select_db($database) or die("Auswahl der Datenbank fehlgeschlagen");
/* ausführen der SQL Anfragen */
$query = "UPDATE ips_evap_timer SET evap = $evap";
mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
$query = "UPDATE ips_evap_timer SET result = ((evap - min_evap) / (max_evap - min_evap) * (max_time - min_time)) + min_time";
mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
$query = "UPDATE ips_evap_timer SET dur_min = IF (result < min_time,0, (IF(result > max_time, max_time, result)))";
mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
/* schliessen der Verbindung */
mysql_close($link);
?>
Diese Werte werden nach 14:00 Uhr wiederum in einen anderen Table geschrieben - (auch MySQL)

der im Moment bei mir alle Schaltereien beinhaltet. Ach ja, hier kann man jetzt auch gut sehen, dass der gestrige Wolkenbruch so heftig war, dass mein virtueller Wassereimer noch nicht leer ist und damit die Bewässerung verhindert (duration = 00:00:00).
Wie du siehst eine recht komplexe Angelegenheit, die nicht mal so nebenbei erklärt werden kann.
Bitte lass mich wissen, wenn Du weitere Details wissen möchtest - oder ob Du eine bessere Idee hast.
Gruss aus Wiesbaden
Dieter