Hallo,
ich habe OWDevice/OWServer auf einem Rasperrypi mit einem DS2482-800 am laufen. Perfmon meckert bei jedem read über delays von ca. 1.5sec. Also habe ich mir OWDevice einmal angesehen und das auf "BlockingCall" umgestellt. Die Version anbei läuft seit einigen Wochen bei mir stabil.
Vielleicht können die Profis sich das einmal ansehen?
viele Grüße
Jürgen
Hallo und vielen Dank.
Ich habe mir die Version gespeichert, werde aber voraussichtlich frühestens nächstes Wochenende dazu kommen, mir Deine Version anzusehen.
Viele Grüße
Boris
Hi,
ich habe mir die Version einmal testweise gezogen, was auffällt, in dem bereitgestellten File fehlt der Verweis auf Blocking.pm weshalb diese direkt zu einem aussteigen von FHEM führt wenn die sub BlockingCall aufgerufen wird.
use Blocking;
Des weiteren werden bei meinem Sensoren nun unplausible Rückgaben beim get (Intervalle liegen bei 120 - 300 Sekungen je nach Sensor DS2450, DS2438, DS18B20) geliefert bei diversen DS18B20 (aber auch bei den anderen aufgeführten Sensoren) taucht nun z.B. ein Werte auf wie
/alarm/20.5DFA07000000,/alarm/20.3C4304000000,
oder Temperaturwerte von um die 6000 Grad, bei einem darauffolgenden Abfrageintervall dann aber auch wieder durchaus korrekte Werte.
Woran das liegt kann ich nicht beurteilen, aber so ist die angehängte Version nicht nutzbar.
@Boris Neubert, in neueren Versionen von OWFS werden nun auch weitere Abfragen zu Ermittlung von HUM für den HIH-5030 direkt über den DS2438 unterstützt, ich fahre bei mir deshalb eine Version die diesen Wert noch abfragt.
qw(HIH5030/humidity),
Vielleicht berücksichtigst du diesen auch noch in einem zukünftigen Update?
Greetz
Eldrik
Zitat von: eldrik am 12 März 2018, 09:12:42
Hi,
ich habe mir die Version einmal testweise gezogen, was auffällt, in dem bereitgestellten File fehlt der Verweis auf Blocking.pm weshalb diese direkt zu einem aussteigen von FHEM führt wenn die sub BlockingCall aufgerufen wird.
use Blocking;
Des weiteren werden bei meinem Sensoren nun unplausible Rückgaben beim get (Intervalle liegen bei 120 - 300 Sekungen je nach Sensor DS2450, DS2438, DS18B20) geliefert bei diversen DS18B20 (aber auch bei den anderen aufgeführten Sensoren) taucht nun z.B. ein Werte auf wie
/alarm/20.5DFA07000000,/alarm/20.3C4304000000,
oder Temperaturwerte von um die 6000 Grad, bei einem darauffolgenden Abfrageintervall dann aber auch wieder durchaus korrekte Werte.
Woran das liegt kann ich nicht beurteilen, aber so ist die angehängte Version nicht nutzbar.
@Boris Neubert, in neueren Versionen von OWFS werden nun auch weitere Abfragen zu Ermittlung von HUM für den HIH-5030 direkt über den DS2438 unterstützt, ich fahre bei mir deshalb eine Version die diesen Wert noch abfragt.
qw(HIH5030/humidity),
Vielleicht berücksichtigst du diesen auch noch in einem zukünftigen Update?
Greetz
Eldrik
Hm, seltsam, vor allem das fehlende use müsste doch bei mir auch knallen... Ist Deine Installation aktuell?
Viele Grüße
Jürgen
Zitat von: jko am 13 März 2018, 18:56:20
Hm, seltsam, vor allem das fehlende use müsste doch bei mir auch knallen... Ist Deine Installation aktuell?
Viele Grüße
Jürgen
Hi,
ich habe jetzt für die abgesetzte 1W Fhem Instanz ein Update durchgeführt, danach das
use Blocking
auskommentiert und beim Restart von Fhem, verabschiedet sich Fhem weiterhin mit der Meldung
Undefined subroutine &main::BlockingCall called at ./FHEM/11_OWDevice.pm line
In den im Wiki aufgeführten Modulen, die auch Blocking verwenden finde ich jeweils die entsprechende
use Blocking
, vielleicht hast du dies an einer anderen Stelle definiert/eingebaut dass es bei dir nicht knallt anders kann ich mir das Verhalten nicht erklären.
Ferner treten auch nach einem Update weiterhin die Zustände auf, dass einfach falsche Werte ausgelesen werden oder die Werte jenseits von Gut und Böse sind (vierstellige Temperaturwerte, oder bei den DS2450 Volt Werte die im Bereich von 1,14 Volt liegen müssten geben beim auslesen auf einmal den Wert 25 aus oder 1W Counter Werte haben auf einmal eine Nachkommastelle lesen /alarm/ Werte aus etc.).
Mit welchen Sensoren wurde denn die Version getestet?
Die Fhem 1W Instanz die ich hier behandele hat 56 DS18B20 Sensoren, 6 DS2423 und 3 DS2450 Definitionen, die sich über vier einzelne, in der owfs.conf, definierte Busmaster verteilen.
Hier mal ein Log Auszug:
2018.03.14 07:42:54.079 5: createNotifyHash
2018.03.14 07:42:54.082 5: End notify loop for DS2450_3C4304000000
2018.03.14 07:42:54.082 4: WEB: /fhem?detail=DS2450_3C4304000000&dev.getDS2450_3C4304000000=DS2450_3C4304000000&cmd.getDS2450_3C4304000000=get&arg.getDS2450_3C4304000000=volt.D&val.getDS2450_3C4304000000=&XHR=1&addLinks=1&fw_id=319 / RL:39 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/
2018.03.14 07:43:11.001 4: BlockingCall (OWDevice_UpdateValuesAsync): created child (18788), uses telnetPort to connect back
2018.03.14 07:43:11.005 4: Connection accepted from telnetPort_127.0.0.1_58463
2018.03.14 07:43:11.006 5: Cmd: >{BlockingRegisterTelnet($cl,158)}<
2018.03.14 07:43:11.007 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D989000001','counters.A','18.5')}<
2018.03.14 07:43:11.007 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000001 Reading:counters.A Val:18.5
2018.03.14 07:43:11.008 5: Starting notify loop for DS2423_A2D989000001, 2 event(s), first is counters.A: 18.5
2018.03.14 07:43:11.008 5: End notify loop for DS2423_A2D989000001
2018.03.14 07:43:11.009 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D989000001','counters.B','/alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000')}<
2018.03.14 07:43:11.009 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000001 Reading:counters.B Val:/alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:11.010 5: Starting notify loop for DS2423_A2D989000001, 1 event(s), first is counters.B: /alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:11.010 5: End notify loop for DS2423_A2D989000001
2018.03.14 07:43:11.011 5: Starting notify loop for DS2423_A2D989000001, 3 event(s), first is counters.A: 18.5
2018.03.14 07:43:11.011 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D989000001','state','counters.A: 18.5 counters.B: /alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000')}<
2018.03.14 07:43:11.012 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000001 Reading:state Val:counters.A: 18.5 counters.B: /alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:11.013 5: End notify loop for DS2423_A2D989000001
2018.03.14 07:43:11.013 5: Cmd: >{BlockingStart('158')}<
2018.03.14 07:43:11.014 5: Cmd: >{OWDevice_UpdateValuesAsync_Done('DS2423_A2D989000001')}<
2018.03.14 07:43:35.001 4: BlockingCall (OWDevice_UpdateValuesAsync): created child (19089), uses telnetPort to connect back
2018.03.14 07:43:35.004 4: Connection accepted from telnetPort_127.0.0.1_58483
2018.03.14 07:43:35.004 5: Cmd: >{BlockingRegisterTelnet($cl,159)}<
2018.03.14 07:43:35.005 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D989000002','counters.B','21')}<
2018.03.14 07:43:35.006 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000002 Reading:counters.B Val:21
2018.03.14 07:43:35.007 5: Starting notify loop for DS2423_A2D989000002, 7 event(s), first is counters.B: 21
2018.03.14 07:43:35.007 5: End notify loop for DS2423_A2D989000002
2018.03.14 07:43:35.008 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D989000002','state','counters.A: 0 counters.B: 21')}<
2018.03.14 07:43:35.009 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000002 Reading:state Val:counters.A: 0 counters.B: 21
2018.03.14 07:43:35.011 5: Starting notify loop for DS2423_A2D989000002, 7 event(s), first is counters.B: 21
2018.03.14 07:43:35.011 5: End notify loop for DS2423_A2D989000002
2018.03.14 07:43:35.012 5: Cmd: >{BlockingStart('159')}<
2018.03.14 07:43:35.013 5: Cmd: >{OWDevice_UpdateValuesAsync_Done('DS2423_A2D989000002')}<
2018.03.14 07:43:36.002 4: BlockingCall (OWDevice_UpdateValuesAsync): created child (19102), uses telnetPort to connect back
2018.03.14 07:43:36.004 4: Connection accepted from telnetPort_127.0.0.1_58484
2018.03.14 07:43:36.005 5: Cmd: >{BlockingRegisterTelnet($cl,160)}<
2018.03.14 07:43:36.006 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D987000001','counters.A','/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000')}<
2018.03.14 07:43:36.006 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D987000001 Reading:counters.A Val:/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:36.008 5: Starting notify loop for DS2423_A2D987000001, 7 event(s), first is counters.A: /alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:36.008 5: End notify loop for DS2423_A2D987000001
2018.03.14 07:43:36.010 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D987000001','counters.B','28.5')}<
2018.03.14 07:43:36.011 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D987000001 Reading:counters.B Val:28.5
2018.03.14 07:43:36.014 5: Starting notify loop for DS2423_A2D987000001, 5 event(s), first is counters.B: 28.5
2018.03.14 07:43:36.015 5: Starting notify loop for DS2423_A2D987000001, 8 event(s), first is counters.A: /alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
2018.03.14 07:43:36.015 5: End notify loop for DS2423_A2D987000001
2018.03.14 07:43:36.016 5: End notify loop for DS2423_A2D987000001
2018.03.14 07:43:36.016 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D987000001','state','counters.A: /alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000 counters.B: 28.5')}<
2018.03.14 07:43:36.017 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D987000001 Reading:state Val:counters.A: /alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000 counters.B: 28.5
2018.03.14 07:43:36.021 5: Cmd: >{BlockingStart('160')}<
2018.03.14 07:43:36.021 5: Cmd: >{OWDevice_UpdateValuesAsync_Done('DS2423_A2D987000001')}<
2018.03.14 07:43:37.001 4: BlockingCall (OWDevice_UpdateValuesAsync): created child (19117), uses telnetPort to connect back
2018.03.14 07:43:37.003 4: BlockingCall (OWDevice_UpdateValuesAsync): created child (19118), uses telnetPort to connect back
2018.03.14 07:43:37.005 4: Connection accepted from telnetPort_127.0.0.1_58486
2018.03.14 07:43:37.006 5: Cmd: >{BlockingRegisterTelnet($cl,162)}<
2018.03.14 07:43:37.006 5: Cmd: >{OWDevice_readingsSingleUpdateByName('DS2423_A2D986000001','counters.A','/alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000')}<
2018.03.14 07:43:37.007 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D986000001 Reading:counters.A Val:/alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
Greetz
Eldrik
Hallo eldrik,
Zitat2018.03.14 07:43:11.009 4: OWDevice_readingsSingleUpdateByName: Dev:DS2423_A2D989000001 Reading:counters.B Val:/alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
aus dieser Zeile Deines log folgt, dass
- $reading = counter.B
- $value = /alarm/20.5DFA07000000,/alarm/20.3C4304000000,/alarm/20.FAF807000000,/alarm/29.C85F04000000,/alarm/29.4F6904000000
ist. Der original-Code ruft mit diesen Werten nun
ZitatreadingsBulkUpdate($hash,$reading,$value) if(defined($value));
auf. Ich habe das geändert in (leicht vereinfacht):
ZitatBlockingInformParent("OWDevice_readingsSingleUpdateByName", [$hash->{NAME}, $reading, $value], 0) if(defined($value));
readingsSingleUpdate($hash, $readingName, $readingVal, 1);
Warum das nun zu unterschiedlichen Ergebnissen führt erschließt sich mir noch nicht so ganz... :-(
Kannst Du mal bitte ein
Zitatlist DS2423_A2D989000001
posten?
viele Grüße
Jürgen
Hi,
na klar:
Internals:
DEF 1D.A2D989000001 30
IODev myOWFS_KG
LAST_READ_FAILED 0
NAME DS2423_A2D989000001
NOTIFYDEV global
NR 63
NTFY_ORDER 50b-DS2423_A2D989000001
STATE counters.A: 506502 counters.B: 127103
TYPE OWDevice
READINGS:
2018-03-14 20:05:08 counters.A 506502
2018-03-14 20:05:08 counters.B 127103
2018-03-14 20:05:08 gasleistung 11.0188955005465
2018-03-14 20:05:08 state counters.A: 506502 counters.B: 127103
fhem:
address 1D.A2D989000001
alerting 0
bus bus.0
interfaces counter
interval 30
getters:
address
counters.A
counters.ALL
counters.B
crc8
family
id
locator
memory
pages/count.0
pages/count.1
pages/count.10
pages/count.11
pages/count.12
pages/count.13
pages/count.14
pages/count.15
pages/count.2
pages/count.3
pages/count.4
pages/count.5
pages/count.6
pages/count.7
pages/count.8
pages/count.9
pages/page.0
pages/page.1
pages/page.10
pages/page.11
pages/page.12
pages/page.13
pages/page.14
pages/page.15
pages/page.2
pages/page.3
pages/page.4
pages/page.5
pages/page.6
pages/page.7
pages/page.8
pages/page.9
r_address
r_id
r_locator
type
polls:
counters.A
counters.B
setters:
memory
pages/page.0
pages/page.1
pages/page.10
pages/page.11
pages/page.12
pages/page.13
pages/page.14
pages/page.15
pages/page.2
pages/page.3
pages/page.4
pages/page.5
pages/page.6
pages/page.7
pages/page.8
pages/page.9
state:
counters.A
counters.B
Attributes:
IODev myOWFS_KG
event-min-interval counters.A:30,counters.B:30,gas.*:30
event-on-change-reading counters.A,counters.B,gasleistung
event-on-update-reading .*
gasbrennwert 9.794
gasctsperm3 100
gaszwert 0.9655
model DS2423
polls counters.A,counters.B
room OWDevice
userReadings gasleistung differential { gasenergie('DS2423_A2D989000001',ReadingsVal("DS2423_A2D989000001","counters.A",0));}
Greetz
Eldrik