Neue Version OWCOUNT

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

Vorheriges Thema - Nächstes Thema

ntruchsess

Hallo Rainer,

ich denke ich war da schon auf der richtigen Spur, nur hatte ich den Fix für OWX und nicht auch für OWServer gemacht. Das habe ich jetzt nachgezogen.
Kannst Du bitte noch mal testen: 21_OWCOUNT.pm Version 5.14. Ich habe grade leider keine OWServer-installation zur Hand.

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

Zitat von: Wzut am 14 Februar 2014, 19:41:42
/opt/fhem/fhem.pl 192.168.0.10:7072 '{sprintf("%i",$defs{Zaehler}{owg_val}[1])}'
statt
/opt/fhem/fhem.pl 192.168.0.10:7072 "get Zaehler raw B"

oder geht es noch eleganter ?

Hallo Jürgen,

Eleganter wäre ein Aufruf von 'ReadingsVal("Zaehler","B","")' (alternativ auch ReadingsNum...).
Noch eleganter wäre es ein notify zu benutzen.
get-Aufrufe in Programcode zu benutzen ist eher eine Notlösung, wenn es kein Reading dafür gibt. Die sind ja eher für Frontends gedacht, bei denen der User nach dem Klicken (vermutlich) tatsächlich einen frisch aktualisierten Wert sehen möchte. Das ist u.a. ein Grund, warum ich die get-Aufrufe auch mit OWX_ASYNC weiterhin synchron ausführen lasse und nicht einfach nur das bestehende Reading zurückgebe.

Gruß,
Norbert
while (!asleep()) {sheep++};

Martin

Also bei mir sieht es dann so aus

Error messages while initializing FHEM:
configfile: OWCOUNT: Wrong 1-Wire device model DS2423emu
Please define Gas_B1 first


Nach dem shutdown restart

attr Gas_B1 stateFormat { sprintf("%.1f m3 %.3f m3", ReadingsVal("Gas_B1","Gas","m3"), ReadingsVal("Gas_B1","G-Power","m3"));; }

geht dann auch nicht mehr.


Fhem log
2014.04.08 12:13:31 0: Server shutdown
2014.04.08 12:13:34 1: Including fhem.cfg
2014.04.08 12:13:34 3: WEB: port 8083 opened
2014.04.08 12:13:34 3: WEBS: port 8084 opened
2014.04.08 12:13:35 3: Opening CUL_1 device /dev/ttyACM0
2014.04.08 12:13:35 3: Setting CUL_1 baudrate to 9600
2014.04.08 12:13:35 3: CUL_1 device opened
2014.04.08 12:13:35 3: CUL_1: Possible commands: BCFiAZEGMRTVWXefmltux
2014.04.08 12:13:36 3: OWCOUNT: Device Gas_B1 defined.
2014.04.08 12:13:36 3: OWCOUNT: Device Strom_A1 defined.
2014.04.08 12:13:36 1: Including ./log/fhem.save
2014.04.08 12:13:36 3: OW: Opening connection to OWServer 127.0.0.1:4304...
2014.04.08 12:13:36 3: OW: Successfully connected to 127.0.0.1:4304.
2014.04.08 12:13:36 3: myOWFS: Opening connection to OWServer localhost:4304...
2014.04.08 12:13:37 3: myOWFS: Successfully connected to localhost:4304.
2014.04.08 12:13:39 0: Server started with 64 defined entities (version $Id: fhem.pl 5452 2014-04-06 06:24:47Z rudolfkoenig $, os linux, user fhem, pid 7177)
2014.04.08 12:13:46 3: OWX: Reset called with undefined interface
2014.04.08 12:13:46 3: OWX: Complex called with undefined interface
2014.04.08 12:13:46 1: OWCOUNT: model attribute of Gas_B1 set to DS2423emu because no memory found
2014.04.08 12:13:46 3: OWX: Reset called with undefined interface
2014.04.08 12:13:46 3: OWX: Complex called with undefined interface
2014.04.08 12:13:46 1: OWCOUNT: model attribute of Strom_A1 set to DS2423emu because no memory found
Gruß
Martin

Bastelbernd

Hallo Norbert,
bei mir so,
Version 5.14

Fhem log
2014.04.08 12:10:45 1: OWCOUNT_recall: Cannot open OWCOUNT_OWX_1D_A8FA0D000000_14.dat for reading!
2014.04.08 12:10:46 1: OWCOUNT_recall: Cannot open OWCOUNT_OWX_1D_A8FA0D000000_14.dat for reading!
2014.04.08 12:10:46 1: OWCOUNT_recall: Cannot open OWCOUNT_OWX_1D_A8FA0D000000_14.dat for reading!
2014.04.08 12:10:46 1: OWCOUNT_recall: Cannot open OWCOUNT_OWX_1D_A8FA0D000000_15.dat for reading!

Readings
5.09 = 2014-04-08_12:06:42 OWX_1D_AAF60D000000 Strom_G: 3.056 kWh Strom_G_rate: 3.8700 kW Strom_H: 0.239 kWh Strom_H_rate: 0.0240 kW
5.14 = 2014-04-08_12:10:48 OWX_1D_AAF60D000000 Strom_G: 2540.614 kWh Strom_G_rate: 37134.9878 kW Strom_H: 155.581 kWh Strom_H_rate: 2273.2902 kW

Wie schon geschrieben, es werden keine Midnight Werte mehr ausgelesen ,sind 0.
Version 5.09 ging noch richtig.

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

ntruchsess

Ich zitiere hier jetzt mal den Peter:
Zitat von: Prof. Dr. Peter Henning am 01 März 2014, 18:51:44
Ü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.

Ich bin ja froh, wenn Ihr testet, aber ich kann nicht hellsehen wenn ich abgesehen von der Versionsnummer des Moduls nichts über die konkret verwendete Hardware und Konfiguration weiß.

Gruß,

Norbert
while (!asleep()) {sheep++};

Bastelbernd

#80
Hallo Norbert,
dazu  die
fhem.cfg

define OWX_1D_AAF60D000000 OWCOUNT DS2423 AAF60D000000 300
attr OWX_1D_AAF60D000000 AFactor 0.00125
attr OWX_1D_AAF60D000000 AMode daily
attr OWX_1D_AAF60D000000 AName Strom_G
attr OWX_1D_AAF60D000000 AOffset 15620
attr OWX_1D_AAF60D000000 APeriod hour
attr OWX_1D_AAF60D000000 AUnit kWh|kWh
attr OWX_1D_AAF60D000000 BFactor 0.0005
attr OWX_1D_AAF60D000000 BMode daily
attr OWX_1D_AAF60D000000 BName Strom_H
attr OWX_1D_AAF60D000000 BOffset 1600
attr OWX_1D_AAF60D000000 BPeriod hour
attr OWX_1D_AAF60D000000 BUnit kWh|kWh
attr OWX_1D_AAF60D000000 IODev TEMP
attr OWX_1D_AAF60D000000 LogM Strom_M
attr OWX_1D_AAF60D000000 LogY Strom_Y
attr OWX_1D_AAF60D000000 model DS2423
attr OWX_1D_AAF60D000000 nomemory 0
attr OWX_1D_AAF60D000000 room OWX

Arduino mit Firmata v2.05 über USB

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

ntruchsess

Zitat von: Martin am 08 April 2014, 12:21:18
configfile: OWCOUNT: Wrong 1-Wire device model DS2423emu
In der define-Zeile muss jetzt entweder DS2423, DS2423eneu oder DS2423eold stehen, DS2423emu gibt's nicht mehr (weil nicht eindeutig, es gibt mitlerweile mehr als eine Version des emulierten DS2423). stateFormat geht dann natürlich nicht - das Modul wurde ja nicht geladen.

Zitat von: Martin am 08 April 2014, 12:21:18
2014.04.08 12:13:46 1: OWCOUNT: model attribute of Strom_A1 set to DS2423emu because no memory found
Die logausgabe kommt von welcher Version? 5.14 kann es nicht sein, da würde stehen 'set to DS2423eold because no memory found'
while (!asleep()) {sheep++};

ntruchsess

Zitat von: Bastelbernd am 08 April 2014, 16:13:15
Hallo Norbert,
dazu  die
fhem.cfg

danke...

Bin das im code grade noch mal durchgegangen. Mir ist nicht so recht klar, ob Pah das tatsächlich so beabsichtigt hat, dass die OWCOUNT_OWX_1D_A8FA0D000000_14/15.dat auch bei einem echten DS2423 versucht wird zu lesen (beim echten DS2423 kommt der Midnight-wert ja aus dem internen Speicher, die Datei-lösung ist ja nur ein Workaround für die emulierten Counter, die keinen internen Speicher haben).
Ohne die Datei gab's in der 5.11 jedenfalls Fehler mit unititialized Values und regex..., in der 5.14 wird der midnight-wert auf Null gesetzt, wenn die Datei nicht gelesen werden kann. (in der 5.09 gabs noch gar keine Datei...) Werde mir dazu mal was sinnvolles ausdenken... nachher gibt's wieder ein update.

Gruß,

Norbert
while (!asleep()) {sheep++};

Prof. Dr. Peter Henning

Natürlich habe ich das nicht beabsichtigt. Kommt bei mir aber auch nicht vor - irgendetwas läuft da durcheinander.

Ich habe abe rim moment weder die Möglichkeit zum Testen, noch Zeit zum Programmieren.

LG aus Tel Aviv

pah

Martin

Hallo und danke das mit DS2423eold hat geklappt aber wo hätte ich das lesen können ??
damit ich das zukünftig gleich ändern kann wenn sich so was ändert.

Gruß
Martin

ntruchsess

Zitat von: Prof. Dr. Peter Henning am 08 April 2014, 21:29:23
Natürlich habe ich das nicht beabsichtigt. Kommt bei mir aber auch nicht vor
In Deiner Version vom 27.03. wird OWCOUNT_recall innerhalb von OWCOUNT_GetPage immer aufgerufen, wenn page 14 oder 15 abgerufen wird, unabhängig vom model des Counters. Bis auf dauernde Logmeldungen, dass die Datein fehlen (wenn man einen echten DS2423 benutzt) und Fehlern wg. unititialized values ($strval) in den nachfolgenden Regexps macht das in dieser Version wohl auch nichts. Der Effekt, dass es damit den midnight-val dabei löscht, war eine Folge, dass ich die Fehlermeldungen beseitigt, die Aufruflogik unter der Annahme, dass diese so beabsichtig ist, aber unverändert gelassen hatte.

hier gibt's die 21_OWCOUNT.pm, Version 5.15 zum testen.

Änderungen gegenüber 5.14:
- Problem mit Überschreiben der Midnight-werte beim echten DS2423 behoben.
- Support für File-basierte Midnight-werte bei nomem=1 und OWServer.
- keine unnötigen 'Datei fehlt' und Folgefehler beim Parsen der nicht gelesenen Datei mehr.

Bekannte Fehler:
- beim Inititialisieren beschreibt OWCOUNT testweise das memory eines echten DS2423. Wenn in diesem Zusammenhang ein Fehler (z.B. CRC wg. instablilem Bus) auftritt, können die Midnight-werte korrumpiert werden. Ich überlege, ob man das Testen des DS2423-models überspringen (oder optional machen) sollte, wenn das Model schon vom letzten Lauf her bekannt ist.

Gruß,

Norbert
while (!asleep()) {sheep++};

ntruchsess

Zitat von: Martin am 08 April 2014, 22:43:16
Hallo und danke das mit DS2423eold hat geklappt aber wo hätte ich das lesen können ??

In der commandref, die Fehlermeldung war in dem Fall ja recht zielweisend.

oder irgendwo weiter vorne hier im Thread.

... oder wie immer in der besonders ausführlichen, in perl geschriebenen Dokumentation.

Gruß,

Norbert
while (!asleep()) {sheep++};

ergerd

Hallo Norbert,

ich bin erst jetzt dazu gekommen 21_OWCOUNT.pm, Version 5.15 zu testen.
Bei mir wird jetzt nur noch ein einziges Mal in das Logfile der Counter geschrieben, und zwar beim Start von FHEM, dann nie wieder.
Muss ich irgend etwas in der fhem.cfg anpassen?

Was mir aufgefallen ist:
Ich habe versucht fhem von der Commandline aus zu killen und wieder zu starten, dabei habe ich folgende Meldungen bekommen:
DiskStation> /usr/local/perl/bin/perl /usr/local/FHEM/bin/fhem.pl /usr/local/FHEM/etc/fhem.cfg
DiskStation> Can't exec "lsusb": No such file or directory at /usr/local/FHEM/share/fhem/FHEM/98_autocreate.pm line 366.
Use of uninitialized value $strval in pattern match (m//) at /usr/local/FHEM/share/fhem/FHEM/21_OWCOUNT.pm line 1511.
Use of uninitialized value $strval in substitution (s///) at /usr/local/FHEM/share/fhem/FHEM/21_OWCOUNT.pm line 1516.
Use of uninitialized value $value_length in concatenation (.) or string at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 558.
Use of uninitialized value $val in pack at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 558.
Use of uninitialized value $size in pack at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 359.
Use of uninitialized value $ret in concatenation (.) or string at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 262.
Use of uninitialized value $ret in print at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 264.
Use of uninitialized value $ret in chomp at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 281.
Use of uninitialized value $strval in pattern match (m//) at /usr/local/FHEM/share/fhem/FHEM/21_OWCOUNT.pm line 1511.
Use of uninitialized value $strval in substitution (s///) at /usr/local/FHEM/share/fhem/FHEM/21_OWCOUNT.pm line 1516.
Use of uninitialized value $value_length in concatenation (.) or string at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 558.
Use of uninitialized value $val in pack at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 558.
Use of uninitialized value $size in pack at /usr/local/FHEM/share/fhem/FHEM/lib/OWNet.pm line 359.
Use of uninitialized value in substr at /usr/local/FHEM/share/fhem/FHEM/21_OWCOUNT.pm line 1133.
Use of uninitialized value $ret in concatenation (.) or string at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 262.
Use of uninitialized value $ret in print at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 264.
Use of uninitialized value $ret in chomp at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 281.
Use of uninitialized value $ret in concatenation (.) or string at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 262.
Use of uninitialized value $ret in print at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 264.
Use of uninitialized value $ret in chomp at /usr/local/FHEM/share/fhem/FHEM/10_OWServer.pm line 281.
Use of uninitialized value in substr at /usr/local/FHEM/share/fhem/FHEM/00_OWX.pm line 726.
Use of uninitialized value in substr at /usr/local/FHEM/share/fhem/FHEM/00_OWX.pm line 726.
Use of uninitialized value in substr at /usr/local/FHEM/share/fhem/FHEM/00_OWX.pm line 726.
Use of uninitialized value in substr at /usr/local/FHEM/share/fhem/FHEM/00_OWX.pm line 726.

Ist es überhaupt möglich FHEM so von der Commandline zu starten?

Grüße
Rainer
FHEM auf RasPi 4, ZigBee, 1Wire2WLAN, DS2423, Buderus KM200, Button+, LaCrosseGateway, PCA301, ConBee III, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Bastelbernd

Hallo Norbert,
bei mr läuft die Version 5.15 bisher sehr gut. :D

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

@ntruchsess: Maybe, danke für den Fix dann.

Ich bin noch ein paar Tage lahmgelegt.

LG aus Tel Aviv

pah