Mitloggen von Ereignissen

Hallo liebe IP-SYMCON Gemeinde,

habe schon einige FS20 gesteuerte Leuchten in Betrieb, die von verschiedenen Stellen aus gesteuert werden. Nachdem ich alles penibel mitlogge, haben sich trotz Optimierungsversuchen meinerseits :rolleyes: schon eine ziemlich große Anzahl von Scripte und Variablen angesammelt. Dabei bilde ich mir ein, es müsste doch irgendwie einfacher gehen. Vielleicht hatte jemand schon die zündende Idee und wäre so nett, den oder die Tipps weiterzugeben, wie man am einfachsten Ereignisse mitloggen kann. Als Beispiel eine Lichtquelle, von denen ich einige schon in der Art installiert habe:

Der Lichtquelle ist eine Statusvariable ON/OFF und je ein Script, auch für ON und OFF, zugeordnet. Diese Lichtquelle wird nun entweder direkt über die Script-IDE, über’s Web mittels SimpleWebInterface, über einen Timer oder über einen FS20 Sender (z.B. FS20 S4) gesteuert, wobei der Sender jedoch den UP-Schalter DIREKT ansteuert und vom IPS nur mitgelesen wird. Das ist die Notfunktion, falls der IPS-Server mal den Geist aufgeben sollte. Alle diese Verursacher sollen die Statusvariable entsprechend setzen, mit Schalten der Lampe natürlich und eine entsprechende, differenzierte Logmeldung in die Logdatei stellen. Inzwischen kann man mittels $IPS_SENDER den Verursacher ja schon recht gut identifizieren, aber trotzdem habe ich für meine bisherige Lösung meines Erachtens viel zu viele Scripte gebraucht. Ich bin aber trotzdem auch noch immer beim Optimieren und versuche grade, so viel wie möglich in Funktionen zusammenzufassen.

Aber vielleicht hat wie gesagt jemand unter uns schon DIE Lösung dafür gefunden und es wäre total nett, wenn er sie mit uns teilen würde :slight_smile: !

Liebe Grüße aus Graz,

Erwin

Die Lösung (ein kleinwenig modifiziert) sollte schonmal alle Schalteregnisse erfassen können (ON/OFF)…

Grüße, paresy

Danke dir für den Tipp … schon gelesene Artikel liest man leider zu selten noch einmal :rolleyes:

LG aus Graz,
Erwin

Hallo zusammen,

inzwischen ist es mir gelungen, durch entsprechende Optimierungen und mit Hilfe von Tipps von hier (Danke :slight_smile: !) meine unzähligen Scripte für das Mitloggen meiner vielen Lichtleins und Schalter drastisch zu minimieren. Dazu hätte ich eine PHP-Frage:

Ich habe nun z.B. ein Hauptscript pro Device (Instance) mit einer gemeinsamen Funktion für das Logging darunter, die wiederum für sich eine Funktion für die Soundausgabe (verschiedene Gongs, etc.) aufruft. Nachdem man die Funktionen ja in PHP alle includieren muss, habe ich das auch zuerst so gelöst, dass das darüberliegende Script die darunterliegende Funktion includiert und diese wiederum die Funktion, die sie selbst aufruft. Da ist es aber durch verschiedene Mehrfachaufrufe sofort passiert, dass Fehlermeldungen wegen Mehrfachdeklarierung von Funktionen ausgegeben wurden. Offensichtlich wurden die Includes durch die Aufrufe mehrfach ausgeführt. Gelöst habe ich das insofern, dass ich die ganzen Includes für die Funktionen in das oberste Script gegeben habe, das hat funktioniert. Wie macht man das richtig in PHP ? In C verhindert man das Mehrfachincludieren in den Headerdateien ja z.B. durch Defines, die wenn einmal definiert, ein nochmaliges Includieren von Modulen verhindern. Gibt’s dafür in PHP auch einen solchen Mechanismus ? Besten Dank im voraus für jeden Tipp !

Für diejenigen, die vielleicht auch eine Logdatei basteln wollen, anbei ein kurzer Ausschnitt meiner Logdatei von heute als Beispiel.

LG aus Graz,
Erwin

versuche es mit
include_once(„xxx.php“); bzw.
require_once(„yyy.php“);
Regeln zur Nutzung findest Du in der PHP-Doku.
Tommi

Danke tommi, werde ich mir sofort zu Gemüte führen :slight_smile: !

Nachtrag: schon gelesen und eingebaut, genau das ist es :smiley: !

LG,
Erwin