Habe immer beim Start oben genannte Fehlermeldung.
Wenn ich beim Start dann eine älteres Backup wähle startet zwar IPS, aber beim Beenden und Neustart kommt die gleiche Fehlermeldung wieder.
Und alle Variablen haben den falschen Wert. Gibt es da eine Lösung, außer eine alte Datensicherung?
Kannst du mal, bevor du IPS beendest, die Variable los_ausgabe und log_text leer machen. Die scheinen mir ein wenig zu lang und werden vermutlich die Settings dadurch verschießen.
ich habe diese Fehlermeldung mittlerweile jede Nacht gehabt. Ich wollte die ‚Einmal-pro-Nacht-IPS-neu-starten‘-Prozedur wieder einführen, doch jedesmal, wenn IPS per Skript runterfuhr, konnte es es nicht neu starten und blieb dann einfach hängen. Dann habe ich diese Idee eben wieder verworfen
klingt erstmal gut die Idee, hatte auch mal, ins Log geschaut und mir ist Dort auch der ewig lange Textblock aufgefallen. Werde mein eigenes Loggingscript mal auschalten, die Variablen leeren und es heute zu Hause probieren und melde mich dann.
Vieleicht ist das bei Franz das gleiche, er ist doch auch so ein Logging Fetischist.
Speichere doch deine Logging Daten in eine Datei… das sollte eigentlich nicht viel ‚umstrickarbeit‘ bereiten. Oder brauchst du sie im Designer? Dann speichere sie im Kontext des IPS-Webservers ab und rufe sie mit dem Designer Webbrowser auf.
speicher das Logg schon in einer Datei, und zusätzlich die letzten 1000 Loggeinträge in einer Variablen die ich dann in ein array wandle und halt wieder zurück um diese mit diversen Filtern besser im Designer anzeigen zu können, vieleicht hast Du eine Idee wie ich das machen kann.
Hier das Script:
include("C:/Programme/IP-Symcon/scripts/Konstanten.ips.php");
//------------- Loggen von wichtigen Variablen- & Scriptänderungen ------------
if ($IPS_SENDER=="Variable" or $IPS_COMPONENT == "filter")
{
$trig_var = $IPS_VARIABLE; // Variable die getriggert hat
$trig_val = $IPS_VALUE; // Wert der Variablen
$Datentyp = IPS_GetVariableType($IPS_VARIABLE); // Variablentyp bestimmen
//---------------------- Variablentypen Texte zuweisen ------------------------
if ($Datentyp == "Boolean" and $trig_val =="1")
{
$trig_val = "an";
}
else
{
if ($Datentyp == "Boolean")
{
$trig_val = "aus";
}
}
//-------------- Textfile/Variable anlegen für Designer Memo Feld -------------
//aktelle Meldung
if($trig_var != "log_menge") // Trigger Anzahl Werte nicht aufzeichnen
{
$log_neu = (date("d.m.y")." ". date("H:i:s")." = ".$trig_var." = Wert: "
.$trig_val." = Typ: ".$Datentyp."
");
}
$log_text = GetValueString("log_text"); // globale Variable zurückholen
$log_ausgabe = explode("
", $log_text); // Variable String in array umwandeln
$werte = count($log_ausgabe); // Werte zählen
if ($werte == 1000) // max. Anzahl für $log_text Inhalt
{
unset ($log_ausgabe[0]); // einen löschen, den ersten
$log_text = array_merge($log_ausgabe);
$log_text = implode("
", $log_text); // in String zurück
}
if ($IPS_COMPONENT != "filter")
{
$log_text = $log_text.$log_neu; //aktuelle Meldung
SetValueString("log_text", $log_text);
}
//--------------------- hier wird gefiltert für den Designer -------------------
$log_text = GetValueString("log_text"); // globale Variable zurückholen
$log_ausgabe = explode("
", $log_text); // Variable String in array umwandeln
$werte = count($log_ausgabe); // Werte zählen
for ($i=0; $i<$werte-$log_menge-1; $i++)
{
unset ($log_ausgabe[$i]);
}
// Filter 1
$Filter_1 = GetValueBoolean("Filter_1");
If ($Filter_1)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'Bewegungsmelder'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 2
$Filter_2 = GetValueBoolean("Filter_2");
If ($Filter_2)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'Steckdose'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 3
$Filter_3 = GetValueBoolean("Filter_3");
If ($Filter_3)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'Aufloesung'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 4
$Filter_4 = GetValueBoolean("Filter_4");
If ($Filter_4)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'Mail'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 5
$Filter_5 = GetValueBoolean("Filter_5");
If ($Filter_5)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'Touch'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 6
$Filter_6 = GetValueBoolean("Filter_6");
If ($Filter_6)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'script'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
// Filter 7
$Filter_7 = GetValueBoolean("Filter_7");
If ($Filter_7)
{
for ($i=0; $i<1000; $i++)
{
if(stristr($log_ausgabe[$i], 'dimmer'))
{
//nichts machen
}
else
{
unset ($log_ausgabe[$i]); //löschen
}
}
}
$log_ausgabe = implode("
", $log_ausgabe); // in String zurück zum Designer
SetValueString("log_ausgabe", $log_ausgabe);
//------ jede neue Meldung in Loggfile schreiben damit nichts verloren geht -------
$handle=fopen("c:/logfile.txt", "a");
fwrite($handle, $log_neu);
fclose($handle);
}
ich habe das Problem auch, wenn ich ips manuell (shutdown) beende und dann wieder starten möchte. Dann muss ich immer das Backup der letzten Nacht nutzen, wodurch natürlich die Werte des aktuellen Tages weg sind.
Hast Du denn schon geschaut ob Du auch einen Überlauf einer Variablen hast?
Das war es bei mir, hatte einfach über 1000 Loggeinträge eines arrays in eine Variable abgelegt.
Ich habe auch sehr lange Strong Variablen, doch komischerweise funktionniert das manuelle Runterfahren tadellos, nur das ‚per Skript‘ runterfahren geht nicht mehr, seit…ja, seit wann, ich weis es nicht mehr
Naja, habe diese Variablen zur Probe einfach mal leer gemacht und dann gings.
@Franz
Mach doch einfach mal eine Datensicherung, fahre per Script mal runter und schicke dann das letzte Logg mal paresy, der findet bestimmt den Fehler.
Sonst ärgerst Du Dich doch nur rum.