Hi,
habe dann ganz vergessen meine Lösung noch zu posten.
Ich finde es aber immer noch schade, dass ich keine wirklich tolle Lösung für das Update des HTML Textes habe. Sicher, alle 2 Stunden oder 5 Minuten könnte ich ein Timer aktivieren, aber das finde ich nicht so richtig elegant.
Kann ich da in der IPS Version 2.5 auf was hoffen? 
Ich habe mir erst einmal so geholfen, dass ich ein mini Script ‚-Zeiten Update-‘ hinzu gefügt habe und dann halt manuell update.
<?
include("IPS_Timer_List.ips.php");
?>
Außerden befindet sich die gleiche Codezeile immer in dem Script welches durch den Timer ausgeführt wird. Also in meinem Fall in dem Script ‚Bewässerung2_CTRL_TIMER_und_EIN‘.
Zu meinem Aufbau des Scrips:
Den code zum erstellen des HTML stings habe ich in die Datei ‚IPS_Timer_List.ips.php‘ gepackt und unter dem scripts Ordner von IPS abgelegt.
Jetzt habe für das Webfront nur das Script ‚Bewässerung2_CTRL_TIMER_und_EIN‘ verlinkt.
Im Browser (Webfront) sehe ich dann das eigentliche Script (mit dem Wecker-Symbol und dem Ausführ-Symbol), das ‚-Zeiten Update-‘ Script (nur mit dem dem Ausführ-Symbol) und natürlich die HTML Box.
Dabei ist es wichtig, das die Scripte und Variblen immer wie im Bild angeordnet sind und auch immer die gleichen Namen haben.
Alle meine Wecker sind genau so aufgebaut bzw gegliedert. So wird immer das gleiche Script ausgeführt aber nur die zum Wecker passende String variable mit den Zeiten aktualisiert.
Außerdem brauche ich keine ID’s usw übergeben. Sollte möglichst universell sein.
<?
define ("ChildrenID", $IPS_SELF);
$senderobjecttype = (IPS_GetObject(ChildrenID));
if ($senderobjecttype["ObjectName"] == "- Zeiten Update -"){
$idhtml = IPS_GetParent(ChildrenID);
$idmaster = IPS_GetParent($idhtml);
}
else {
$idmaster = ChildrenID;
}
$arr = IPS_GetChildrenIDs($idmaster);
$wochentage = array( "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
$htmltext = "";
$htmltext .= '<table border="0" width="100%">'; // Farbe anpassen oder style entfernen
foreach ($arr as $arr2) {
$objecttype = (IPS_GetObject($arr2));
if ($objecttype["ObjectType"] == "4"){
$value = (IPS_GetEvent($arr2));
if ($value["EventActive"] == "1"){
$htmltext .= '<tr><td align="left">';
$htmltext .= IPS_GetName($arr2);
$htmltext .= '</td>';
$htmltext .= '<td align="center">';
$htmltext .= date("H:i", $value["CyclicTimeFrom"]+5) . "<br>"; // 5 Sekunden Zeit Korrektur. Sonst hat es 20:59 statt 21:00 gegeben
$htmltext .= '</td>';
$tage = array_reverse((str_split(str_pad(decbin($value["CyclicDateDay"]), 7, '0', STR_PAD_LEFT))));
if (($value["CyclicDateDay"]) == 0 ){
$htmltext .= '<td bgcolor="#33CC33" align="center">';
$htmltext .= "Einmalig am ". date("d.m:Y", $value["CyclicTimeFrom"]);
}
else {
for($i=0; $i <= 6; $i++) {
if ($tage[$i] == 1){
$htmltext .= '<td bgcolor="#33CC33" align="center">';
$htmltext .= ($wochentage[$i]);
}
else {
$htmltext .= '<td align="center">';
$htmltext .= ($wochentage[$i]);
}
}
}
$htmltext .= '</tr>';
}
}
}
$timer_listid = @(IPS_GetVariableIDByName('Zeiten', $idmaster));
SetValueString($timer_listid, $htmltext);
?>
Ich hoffe, ich habe nix vergessen. Ansonsten bitte melden.
Gruß
Schorsch