Hallo,
Ich habe auf einem Rpi FHEM am laufen. Angeschlossen ist ein AVR-Net-IO mit einer One-Wire-Temperaturmessung. Jetzt möchte ich aber, dass die Aktivitäten der Messung nicht in der Haupt-Logfile mitgeschrieben werden, sondern eine eigene Logfile bekommen. Wie kann ich das umsetzen?
MFG
Zitat von: LeonLeckstrom am 03 Juli 2015, 12:57:34
dass die Aktivitäten der Messung nicht in der Haupt-Logfile mitgeschrieben werden, sondern eine eigene Logfile bekommen.
Hallo,
das ist doch eigentlich Standard!? Wenn z.B. autocreate ein Device erzeugt wird doch bei allen Sensoren ein extra logfile angelegt. Im FHEM Log werden doch eigentlich keine Messwerte geloggt.
poste mal ein list <devicename>
Gruß Otto
Es geht nicht nur um den Messwert, sondern auch um dinge wie:
2015.07.01 10:28:43 2: Attempt to write to disconnected device.
2015.07.01 10:28:43 1: Client.point01: no answer received (wrote "1w convert\n", expected OKn)
2015.07.01 10:28:45 2: Attempt to write to disconnected device.
2015.07.01 10:28:45 1: Client.point01: no answer received (wrote "1w get 106b13d902080059\n", expected \d+.\d\n)
2015.07.01 10:28:45 2: After sleep: temp
Quasi sämtliche Rückmeldungen eines Gerätes. Die Temperaturen werden schon extra geloggt.
Du kannst bei dem Gerät verbose 0 setzen, dann ist zumindest Ruhe im zentralen Log.
Danke Otto, verbose funktioniert.
Ich habe hinzugefügt:
define log_Client.point01 FileLog /opt/fhem/log/log_dev/Client.point01/Client.point01-%Y-%m.log Client.point01
Aber es wird nichts geloggt. Weswegen?
Setz noch n .* hinten drann, dann wird fleissig geloggt:
define log_Client.point01 FileLog /opt/fhem/log/log_dev/Client.point01/Client.point01-%Y-%m.log Client.point01:.*
lg, Ici
Nein, ist leider immernoch Ruhe.
define Client.point01 ECMD telnet 192.168.178.34:2701
attr Client.point01 classdefs ONEWIRE=/opt/fhem/onewire.classdef:RELAIS=/opt/fhem/relais.classdef
attr Client.point01 room HM-Raum
attr Client.point01 verbose 0
define log_Client.point01 FileLog /opt/fhem/log/log_dev/Client.point01/Client.point01-%Y-%m.log Client.point01:.*
Zitat von: LeonLeckstrom am 03 Juli 2015, 14:10:43
Die Temperaturen werden schon extra geloggt.
Wie war das eigentlich gemeint?
Die log Files werden in den Definitionen eigentlich relativ angegeben also so:
./log/<Name des Logfiles.log>
Existieren denn Deine Unterpfade? Ob die FHEM anlegt weiß ich nicht.
Ich weiß auch nicht was FHEM mit dem Punkt im Namen macht. Ich verwende so etwas jedenfalls bewusst nicht.
Bitte nimm für Deine Code und Log Postings die Code Tags, sonst kann das keiner lesen.
Gruß Otto
So, ich hab jetzt nochmal ein bisschen rumprobiert. Es taucht mittlerweile ein neues Problem auf: ich bekomme es nicht hin, dass mein Temperaturwert nicht in der Haupt-Logfile angezeigt wird. Stattdessen bekomme ich jede minute ein "2015.07.27 12:12:56 2: After sleep: temp" geloggt, was echt nervt.
So sieht das ganze momentan aus:
define Client.point01 ECMD telnet 192.168.178.34:2701
attr Client.point01 classdefs ONEWIRE=/opt/fhem/onewire.classdef:RELAIS=/opt/fhem/relais.classdef
attr Client.point01 room Alter HM-Raum
attr Client.point01 verbose 0
define log_Client.point01 FileLog /opt/fhem/log/log_dev/Client.point01/Client.point01-%Y-%m.log Client.point01:.*
define Temp01 ECMDDevice ONEWIRE 106b13d902080059
attr Temp01 IODev Client.point01
define 1Wire_Temp at +*00:01 set Temp01 messen;; sleep 2;; get Temp01 temp
define Log_Temperatur FileLog /opt/fhem/log/log_temp/Temp01-%Y.log Temp01:(temp).*
Wo muss ich mein verbose setzten, damit die Meldung weg ist? bei "attr Client.point01 verbose 0" funktioniert es ja auch! :'(
Mal so geraten. Trage verbose 0 im Device Temp01 ein.
Nein, Funktioniert nicht. Es wird weiter geloggt.
define Temp01 ECMDDevice ONEWIRE 106b13d902080059
attr Temp01 IODev Client.point01
attr Temp01 verbose 0
gib mal ein logauszug
Seit dem letzten speichern:
2015.07.27 13:41:44 2: eventTypes: loaded 79 events from ./log/eventTypes.txt
2015.07.27 13:41:47 1: Including ./log/fhem.save
2015.07.27 13:42:49 2: After sleep: temp
2015.07.27 13:43:49 2: After sleep: temp
2015.07.27 13:44:49 2: After sleep: temp
2015.07.27 13:45:49 2: After sleep: temp
2015.07.27 13:46:49 2: After sleep: temp
2015.07.27 13:47:49 2: After sleep: temp
2015.07.27 13:48:49 2: After sleep: temp
2015.07.27 13:49:49 2: After sleep: temp
Es sei dazugesagt, dass die Temperaturen fehlen, weil das AVR-NET-IO momentan nicht angeschlossen ist. wenn es das ist, kommt das selbe, nur eben mit werten.
Liest Du die Werte aus einer Datei in das Device ein? Sieht mir jedenfalls so aus.
Mach mal bitte ein
list Device
Und verwende code Tags.
Global:
global (<no definition>)
FHEMWEB:
WEB (Initialized)
WEBphone (Initialized)
ECMD:
Client.point01 (disconnected)
ECMDDevice:
Temp01 (temp)
at:
1Wire_Temp (Next: 14:33:47)
eventTypes:
eventTypes (active)
notify:
initialUsbCheck (active)
FileLog:
Log_Temperatur (active)
Logfile (active)
log_Client.point01 (active)
SVG:
weblink_Temperatur (initialized)
autocreate:
autocreate (active)
telnet:
telnetPort (Initialized)
Ähm, bitte ein list auf das Device. Kein Globales.
list Temp01
Und liest Du nun die Werte aus einer Datei ein und schreibst sie dann ins Device, ja/nein?
Internals:
DEF ONEWIRE 106b13d902080059
IODev Client.point01
NAME Temp01
NR 26
STATE temp
TYPE ECMDDevice
Readings:
2015-07-27 15:06:49 state temp
Fhem:
classname ONEWIRE
Cache:
Specials:
%NAME Temp01
%TYPE ECMDDevice
%devID 106b13d902080059
Params:
devID 106b13d902080059
Attributes:
IODev Client.point01
verbose 0
Ich bin mir nicht sicher. Ich habe eine .classdef, in der die Befehle stehen.
der Abruf sieht so aus:
define 1Wire_Temp at +*00:01 set Temp01 messen;; sleep 2;; get Temp01 temp
Ok, dadurch das Du ein at hast welcher Deine Readings setzt werden die Angaben natürlich auch global geloggt. Gib mal Deinem at ein verbose 0 mit
Zitatsleep 2 quiet
Wenn du die Einträge aus dem Fhem.log haben willst
Zitat2015.07.27 13:42:49 2: After sleep: temp
musst du das quiet wie oben gezeigt hinter den sleep befehl schreiben
Danke für die Antworten, ich werde es gleich probieren, wenn die neue SD-Karte da ist. ;D