Hallo,
meine Onewire-Tempsensoren, über Ethersex auf einem NetIO angeschlossen bringen alle 2 Min. diese Meldung im Log, obwohl Verbose auf 0 steht.
Zum Test habe ich Verbose auf 5 gesetzt, siehe Logausschnitt, komme aber nicht weiter, wo der Fehler liegt.
Kann mir Jemand helfen?
2015.05.31 19:05:17 2: After sleep: temp 26.00
2015.05.31 19:07:17 2: After sleep: temp 25.75
2015.05.31 19:09:17 2: After sleep: temp 25.56
2015.05.31 19:11:17 2: After sleep: temp 25.38
2015.05.31 19:13:17 2: After sleep: temp 19.31
2015.05.31 19:13:17 2: After sleep: temp 19.81
2015.05.31 19:13:18 2: After sleep: temp 25.25
2015.05.31 19:15:14 5: ECMDDevice: Analyze command >{"1w convert\n"}<
2015.05.31 19:15:16 5: ECMDDevice: Analyze command >{"1w get 289f172c06000015\n"}<
2015.05.31 19:15:17 5: Postprocessing "25.00\n" with perl command { s/\n//g; my $hash = $defs{PVTemp}; my $temperature = $_; my $state = $temperature; readingsSingleUpdate($hash, "temp", $temperature, 1); readingsSingleUpdate($hash, "state", $state, 1); }.
2015.05.31 19:15:17 5: Postprocessed value is "25.00".
2015.05.31 19:15:17 2: After sleep: temp 25.00
Hallo, du machst das get ... Bestimmt alle 2 min über ein at. Setz das at mit attr verbose 0 dann sollte im Log nichts mehr auftauchen. Hab ich bei mir so.
Vg
Frank
OK, danke.
ich habe jetzt Verbose 5 bei den at-Routinen eingefügt, hat leider nicht geholfen.
Hat sonst noch einer eine Idee?
verbose 0 !! Nicht 5, damit loggst du ja alles und nur bei dem at, welches mittels get das Onewire device abfragt!
Sorry :( , ich meinte natürlich Verbose 0 und mit 0 bekomme ich immer noch den Log-Eintrag.
Ich habe insgesamt 3 OW-Sensoren, aber nur einer misst alle 2 Min, die anderen beide alle 10 Min, das Problem ist aber das gleiche.
Hallo, die classdef hast du doch so:
# Übergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen
set messen cmd {"1w convert\n"}
set messen expect "OK\n"
get temp cmd {"1w get %devID\n"}
get temp expect "\d+.\d\n"
dann rufst du bestimmt über ein: define blabla at +*00:02:00 set <device> messen; sleep 2; get <device> temp
das OW device auf und liest die Temp. Werte ein.
Jetzt einfach
attr blabla verbose 0
und dann sollten keine Events vom OW device mehr geloggt werden, bei mir funktioniert das jedenfalls
VG
Frank
Hallo,
das mit Verbose habe ich so, bekomme trotzdem die Einträge.
Ich vermute, es hängt an meiner classdef.
Diese weicht etwas von deiner ab, da ich im Logfile Leerzeilen hatte und der Plot deswegen nicht funktionierte.
Die postproc-Zeile habe ich von http://www.ethersex.de/index.php/Nutzung_in_FHEM_(Deutsch) (http://www.ethersex.de/index.php/Nutzung_in_FHEM_(Deutsch)) abgekupfert.
Meine classdef:
# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen
set messen cmd {"1w convert\n"}
set messen expect "OK\n"
get temp cmd {"1w get %devID\n"}
get temp expect "\d+.\d\n"
get temp postproc {\
s/\n//g;\
my $hash = $defs{%NAME};\
my $temp = $_;\
my $state = $temp;\
\
readingsSingleUpdate($hash, "temp", $temp, 1);\
readingsSingleUpdate($hash, "state", $state, 1);\
\
}
Kann es sein, das das doppelte 'temp', einmal als "get temp" und einmal als reading schuld ist?
Das kann gut sein- lasse es doch testweise mal weg. Das state muss man vermutlich gar nicht extra bedienen. Hauptsache temperature stimmt. 8)
Übrigens wird mit einer der nächsten E6-Updates die 1w-convert-Lösung "intern" entfallen und nur noch Polling verwendet. Auf jeden Fall wird das convert noch mit OK bestätigt, so das auch die "alte" FHEM-Lösung weiterhin funktionieren wird.
Ich weiss nicht weiter :(
Die classdef habe ich mehrfach abgeändert, ohne Erfolg
Fakt ist:
manuell das messen anstossen = OK,
automatisch über at, Meldung im Log >:( trotz verbose 0
Woher kommt der Text 'after sleep'?
Wie sieht denn aktuell das "at" zum auslesen aus?
define 1Wire_PVTemp at +*00:02:00 set PVTemp messen;; sleep 2;; get PVTemp temp
attr 1Wire_PVTemp verbose 0
Die Meldung ist der Inhalt von state 'temp 18.32'.
Da steht das sleep. Falls Du polling aktiv hast, kann es samt convert weg.
Wenn du ein aktuelles E6 kompilieren kannst- immer Polling versuchen. Das machts entspannter :)
Alternativ kann ich Dir auch eine aktuelle Version kompilieren, wenn ich die Daten dazu bekomme.
Danke für die Info, das neu kompilieren wollte ich vermeiden, wenn es aber nicht anders geht, mache ich das.
Trotzdem verstehe ich nicht, wieso die Meldung mit verbose 0 erscheint. Das sleep 2 ist doch kein Fehler.
Bei franky08 (siehe weiter oben) wird die Meldung durch verbose 0 unterdrückt.
Lies mal die commandref zu sleep:
http://fhem.de/commandref_DE.html#sleep
Wenn du ein quiet hinter das sleep hängst, sollten die Meldungen nicht mehr auftauchen:
define 1Wire_PVTemp at +*00:02:00 set PVTemp messen;; sleep 2 quiet;; get PVTemp temp
Gruß,
Gero
Super, danke für den Hinweis.
Schönen Feiertag,
Gruß Bernd