Ich hab mir einen von TomMajor's DIY-Sensoren (https://github.com/TomMajor/SmartHome/tree/master/PCB/Sensor_PLHT) gebaut und er funktioniert auch soweit. Jedoch bekomme ich immer folgende Warning im Log, wenn "getConfig" verarbeitet wird:
019.04.03 23:01:43.874 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/10_CUL_HM.pm line 8150.
2019.04.03 23:01:43.874 1: stacktrace:
2019.04.03 23:01:43.874 1: main::__ANON__ called by ./FHEM/10_CUL_HM.pm (8150)
2019.04.03 23:01:43.874 1: main::CUL_HM_getRegFromStore called by ./FHEM/10_CUL_HM.pm (8363)
2019.04.03 23:01:43.875 1: main::CUL_HM_updtRegDisp called by ./FHEM/10_CUL_HM.pm (3437)
2019.04.03 23:01:43.875 1: main::CUL_HM_parseCommon called by ./FHEM/10_CUL_HM.pm (1526)
2019.04.03 23:01:43.875 1: main::CUL_HM_Parse called by fhem.pl (3893)
2019.04.03 23:01:43.875 1: main::Dispatch called by ./FHEM/00_HMUARTLGW.pm (1463)
2019.04.03 23:01:43.875 1: main::HMUARTLGW_Parse called by ./FHEM/00_HMUARTLGW.pm (1566)
2019.04.03 23:01:43.875 1: main::HMUARTLGW_Read called by fhem.pl (3697)
2019.04.03 23:01:43.875 1: main::CallFn called by fhem.pl (744)
So sieht mein Device aus:
Historie löschen
Internals:
DEF A5A502
FUUID 5ca3923e-f33f-af31-f00a-6d4e5662fbab03bf
IODev sys_culHm
LASTInputDev sys_culHm
MSGCNT 65
NAME HM_A5A502
NOTIFYDEV global
NR 630
NTFY_ORDER 50-HM_A5A502
STATE T: 18.8 P: 1088.0 H: 88 B: 88000 I: 0
TYPE CUL_HM
chanNo 01
lastMsg No:01 - t:70 s:A5A502 d:<VCCUID> 00BC2A8058000157C0000D36
protCmdDel 3
protLastRcv 2019-04-03 23:02:25
protRcv 55 last_at:2019-04-03 23:02:25
protResnd 12 last_at:2019-04-03 23:01:46
protResndFail 1 last_at:2019-04-03 22:29:47
protSnd 46 last_at:2019-04-03 23:01:44
protState CMDs_pending
rssi_at_sys_culHm cnt:65 min:-68 max:-56 avg:-61.13 lst:-60
rssi_sys_culHm cnt:10 min:-79 max:-72 avg:-76.1 lst:-77
sys_culHm_MSGCNT 65
sys_culHm_RAWMSG 0501003C018470A5A502<VCCUID>00BC2A8058000157C0000D36
sys_culHm_RSSI -60
sys_culHm_TIME 2019-04-03 23:02:25
READINGS:
2019-04-03 22:32:32 Activity alive
2019-04-03 22:31:00 CommandAccepted yes
2019-04-03 22:32:32 D-firmware 1.2
2019-04-03 22:32:32 D-serialNr UNISENS001
2019-04-03 23:01:43 PairedTo <VCCUID>
2019-04-03 22:31:13 R-pairCentral <VCCUID>
2019-04-03 23:01:43 RegL_00. 00:00 05:40 0A:F1 0B:55 0C:44 12:15 14:06 20:02 21:58 22:00 23:00
2019-04-03 23:02:25 batVoltage 3.38
2019-04-03 23:02:25 battery ok
2019-04-03 23:02:25 brightness 88000
2019-04-03 23:02:25 digitalInput 0
2019-04-03 23:02:25 humidity 88
2019-04-03 22:50:17 powerOn 2019-04-03 22:50:17
2019-04-03 23:02:25 pressure 1088.0
2019-04-03 23:01:44 recentStateType info
2019-04-03 23:02:25 state T: 18.8 P: 1088.0 H: 88 B: 88000 I: 0
2019-04-03 23:02:25 temperature 18.8
cmdStack:
helper:
HM_CMDNR 1
PONtest 1
cSnd 01<VCCUID>A5A5020103,01<VCCUID>A5A502010E
mId F103
peerFriend
peerIDsRaw ,00000000
peerOpt p:UniSensor1
regLst 0
rxType 156
supp_Pair_Rep 0
expert:
def 1
det 0
raw 1
tpl 0
io:
newCh 1
newChn +A5A502,02,00,00
nextSend 1554325345.15859
rxt 2
vccu VCCU
p:
A5A502
00
00
00
prefIO:
sys_culHm
mRssi:
mNo 01
io:
sys_culHm:
-56
-56
prt:
bErr 0
sProc 2
sleeping 0
wuReSent 2
q:
qReqConf
qReqStat
regCollect:
role:
chn 1
dev 1
rssi:
at_sys_culHm:
avg -61.1384615384615
cnt 65
lst -60
max -56
min -68
sys_culHm:
avg -76.1
cnt 10
lst -77
max -72
min -79
shadowReg:
tmpl:
Attributes:
IODev sys_culHm
IOgrp VCCU:sys_culHm
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.2
model HB-UNI-Sensor1
peerIDs 00000000,
room CUL_HM
serialNr UNISENS001
subType UniSensor1
"HMConfig_UniSensor1.pm" hab ich installiert.
Asksin++ ist Version 3.1.8.
Der Sensor hat momentan keine echten Sensor-Chips drauf und sendet nur Dummy-Daten.
Bin nicht so sicher, in welcher Komponente das Problem steckt... :/ Hat jemand eine Idee?
Also nach etwas Code lesen, habe ich das Gefühl, dass der Parameter "p" in der Config fehlt?
$HMConfig::culHmRegDefine{'ledMode'} = {a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit',f=>'',u=>'' ,d=>0,t=>'LED mode',lit=>{off=>0,on=>1}};
Kam Parameter "p" evtl. erst kürzlich dazu und der fehlt dort noch? Er fehlt offenbar auch in der Beschreibung der Parameter, was auch dafür spricht, dass er erst kürzlich dazu kam:
##----------definitions for register settings-----------------
# definition of Register for all devices
# a: address, incl bits 13.4 4th bit in reg 13
# s: size 2.0 = 2 byte, 0.5 = 5 bit. Max is 4.0!!
# l: list number. List0 will be for channel 0
# List 1 will set peer to 00000000
# list 3 will need the input of a peer!
# min: minimal input value
# max: maximal input value
# c: conversion, will point to a routine for calculation
# f: factor to be used if c = 'factor'
# u: unit for description
# t: txt description
# lit: if the command is a literal options will be entered here
# d: if '1' the register will appear in Readings
#
Also kürzer sollten die Bezeichner wirklich nicht mehr werden... 8) was kann "p" bedeuten? Irgendwas mit Peer vermtl.?
Sieht für mich so aus als ob 'p' kein register sondern ein device param ist, deswegen nicht in der zitierten Beschreibung der Reg. definitions enthalten.
Das p hatte ich aus dem original Vorbild des Wettersensors von Dirk übernommen, ev. ist das nicht korrekt. Hat sicher mit Peers zu tun.
Probier mal
lst=>'1'
statt dem 'p'
Der Code aus der Warning ist der hier:
return "invalid:no peer for this register" if(($reg->{p} eq "n" && hex($peerId) != 0)
||($reg->{p} eq "y" && hex($peerId) == 0));
Und da gibt es den Zugriff auf Variable "p" des Registers.
Hier aus der HMConfig ein paar Register:
##----------definitions for register settings-----------------
# definition of Register for all devices
# a: address, incl bits 13.4 4th bit in reg 13
# s: size 2.0 = 2 byte, 0.5 = 5 bit. Max is 4.0!!
...
# d: if '1' the register will appear in Readings
...
%culHmRegDefine = (
#--- list 0, device and protocol level-----------------
burstRx =>{a=> 1.0,s=>1.0,l=>0,min=>0 ,max=>255 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>'device reacts on Burst' ,lit=>{off=>0,on=>1}},
intKeyVisib =>{a=> 2.7,s=>0.1,l=>0,min=>0 ,max=>1 ,c=>'lit' ,p=>'n',f=>'' ,u=>'' ,d=>0,t=>'visibility of internal channel' ,lit=>{invisib=>0,visib=>1}},
pairCentral =>{a=> 10.0,s=>3.0,l=>0,min=>0 ,max=>16777215,c=>'hex' ,p=>'n',f=>'' ,u=>'' ,d=>1,t=>'pairing to central'},
Hier gibt es das "p" (noch?) nicht:
https://github.com/TomMajor/SmartHome/blob/master/HB-UNI-Sensor1/FHEM/HMConfig_UniSensor1.pm
$HMConfig::culHmRegDefine{'ledMode'} = {a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit',f=>'',u=>'' ,d=>0,t=>'LED mode',lit=>{off=>0,on=>1}};
$HMConfig::culHmRegDefine{'lowBatLimit'} = {a=>18.0,s=>1.0,l=>0,min=>1.0 ,max=>5 ,c=>'' ,f=>10,u=>'V' ,d=>0,t=>'Low batterie limit, step 0.1 V.'};
$HMConfig::culHmRegDefine{'updateIntervall'} = {a=>32.0,s=>2.0,l=>0,min=>60 ,max=>43200 ,c=>'' ,f=>'',u=>'s' ,d=>0,t=>'Sensor measure and send intervall in seconds.'};
$HMConfig::culHmRegDefine{'altitude'} = {a=>34.0,s=>2.0,l=>0,min=>0 ,max=>10000 ,c=>'' ,f=>'',u=>'m' ,d=>0,t=>'Altitude for calculate air pressure at see level in meter.'};
Soweit meine Theorie. Ich mag falsch liegen und werde auch gerne nachher das mit dem "lst" ausprobieren.
Gut recherchiert. P ist gesetzt bei peer behafteten Registern. Also y (yes) oder n (no)
Zitat von: vbs am 04 April 2019, 23:37:15
Also nach etwas Code lesen, habe ich das Gefühl, dass der Parameter "p" in der Config fehlt?
$HMConfig::culHmRegDefine{'ledMode'} = {a=> 5.6,s=>0.2,l=>0,min=>0 ,max=>1 ,c=>'lit',f=>'',u=>'' ,d=>0,t=>'LED mode',lit=>{off=>0,on=>1}};
Kam Parameter "p" evtl. erst kürzlich dazu und der fehlt dort noch? Er fehlt offenbar auch in der Beschreibung der Parameter, was auch dafür spricht, dass er erst kürzlich dazu kam:
ok, jetzt verstehe ich worauf du hinaus willst.
Sieht für mich auch so aus als ob der kürzlich dazukam, eine lokale FHEM Version bei mir von 2/2018 hatte dort in HMConfig.pm die ganzen
p=>'n'
bei list0 noch nicht, die aktuelle Version hat sie. Werden die jetzt erwartet? Dann am besten mal damit testen.
Da dies alles Config/List0 Regs sind würde ich vermuten es braucht bei keinem eine "peer Behaftung"
Ok danke, hab's ergänzt und es funktioniert soweit:
p=>'n'
Sorry für's Cross-Posten. Hier geht's weiter (da kein CUL_HM-Problem):
https://forum.fhem.de/index.php/topic,20620.msg927527.html#msg927527
List 0 sind immer ohne Peer. Ist auch im HMConfig so getaggt.