FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Zephyr am 02 April 2014, 22:01:04

Titel: Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?
Beitrag von: Zephyr am 02 April 2014, 22:01:04
Hallo zusammen,

ich möchte einen Plot erzeugen, der ein Modul auswertet (ROOMMATES), dessen Status sich nur selten ändert. In diesem Fall ist es der Anwesenheitsstatus von einzelnen Bewohnern. Da sich der aber nur alle paar Stunden ändert, gibt es in den Tagesplots Lücken am Anfang und Ende des Tages. Siehe auch das angehängte Bild eines beispielhaften Tages. Am Anfang und Endes des Tages schlafe ich natürlich. Aber da in dem Ausschnitt dieses Tages kein Wert in der Datenbank steht, zeigt der Plot auch keinen entsprechenden Wert an.
Das könnte an umgehen indem man in das Log (ich benutze zum Loggen DbLog) jeweils kurz vor 00:00 und kurz nach 00:00 den aktuellen Status eines Bewohners schreibt.

Behelfen kann ich mir im Moment damit, dass ich folgende Funktion mit einem AT aufrufe:

###### atTriggerResidentStatus ######
# Die Funktion ist dafür gedacht, dass sie den aktuellen Status des Residents oder Roommates
# erneut in die Datenbank loggt. Der Roommate bzw Resident wird der Funktion übergeben.
# Die Funktion nimmt sich den aktuellen Status und sorgt über den Befehl "trigger"
# dafür, dass der aktuelle Status erneut in der Datenbank geloggt wird.
# Funktionsweise: triggerResidentState("rr_Karsten")
#####################################
sub triggerResidentState($) {
    my $resident = $_[0];
    my $status = ReadingsVal($resident,"state",0);
    fhem("trigger $resident $status")
}


Tjaaa, wie ihr euch denken könnt, löst das fhem("trigger $resident $status) daran anknüpfende Trigger aus. Das ist nicht immer gewollt.

Gibt es einen anderen Weg, den aktuellen Status eines Device' in die Datenbank zu loggen?


Für Ideen bin ich natürlich dankbar.

Grüße
Zephyr
Titel: Antw:Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?
Beitrag von: Joachim am 02 April 2014, 22:06:50
Mal nach addlog suchen
Titel: Antw:Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?
Beitrag von: Zephyr am 03 April 2014, 11:25:30
Welches Addlog?
Verzeihung, allein damit komme ich gerade nicht weiter.
Titel: Antw:Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?
Beitrag von: marvin78 am 03 April 2014, 12:01:54
Im Wiki zu FHEM gibt es eine Beschreibung zur User-Funktion addLog. Bitte hier im Forum oder eben im Wiki mal nach dem Begriff addLog suchen. Dann findest du alles, was du brauchst.
Titel: Antw:Erneuten Logeintrag mit aktuellen Status erzwingen. Geht das?
Beitrag von: Zephyr am 03 April 2014, 12:51:29
Oh weh.
Danke.
Bin noch auf die Idee gekommen, im Forum danach zu suchen. Habe aber -komisch- nur diesen Thread zurückgeliefert bekommen. Aber das Wiki liefert den Artikel, ja.

addLog tut genau das, was ich mir selbst bereits zusammengebastelt habe. Und auch Addlog nutzt einen Trigger, der dann damit zusammenhängende Events auslöst.
Vermutlich ist es günstiger, wenn ich eine stored procedure in mySQL einbaue, die den letzten Status eines Device kurz vor und kurz nach zwölf neu schreibt.

Vielen Dank aber für den Hinweis.

Zephyr