Hallo,
Aktuell bilde ich meinen Presence Status über das PRESENCE Modul ab. Ich erhalte von meinem Unifi Controller Events wenn sich jemand abmeldet und anmeldet.
Leider kann ich daraus kein wirkliches Log erzeugen, da mir zyklischen Events wie beim LAN-Ping fehlen.
Gibt es eine Möglichkeit alle 10 Minuten den Status vom Presence Device ins Log des Devices zu schreiben?
Gruß
Stefan
Edit:
Bevor die ganz schlauen Antworten kommen. Ich weiß, dass ich es über ein AT machen kann. Nur wie schreibe ich ins Log?
Device:
Internals:
DEF event Unifi_APC_AC_LR:iPhone-6:.disconnected Unifi_APC_AC_LR:iPhone-6:.connected
EVENT_ABSENT Unifi_APC_AC_LR:iPhone-6:.disconnected
EVENT_PRESENT Unifi_APC_AC_LR:iPhone-6:.connected
MODE event
NAME Presence_Unifi_Stefan
NOTIFYDEV global,Unifi_APC_AC_LR
NR 368
NTFY_ORDER 50-Presence_Unifi_Stefan
STATE absent
TYPE PRESENCE
READINGS:
2017-08-24 20:48:29 model event
2017-08-28 07:03:09 presence absent
2017-08-28 07:03:09 state absent
helper:
CURRENT_STATE absent
Attributes:
event-min-interval presence:180
event-on-change-reading presence
room WLAN,Presence
Logfile:
Internals:
DEF ./log/Presence_%Y-%m.log (Presence_TV:.*|Presence_iMac:.*|Presence_Unifi_Stefan:presence:.*|Presence_Unifi_Tina:presence:.*)
NAME FileLog_Presence
NOTIFYDEV Presence_TV,Presence_iMac,Presence_Unifi_Tina,Presence_Unifi_Stefan
NR 378
NTFY_ORDER 50-FileLog_Presence
REGEXP (Presence_TV:.*|Presence_iMac:.*|Presence_Unifi_Stefan:presence:.*|Presence_Unifi_Tina:presence:.*)
STATE active
TYPE FileLog
currentlogfile ./log/Presence_2017-08.log
logfile ./log/Presence_%Y-%m.log
READINGS:
2017-08-28 08:09:40 linesInTheFile 17921
pos:
Attributes:
logtype text
room Logs,Presence
Das
Zitatalle 10 Minuten den Status vom Presence Device ins Log des Devices zu schreiben?
ist aber grundsätzlich inkompatibel mit das:
Zitat
event-on-change-reading presence
Wenn du einen guten Grund hast, um die Ereignisse so zu unterdrücken , würde https://wiki.fhem.de/wiki/Plot-Abriss_vermeiden auch nicht helfen, da:
ZitataddLog verwendet die Funktion trigger. Für fhem ist das gleichwertig mit dem Eintreffen eines Ereignisses. Es werden also ggf. alle notifies ausgeführt, die für das relevante Gerät abzuarbeiten sind.
Ich bekomme leider bei Anwesenheit alle Minute ein Event, daher das "event-on-change-reading" in Kombination mit "event-min-interval".
Bei Abwesenheit gibt es keine Events. Deswegen würde ich dort gerne selber welche erzeugen.
Ich schau mir das AddLog mal an. Möglicherweise lässt sich da mit einem Watchdog ja etwas basteln.
AddLog generiert mir ja scheinbar auch nur "Events" wie als wenn das Reading neu geschrieben werden würde.
Lösung:
sub
createEvent($$)
{
my ($logdevice, $reading) = @_;
my $logentry = ReadingsVal($logdevice,$reading,"");
fhem "trigger $logdevice $reading: $logentry";
}
+
defmod Presence_CreateEvent at +*00:10:00 {createEvent("Presence_Unifi_Stefan","presence")}
Vielen Dank für den Hinweis mit dem AddLog.
Kann man es nicht dann auch ohne Sub machen? Etwas in der Form:
defmod Presence_CreateEvent at +*00:10:00 trigger Presence_Unifi_Stefan presence [Presence_Unifi_Stefan:presence]
(nicht getestet)