FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: PeMue am 17 April 2014, 19:05:03

Titel: Event NICHT abonnieren ...
Beitrag von: PeMue am 17 April 2014, 19:05:03
Hallo zusammen,

habe jetzt schon eine Weile rumgesucht, bin aber nicht fündig geworden.
Ich habe ein 1-wire A/D-Wandler im Einsatz und bekomme auch regelmäßig Events:
2014-04-17_18:43:26 AZ_AD1 A: 1.743359375
2014-04-17_18:43:26 AZ_AD1 A: 1.743 V B: 3.804 V C: 3.691 V D: 0.076 V

Wenn ich mit
define AZ_AD1A_log FileLog ./log/az_hum1-%Y-%m.log AZ_AD1.A:.*
diese Events abboniere und in eine Datei schreibe, dann bekomme ich beide.
Wie man mehrere Events in eine Datei bekommt mit (variable1|variable2).* ist mir auch klar.
Gibt es aber auch die Möglichkeit, das erste Event nicht zu abbonieren/auszuschließen?
Irgendwie stehe ich gerade auf dem Schlauch.

Danke + Gruß

PeMue
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: betateilchen am 17 April 2014, 19:07:19
ZitatGibt es aber auch die Möglichkeit, das erste Event nicht zu abbonieren/auszuschließen?

na klar...

define AZ_AD1A_log FileLog ./log/az_hum1-%Y-%m.log AZ_AD1.A:.*B:.*
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: PeMue am 17 April 2014, 19:33:35
Vielen Dank, hätte ich auch selber drauf kommen können  :-[
Die Syntax liest sich dann so:
AZ_AD1.A:.*B:.*
Nimm Alles was AD_AD1 enthält und danach A: und danach alles bis B: und danach wieder alles. Korrekt soweit?
Wenn ich jetzt aber nur diesen Event will:
2014-04-17_18:43:26 AZ_AD1 A: 1.743359375
sprich ich möchte alle Events mit A:, aber eben nur die, die nur ein A: haben und kein B:, wie wäre da die Syntax?
Eilt nicht, die obige Lösung funktioniert, da könnte ich sogar meine Logfiles kleiner halten und alles aus einer Datei plotten. Aber trotzdem wäre es interessant für mich.

Danke + Gruß

PeMue
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: betateilchen am 17 April 2014, 19:42:58
Zitat von: PeMue am 17 April 2014, 19:33:35
Die Syntax liest sich dann so:
AZ_AD1.A:.*B:.*
Nimm Alles was AD_AD1 enthält und danach A: und danach alles bis B: und danach wieder alles. Korrekt soweit?

Nein, nicht korrekt.

Es bedeutet: Logge die gesamte Zeile (es werden immer ganze Zeilen geloggt) nur dann, wenn sie mit "AZ_AD1.A:" beginnt und danach noch irgendwo ein "B:" enthält.

Das Ganze nennt sich regexp und dafür gibt es 728 Millionen Beschreibungen im Internet.
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: PeMue am 17 April 2014, 20:31:15
Ok, danke. Ich wußte, das dies reguläre Ausdrücke sind, werde aber nicht so wirklich damit warm. Aber gut, hier (http://regexp-evaluator.de/tutorial/) habe ich etwas gefunden und da gibt es auch was zum Testen (http://regexp-evaluator.de/evaluator/).
Was ich nicht ganz verstehe ist, warum das
define AZ_AD1A_log FileLog ./log/az_hum1-%Y-%m.log AZ_AD1.A:.*[^BCD].*
nicht funktioniert. Eine mögliche Lösung wäre aber diese (zumindest sagt das der obige Tester):
define AZ_AD1A_log FileLog ./log/az_hum1-%Y-%m.log AZ_AD1.A:.*^B.*
Allerdings abonniere ich bei fhem dann gar nichts mehr  >:(

ZitatDas Ganze nennt sich regexp und dafür gibt es 728 Millionen Beschreibungen im Internet.
Vielleicht gerade deswegen  ;)

Gruß PeMue



Titel: Antw:Event NICHT abonnieren ...
Beitrag von: betateilchen am 17 April 2014, 20:43:05
weil das ".*[^BCD]" eine falsche regexp ist.
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: PeMue am 18 April 2014, 10:48:48
Zitat von: betateilchen am 17 April 2014, 20:43:05
weil das ".*[^BCD]" eine falsche regexp ist.
Ja, das habe ich auch gemerkt  ::)
Aber bei Google Nr. 5 bis 22 bin ich bei ein paar online Tutorials (mit Aufgaben) fündig geworden. Ich gehe mal jetzt mit
define AZ_AD1A_log FileLog ./log/az_hum1-%Y-%m.log AZ_AD1.A:.{9}[^B].*
ins Rennen, was scheinbar auch funktioniert.
Ich würde obiges regex wie folgt interpretieren:
- Nimm alles, was mit AZ_AD1(ein beliebiges Zeichen)A: beginnt
- danach eins bis neun beliebige Zeichen hat
- danach kein B hat und
- danach wieder viele beliebige Zeichen hat.
Jetzt korrekt?
Wenn aber jetzt jemand meint, das Event mit Leerzeichen zu verlängern, gehe ich wieder ins Leere.
Sprich: ich habe noch nicht gefunden, wie man folgendes ausdrückt:
- nimm alle Events mit AZ_AD1(ein beliebiges Zeichen)A:
- dahinter dürfen beliebig viele andere Zeichen sein
- aber es darf kein B (oder alternativ B:) sein.

Hier (http://www.zytrax.com/tech/web/regex.htm#experiment) gibt es übrigens ein online Test-Tool.
Ob das Thema mittlerweile noch für die Angängerfragen geeignet ist möge bitte Puschel bewerten ;)

Gruß PeMue
Titel: Antw:Event NICHT abonnieren ...
Beitrag von: Puschel74 am 18 April 2014, 11:45:43
Hallo,

ZitatOb das Thema mittlerweile noch für die Angängerfragen geeignet ist möge bitte Puschel bewerten ;)

Klar ist das Anfängertauglich.
regexp sollte jeder kennen der sich mit FHEM beschäftigt.

Leider werden von einigen anscheinend nur ihre eigenen Beiträge gelesen aber blos nicht mal quer lesen und schauen was in anderen Beiträgen steht  8)
Siehe die ganzen Fragen die sich im Anfängerbereich wieder tummeln.
Aber BTT

Grüße