[gelöst] Auf Befehl loggen

Begonnen von Spielmann, 05 März 2014, 23:06:56

Vorheriges Thema - Nächstes Thema

Spielmann

Hallo,
ich möchte mit fhem (auf FritzBox 7270) und einem arduino mega + ethernet shield  (Firmata configurable) Impulse zählen (Duchflusszähler einer Tankstelle). Wird ein Taster am Arduino betätigt, soll das Zählergebnis in ein Logfile geschrieben werden.
Mit dieser Zeile:

define zaehlsaeule FileLog ./log/Tankstelle.txt zaehler:count:.*

bekomme ich bei jedem Impuls einen Eintrag.


2014-03-03_23:02:25 zaehler count: 1
2014-03-03_23:02:26 zaehler count: 2
2014-03-03_23:02:26 zaehler count: 3
2014-03-03_23:02:26 zaehler count: 4
2014-03-03_23:02:27 zaehler count: 5
2014-03-03_23:02:27 zaehler count: 6
2014-03-03_23:02:27 zaehler count: 7
2014-03-03_23:02:27 zaehler count: 8
2014-03-03_23:02:28 zaehler count: 9
2014-03-03_23:02:28 zaehler count: 10
2014-03-03_23:02:28 zaehler count: 11
2014-03-03_23:02:28 zaehler count: 12
2014-03-03_23:02:29 zaehler count: 13
2014-03-03_23:39:56 zaehler count: 14


Ich möchte jedoch auf Tastendruck nur den letzten Eintrag ins Log-File bekommen. Mit dem Befehl  ,,get zähler count" wird der Wert im Web Frontend angezeigt.
Wie soll ich es anstellen, dass auf Tastendruck einmalig der Zähler ausgelesen wird und in ein Log-File geschrieben wird. Ich habe im Forum  schon alles mögliche Ansätze gelesen und ausprobiert. Anscheinend hat noch keiner diese Funktion benötigt.
Ich suche so etwas wie:

define Zählerende notify Taster { if (ReadingsVal("Taster","reading","off") eq "off"){ fhem("get zaehler count und schreibe es in ./log/Tankstelle.txt ") } }
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

chris1284

#1
was evtl geht: dummy -> userreading count -> logfile für den dummy erstellen -> notify wenn knopf gedrückt {fhem("setreading  dummy count ReadingsVal("zaehler","count","n.A.")");}

funktioniert bei mir ganz gut

betateilchen



define n_taster notify taster.on.* get zaehler count



Damit sollte im Log automatisch ein Eintrag inkl. Ergebnis auftauchen.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Spielmann



define n_taster notify taster.*on get zaehler count


funktioniert. Jedoch möchte ich den Log in ein seperates Logfile schreiben und nicht ins Standard fhem Log. Mit dem Vorschlag von chris1284 kann ich noch nichts anfangen (deswegen Anfängerfrage). Ich werde mich mal mit dummy und setreading die nächtsten Tage auseinandersetzten.
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

betateilchen

dann leg Dir doch einfach ein Logfile dafür an, wo ist das Problem?

define tasterLog Filelog ./log/taster.log taster.*
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Spielmann

hier ist mein Problem. Mit

define n_taster notify taster.*on get zaehler count


schaffe ich die Beziehung mit dem taster und dem zaehler. Wenn ich nun


define tasterLog Filelog ./log/taster.log taster.*


verliere ich ja wieder diese Beziehung. Wie bekomme ich nun diese Definiton ins Log?  Folgendes funktioniert ja nicht.


define tasterLog Filelog ./log/taster.log n_taster <- also die Definition




FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

Puschel74

Hallo,

hast du betateilchens Vorschlag überhaupt mal versucht?

Zitatdefine tasterLog Filelog ./log/taster.log n_taster
Kann nicht klappen weil du den NAMEN des notify nicht als DEVICE für das Logfile angeben kannst.

Zitatverliere ich ja wieder diese Beziehung. Wie bekomme ich nun diese Definiton ins Log?
Du verlierst nichts weil es 2 eigenständige Definitionen sind - davon kannst du 75 in FHEM haben und es wird nichts verloren gehen.
Was soll die Definition im Logfile?
Ich dachte du willst den Zustand resp. den Wert im Logfile  :o

Grüße

P.S.: Die Zahl 75 habe ich willkürlich gewählt - dort kann auch 291 stehen oder 9531.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Spielmann

Natürlich habe ich es versucht.
Zitat
Kann nicht klappen weil du den NAMEN des notify nicht als DEVICE für das Logfile angeben kannst.

Habe ich schon selbst herausgefunden, dass das nicht geht.  :(
In meiner config.cfg steht nun (mit meinen Variablen):

define freigabe FRM_IN 2
attr freigabe internal-pullup on
attr freigabe room Tankstelle
attr freigabe stateFormat reading

define freigabe_0 notify freigabe.*on get zaehler count

define zaehl_log FileLog ./log/Tankstelle.txt freigabe.*on
attr zaehl_log logtype text
attr zaehl_log room Tankstelle


bei dieser Konfiguration wird nun im FHEM.log der Zählerstand geschrieben und im Tankstelle.txt Log der Zustand der Freigabe geschrieben.  Es wird nicht definiert, dass der zaehler ins Tankstelle.txt Logfile geschrieben werden soll (das habe ich mit der Beziehung gemeint). Wären nun alle diese Logs in Tankstelle.txt wäre mein Problem erledigt.

fhem.log:

22014.03.08 10:35:28 3: freigabe_0 return value: 29
2014.03.08 10:36:02 3: freigabe_0 return value: 1
2014.03.08 10:36:25 3: freigabe_0 return value: 7
2014.03.08 10:36:46 3: freigabe_0 return value: 11


Tankstelle.txt

2014-03-08_09:30:38 freigabe reading: off
2014-03-08_10:35:28 freigabe reading: on
2014-03-08_10:35:28 freigabe reading: on
2014-03-08_10:35:33 freigabe reading: off
2014-03-08_10:36:02 freigabe reading: on
2014-03-08_10:36:02 freigabe reading: on
2014-03-08_10:36:03 freigabe reading: off
2014-03-08_10:36:25 freigabe reading: on
2014-03-08_10:36:25 freigabe reading: on
2014-03-08_10:36:26 freigabe reading: off


Wenn ich nun:

define zaehl_log FileLog ./log/Tankstelle.txt freigabe.*on|zaehler:count:.*


schreibe, wird wieder jeder Zählimpuls mitgeloggt - was ich ja nicht möchte sondern nur auf freigabe.*on.


2014-03-08_11:09:08 zaehler count: 1
2014-03-08_11:09:09 zaehler count: 2
2014-03-08_11:09:09 zaehler count: 3
2014-03-08_11:09:09 zaehler count: 4
2014-03-08_11:09:10 zaehler count: 5
2014-03-08_11:09:10 zaehler count: 6
2014-03-08_11:09:10 zaehler count: 7
2014-03-08_11:09:10 zaehler count: 8
2014-03-08_11:09:11 zaehler count: 9
2014-03-08_11:09:11 zaehler count: 10
2014-03-08_11:09:11 zaehler count: 11


PS: Als ich das mit den 75 gelesen habe, hab ich schon beim Weiterlesen überlegt "warum 75?". Hat sich dann am Textende ja erledigt.
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

Puschel74

Hallo,

Zitatfreigabe.*on

Was passiert wenn du freigabe:.*on.*
versuchst?

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Spielmann

Hallo,
meinst Du im Filelog ?

./log/Tankstelle.txt freigabe.*on.*


Das macht keinen Unterschied, bzw ich kann keine Änderung zu

./log/Tankstelle.txt freigabe.*on

feststellen

Gruß
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

Puschel74

Hallo,

Zitatmeinst Du im Filelog ?
Ja aber so

freigabe:.*on.*

Mit :  ;D

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Spielmann

Hallo,
mit
freigabe:.*on.*
komme ich wieder zum gleichen Ergebnis.

Interessant wie unterschiedlich der Syntax geschrieben werden kann. Dies ist auch ein Grund, warum ich mich als Anfänger noch ein bisschen schwer tue (fhem Sprache und PEARL Sprache teilweise gemischt, {( Klammern), Antworten im Forum werden je je nach Schreibstil angeboten...).
Aber ich bleib dran!

Gruß
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

Puschel74

Hallo,

Zitatschreibe, wird wieder jeder Zählimpuls mitgeloggt - was ich ja nicht möchte sondern nur auf freigabe.*on.
Ähh  :o

Sorry aber heute bin ich irgendwie schwer von Begriff.

Du möchtest den Zählimpuls nur loggen wenn Freigabe auf on steht oder wo hab ich jetzt meinen Denkknoten?

Vielleicht kannst du bitte nochmal kurz und knapp "für Dummys" erklären was genau du möchtest.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Spielmann

Hallo,
ich möchte mit dem Logfile eine Tankliste erzeugen.  Der Taster zeigt an, ob die Zapfpistole aufliegt (on) oder abgehoben wird (off). Wird die Zapfpistole abgehoben wird der Zähler auf 0 gesetzt (set zaehler count 0 -> funktioniert auch).
Jetzt wird getankt und dabei werden die Impulse vom Durchflusssensor gezählt. Jetzt soll natürlich nicht


2014-03-08_11:09:08 zaehler count: 1
2014-03-08_11:09:09 zaehler count: 2
2014-03-08_11:09:09 zaehler count: 3
2014-03-08_11:09:09 zaehler count: 4
2014-03-08_11:09:10 zaehler count: 5
.
.
.
2014-03-08_11:09:10 zaehler count: 3487973458


im Logfile stehen sondern nur der letzte Eintrag. Dies möchte ich erreichen, indem die Zapfpistole wieder eingehängt wird (Taster geht off und es soll ein "get zaehler count" ausgelöst werden). Das Logfile soll dann folgendermaßen aussehen:


2014-03-08_12:07:04 freigabe reading: off
2014-03-08_12:09:10 freigabe_0 return value: 3487973458
2014-03-08_12:09:10 freigabe reading: on


oder


2014-03-08_12:07:04 freigabe reading: off
2014-03-08_12:09:10 freigabe reading: on
2014-03-08_12:09:10 freigabe_0 return value: 3487973458


oder so ähnlich.

Gruß
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)

Spielmann

Hallo,
ich bekomme es immer noch nicht hin. Vielleicht könnte mir chris1284 das mit dem "setreading", "userreading"  und "dummy" genauer erklären.

Zitat
was evtl geht: dummy -> userreading count -> logfile für den dummy erstellen -> notify wenn knopf gedrückt

Grüße
FHEM mit Raspi (Zentrale)
Raspberrymatic (Heizung)
Siemens LOGO8 (Lichtsteuerung)
Philips HUE Gedöns
Diesel-Tankstelle mit fhem und ESP (eine ewige Baustelle)