Hallo gucky,
danke für die schnelle Reaktion.
Das komplette Skript kann ich nicht posten, da die Funktion Bestandteil meines globalen Funktionen-Skriptes ist und fast 1500 Zeilen hat.
Die Funktion basiert auf dem Code/Thread „12115-Meldungsanzeige-im-WebFront“ von Horst. Auch der Original-Code bringt bei mir die o.a. Fehlermeldungen. Wenn ich diese eine Zeile
$abgelaufen = time() + $sekunden;
auskommentiere läuft es problemlos. Im Original sieht die Timestamp-Stelle so aus:
$number = IPS_RunScriptWaitEx(12345, array('action' => 'add', 'text' => 'Test', 'expires' => time() + 60, 'removable' => true));
Bringt der Fehlertext „NullError: this.aU is null“ keinen Hinweis?
Was bedeutet den this.aU in Eurem Quellcode?
Ich vermute eine Variablentyp-Problematik?
Hier meine Funktion:
function Meldung($meldung, $script_id, $sekunden = 300, $button) {
global $MessagesID;
global $DataID;
global $LastNumberID;
global $DeleteScriptID;
$number = 0;
$abgelaufen = time() + $sekunden;
//WFC_SendNotification(26947, "Debug", "Meldung ".$meldung." ".$script_id." ".$sec, "IPS", 10);
if (!(isset($abgelaufen) && $abgelaufen > time())) { $abgelaufen = 0; }
if (!(isset($button) && $button === true)) { $button = false; }
if (isset($meldung) && is_string($meldung) && $meldung != '') {
$data = json_decode(GetValueString($DataID), true);
if (!is_array($data)) { $data = array(); }
$number = GetValueInteger($LastNumberID) + 1;
$data[$number] = array('text' => utf8_encode($meldung), 'abgelaufen' => $abgelaufen, 'button' => $button);
if ($abgelaufen > time()) {
$eventID = IPS_CreateEvent(1);
IPS_SetParent($eventID, $DeleteScriptID);
IPS_SetName($eventID, 'remove Message #'.$number);
IPS_SetEventCyclic($eventID, 1, 0, 0, 0, 0, 0);
IPS_SetEventCyclicDateBounds($eventID, mktime(0, 0, 0, date('n', $abgelaufen), date('j', $abgelaufen), date('Y', $abgelaufen)), 0);
IPS_SetEventCyclicTimeBounds($eventID, mktime(date('H', $abgelaufen), date('i', $abgelaufen), date('s', $abgelaufen)), 0);
IPS_SetEventActive($eventID, true);
}
SetValueString($DataID, json_encode($data));
SetValueInteger($LastNumberID, $number);
// HTML-Ausgabe rendern
renderMeldungen($data);
}
return $number;
}
Aufgerufen wird dieFunktion z.B. so:
$nummer = Meldung('Meldungstext', $_IPS['SELF'], 300, true)
Viele Grüße aus dem Unterallgäu
Harry