FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: AlterMann am 10 März 2018, 12:06:14

Titel: Suche im Log nach String und Auswertung
Beitrag von: AlterMann am 10 März 2018, 12:06:14
Hi,

ich habe für mein Gerät danalock_V3 eine eigne Logdatei, in die wird der Status des Schlosses geschrieben aber sonst nirgendwo anders hin.


2018-03-09_18:22:09 danalock_V3 doorLockOperation: mode: unsecured outsideHandles: 0001 insideHandles: 0001 door: open bolt: [i][b]unlocked[/b][/i] latch: open timeoutSeconds: not_supported
2018-03-09_18:22:33 danalock_V3 alarm_AccessControl: Auto Lock Locked Operation, notificationIsOn
2018-03-09_18:22:34 danalock_V3 doorLockOperation: mode: secured outsideHandles: 0001 insideHandles: 0001 door: closed bolt: [i][b]locked[/b][/i] latch: closed timeoutSeconds: not_supported


Wichtig ist nur locked oder unlocked und dann nur jeweils die letzte Meldung. Ich habe natürlich das Forum etc durchforstet und einen Tread mit dem Hinweis mit grep gesehen.
Wenn ich aber zum Testen in die oberste Zeile eingebe:

grep -a locked /opt/fhem/log/danalock_V3-2018.log

kommt "unbekanntes Kommando"

Ich denke da das Pearl ist, muss das in geschweifte Klammern, dann kommt aber:

"Search pattern not terminated at (eval 20873) line 1."

Ziel ist es den Wert zu suchen und daraus dann eine Anzeige zu machen. Was muss ich lesen um weiter zu kommen? Bitte keine fertige Lösung, nur sagen wo ich falsch denke! Ich will es ja begreifen und lernen!

Schönes Wochenende AM
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: Otto123 am 10 März 2018, 12:46:02
Hi,

grep ist ein system Befehl, mit oberster Zeile meinst Du die Kommandozeile von FHEM richtig? Dort kannst Du keine system Befehle auf diese Art eingeben.
Ginge in der Art "Befehl" allerdings landet die Ausgabe (stdout) im Logfile.

Doku dazu -> https://fhem.de/commandref_DE.html#command

Allerdings hilft das noch nicht zu Deinem Problem.
Es gibt FHEM (Perl) Funktionen die eventuell helfen können -> https://wiki.fhem.de/wiki/DevelopmentModuleAPI

BTW: Pearl wäre der Internet Versender :)

Gruß Otto
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: CoolTux am 10 März 2018, 12:51:03
Einfach mit putty oder einem anderen ssh client mit dem FHEM Server verbinden und in der Konsole
grep "locked" /opt/fhem/log/danalock_V3-2018.log
eingeben.
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: herrmannj am 10 März 2018, 13:07:09
AlterMann:
was möchtest Du erreichen und wie kommen die Daten ins log ?
Ist Danalock ein fhem device ?
Produziert es events ? und ist "locked" und "unlocked" teil der events (oder rein reading des device) ?
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: AlterMann am 10 März 2018, 18:14:28
Hi zu den Fragen,

Es geht ums Türschloss DanalockV3 und das ist über ZWave in FHEM mit Security eingebunden. Dafür habe ich ein eigenes Log erstellt weril es erst gar nicht redete. Jetzt redet es und im Log und  bei Readings erscheint unter:

doorLockOperation  "mode: secured outsideHandles: 0001 insideHandles: 0001 door: closed bolt: locked latch: closed timeoutSeconds: not_supported"

ich brauche nur locked  oder eben unlocked um daraus irgendwie ne Anzeige grafische Anzeige zu basteln.....

Im Moment seht ich auf dem Schlauch zu wenig Wissen. Deshalb brauche ich Futter und bei dem Wust an Infos hier den richtigen link...

Grüße und Sorry ihr dürft ruhig dern Kopf schütteln aber ich bastele seit einer Woche um das Teil zum reden zu bekommen, jetzt redet es und ich bin zu doof es auszuwerten!

AM
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: KernSani am 10 März 2018, 18:17:27
Wenn das im Reading steht würde es sich anbieten, ein userreading zu erstellen, das den Status per regex abgreift.
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: AlterMann am 10 März 2018, 18:30:01
Userreadings ok danke für den Tip, bin wohl etwas tröge heute....

AM
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: herrmannj am 10 März 2018, 19:27:37
stell mal ein list vom lock und ein list vom filelog ein.
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: AlterMann am 12 März 2018, 12:09:22
Hi Herrmannj, im Eventmonitor sehe ich unter anderem das:

Zitat
2018-03-12 11:38:27 ZWave danalock_V3 alarm_AccessControl: Auto Lock Locked Operation, notificationIsOn
2018-03-12 11:38:27 ZWave danalock_V3 doorLockOperation: mode: secured outsideHandles: 0001 insideHandles: 0001 door: closed bolt: locked latch: closed timeoutSeconds: not_supported

wie schon erwähnt habe ich für das Danalock einen eigenen Log: 
FileLog_danalock_V3 danalock_V3-2018.log text

in dem steht das Gleiche und im Device bei Redings steht dann:

Zitat
alarm_AccessControl:  Auto Lock Locked Operation, notificationIsOn 2018-03-12 11:38:27
doorLockOperation mode: secured outsideHandles: 0001 insideHandles: 0001 door: closed bolt: locked latch: closed timeoutSeconds: not_supported 2018-03-12 11:38:27
state doorLockOperation open 2018-03-12 11:37:48
timeToAck 0.030 2018-03-12 11:38:27
transmit OK 2018-03-12 11:38:27

ich habe nur das gelistet was sich verändert. Wenn ich das Schloss mit dem Wohnungstür-Dummy öffne tut sich bei den Readings vom Device gar nix, is aber nicht schlimm da das Dummy ja ein State-reading "off" bringt. Is eher ein Danalock Problem also Herstellerspezifisch...

Ich habe jetzt einiges gelesen und schau mal was ich wie tun kann. Wichtiger war das Schloss über FHEM öffenen zu können, damit ich es von fern kann. Das Symbol nach Zustand ist dann eher noch eine kosmetische Angelegenheit, Später will ich daraus mal ne Folgereaktion machen, wie Tür auf Kamera aus oder Licht im Flur an. Eventuell ist auch noch das öffen bei Annäherung dran. Das geht mit der App nicht richtig weil Bluetooth oft zu dröge ist. So weit denke ich aber noch nicht mit meinen vier Geräten in FHEM  :D

Liebe Grüße Alter Mann
 
Titel: Antw:Suche im Log nach String und Auswertung
Beitrag von: binford6000 am 17 März 2018, 08:47:46
Hallo,
ich habe mir mal sowas ähnliches für WARNING und ERROR in FHEM-Log gebaut:
fhemlogparse.DUM ist ein dummy. tail -1 gibt nur den jeweils letzten Eintrag des Logfiles aus.
#!/bin/bash
warning=$(grep -a WARNING /opt/fhem/log/fhem-$(date +%Y-%m-%d).log | tail -1)
error=$(grep -a ERROR /opt/fhem/log/fhem-$(date +%Y-%m-%d).log | tail -1)
if [ "$warning" != "" ]; then
perl /opt/fhem/fhem.pl 7072 "setreading fhemlogparse.DUM warning $warning" &>/dev/null
else
perl /opt/fhem/fhem.pl 7072 "setreading fhemlogparse.DUM warning keine"
fi
if [ "$error" != "" ]; then
perl /opt/fhem/fhem.pl 7072 "setreading fhemlogparse.DUM error $error" &>/dev/null
else
perl /opt/fhem/fhem.pl 7072 "setreading fhemlogparse.DUM error keine"
fi

Das kannst Du dann regelmäßig ausführen lassen - entweder im System per CRON oder in FHEM mit einem cmdalias und at/doif/notify...
Der cmdalias bei mir sieht so aus (als RAW):
defmod fhemlog cmdalias logcheck AS "/opt/fhem/scripts/fhemlogparse.sh"
VG Sebastian