Hauptmenü

[gelöst] Dummy Loggen

Begonnen von Superposchi, 29 Dezember 2020, 09:02:50

Vorheriges Thema - Nächstes Thema

Superposchi

Hallo, ich möchte gerne einen Dummy zur Kontrolle in eine Logdatei schreiben lassen, bekomme es aber einfach nicht hin.
Ich habe gesehen, dass es dazu bereits einige Threads gibt, doch leider brachte keiner eine direkte Lösung für mich.

Ich habe ein FileLog-Device mit folgendem Befehl erstellt:
define FileLog_Homestatus_Marko FileLog ./log/Homestatus_Marko-%Y.log Homestatus_Marko:state\.*

Die Datei wurde auch angelegt, es wird nur leider nichts hineingeschrieben. Es soll einfach der Status des Device aufgezeichnet werden.
Wo liegt der Fehler?

MadMax-FHEM

Zitat
Wo liegt der Fehler?

Vermutlich im Regex.

Wie hast du das FileLog erstellt?

Was soll denn '\.*' ?

Warum nicht einfach per Eventmonitor anlegen lassen?

https://wiki.fhem.de/wiki/Event_monitor

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

Schau in den Eventmonitor: state ist normalerweise nicht Bestandteil des Events! Das Reading state bildet da eine Ausnahme.
Einfach dies als regEx liefert nicht das gewünschte Ergebnis?
Homestatus_Marko

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Superposchi

Danke, das war die Lösung.

Superposchi

Noch eine Nachfrage dazu:
Der Dummy hat ein zusätzliches Reading (über ReadingsOld) um den vorherigen Statuszustand aufzuzeichnen, der wird jetzt natürlich mitgeloggt.
Wenn "state" zur Eingrenzung des Readings nicht funktioniert, wie kann ich dann die Readings eingrenzen?

MadMax-FHEM

Mal mit dem Attribut 'addStateEvent' beim FileLog-Device probieren.

Und schon mal den Tipp mit dem Eventmonitor angesehen?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

#6
Ja den Tipp habe ich gesehen, doch weiß ich nicht was er mir bringen soll.
Im Eventmonitor wird lediglich folgendes gelistet:
2020-12-29 09:58:32.721 dummy Homestatus_Marko 3
2020-12-29 09:58:32.721 dummy Homestatus_Marko state_old: 1

Wie soll mir das hierbei weiterhelfen?

addstateEvent muss ich mir mal genauer ansehen, hatte es nur überflogen als ich das Device erstellt habe.
P.S. bezieht sich das addstateEvent nicht rein auf DOIF?

MadMax-FHEM

Nein.

Gibt es bei notify, FileLog, ...

Oder wird dir das nicht "angeboten"?

Und wie geschrieben: es stimmt halt die RegEx nicht ;)

Und der Tip: naja lass dir halt mal ein FileLog anlegen mit EXAKT dem markierten "Suchmuster".
Und: halt für die "Zukunft"... ;)


define FileLog_Homestatus_Marko FileLog ./log/Homestatus_Marko-%Y.log Homestatus_Marko:3


Kommen dort nur Zahlen?
Immer Einstellig?

Je nachdem halt die RegEx anpassen


define FileLog_Homestatus_Marko FileLog ./log/Homestatus_Marko-%Y.log Homestatus_Marko:\d


Oder


define FileLog_Homestatus_Marko FileLog ./log/Homestatus_Marko-%Y.log Homestatus_Marko:\d+


Regex-Test: https://regex101.com/

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

Ja, es sind immer Zahlen zwischen 1 und 4 für verschiedene Stati die dargestellt werden können.
Aber das ist doch nicht das Problem, es sollen ja alle verschiedenen Zustände geloggt werden.
Meine Nachfrage bezog sich ja auf das ausblenden des anderen Readings für den alten Zustand.

Das Problem ist ja, dass ich beim Regex nicht "state" mit einbauen kann um den Filter einzugrenzen, nicht der Wert den das Device annimmt.

Beta-User

#9
Wenn Rudi "addStateEvent" in die Doku zu FileLog einbaut, darfst du davon ausgehen, dass das kein Zufall ist. Von daher kannst du natürlich weiter rumexperimentieren und rumlamentieren, oder eben die Doku zu Rate ziehen: https://fhem.de/commandref_modular_DE.html#FileLog

EDIT: leider ist der Link kaputt, weil sich DbLog den Anker schnappt. M.E. sollte er korrekterweise nach https://fhem.de/commandref_modular_DE.html#notify und die dortige Attributbeschreibung gehen (das kann nur der Modulautor von DbLog fixen).

(Nebenbei: Es ist immer noch "lustig", dass du Bewohner unbedingt mit dummy abbilden willst...).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Superposchi

Also ich wurde zu DOIF verlinkt und nicht zu FileLog, insofern ist meine Frage wohl berechtigt, da der Text dort sinngemäß aussagt:
"Wenn das Attribut gesetzt ist wird dem Reading state bei einem Event anders als sonst üblich ein state vorangestellt, so wie bei allen anderen Readings ebenfalls der Readingname vorangestellt wird. Somit kann mit einem DOIF explizit darauf reagiert werden."

Nebenbei: Es ist traurig, dass du immer noch meinst deine Art ist die einzig richtige Art. Lass es mich doch machen wie ich es für mich als richtig erachte.
Es funktioniert, was ich von deinem Vorschlag in meinem Speziellen Fall nicht sagen kann. Denn auch wenn du es nicht glaubst habe ich es ausprobiert und es war für meine Konstellation ein wahrer Alptraum, da die Informationen für den Status nicht aus einer Quelle/Auslöser stammen und so ein Szenario offensichtlich nicht vorgesehen ist.

Beta-User

Es mag seltsam sein, dass dein Browser einen anderen Anker ranzieht wie meiner, es ist aber so, dass dieses Attribut in allen ordentlich programmierten Eventhandlern dieselbe Wirkung hat: Es wird (auch) ein Event mit dem vorangestellten "state: " von fhem.pl an die NotifyFn des betreffenden Moduls übergeben; (beachte das Leerzeichen). (du hast da nur nur etwas unschön aus der Doku zitiert).

Von daher: Setze das Attribut bei dem FileLog, ergänze die Regex passend und alle sind glücklich.

Hier noch im O-Ton das, was Rudi (auch zu FileLog) zu sagen hat (aus der verlinkten cref zu notify):
Zitat
addStateEvent
Das mit dem state Reading verknüpfte Event ist speziell, da das dazugehörige Prefix "state: " entfernt wird, d.h. $EVENT ist nicht "state: on", sondern nur "on". In manchen Fällen ist es aber erwünscht das unmodifizierte Event zu bekommen, d.h. wo "state: " nicht entfernt ist. Für diese Fälle sollte addStateEvent auf 1 gesetzt werden, die Voreinstellung ist 0 (deaktiviert).
Achtung:

       
  • dieses Attribut muss beim Empfänger (notify, FileLog, etc) gesetzt werden.
  • dieses Attribut zeigt nur für solche Geräte-Events eine Wirkung, die readingFnAttributes unterstützen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

MadMax-FHEM

Zitat von: Superposchi am 29 Dezember 2020, 10:33:04
Ja, es sind immer Zahlen zwischen 1 und 4 für verschiedene Stati die dargestellt werden können.
Aber das ist doch nicht das Problem, es sollen ja alle verschiedenen Zustände geloggt werden.
Meine Nachfrage bezog sich ja auf das ausblenden des anderen Readings für den alten Zustand.

Das Problem ist ja, dass ich beim Regex nicht "state" mit einbauen kann um den Filter einzugrenzen, nicht der Wert den das Device annimmt.

Wenn nur Zahlen kommen, dann "blendet" meine RegEx sehr wohl das unerwünschte Reading aus...
(zumindest in meinen Tests)

EDIT: wenn nur Zahlen zwischen 1 und 4 kommen (können), dann geht die RegEx auch noch "genauer". Wo/wie du testen kannst hatte ich ja verlinkt...

Ansonsten eben (wurde ja "diskutiert"): addStateEvent und RegEx anpassen...

Und dafür, dass DU Hilfe willst/suchst bist du (nicht nur hier) sehr...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Superposchi

so, habe das Event im FileLog-Device gesetzt (auf 1 gestellt), leider macht das im Event Monitor keinen Unterschied. Dort wird weiterhin lediglich folgendes angezeigt:
2020-12-29 11:24:03.675 dummy Homestatus_Marko 3
2020-12-29 11:24:03.675 dummy Homestatus_Marko state_old: 1
Also kein Zusatz von "state: "
Somit greift auch eine angepasste Regex nicht.
Nur am Rande, ich habe nichts zitiert, sondern sinngemäß (extra dazugeschrieben) wiedergegeben. Das ist ein riesen Unterschied.

Da das Event (1-4) bei beiden Readings auftritt, sehe ich nicht wo deine Regex ein Reading ausblenden soll. Deine Regex filtert doch lediglich das angezeigte Event, nicht das Reading.
Und ich sehe nicht was an der Wahrheit irgendwas sein soll. Ich rede/schreibe frei Schnauze und geradeaus. Keine Ahnung warum sich hier Leute davon immer wieder angegriffen fühlen.

Superposchi

P.S. Interessanterweise wird im Log das "state" angezeigt, siehe:
2020-12-29_11:34:18 Homestatus_Marko state: 1
2020-12-29_11:34:18 Homestatus_Marko state_old: 3


Hab ich das falsch verstanden oder sollte das Attribut das "state" nicht auch im anzeigen Event Monitor ?