Achtung: Title geändert, da dieser eigentlich nicht korrekt ist
Alter Title: OWCOUNT berechnet nach Update falschen Wert für E-Energy
Hallo
ich habe heute eine Update von Fhem gemacht.
# $Id: 21_OWCOUNT.pm 5125 2014-03-04 12:38:50Z pahenning $
# $Id: 21_OWTHERM.pm 5035 2014-02-24 03:47:01Z pahenning $
# $Id: 00_OWX.pm 4348 2013-12-08 22:06:00Z ntruchsess $
# $Id: fhem.pl 5156 2014-03-06 22:57:44Z rudolfkoenig $
nun habe ich in OWCount Cannel B plötzlich einen falschen Wert und kann mir diesen nicht erklären.
Einstellungen von OWCOUNT
Internals:
ASYNC 0
DEF DS2423 A2D984000005
INTERVAL 300
IODev OWio1
NAME ow_Counter
NR 413
OW_FAMILY 1D
OW_ID A2D984000005
PRESENT 1
ROM_ID 1D.A2D984000005.B4
STATE A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 13.551 kWh E-Power: 0.7200 kW
TYPE OWCOUNT
Readings:
2014-03-08 21:32:53 A 26624
2014-03-08 21:32:53 A_rate 0
2014-02-16 09:32:54 B 18104
2014-02-16 09:32:54 B_rate 298.0132
2014-03-08 21:32:53 E-Energy 13.5513
2014-03-08 21:32:53 E-Power 0.72
2014-03-07 23:55:52 day D07 A: 26624.0 cts AM: 0.0 cts E-Energy: 241.4 kWh E-EnergyM: 0.0 kWh
2014-02-28 23:55:37 month M02 A: 0.0M cts AY: 0.0 cts E-Energy: 0.0M kWh E-EnergyY: 0.0 kWh
2014-03-08 21:32:53 state A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 13.551 kWh E-Power: 0.7200 kW
owg_midnight:
26624
241.42
owg_str:
owg_val:
26624
203977
Attributes:
BFactor 0.00125
BMode daily
BName E-Energy|energy
BOffset 0
BRate E-Power|power
BUnit kWh|kWh
IODev OWio1
model DS2423emu
nomemory 1
room OWX
Im Logging steht nach dem Update (2014-03-08_20:43:29) folgende Wert
2014-03-08_20:08:36 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 253.993 kWh E-Power: 0.39 kW
2014-03-08_20:13:37 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 254.016 kWh E-Power: 0.28 kW
2014-03-08_20:29:36 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 254.120 kWh E-Power: 0.39 kW
2014-03-08_20:34:36 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 254.239 kWh E-Power: 1.43 kW
2014-03-08_20:43:29 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 12.963 kWh E-Power: -319.6883 kW
2014-03-08_20:47:53 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 13.005 kWh E-Power: 0.5795 kW
List RAW gibt den richtigen Zählerstand zurück
fhem> get ow_Counter raw B
OWCOUNT: ow_Counter.raw B => 204039
Trotzdem gibt
fhem> get ow_Counter counters
OWCOUNT: ow_Counter.counters => A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 13.639 kWh E-Power: 0.7826 kW
zurück.
BFactor 0.00125
Sollte doch eigentlich 204039 * 0,00125 = 255,04875 ergeben, oder täusche ich mich hier.
(Dieser Wert würde eher zum Logging passen hat natürlich seit dem Update schon etwas weiter gezählt)
Woran kann es liegen dass ich plötzlich diesen anderen Wert angezeigt bekomme?
In OWCOUNT_ow_Counter_14.dat steht 26624.000000
in OWCOUNT_ow_Counter_15.dat steht 241.425900
Schönen Abend
Hannes
Nachtrag
Hab noch einen Versuch durchgeführt was das funktionieren der eigentlichen Berechnung bestätigt
OWCOUNT: ow_Counter.counters => A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 13.810 kWh E-Power: -45274.5024 kW
fhem> attr ow_Counter BOffset 800000
fhem> get ow_Counter counters
OWCOUNT: ow_Counter.counters => A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 1013.813 kWh E-Power: 400001.0000 kW
Kann mir deshalb absolunt nicht erklären wie er auf den Wert hier 13.810 kWh kommt :(
Hallo Hannes,
du hast den B Kanal im daily-Modus, deswegen zeigt es dir den Tageswert und nicht den Gesamtwert an.
Gruß,
Stefan
Hallo Stefan,
dass kann ich nicht nachvollziehen, da bisher in E-Energy auch immer der absolute Wert gestanden ist.
Siehe Logeintrag 254.239 kWh.
Dann habe ich etwas an der Funktionsweise von OWCOUNT komplett falsch verstanden,
bzw. hat bisher immer anders gearbeitet.
In der Tageslogdatei wurden diese Werte auch soweit geloggt
2014-03-01_23:56:23 ow_Counter day: D01 A: 26624.0 cts AM: 0.0 cts E-Energy: 161.5 kWh E-EnergyM: 0.0 kWh
2014-03-02_23:59:35 ow_Counter day: D02 A: 26624.0 cts AM: 0.0 cts E-Energy: 174.3 kWh E-EnergyM: 0.0 kWh
2014-03-03_23:57:39 ow_Counter day: D03 A: 26624.0 cts AM: 0.0 cts E-Energy: 191.2 kWh E-EnergyM: 0.0 kWh
2014-03-04_23:56:18 ow_Counter day: D04 A: 26624.0 cts AM: 0.0 cts E-Energy: 205.8 kWh E-EnergyM: 0.0 kWh
2014-03-05_23:59:37 ow_Counter day: D05 A: 26624.0 cts AM: 0.0 cts E-Energy: 217.4 kWh E-EnergyM: 0.0 kWh
2014-03-06_23:57:47 ow_Counter day: D06 A: 26624.0 cts AM: 0.0 cts E-Energy: 228.6 kWh E-EnergyM: 0.0 kWh
2014-03-07_23:55:52 ow_Counter day: D07 A: 26624.0 cts AM: 0.0 cts E-Energy: 241.4 kWh E-EnergyM: 0.0 kWh
Gruß und trotzdem Danke für die Rückmeldung
Hannes
Vielleicht hatte deine bisher verwendete OWCOUNT den daily Modus nicht richtig umgesetzt, wenn du nicht den Tagesverbrauch haben willst lösche doch einfach das attr Bmode daily und fertig.
Gruß
Zitat von: Haecksler am 08 März 2014, 23:23:50
Vielleicht hatte deine bisher verwendete OWCOUNT den daily Modus nicht richtig umgesetzt, wenn du nicht den Tagesverbrauch haben willst lösche doch einfach das attr Bmode daily und fertig.
Gruß
Hallo Stefan,
ich habe es jetzt mal getestet.
fhem> attr ow_Counter BMode daily
fhem> get ow_Counter counters
OWCOUNT: ow_Counter.counters => A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 15.060 kWh E-Power: -8971.3124 kW
fhem> attr ow_Counter BMode
fhem> get ow_Counter counters
OWCOUNT: ow_Counter.counters => A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 256.481 kWh E-Power: 96568.5200 kW
... und tatsächlich schaut es jetzt anders aus :),
... aber wenn ich es mir recht überlegen (und verstehe ???) vielleicht ist der daily Modus doch gar nicht soooo schlecht.
... und berechnet wird der daily Wert aus dem Wert von OWCOUNT_ow_Counter_15.dat (241.425900)
Was ich aber nicht verstehe warum es bisher immer so funktionierte als ob ich keinen daily Mode aktiv habe :o
vielleicht kann hierzu
Prof. Dr. Peter Henning einen Tipp abgeben.
Wäre es nicht möglich im
daily Mode ein Reading hinzuzufügen, welches den Absolutwert des Zählers inklusive Offset anzeigt,
um schnell zu veriffizieren ob der Hauptzählerwert mit dem OWCOUNTER Wert übereinstimmen
außerdem wäre es hiermit schnell möglich mit Hilfe von
XOffset nach "Wartungarbeiten" (OWCounter zählt eine Weile nicht) abzugleichen.
Gruß Hannes
Ich schreibe per at den Midnight-Wert in einen Dummy geht ganz gut.
Hallo Stefan,
und wie ließt Du den mindnight Wert aus?
mit
fhem("get ". $objname . " midnight B") ;
bekommt man ja nicht den eigentlichen midnight Wert zurück sondern
z.B.
OWCOUNT: ow_Counter.midnight [15] =>15585.32
Gruß Hannes
Zitat von: AHA1805 am 09 März 2014, 01:23:08
Hallo Stefan,
und wie ließt Du den mindnight Wert aus?
mit
fhem("get ". $objname . " midnight B") ;
bekommt man ja nicht den eigentlichen midnight Wert zurück sondern
z.B.
OWCOUNT: ow_Counter.midnight [15] =>15585.32
Gruß Hannes
Sorry hatte ich ganz vergessen, man muss den String so kürzen, dass nur der Wert ürig bleibt.
Das sieht dann so aus:
define ZaehlerStandStrom at *00:02:00 {my $d=fhem("get Energie_Zaehler midnight B");;\
$d=substr($d,41);;\
fhem("set ZaehlerStand $d");;\
my $d1=fhem("get Energie_Zaehler midnight A");;\
$d1=substr($d1,41);;\
fhem("set ZaehlerStand1 $d1");;}
Gruß,
Stefan
Ein "set <name> counter <val>" steht bei mir auch auf der Agenda, ist in der nächsten Version drin.
Warum mit irgendwelchen älteren Versionen irgendetwas nicht funktioniert haben soll: Leute, für solche Forschungsarbeit fehlt mir nun wirklich die Zeit...
LG
pah
Guten Morgen pah,
danke für die Rückmeldung.
Die Funktion
"set <name> counter <val>" hört sich super an :D und ist auch besser als correction.
Jetzt hätte ich noch eine Frage, hat zwar nicht direkt etwas mit dem Titel zu tun,
paßt aber zum Verlauf des Threats.
Da dass Reading B zwar in ow_Counter noch drinnen steht aber nicht mehr aktualisiert wird,
habe ich mir gedacht dieses einfach dazu zu missbrauchen den aktuellen Zählerwert anzuzeigen in der Form
define ntf_ow_Counter notify ow_Counter.* {evtow_Counter("@")}
####### ##############################################
# Ersteller AHA
# Typ Event ow_Counter
#
# Aufgabe Den Absoluten Wert des Zählers im Reading B abspeichern
# da dieses Reading nicht benutzt wird.
#
# Hintergrund: Dadurch ist am Anhieb zu sehen, welchen absoluten
# Wert der Zähler gerade hat.
#
# 2014-03.09 AHA Erstellung
#
#
sub evtow_Counter($)
{
my ($objname) = shift;
my ($vDummy) = fhem("get ". $objname . " midnight B") ;
my ($objBdaily) = ReadingsVal($objname,"E-Energy","0");
$vDummy = substr($vDummy,36);
$objBdaily = $vDummy + $objBdaily;
fhem("setreading " . $objname . " B " . $objBdaily );
Log 1, "evtow_Counter Objektname ". $objname . " midnight:" . $vDummy . " daily:" . $objBdaily;
}
Nun habe ich jedoch das Problem, da durch diese Aktion eine Menge Events entstehen und dadurch
mit Logfile mit einer Menge zusatzt Information befüttert wird und somit der Aktualwert E-Power nicht mehr korrekt funktioniert.
Weil viele Events auflaufen.
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0.767
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.7670 kW
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
2014-03-09 12:23:10 OWCOUNT ow_Counter B: 15592.015
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
2014-03-09 12:23:10 OWCOUNT ow_Counter B: 15592.015
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
2014-03-09 12:23:10 OWCOUNT ow_Counter B: 15592.015
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
2014-03-09 12:23:10 OWCOUNT ow_Counter B: 15592.015
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624
2014-03-09 12:23:10 OWCOUNT ow_Counter A_rate: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Energy: 6.695
2014-03-09 12:23:10 OWCOUNT ow_Counter E-Power: 0
2014-03-09 12:23:10 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
Definition Logfile
define ow_Counter.FL FileLog ./log/ow_Counter/OWC-%Y-%m-%d.log ow_Counter.A.*E-Energy.*
Wie kann man es verhindert dass diese Menge Events entstehen und dadurch mein Logfile "zugemüllt" wird?
Wenn ich
attr ow_Counter event-on-update-reading E-Energy
definiere kommt der Event
ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 6.695 kWh E-Power: 0.0000 kW
welchen ich im Logfile verwende nicht mehr durch :'(
Gruß Hannes
Hm. Verstehe ich alles nicht so ganz.
Erstens: Wieso sollte der B-Kanal nicht aktualisiert werden ? Das OWCOUNT-Modul wertet selbstverständlich auch den B-Kanal aus.
Zweitens: Den raw-Wert kann man doch jederzeit abfragen, warum also ihn speichern ?
Drittens: Die Anzahl der Events wird nicht größer oder kleiner. Es gibt einen Event für jeden Datenwert, und einen für den gesamten STATE. Das Logfile wird davon überhaupt nicht zugemüllt, mit dem entsprechenden regulären Ausdruck kann man das ganz sauber trennen.
Viertens: Das mit Event-on-update muss ich überprüfen.
LG
pah
Hallo pah,
danke für die Rückmeldung.
Zitat von: Prof. Dr. Peter Henning am 09 März 2014, 13:48:19
Hm. Verstehe ich alles nicht so ganz.
Erstens: Wieso sollte der B-Kanal nicht aktualisiert werden ? Das OWCOUNT-Modul wertet selbstverständlich auch den B-Kanal aus.
(Kanal A ist im Moment nicht in Verwendung)Der B Kanal ansich aktualisiert schon nur das Reading mit dem Namen
B wird nicht mehr beschrieben,
aus diesem Grund würde ich das gerne für die Anzeige des tatsächlichen Zählerwertes verwenden.
Es werden von Kanal B nur die
Readings
E-Energy
E-Power Readings:
2014-03-09 20:28:10 A 26624
2014-03-09 20:28:10 A_rate 0
====>2014-03-09 12:01:12 B 0 <=================== siehe hier ========
2014-02-16 09:32:54 B_rate 298.0132
2014-03-09 20:28:10 E-Energy 20.4137
2014-03-09 20:28:10 E-Power 0.4592
2014-03-08 23:57:54 day D08 A: 26624.0 cts AM: 0.0 cts E-Energy: 15.3 kWh E-EnergyM: 0.0 kWh
2014-02-28 23:55:37 month M02 A: 0.0M cts AY: 0.0 cts E-Energy: 0.0M kWh E-EnergyY: 0.0 kWh
2014-03-09 20:28:10 state A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.414 kWh E-Power: 0.4592 kW
aktualisiert, welche dem Kanal B entsprechen!
Zitat von: Prof. Dr. Peter Henning am 09 März 2014, 13:48:19
Zweitens: Den raw-Wert kann man doch jederzeit abfragen, warum also ihn speichern ?
Bei
get ow_Counter raw B bekomme ich nur den aktuellen Counterwert des Counters nicht jedoch den Gesamtwert inklusive BOffset welcher in SUMME den Wert des EVU Stromzählers wiederspiegelt.
Zitat von: Prof. Dr. Peter Henning am 09 März 2014, 13:48:19
Drittens: Die Anzahl der Events wird nicht größer oder kleiner. Es gibt einen Event für jeden Datenwert, und einen für den gesamten STATE. Das Logfile wird davon überhaupt nicht zugemüllt, mit dem entsprechenden regulären Ausdruck kann man das ganz sauber trennen.
Das ist leider nicht so, oder ich habe etwas grundlegend falsch verstanden.
Wie schon in dem Posting vorher beschrieben, kommt beim aktivieren des notfiy's anschließend 6 mal der gleiche Event rein, so dass das Logfile sechs Zeilen mit dem gleichen Eintrag enthält.
Der Wert für den aktuellen Stromverbrauch ist dann natürlich nur im ersten richtig, weil bei den restlichen zum Vorgänger kein Unterschied ist.
Beispiel Log aus dem Terminal mit inform timer
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0.5593
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.5593 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter B: 15605.6638
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter B: 15605.6638
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter B: 15605.6638
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter B: 15605.6638
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624
2014-03-09 20:20:11 OWCOUNT ow_Counter A_rate: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Energy: 20.3438
2014-03-09 20:20:11 OWCOUNT ow_Counter E-Power: 0
2014-03-09 20:20:11 OWCOUNT ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09 20:20:11 OWCOUNT ow_Counter B: 15605.6638
und diesen Einträgen im Logfile
define ow_Counter.FL FileLog ./log/ow_Counter/OWC-%Y-%m-%d.log ow_Counter.A.*E-Energy.*
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.5593 kW
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.0000 kW
Zitat von: Prof. Dr. Peter Henning am 09 März 2014, 13:48:19
Viertens: Das mit Event-on-update muss ich überprüfen.
Wenn ich Event-on-update verwende wird für diese Ausgabe,
2014-03-09_20:20:10 ow_Counter A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 20.344 kWh E-Power: 0.5593 kW
kein Event mehr erzeugt, welcher das Logfile zum loggen bringen würde.
Schöne Grüße
Hannes
Das kann nicht sein.
LG
pah
Was kann nicht sein?
SG
Hannes
Gesendet von Unterwegs mit Tapatalk 4
Das Modul verwendet den Standardmechanismus zur Event-Erzeugung, das kann also gar nicht sein, dass dies nicht richtig erfolgt.
LG
pah
Hallo pah,
sorry aber jetzt muss ich nochmals stören, aber jetzt weiß ich zu mindestens warum ich soviele Events bekomme :o
- Ich habe ein nofify erstellt:
modify evt_ow_Counter ow_Counter.E-Energy:.* {evt_ow_Counter("@")}
- Dieses ruft die Funktion evt_ow_Counter auf welche im Moment noch "nicht" macht.
- In inform timer kommt bei jedem "Leseevent" ein Satz von Meldungen also noch i.O.
- Jetzt ergänze ich die Funktion um die Anweisung,
my ($vDummy) = fhem("get ow_Counter midnight B") ;
- Jetzt kommt bei jedem Leseevent der Satz Meldunge gleich 4 mal :'(
Ich denke, dass dies der Fall ist, weil ich durch den
fhem Befehl ebenfalls einen Event generiere und dieses mehrfachen Events durch Rekursion entstehen? :-\
Nun die Entscheidende Frage:Gibt es eine Möglichkeit eine
fhem Fuktion in meinem 99_myUtils Script zu verwenden ohne einen Event auszulösen?
Gruß und schöne Grüße
Hannes
Warum denn einen FHEM-Befehl ?
Mit jeden Get-Befehl wird die Funktion "FormatValues" aufgerufen - und die macht nun einmal auch die Events. Der Get-Befehl ist eben nicht dafür gedacht, periodisch aufgerufen zu werden - dazu sollte man besser direkt auf die Readings zugreifen.
LG
pah
Guten Morgen pah,
und danke für Deine Gedult :D somit ist ein Knoten schon mal gelöst ;)
Leider bin ich nun wieder beim Grundproblem :'( angekommen.
Ich möchte gerne den tatsächlichen Wert des EVU Zählers angezeigt bekommen.
Um diesen berechnen zu können benötige ich den midnight Wert vom Kanal B
Diesen kann ich meines Wissens nur mit diesem fhem Befehl auslesenget ow_Counter midnight B
Dieser Wert steht zwar auch in den Reading komme aber nicht auf den Wert habe schon diverse versuche gemacht wie z.B.
ReadingsVal("ow_Counter","midnight","0");
ReadingsVal("ow_Counter","midnight[15]","0");
ReadingsVal("ow_Counter","ow_Counter.midnight","0");
ReadingsVal("ow_Counter","midnight:","0");
Hab auch sonst nichts in der Doku gefunden wie ich auf diesen Wert kommen würde :(
Und am liebsten würde ich dann den Berechneten Wert (midnight + E-Energy )im Reading des ow_Counters mit B anzeigen, da dieser sowieso nicht verwendet wird.
(Zur not würde auch ein dummy gehen)
Readings:
2014-03-11 04:47:18 A 26624
2014-03-11 04:47:18 A_rate 0
===> 2014-03-10 19:47:01 B 0 <========================== Wird nicht benutzt würde ich gerne zur Anzeige des Zählerwertes verwenden, indem ich mit "setreading ow_Counter B Zählerwert" diesen aus der der notifiy Funktion beschreibe.
2014-02-16 09:32:54 B_rate 298.0132
2014-03-11 04:47:18 E-Energy 1.1663
2014-03-11 04:47:18 E-Power 0.7605
2014-03-10 23:56:37 day D10 A: 26624.0 cts AM: 0.0 cts E-Energy: 9.7 kWh E-EnergyM: 0.0 kWh
2014-02-28 23:55:37 month M02 A: 0.0M cts AY: 0.0 cts E-Energy: 0.0M kWh E-EnergyY: 0.0 kWh
2014-03-11 04:47:18 state A: 26624.0 cts A_rate: 0.00 cts/h E-Energy: 1.166 kWh E-Power: 0.7605 kW
owg_midnight:
26624
15616.54
owg_str:
owg_val:
26624
231314
Attributes:
BFactor 0.00125
BMode daily
BName E-Energy|energy
BOffset 12262851
BRate E-Power|power
BUnit kWh|kWh
IODev OWio1
model DS2423emu
nomemory 1
room OWX
Aktualisieren würde ich diesen dann mit setreading ow_Counter B Zählerwert aus der Funktion welche durch den notify aufgerufen wird.
Oder bin ich mit meiner Vorstellung komplett auf dem Holzweg unterwegs ???
Schöne Grüße
Hannes
Der midnight-Wert von Kanal B ist enthalten in
$defs{'ow_Counter'}->{owg_midnight}->[1]
Der rohe Wert steht in
$defs{'ow_Counter'}->{owg_val}->[1]
Um irgendetwas in den angezeigten Wert für den B-Kanal zu setzen, muss die Variable
$defs{'ow_Counter'}{READINGS}{<channel-name>}{VAL}
überschrieben werden, sie wird berechnet als (roher wert + offset)*factor - mdnight.
Ähnlich könnte man auch die B-Rate überschreiben, sie steht in
$defs{'ow_Counter'}{READINGS}{<channel-name>}{VAL}
Diese Hinweise stehen ab sofort auch im Wiki, http://www.fhemwiki.de/wiki/OWCOUNT
LG
pah
Hallo pah
Danke schon mal, werde mir das ganze mal Zuhause anschauen und hoffe das ich es verstehe.
Schöne grüße
Hannes
Gesendet von Unterwegs mit Tapatalk 4
Hallo pah
danke nachmals, Du bist der beste ;).
Nun habe ich meine OWCOUNT so angepaßt das in dem Reading der tatsächliche Zählerwert wie am EVU Zähler steht.
Mit der Notation direkt auf die internen Readings ohne Event's zuzugreifen war der entscheidente Hinweis :-).
Mit der notify
define ntf_ow_Counter notify ow_Counter.E-Energy:.* {evt_ow_Counter("@")}
und der Funktion klappt das jetzt prima.
####### ##############################################
# Ersteller AHA
# Typ Event ow_Counter
#
# Aufgabe Den Absoluten Wert des Zählers im Reading B abspeichern
# da dieses Reading nicht benutzt wird.
#
# Hintergrund: Dadurch ist am Anhieb zu sehen, welchen absoluten
# Wert der Zähler gerade hat.
#
# 2014-03.09 AHA Erstellung
# 2014-03-11 AHA Anpassung nach der Info von pah für direkten Zugriff auf interne Variablen
#
#
sub evt_ow_Counter($)
{
# Objektname z.B. ow_Counter muss aus dem notify mit "@" übergeben werden
my ($objname) = shift;
#midnight Wert von Kanal B auslesen
my ($rmidnight) = $defs{$objname}->{owg_midnight}->[1] ;
# Dies wäre der Rohwert muss aber noch mit Faktor berechnet werden
# $rmidnight = $defs{$objname}->{owg_val}->[1] ;
#aktuellen Tagesverbrauch seit Mitternacht auslesen
my ($objBdaily) = ReadingsVal($objname,"E-Energy","0");
# Berechnung des aktuellen Zählerstandes
$rmidnight = $rmidnight + $objBdaily;
# Schreiben des aktuellen Zählerstandes auf das Reading B ohne einen Event zu erzeugen
# $defs{$objname}{READINGS}{B}{VAL}=$rmidnight;
# Schreiben des aktuellen Zählerstandes auf das Reading B mit einem Event,
# außerdem wird dadurch die Reading Zeit aktualisiert
fhem("setreading " . $objname . " B " . $rmidnight );
# Für Debug Zwecke
# Log 1, "evtow_Counter Objektname ". $objname . " Zählerwert:" . $rmidnight . " daily:" . $objBdaily;
return 0;
}
Wenn jetzt noch Deine Erweiterung "set <name> counter <val>" kommt, fehlt es mir an nichts mehr ;)
Danke nochmals und einen schönen Abend
Hannes
Hallo ich möchte gerne mit Owcount einen Monats Plot Anzeigen aber komme nicht weiter mein Log sieht so aus.
2014-03-12_23:53:20 Gas_B1 day: D12 Gas: 9.0 m3 GasM: 9.0 m3 B: 0.0 cts BM: 0.0 cts
2014-03-13_23:52:18 Gas_B1 day: D13 Gas: 8.0 m3 GasM: 17.0 m3 B: 0.0 cts BM: 0.0 cts
2014-03-14_23:56:54 Gas_B1 day: D14 Gas: 8.4 m3 GasM: 25.4 m3 B: 0.0 cts BM: 0.0 cts
2014-03-15_23:53:05 Gas_B1 day: D15 Gas: 9.4 m3 GasM: 34.8 m3 B: 0.0 cts BM: 0.0 cts
Und die config so
define Gas.tag.M FileLog ./log/Gas-Monat/Gas.tag-%m-%Y.log Gas_B1:day.*
define weblink_Gas.tag.M SVG FileLog_Gas.tag.M:power6:CURRENT
attr weblink_Gas.tag.M fixedrange month
attr weblink_Gas.tag.M label "Gas_Monat Min $data{min1}, Max $data{max1}, Last $data{currval1}"
aber leider kommt da nichts bei raus kann mir da einer helfen bitte.
Gruß
Martin