OWCOUNT: Doppelte Belegung eines Readings

Begonnen von MarkusN, 10 Juli 2015, 17:38:31

Vorheriges Thema - Nächstes Thema

MarkusN

Hallo,

ich nutze seit kurzem OWCOUNT ($Id: 21_OWCOUNT.pm 8513 2015-05-02 03:52:59Z pahenning $) mit owserver und einem DS9490R als Busmaster. Daran hängt ein DS2423eold (wurde in diesem Forum entwickelt und vertrieben).

Meine Definition:

define owc OWCOUNT 1D.A2D987000002 120
attr owc AFactor 0.001
attr owc AMode daily
attr owc AUnit kWh
attr owc BFactor 0.1
attr owc BMode daily
attr owc BUnit m3
attr owc IODev owserver
attr owc model DS2423eold
attr owc nomemory 1
attr owc room Keller


OWCOUNT liest aus und berechnet wie es sollte, jedoch habe ich bei jedem Intervall offenbar eine doppelte Belegung vom Reading "A", welches auch im Webinterface zu sehen ist, anbei ein Auszug aus meiner Datenbank (dblog auf mysql):

"TIMESTAMP" "DEVICE" "TYPE" "EVENT" "READING" "VALUE" "UNIT"
"2015-07-10 17:34:11" "owc" "OWCOUNT" "A: 2.467" "A" "2.467" ""
"2015-07-10 17:34:11" "owc" "OWCOUNT" "A_rate: 0.66" "A_rate" "0.66" ""
"2015-07-10 17:34:11" "owc" "OWCOUNT" "B: 0.1" "B" "0.1" ""
"2015-07-10 17:34:11" "owc" "OWCOUNT" "B_rate: 0" "B_rate" "0" ""
"2015-07-10 17:34:11" "owc" "OWCOUNT" "A: 2.467 kWh A_rate: 0.660 kW B: 0.100 m3 B_rate: 0.000 m3/h" "A" "2.467 kWh A_rate: 0.660 kW B: 0." ""
"2015-07-10 17:32:11" "owc" "OWCOUNT" "A: 2.445" "A" "2.445" ""
"2015-07-10 17:32:11" "owc" "OWCOUNT" "A_rate: 0.69" "A_rate" "0.69" ""
"2015-07-10 17:32:11" "owc" "OWCOUNT" "B: 0.1" "B" "0.1" ""
"2015-07-10 17:32:11" "owc" "OWCOUNT" "B_rate: 0" "B_rate" "0" ""
"2015-07-10 17:32:11" "owc" "OWCOUNT" "A: 2.445 kWh A_rate: 0.690 kW B: 0.100 m3 B_rate: 0.000 m3/h" "A" "2.445 kWh A_rate: 0.690 kW B: 0." ""
"2015-07-10 17:30:11" "owc" "OWCOUNT" "A: 2.422" "A" "2.422" ""
"2015-07-10 17:30:11" "owc" "OWCOUNT" "A_rate: 0.75" "A_rate" "0.75" ""
"2015-07-10 17:30:11" "owc" "OWCOUNT" "B: 0.1" "B" "0.1" ""
"2015-07-10 17:30:11" "owc" "OWCOUNT" "B_rate: 0" "B_rate" "0" ""
"2015-07-10 17:30:11" "owc" "OWCOUNT" "A: 2.422 kWh A_rate: 0.750 kW B: 0.100 m3 B_rate: 0.000 m3/h" "A" "2.422 kWh A_rate: 0.750 kW B: 0." ""
"2015-07-10 17:28:11" "owc" "OWCOUNT" "A: 2.397" "A" "2.397" ""
"2015-07-10 17:28:11" "owc" "OWCOUNT" "A_rate: 0.7736" "A_rate" "0.7736" ""
"2015-07-10 17:28:11" "owc" "OWCOUNT" "B: 0.1" "B" "0.1" ""
"2015-07-10 17:28:11" "owc" "OWCOUNT" "B_rate: 0" "B_rate" "0" ""
"2015-07-10 17:28:11" "owc" "OWCOUNT" "A: 2.397 kWh A_rate: 0.774 kW B: 0.100 m3 B_rate: 0.000 m3/h" "A" "2.397 kWh A_rate: 0.774 kW B: 0." ""


Hier ist erkennbar wie das Reading "A" erst mit dem ganzen Rattenschwanz gefüllt wird welcher eigentlich im Reading "state" stehen sollte, unmittelbar danach wird das Reading jedoch wieder überschrieben, diesmal mit dem erwarteten Wert.

Habe so spontan keine Idee woran es liegen könnte, hat jemand einen Tipp für mich?

Grüße,

Markus

Prof. Dr. Peter Henning

Das ist eine Nebelkerze. Keineswegs wird "das Reading A überschrieben".

Sondern der reguläre Audrück für das Logging in der Definiton des Logs ist nicht korrekt gesetzt - denn es wird sowohl das einzelne A-Reading, als auch der state durch diesen regulären Ausdruck gematcht.

LG

pah

MarkusN

Wenn dem so ist, warum zeigt mir dann sogar das Webinterface das Reading so an?


justme1968

das ist ziemlich sicher nur der longpoll update der state falsch interpretiert. das ganze ist z.b. hier: http://forum.fhem.de/index.php/topic,32670.msg252201.html?PHPSESSID=vpu1v7pg55m9odml0qbdh07vc2#msg252201 beschrieben.

direkt nach dem seitenaufbau bzw. mit einem list sollte A ganz normal zu sehen sein.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

MarkusN

Okay, die Beweisführung geht in die nächste Runde :D

Hier ein Auszug aus meinem Eventlog:

2015-07-12 16:02:05 OWCOUNT owc A: 1.571
2015-07-12 16:02:05 OWCOUNT owc A_rate: 0.33
2015-07-12 16:02:05 OWCOUNT owc B: 0
2015-07-12 16:02:05 OWCOUNT owc B_rate: 0
2015-07-12 16:02:05 OWCOUNT owc A: 1.571 kWh A_rate: 0.330 kW B: 0.000 m3 B_rate: 0.000 m3/h

justme1968

eben. du siehst hier 5 events. jeweils eins für A, A_rate, B, B_rate und state.

am event lässt sich nicht mehr zwischen dem state mit wert A: xxx und dem reading A mit dem wert xxx unterscheiden. des geht nur vorher wenn die reading gesetzt sind. d.h. der einzige 'beweis' ist ein list auf das device bzw. die ansicht direkt nach dem seiten aufbau.

wenn du addStateEvent setzt wirst du sehen das die state änderung ein event A: xxx und ein event state: A: xxx erzeugt. das hilft dir aber leider nicht.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Prof. Dr. Peter Henning

Er versteht es noch nicht...

Ganz einfach den regulären Ausdruck für das Log Device ändern, so dass die Zeile NICHT mehr gefunden wird, wenn noch irgendetwas nach den reinen Zahlenwerten kommt. Nimmt ca. 30 Sekunden in Anspruch.

LG

pah

MarkusN

Zitat von: justme1968 am 12 Juli 2015, 16:46:15
eben. du siehst hier 5 events. jeweils eins für A, A_rate, B, B_rate und state.

am event lässt sich nicht mehr zwischen dem state mit wert A: xxx und dem reading A mit dem wert xxx unterscheiden. des geht nur vorher wenn die reading gesetzt sind. d.h. der einzige 'beweis' ist ein list auf das device bzw. die ansicht direkt nach dem seiten aufbau.

wenn du addStateEvent setzt wirst du sehen das die state änderung ein event A: xxx und ein event state: A: xxx erzeugt. das hilft dir aber leider nicht.

gruss
  andre

Ich sehe langsam den Wald vor lauter Bäumen nicht mehr. Danke für den Hinweis, habe das erste Event schon gar nicht mehr als state erkannt. Offenbar bin ich tatsächlich Opfer eines zu lockerem RegExp geworden.

Wie schon erwähnt benutze ich dblog. Die entsprechende Definition sieht so aus:
./db.conf .*:.*(temperature|desiredTemperature|valveposition|humidity|absFeuchte|dewpoint|brightness|bedarf|A|B|A_rate|B_rate).*

Und das ganze kann ich auch rekonstruieren. Wenn ich von den letzten Ausdrücken nur noch A übrig lasse, wird trotzdem auch A_rate und der state weggeschrieben.

Leider fehlt mir das notwendige Verständnis für Regexp, ein paar spontane Tests haben nicht funktioniert, darunter auch statt "A" "A$" anzugeben. Dann wird nämlich gar nichts mehr gelogged. Vielleicht hat ja jemand die nötigen 30 Sekunden übrig und hilft mir auf die Sprünge?

Grüße,

Markus

Prof. Dr. Peter Henning

Normalerweise helfe ich auf der Ebene nicht...

Also ausnahmsweise: versuchen mit (A.[\.\d]*) statt des einfachen A

LG

pah

MarkusN

Danke für den Tipp, hat aber leider nicht funktioniert. Habe es auch versucht die anderen Readings des Counters wegzulassen und nur diesen Ausdruck zu nehmen, auch ohne Erfolg. Es landet immer der state in der Datenbank.

Ich habe es jetzt anders gelöst:

attr owc event-on-change-reading A,A_rate,B,B_rate

Damit erzeugt eine Änderung von state kein Event und wird beim logging nicht mehr berücksichtigt.

Grüße,

Markus