Timestamp erzeugt Fehlermeldungen

Hallo Zusammen,

ich versuche in einem Script zu einem Timestamp 60 Sekunden zu addieren. Das Webfront verliert die Verbindung zum Server und wirft folgende zwei Fehler aus:

Trying reconnect in a few seconds

Verbindung verloren!
NullError: this.aU is null

Hier der einfache PHP-Code:

$abgelaufen = time() + 60;

Danach reconnected das Webfront und alles ist prima. Auch die Timestamp-Addition wurde ausgeführt.
EIn Timestamp sollte vom Typ Integer sein und bei der Addition sehe ich keinen Fehler. Wenn ich die Zeile auskommentiere passt alles.

Kann jemand helfen? Bei der Suche im Forum bin ich leider nicht fündig geworden.
Paresy?

Viele Grüße aus dem Unterallgäu
Harry

Hallo Harry,

ich habe gerade testweise ein Script mit:

$abgelaufen = time() + 60;
SetValueInteger(22840  /*[testint]*/, $abgelaufen);

erstellt. Das läuft problemlos, egal ob ich es manuell oder aus dem WebFront heraus ausführe.

Magst du einmal dein vollständiges Skript posten und beschreiben was du genau tust, bevor das beschriebene Verhalten eintritt?

Gruß,
gucky

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

Hallo gucky,

nun eine etwas andere Fehlermeldung:

Bild1.jpg

Vielleicht hilft das weiter.

Ich habe mittlerweile das globale Skript auf die hierfür notwendigen Funktionen eingedampft und könnte dies zu Testzwecken per PM zusenden.

Viele Grüße aus dem Unterallgäu
Harry

Hallo gucky,

ich bin im Bug-Tracker auf eine identische Fehlermeldung gestossen und habe nun diese beiden Zeilen als Ursache eingekreist:


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);

Gibt es dazu einen Workaround oder Tipp?

Interessant ist vielleicht auch, dass an jedem Webfront eine andere Fehlermeldung kommt. Zwei habe ich ja bereits zitiert (Notebook & Server) - am iPad kommt eine dritte, die jedoch auch mit „NullError“ beginnt.

Wann wird die Version #3471 produktiv?

Viele Grüße aus dem Unterallgäu
Harry

Ich bin auf die neuen Funktionen

IPS_SetEventCyclicDateFrom(...);
IPS_SetEventCyclicTimeFrom(...);
IPS_SetEventCyclicDateTo(...);
IPS_SetEventCyclicTimeTo(...);

umgestiegen. Leider auch dort Verbindungsverlust zum Server und Fehlermeldungen.
Bild2.jpg

Viele Grüße aus dem Unterallgäu
Harry

Hallo,

die aktuelle Version wird dein Problem sehr wahrscheinlich beheben. Bei uns läuft die 3.2 sehr stabil, du solltest also eigentlich dein System umstellen können. Sicherheitshalber solltest du davor dennoch ein Backup machen.

Mit freundlichen Grüßen,
gucky

Hallo,

wann wird denn aus der jetzt schon stabilen Beta 3.2 die offizielle Stable 3.2?

Viele Grüße aus dem Unterallgäu
Harry

Da kann ich dir leider noch keinen festen Zeitpunkt nennen.