Neue Version OWCOUNT

Begonnen von Prof. Dr. Peter Henning, 11 Januar 2014, 08:04:53

Vorheriges Thema - Nächstes Thema

Haecksler

Kann es sein, dass bei der Verwendung von OWX beim Restart die Werte bei der Initzialisierung abgefragt werden?
Wenn ich heute Nachmittag dazu komme, schicke ich dir ein paar Screenshots als Beleg.

Gruß,
Stefan

Haecksler

Zitat von: Haecksler am 21 Februar 2014, 12:45:29
Kann es sein, dass bei der Verwendung von OWX beim Restart die Werte bei der Initialisierung abgefragt werden?
Wenn ich heute Nachmittag dazu komme, schicke ich dir ein paar Screenshots als Beleg.

Gruß,
Stefan

Anbei die versprochenen Screenshots.

(//)

Prof. Dr. Peter Henning

Versteh ich nicht. Ich schaue aber bei Gelegenheit mal nach.

LG

pah

Wzut

#33
Zitat von: Prof. Dr. Peter Henning am 14 Januar 2014, 05:42:18
Außerdem ist dieser Kanal im BMode=daily, es wird also jeden Nacht kurz vor Mitternacht der Mitternachtswert extrapoliert und als "day" Wert ausgegeben. Dieser Wert wird auch im internen Memory als "midnight B" gespeichert und vom Zählerstand abgezogen.
- Das monatliche Logging erfolgt durch das FileLog  OWCM.FL, siehe dessen Definition darunter. Darin stehen Zeilen wie:
2014-01-09_23:59:42 OWC day: D09  GPunkte:  49.0 cts GPunktem:  49.0 cts  E-Energy:  21.6 kWh E-Energym:   21.60 kWh
2014-01-10_23:59:43 OWC day: D10  GPunkte:  89.0 cts GPunktem:  89.0 cts  E-Energy:  21.6 kWh E-Energym:   43.20 kWh
sorry , da muss ich nochmal nachfassen : im internen Memory als "midnight B" gespeichert , beim DS2423emu ist das dann aber die Datei FHEM/OWCOUNT_<name>_-15.dat ?
-> und vom Zählerstand abgezogen , aber nicht beim DS2423emu ? denn anders kann ich mir die Einträge im LogM nicht erklären :
2014-02-21_23:59:52 Zaehler day: D21  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 138.3 kWh DG-EnergyM: 1091.4 kWh
2014-02-22_23:59:40 Zaehler day: D22  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 144.1 kWh DG-EnergyM: 1235.5 kWh
2014-02-23_23:59:50 Zaehler day: D23  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 149.7 kWh DG-EnergyM: 1385.2 kWh
2014-02-24_23:59:59 Zaehler day: D24  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 153.5 kWh DG-EnergyM: 1538.7 kWh
2014-02-25_23:59:47 Zaehler day: D25  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 158.3 kWh DG-EnergyM: 1697.0 kWh
2014-02-26_23:59:55 Zaehler day: D26  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 162.5 kWh DG-EnergyM: 1859.5 kWh
2014-02-27_23:59:37 Zaehler day: D27  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 166.8 kWh DG-EnergyM: 2026.2 kWh
2014-02-28_23:59:35 Zaehler day: D28  A:   0.0 kWh AM:   0.0 kWh  DG-Energy: 171.8 kWh DG-EnergyM: 2198.1 kWh

hier wird doch der aktuelle Stand von DG-Energy auf DG-EnergyM aufsummiert, denn ich verbrauche an diesem Stromzähler zwischen 4-5 kWh am Tag und nicht 140-170 :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Prof. Dr. Peter Henning

Doch, sollte abgezogen werden.

Was ergibt denn "get Zaehler midnight B" ?

Übrigens: Ich finde es nervig, wenn Hilfesuchende immer nur bröckchenweise Informationen herausrücken. Mal ist es nur ein Screenshot, mal ein paar Zeilen aus dem Log oder dem Eventmonitor - Konfiguration aber bisher nicht. Und die Ergebnisse von so einfachen Kommandos wie dem oben genannten fehlen auch.

LG

pah

Wzut

OK, ich werde versuchen in Zukunft vollständige Informationen zu liefern ....

FHEM und OWCOUNT aus dem SVN
# $Id: 21_OWCOUNT.pm 5035 2014-02-24 03:47:01Z pahenning $

config :
define Zaehler OWCOUNT DS2423emu A2D984000002 30
attr Zaehler APeriod hour
attr Zaehler AUnit kWh|kWh
attr Zaehler BFactor 0.001
attr Zaehler BMode daily
attr Zaehler BName DG-Energy|energy
attr Zaehler BPeriod hour
attr Zaehler BRate DG-Power|power
attr Zaehler BUnit kWh|kWh
attr Zaehler IODev OW_intern
attr Zaehler LogM OWCM.FL
attr Zaehler LogY OWCY.FL
attr Zaehler event-on-update-reading DG-Energy,DG-Power,day,month
attr Zaehler interval 30
attr Zaehler model DS2423emu
attr Zaehler nomemory 1
attr Zaehler room Dach
define OWCM.FL FileLog ./log/OWCM-%Y-%m.log Zaehler.*day.*
define OWCY.FL FileLog ./log/OWCY-%Y.log Zaehler.*month.*
define Zaehler_log FileLog ./log/Zaehler-%Y-%m.log Zaehler
attr Zaehler_log group Zaehler
attr Zaehler_log logtype text
attr Zaehler_log room Logs
define Zaehler_DB DbLog ./db.conf Zaehler

cat FHEM/OWCOUNT_Zaehler_14.dat
2014-02-28 midnight    0.00

cat FHEM/OWCOUNT_Zaehler_15.dat
2014-02-28 midnight  171.79

get Zaehler midnight A
OWCOUNT: Zaehler.midnight [14] =>0

get Zaehler midnight B
OWCOUNT: Zaehler.midnight [15] =>171.79

das Ende des FHEM logs von gestern (28.2) :

2014.02.28 23:59:35 1: OWCOUNT_store: Zaehler 2014-02-28 midnight    0.00
2014.02.28 23:59:35 1: OWCOUNT_store: Zaehler 2014-02-28 midnight  171.79
Use of uninitialized value in sprintf at ./FHEM/21_OWCOUNT.pm line 554, <OWXFILE> line 31.
Use of uninitialized value in sprintf at ./FHEM/21_OWCOUNT.pm line 554, <OWXFILE> line 31.

Beim Start von FHEM auf der Konsole :
Argument "" isn't numeric in subtraction (-) at ./FHEM/21_OWCOUNT.pm line 445.

der Abschnit des aktuellen logs nach dem Start:
2014.03.01 19:45:50 1: OWX: 1-Wire devices found on bus OW_intern (Temp_intern,Zaehler)
2014.03.01 19:45:50 1: OWX: 1-Wire devices found on bus OW_intern (Temp_intern,Zaehler)
2014.03.01 19:45:52 1: OWCOUNT: model attribute of Zaehler set to DS2423emu because no memory found

nach der Eingabe von get Zaehler midnight hat sich im log was geändert:

2014-03-01_20:05:22 Zaehler DG-Energy: 176.452
2014-03-01_20:05:22 Zaehler DG-Power: 0.6
2014-03-01_20:05:52 Zaehler DG-Energy: 176.456
2014-03-01_20:05:52 Zaehler DG-Power: 0.48
2014-03-01_20:06:12 Zaehler DG-Energy: 4.67
2014-03-01_20:06:12 Zaehler DG-Power: -19124.9999
2014-03-01_20:06:22 Zaehler DG-Energy: 4.671
2014-03-01_20:06:22 Zaehler DG-Power: 0.36
2014-03-01_20:06:52 Zaehler DG-Energy: 4.676
2014-03-01_20:06:52 Zaehler DG-Power: 0.6
2014-03-01_20:07:22 Zaehler DG-Energy: 4.681
2014-03-01_20:07:22 Zaehler DG-Power: 0.6
2014-03-01_20:07:42 Zaehler DG-Energy: 4.681
2014-03-01_20:07:42 Zaehler DG-Power: 0
2014-03-01_20:07:52 Zaehler DG-Energy: 4.686
2014-03-01_20:07:52 Zaehler DG-Power: 1.8

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Update :
nach einem Neustart von FHEM sind wieder die absoluten Werte im log. Nach einem get <name> raw , get <name> midnight  stimmt die Ausgabe im log,
allerdings stimmt nach Mitternacht der Wert wieder nicht :
2014-03-02_23:59:38 Zaehler DG-Energy: 5.639
2014-03-02_23:59:38 Zaehler DG-Power: 0.12
2014-03-02_23:59:38 Zaehler day: D02  A:   0.0 kWh AM:   0.0 kWh  DG-Energy:   5.6 kWh DG-EnergyM:  11.2 kWh
2014-03-03_00:00:08 Zaehler DG-Energy: 5.639
2014-03-03_00:00:08 Zaehler DG-Power: 0
2014-03-03_00:00:38 Zaehler DG-Energy: 5.64
2014-03-03_00:00:38 Zaehler DG-Power: 0.12
2014-03-03_00:01:08 Zaehler DG-Energy: 5.64
2014-03-03_00:01:08 Zaehler DG-Power: 0

Ich glaube das Problem gefunden zu haben :
$hash->{owg_midnight}->[1] hat nach dem Start keinen Wert ( auch nach einigen Minuten, Stunden nicht ) Wird allerdings einmal ein get Kommando aufgerufen steht der richtige Wert sofort zur Verfügung.
Die Frage war für mich also was passiert bei bestimmten get Kommandos was im normalen Ablauf eben nicht passiert ?
Meine Antwort :  sowie einmal OWCOUNT_GetPage ausgeführt wurde hat $hash->{owg_midnight}->[1] den richtigen Wert.
Ich habe jetzt den Abschnitt in sub OWCOUNT_GetValues($) geändert :
alt :
if( $interface eq "OWX" ){
    $ret1 = OWXCOUNT_GetPage($hash,14,0);
    $ret2 = OWXCOUNT_GetPage($hash,15,1);
  }elsif( $interface eq "OWServer" ){

neu:
if( $interface eq "OWX" ){
    $ret1 = OWCOUNT_GetPage($hash,14,0);
    $ret2 = OWCOUNT_GetPage($hash,15,1);
  }elsif( $interface eq "OWServer" ){

mal schauen ob heute nach Mitternacht das Problem damit gelöst ist , zumindest beim Neustart sieht es schon mal gut aus
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Achim

Hallo Wzut,

würdest du bitte nochmals den Teil "alt/neu" in der OWCOUNT_GetValues Routine posten. Ich sehe da keinen Unterschied.

Ich habe gedacht, mein Counter läuft richtig, war wohl falsch gedacht.....

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Wzut

#38
der alt /neu Teil ist schon richtig gepostet , ich musste im Quelltext auch dreimal hinschauen ...
OWXCOUNT vs. OWCOUNT d.h. einmal mit X und einmal ohne :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Wzut

Zitat von: Wzut am 03 März 2014, 10:49:44
mal schauen ob heute nach Mitternacht das Problem damit gelöst ist

BINGO : )
2014-03-03_23:59:19 Zaehler DG-Energy: 4.153
2014-03-03_23:59:19 Zaehler DG-Power: 0.48
2014-03-03_23:59:49 Zaehler DG-Energy: 4.156
2014-03-03_23:59:49 Zaehler DG-Power: 0.36
2014-03-03_23:59:49 Zaehler day: D03  A:   0.0 kWh AM:   0.0 kWh  DG-Energy:   4.2 kWh DG-EnergyM:  15.3 kWh
2014-03-04_00:00:19 Zaehler DG-Energy: 0
2014-03-04_00:00:19 Zaehler DG-Power: 0
2014-03-04_00:00:49 Zaehler DG-Energy: 0.003
2014-03-04_00:00:49 Zaehler DG-Power: 0.36

na also geht doch .....
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Prof. Dr. Peter Henning

#40
Das sollte aber nicht so sein.

Denn nach der Abfrage, ob das Interface OWX ist, sollten nur noch die OWX-Routinen aufgerufen werden.

Habe das soeben überprüft: Ja, korrekte Fehlerbeschreibung - mit den Emulatoren wurde der Midnight-Wert nicht richtig aus der Datei geholt.

Ist mir beim Testen nicht aufgefallen, weil ich keinen ATTiny mit dem Originalcode von Tobias Müller betreibe. In meiner Testversion gibt es schon ein internes Memory...

Die bereinigte Version (die im Wesentlichen dasselbe enthält wie der o.a. Workaround) wird heute noch eingecheckt.

LG

pah


Wzut

OK, danke

Zitat von: Prof. Dr. Peter Henning am 04 März 2014, 08:38:03
weil ich keinen ATTiny mit dem Originalcode von Tobias Müller betreibe. In meiner Testversion gibt es schon ein internes Memory...
gibt es für diese Test Version eine Source Code Quelle ? Auf der Webseite von Tobias Müller steht nach wie vor nur die V1.2 zu Verfügung.
bzw. es gibt wohl noch Versionen die bei Stromausfall den letzten Wert im EEPROM speichern bzw. eine die den SFR02 Sensor direkt unterstützt, auch diese finde ich nicht.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

Bastelbernd

Hallo pah
habe auch noch ein kleines Problem mit Version 5.06. Zum Monatswechsel hat es das hier ins Log geschrieben.
2014-01-31_23:58:11 OWX_1D_AAF60D000000 month: M01  Strom_G: 288.3 kWh Strom_Gy:   0.0 kWh Strom_H:  23.2 kWh Strom_Hy:   0.0 kWh
2014-02-28_23:59:24 OWX_1D_AAF60D000000 month: M02  Strom_G: 528.8M kWh Strom_GY:  41.6 kWh Strom_H:   0.0M kWh Strom_HY:   0.0 kWh

Warum es keine Werte in den B-Kanal geschrieben weiß ich auch nicht, obwohl die Tageslogs richtig sind.
Den Fehler mit den  M hab ich schon gefunden.
#-- string buildup for monthly and yearly logging
          $dvalue .= sprintf( " %s: %5.1f %s %sM: %%5.1f %s",  $owg_channel[$i],$dval,$unit,$owg_channel[$i],$unit);
          $mvalue .= sprintf( " %s: %%5.1fM %s %sY: %%5.1f %s", $owg_channel[$i],$unit,$owg_channel[$i],$unit);


Könntest du das auch gleich mit ändern und noch einmal überprüfen ob der Monatswechsel  dann richtig funktioniert.

Gruß Bernd
FHEM auf Server mit Mainboard ASRock J3160B,Gehause Mini ITX E-3002+ SSD
Viessmann(optolink) HM-CFG-USB(HMLAN), PoKeys57E
Jeelik(Arduino)+LaCrosse, Nextion
Firmata+Arduino+1Wire+2xDS2423+IN+OUT
Electrolama zig-a-zig-ah!,Zigbee2MQTT

Prof. Dr. Peter Henning

Der "M-Fehler" ist in Version 5.09 ebenfalls behoben. Das mit den fehlenden Werten im B-Kanal kann ich nicht nachvollziehen, denn der wird mit dem A-Kanal gleich behandelt. Muss ggf. noch testen. Dazu wird es aber heute nicht kommen, weil ich heute 7 Stunden Lehre abzuleisten habe und danach in der Regel KO bin.

LG

pah

Prof. Dr. Peter Henning

@Wzut: nein, das gibt es noch nicht öffentlich.

LG

pah