server-nutzer
Goto Top

Einfaches Logging von Ereignissen - Webserver-Software-Empfehlung?

Hallo und guten Abend.

Ich beschäftige mich gerade mit einfachen "Smarthome"-Dingen in Verbindung mit AVM Fritzboxen und deren DECT-Sensoren (Temperaturmessung, Kühlraumtür-noch-offen, Garage offen, solche Sachen eben).

In der Fritzbox können per Sensorenaktivitäten als "Aktion" (Vorlage) neben klassichen Schaltvorgängen auch URLs aufgerufen werden, die per GET, POST, etc.-Funktionalität bis zu 255 Zeichen in der URL übermitteln können.

Diese lokalen im eigenen LAN getätigten URL-Aufrufe würde ich gern möglichst simpel auf einer lokalen (Windows?)Software loggen und als kontinuierliche, chronologische Liste sichtbar machen. Quasi als ganz simple Webzeite, wo oben immer die neueste Aktion erscheint, sobald eine Aktion per URL-Aufruf gemeldet wird.

Hier läuft ein Windows 10-Mini-PC sowieso für andere Kleinaufgaben, daher nicht noch nen raspberry pi oder Arduino zusätzlich. Müsste halt sonst auch noch betreut werden, das möchte ich grad nicht.

Kennt Ihr eine einfache Webserversoftware, mit der ich obiges realisieren kann?

Danke und schönes Wochenende.

LG Jörg

Content-ID: 667793

Url: https://administrator.de/forum/einfaches-logging-von-ereignissen-webserver-software-empfehlung-667793.html

Ausgedruckt am: 21.12.2024 um 17:12 Uhr

Pjordorf
Pjordorf 31.08.2024 um 20:38:33 Uhr
Goto Top
Hallo,

Zitat von @Server-Nutzer:
Kennt Ihr eine einfache Webserversoftware, mit der ich obiges realisieren kann?
Kauf dir einen Lt. Commander Data und adaptiere das OS vom Raumschiff USS Enterprise-D/E und bastel damit deine Anforderungen nach deinen Wünschen. Gibts bestimmt bei Amaz... fürn Appel und zwei Eier face-smile

P.S. was ist für dich eine "einfache Webserversoftware" und was genau muss diese können?

Gruss,
Peter
mhappe
mhappe 31.08.2024 um 21:19:24 Uhr
Goto Top
Spar dir das basteln mit webhooks und schau dir mal https://www.home-assistant.io/ an.

Zigbee Sensoren / Aktoren sind dann auch deutlich günstiger als die AVM Sachen.
StefanKittel
StefanKittel 31.08.2024 um 21:39:23 Uhr
Goto Top
Moin,
Ich würde das so lösen:
- Rasperry Pi mit minimal Linux (nur SSH)
- LAMP-Stack (Linux, Apache, PHP, MySQL)
- Kleine PHP-Anwendung die diese API-Calls entgegen nimmt und in die DB speichert
- Kleine PHP-Anwendung die die aktuellsten Einträge pro Typ anzeigt.
Danach kann man über eine Webseite von jedem Gerät im LAN/WLAN/VPN darauf zugreifen.

Stefan
Server-Nutzer
Server-Nutzer 01.09.2024 aktualisiert um 10:26:33 Uhr
Goto Top
Moin und danke für die vielfältigen, z.T. kreativen Antworten.

Ich greife das mal der Reihe nach auf:

Die AVM-Technik auf DECT-Basis ist schon länger verbaut, funktioniert soweit problemlos. Standardwechsel auf Homematic, Zigbee oder anderes ist daher nicht vorgesehen. Ist gut gemeint, aber wird nicht so gemancht.

Ein anderes OS, die Einarbeitung in PHP, SQL & Co. ist mir für diese Aufgabe zu zeitaufwändig. Die Zeit investiere ich lieber in die anderen Hobbys von mir face-wink

Die Möglichkeit, URLs in Aktionen einzubauen, hatte ich kürzlich erst entdeckt und verstanden, dass man das für Ereignislogging nutzen könnte. Sprich URL-Aufrufe einfach zu protokollieren und schtbar zu machen ist die hier erfragte Aufgabe, nichts anderes.

Was die Software können muss, Peter:
Auf Windows 10 laufen (und keinen weiteren Kleincomputer mit anderem OS)
URL-Aufrufe loggen
Die Ergebnisse des Log auf einfache Weise sichtbar machen können (z.B. der Webserver stellt die Log-Datei als aufrufbare HTML-Seite bereit. Ggf. rufe ich auch nur die Logdatei als Solches per Editor auf, um reinzuschauen.

Also nochmal:
Welche Software (Windows 10) könnt ihr empfehlen? Oder kennt ihr nix?

LG
J.
cykes
cykes 01.09.2024 um 11:29:16 Uhr
Goto Top
Moin,

ich glaube, Du stellst Dir das zu einfach vor. Eine fertige Software gibt es dafür m.W.n. nicht, da ja die (URL-) Aufrufe von der FirtzBox getätigt werden und an die entsprechenden Aktoren und nicht an Deinen PC gehen.
Du müsstest eine Art Proxy auf dem PC installieren und die Aufrufe über diesen Proxy leiten, damit der mitloggen kann.
Ob die FritzBox für die Kommunikation mit den Aktoren einen Proxy unterstützt, weiß ich nicht, da ich das Fritz-Smarthome dafür zu wenig kenne.

Alternativ kannst Du natürlich auf dem PC per bspw. Wireshark das komplette Netz dauerhaft "abhören" und mittels Filtern Dir das gewünschte rausschreiben. Der Aufwand dürfte aber immens sein und ohne Programmierkenntnisse auch nicht zum Erfolg führen.

Die einfachste Variante wäre, wenn die Fritzbox das schon selbst irgendwo loggt, wenn man von außen auf dieses Log zugreifen kann und sich die gewünschten Informationen separat rausschreiben kann. Ist aber alles mit mehr oder weniger Aufwand verbunden und muss man selbst entwickeln können.

Deswegen war auch der Vorschlag, die Zentrale in bspw. Home Assistant zu verlegen eigentlich schon sehr brauchbar, dort hat man halt einfach mehr und einfachere Möglichkeiten der Überwachung.

Gruß

cykes
Intellidance
Lösung Intellidance 01.09.2024 um 13:27:23 Uhr
Goto Top
Xampp installieren und irgendwie so etwas wie

<?php
// File path for the log
$logFile = 'action_log.txt';  

// Check if the "Action" parameter is present 
if (isset($_GET['Action'])) {  
    // Get the current timestamp
    $timestamp = time();

    // Create a log entry
    $logEntry = "Action: " . $_GET['Action'] . " - Timestamp: " . $timestamp . "\n";  

    // Append the log entry to the file
    file_put_contents($logFile, $logEntry, FILE_APPEND);

    // Read the contents of the file and display them
    $logContents = file_get_contents($logFile);
    echo "<pre>$logContents</pre>";  
} else {
    echo "No 'Action' parameter provided.";  
$logContents = file_get_contents($logFile);
}

In eine Datei namens index.php speichern und in das wwwroot Verzeichnis legen.

Dann als URL z.b. http://hostname-deines-computers/?Action=Heizung%20an

Schreiben.
Server-Nutzer
Server-Nutzer 01.09.2024 um 13:41:55 Uhr
Goto Top
Hi cykes,

danke für Deine ausführliche Antwort.

Vielleicht konnte ich mein Anliegen und die vorhandenen Mechanismen der Fritzbox Smarthome-Funktion nicht korrekt darstellen.

Taster drücken (DECT-Sensor) -> Fritzbox Smarthome-Funktion -> URL-Aufruf -> Webserver-Software loggt diesen Aufruf

Zwischenzeitlich habe ich eine einfache Webserver-Software entdeckt, die schon einige meiner Anforderungen erfüllt.

Siehe hier:

webserver

Leider loggt diese Software nur in ein Fenster zum angucken, nicht aber in eine Datei. Daher nicht unbedingt das, was ich suche.

All das, was Du beschrieben hast, braucht es m.E. gar nicht.

Daher suche ich noch weiter nach einer einfachen Webserver-Software (für Windows 10), die eben das Logging in eine Datei schreibt.

LG
Jörg
Server-Nutzer
Server-Nutzer 01.09.2024 um 14:03:10 Uhr
Goto Top
PS: Der "bordeigene" Internetinformationsdienste-(IIS)-Manager des Windows 10 bietet zwar einen Webserver mit Logging in eine Datei, schreibt aber den URL-Aufruf leider nicht zeitnah zum URL-Aufruf in die Logdatei.
Beendet man den IIS, dann taucht der Aufruf sehr schön auf.

FAST das, was ich brauche. Leider nur fast face-smile

iis-webserver
aqui
aqui 01.09.2024 um 14:29:14 Uhr
Goto Top
cykes
cykes 01.09.2024 aktualisiert um 15:07:31 Uhr
Goto Top
Taster drücken (DECT-Sensor) -> Fritzbox Smarthome-Funktion -> URL-Aufruf -> Webserver-Software loggt diesen Aufruf

Wie soll denn Deiner Meinung nach irgendein (Web-)Server auf Deinem PC den URL-Aufruf ausgehend von der FritzBox mitbekommen? Der fühlt sich überhaupt nicht zuständig dafür.

Siehst Du auch im Log des IIS, die URL-Abfragen werden alle mit 404 beantwortet, da das ein anderes Gerät ist als er selbst. Auch der Mini-Webserver sagt ja mit einem Connection Close: "Kenn ich net"...
Server-Nutzer
Server-Nutzer 01.09.2024 um 15:35:00 Uhr
Goto Top
Ich glaube wir reden aneinander vorbei, cykes.

Nach Tastendruck auf dem DECT-Funksensor bekommt die Fritzbox (Smarthome-Funktion) den Auftrag "Rufe folgende URL auf" (hier http://192.168.178.222:90/Taster-oben-gedrueckt ).

Was passiert daraufhin auf dem oben in Screenshot laufender Webserver-Software auf dem Mini-PC mit IP 192.168.178.222?

Die bekommt diesen URL-Aufruf mit und schreibt ihn ins Logging-Fenster der Aidex-Webserver-Software bzw. beim IIS ins Protokoll. Leider erst später beim manuellen Serverdienst beenden. Siehe Screenshots!

Im Grunde "Ziel erreicht". Da wird zwar auf den URL-Aufruf keine Seite ausgeliefert (eben 404), aber die könnte die Fritzbox als aufrufender Client eh nicht verarbeiten.


Intellidance & aqui:
Das schaue ich mir mal an. Danke Euch
DivideByZero
DivideByZero 01.09.2024 um 22:04:05 Uhr
Goto Top
Moin,

eine Antwort mit Apache steht oben.
Und ja, du wirst da immer etwas anpassen müssen, weil so etwas eben individuelle Aufrufe sind.
Wer da nach "fertig" sucht, kommt zu HomeAssistant und Konsorten, also genau anders herum: Software für Home Automation suchen und schauen, welche Aktoren unterstützt werden.
Bei HomeAssistant ist das gegeben: www.home-assistant.io/integrations/fritzbox/. Kannst Du am einfachsten mit Virtualisierung unter Windows laufen lassen, dann bleibt es bei Deinem PC. Hier z.B. mit VirtualBox.
Ist m.E. immer noch sinnvoller, weil da eigentlich alles an Auswertungen und Aktionen ist, was man so zum Thema Smart Home braucht.
Das reine Logging ist da doch sehr spartanisch. Mit Xampp dürfte es aber am schnellsten sein.

Gruß

DivideByZero
Server-Nutzer
Server-Nutzer 02.09.2024 um 06:20:33 Uhr
Goto Top
Guten Morgen DivideByZero.

Nunja, was fertiges hatte ich da auch nicht wirklich im Auge, das war schon klar.

Das spartanische Logging reicht mir aus. Mehr braucht es nicht für diese Anwendungen.
Werde mir Xampp ansehen, scheint am zielführensten zu sein.

Dankeschön.

LG
J.
NordicMike
NordicMike 02.09.2024 um 10:08:41 Uhr
Goto Top
IIS ist schon mal nicht verkehrt, da in Windows 10 schon integriert / vorhanden. Verwende nicht das interne logging, das ist in der Tat zeitversetzt, sondern bastele dir eine logme.php, die sofort in eine Datei schreibt, sobald du sie aufrufst. (oder nimm die fertige oben von Intellidance)
Dazu noch eine schicke index.html oder index.php Seite, die dir die Datei anzeigt.
Server-Nutzer
Server-Nutzer 02.09.2024 um 15:58:23 Uhr
Goto Top
Hi NordicMike,

ok, das klingt nach einem Plan.

Mal sehen, ob ich das auf dem IIS zum laufen kriege face-wink

LG
Jörg
Intellidance
Intellidance 02.09.2024 um 16:34:47 Uhr
Goto Top
PHP im IIS ist nicht mit 2 klick eingerichtet (aber auch nicht unmöglich und genauso eine vernünftige Lösung) aber deswegen hatte ich für den Einstieg xampp empfohlen.
StefanKittel
StefanKittel 02.09.2024 um 23:53:54 Uhr
Goto Top
Ein +1 für Xamp.
Es ist einfacher zu installieren (mit PHP und MySQL)
Es lässt sich deaktivieren
Es ist open source
Die Zusammenhänge der einzelnen Komponenten sind einfach zu troubleshouten als IIS
Server-Nutzer
Server-Nutzer 03.10.2024 um 19:40:49 Uhr
Goto Top
Hallo Zusammen.

Hat ein wenig gedauert, aber ich hab's soweit sogar mit dem IIS und PHP zum Laufen bekommen.
Hilfreich war dazu die Seite https://www.windowspro.de/wolfgang-sommergut/php-fuer-iis-windows-10-ins .... Dort der Teil mit "PHP manuell hinzufügen".

Jetzt experimentiere ich gerade mit der oben von Intellidance (schönen Dank!) geposteten PHP-Code.

Der erste Punkt: Wie formatiert man die timestamp-Ausgabe so um, dass statt
"1727973710" dann
"2024.10.03 18:30:45" (oder ähnlich)
dort steht?
Es sollte für den Menschen lesbar/verständlich sein

Und ich würde gern die Reihenfolge der geloggten Ereignisse umkehren. Die neusten Ereignisse hätte ich gern oben dran. Dann rollen quasi die alten Ereignisse einfach unten aus dem Fenster.
Geht das?

Danke nochmal für alle Inputs von Euch!

LG
Jörg
Pjordorf
Pjordorf 03.10.2024 um 20:37:44 Uhr
Goto Top
Hallo,

Zitat von @Server-Nutzer:
Es sollte für den Menschen lesbar/verständlich sein
Ist doch lesbar.. aber eben nicht verständlich**. Wenn die Zahlen die Anzahl der Käfer seit das große Krabbeln darstellen dann durch das Fensterkreuz teilen, mit der Sonne Multiplizieren und durch dein Alter teilen. Ergebnis ist was? Kauderwelsch.
https://www.php.net/manual/de/function.time.php
https://www.w3schools.com/php/func_date_time.asp
https://www.php-einfach.de/php-tutorial/php-datum-uhrzeit/
https://www.php.net/manual/de/datetime.gettimestamp.php

Gruss,
Peter
Server-Nutzer
Server-Nutzer 15.10.2024 um 17:23:30 Uhr
Goto Top
Hallo Zusammen,

das mit der umgekehrten Ausgabe funktioniert jetzt auch.

Jeder neue Aufruf von
http://hostname-deines-computers/?Action=Heizung%20an
zeigt dann in der Ausgabe den neuesten Eintrag oben statt unten dran.

So rollen die neuesten Einträge nicht nach unten aus dem Bild/Fenster.

Danke nochmal für Euren Input.

LG
Jörg


<?php
// File path for the log
$logFile = 'action_log.txt';    

// Check if the "Action" parameter is present  
if (isset($_GET['Action'])) {    
    // Get the current timestamp plus 7200 (= 2 Stunden dazu rechnen)
    $timestamp = time() + 7200;
    $datum = date("Y.m.d-H:i:s", $timestamp);  

    // Create a log entry
    // $logEntry = "Action: " . $_GET['Action'] . " - Timestamp: " . $timestamp . "\n";   
    $logEntry = $datum . " - " . $_GET['Action'] . "\n";    

    // Append the log entry to the file
    file_put_contents($logFile, $logEntry, FILE_APPEND);

    // Überprüfen, ob die Datei existiert
if (file_exists($logFile)) {
    // Datei in ein Array von Zeilen einlesen
    $zeilen = file($logFile);
    
    // Zeilen umkehren
    $umgekehrte_zeilen = array_reverse($zeilen);
    
    // Umgekehrte Zeilen ausgeben
    foreach ($umgekehrte_zeilen as $zeile) {
        echo $zeile . "<br>";  
    }
} else {
    echo "Die Datei existiert nicht.";  
}

} else {
    echo "No 'Action' parameter provided.";    
$logContents = file_get_contents($logFile);
}