Script auslöser protokollieren

Hallo,
ich habe mittlerweile releativ viele Scripte für meine Hausautomatisation zusammengebastelt. Nun kommt es von Zeit zu Zeit vor ( nach Tagen ), das ein Script für meine Sonosanlage spontan auslöst. Ich suche eine möglichkeit zum debuggen, z.B. die Events gefiltert nach Script oder und Zeitfenster protokollieren.
Kann mir da jemand einen Tip geben womit das am besten funktioniert?

Ich kann Dir zwei Tipps geben:

Systemvariablen — IP-Symcon :: Automatisierungssoftware
IPS_LogMessage — IP-Symcon :: Automatisierungssoftware

Möglicherweise reicht es sogar schon, einfach mal so ins Log zu schauen.

Nutze es zwar nicht dafür, aber vielleicht hilft dir das ja auch:
In jedem Script habe ich ein

include("eigene_Helfer.php");

drin, wenn man dann etwas benötigt, was in jedes Script rein soll, dann kann ich es in die Datei schreiben.

Da könntest du z.B. einfach ein

IPS_LogMessage($_IPS['SELF'], "Auslöser war  ". $_IPS['SENDER']);

einbauen oder es noch weiter spezifizieren, wenn nötig, aber du machst es dann nur einmal und es wirkt überall… genauso leicht ist es dann bei „nichtgebrauch“ wieder in dem Script mit // deaktiviert.

Das schaut gut aus, wedre ich heute abend mal versuchen umzusetzten.
Danke für die schnelle Antwort.:slight_smile:

Das loggt aber nur den Typ vom Auslöser, wenn du auch noch wissen willst genau welches Script etc. es war musst du ein klein wenig mehr loggen, abhängig vom Auslöser-Typ z.B. die Script-ID etc… halt so genau wie du es magst

Hallo,
Dein Tip funktioniert schon ganz gut.
Kannst Du mir noch auf die Sprünge helfen, wie ich die auslösnede variable im logfile herrausfinde.
z.Zt. steht nur „Auslöser war Variable“.
Vielen Dank, Ralph

Unter meinem ersten Link findest Du alles, was Du brauchst.



if ($_IPS['SENDER'] == 'Variable') {
IPS_LogMessage($_IPS['SELF'], "Auslöser war  ". $_IPS['SENDER']." ".$_IPS['EVENT']);  
} 

if ($_IPS['SENDER'] == 'StatusEvent') {
IPS_LogMessage($_IPS['SELF'], "Auslöser war  ". $_IPS['SENDER']." ".$_IPS['INSTANCE']);  
}

if ($_IPS['SENDER'] == 'TimerEvent') {
IPS_LogMessage($_IPS['SELF'], "Auslöser war  ". $_IPS['SENDER']." ".$_IPS['EVENT']);  
}


wenn du noch andere Auslöser brauchst einfach nach dem Muster und den Daten aus dem Link oben weiter ergänzen…

man lernt ja immer dazu, du kannst deinen Code auch in __autoload.php im Script-Verzeichnis packen, die wird von jedem Script includiert…

Globales include
Um Funktionen, Konstanten usw. global über alle Skripte hinweg zur Verfügung zu stellen müssen diese in der Datei „__autoload.php“ definiert werden. Diese muss sich im „IP-Symcon/scripts“-Ordner befinden.

Innerhalb der „__autoload.php“ können dann weitere Dateien eingelesen werden.

PHP — IP-Symcon :: Automatisierungssoftware

Danke Dir,
mit Deinen Beispielen komme ich schon ein gutzes Stück weiter.:slight_smile: