Moin liebes Forum,
folgendes Problem habe ich:
Egal, welches notify ich aufrufe, ich erhalte ein für mich nicht plausible Meldung im Log.
Die Fehlermeldung, die unabhängig vom notify im Log erscheint ist folgende:
2019.04.25 15:00:16 1: ERROR evaluating {ReadingsVal("n_bad_Tuer","$v","")}: Global symbol "$v" requires explicit package name (did you forget to declare "my $v"?) at (eval 2243534) line 1.
Hier noch ein verbose 5 von der jeweiligen Stelle im Log:
2019.04.25 16:19:03 5: rg_TemperatursensorError: not on any display, ignoring notify
2019.04.25 16:19:03 5: rg_battery: not on any display, ignoring notify
2019.04.25 16:19:03 5: End notify loop for temp_Kuehlschrank
2019.04.25 16:19:05 5: Cmd: >get eventTypes list<
2019.04.25 16:19:05 4: temp_Tiefkuehlschrank decoded Oregon: T: -19.2 H: 45 BAT: ok
2019.04.25 16:19:05 5: Starting notify loop for temp_Tiefkuehlschrank, 5 event(s), first is temperature: -19.2
2019.04.25 16:19:05 4: DbLog myDbLog -> ################################################################
2019.04.25 16:19:05 4: DbLog myDbLog -> ### start of new Logcycle ###
2019.04.25 16:19:05 4: DbLog myDbLog -> ################################################################
2019.04.25 16:19:05 4: DbLog myDbLog -> number of events received: 5 for device: temp_Tiefkuehlschrank
2019.04.25 16:19:05 4: DbLog myDbLog -> check Device: temp_Tiefkuehlschrank , Event: temperature: -19.2
2019.04.25 16:19:05 5: DbLog myDbLog -> parsed Event: temp_Tiefkuehlschrank , Event: temperature: -19.2
2019.04.25 16:19:05 5: DbLog myDbLog -> DbLogInclude of "temp_Tiefkuehlschrank": humidity,temperature
2019.04.25 16:19:05 4: DbLog myDbLog -> added event - Timestamp: 2019-04-25 16:19:05, Device: temp_Tiefkuehlschrank, Type: OREGON, Event: temperature: -19.2, Reading: temperature, Value: -19.2, Unit: °C
2019.04.25 16:19:05 4: DbLog myDbLog -> check Device: temp_Tiefkuehlschrank , Event: humidity: 45
2019.04.25 16:19:05 5: DbLog myDbLog -> parsed Event: temp_Tiefkuehlschrank , Event: humidity: 45
2019.04.25 16:19:05 5: DbLog myDbLog -> DbLogInclude of "temp_Tiefkuehlschrank": humidity,temperature
2019.04.25 16:19:05 4: DbLog myDbLog -> added event - Timestamp: 2019-04-25 16:19:05, Device: temp_Tiefkuehlschrank, Type: OREGON, Event: humidity: 45, Reading: humidity, Value: 45, Unit: %
2019.04.25 16:19:05 4: DbLog myDbLog -> check Device: temp_Tiefkuehlschrank , Event: battery: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> parsed Event: temp_Tiefkuehlschrank , Event: battery: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> DbLogInclude of "temp_Tiefkuehlschrank": humidity,temperature
2019.04.25 16:19:05 4: DbLog myDbLog -> added event - Timestamp: 2019-04-25 16:19:05, Device: temp_Tiefkuehlschrank, Type: OREGON, Event: battery: ok, Reading: battery, Value: ok, Unit:
2019.04.25 16:19:05 4: DbLog myDbLog -> check Device: temp_Tiefkuehlschrank , Event: batteryState: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> parsed Event: temp_Tiefkuehlschrank , Event: batteryState: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> DbLogInclude of "temp_Tiefkuehlschrank": humidity,temperature
2019.04.25 16:19:05 4: DbLog myDbLog -> added event - Timestamp: 2019-04-25 16:19:05, Device: temp_Tiefkuehlschrank, Type: OREGON, Event: batteryState: ok, Reading: batteryState, Value: ok, Unit:
2019.04.25 16:19:05 4: DbLog myDbLog -> check Device: temp_Tiefkuehlschrank , Event: state: T: -19.2 H: 45 BAT: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> parsed Event: temp_Tiefkuehlschrank , Event: state: T: -19.2 H: 45 BAT: ok
2019.04.25 16:19:05 5: DbLog myDbLog -> DbLogInclude of "temp_Tiefkuehlschrank": humidity,temperature
2019.04.25 16:19:05 4: DbLog myDbLog -> added event - Timestamp: 2019-04-25 16:19:05, Device: temp_Tiefkuehlschrank, Type: OREGON, Event: state: T: -19.2 H: 45 BAT: ok, Reading: state, Value: T: -19.2 H: 45 BAT: ok, Unit:
2019.04.25 16:19:05 5: rg_TemperatursensorError: not on any display, ignoring notify
2019.04.25 16:19:05 5: rg_battery: not on any display, ignoring notify
2019.04.25 16:19:05 5: End notify loop for temp_Tiefkuehlschrank
2019.04.25 16:19:05 5: Cmd: >{ReadingsVal("n_Staubsauger","$v","")}<
2019.04.25 16:19:05 1: ERROR evaluating {ReadingsVal("n_Staubsauger","$v","")}: Global symbol "$v" requires explicit package name (did you forget to declare "my $v"?) at (eval 2402307) line 1.
2019.04.25 16:19:05 5: Cmd: >set AVMFritzBox ?<
2019.04.25 16:19:05 5: Cmd: >{ReadingsVal("n_Staubsauger","active","")}<
2019.04.25 16:19:05 5: Cmd: >{AttrVal("n_Staubsauger","room","")}<
Beispiel-notify:
Internals:
DEF bad_Tuer:.*
{
if (ReadingsVal("bad_Tuer","state","") eq "open")
{ fhem "attr n_bad_Motion disable 0" }
elsif (ReadingsVal("bad_Tuer","state","") eq "closed")
{ fhem "attr n_bad_Motion disable 1" }
}
FUUID 5ca49ed5-f33f-5a17-b524-3d5fcbbe3451f6ee
NAME n_bad_Tuer
NOTIFYDEV bad_Tuer
NR 633
NTFY_ORDER 50-n_bad_Tuer
REGEXP bad_Tuer:.*
STATE active
TRIGGERTIME 1556163738.78284
TYPE notify
READINGS:
2019-04-25 15:00:30 state active
Attributes:
DbLogExclude .*
room Badezimmer
Das Device zu dem Notify:
Internals:
DEF 5913B7
FUUID 5ca49ed4-f33f-5a17-5105-3acef26b2c04d8f8
IODev myHmUARTLGW
LASTInputDev myHmUARTLGW
MSGCNT 80
NAME bad_Tuer
NOTIFYDEV global
NR 436
NTFY_ORDER 50-bad_Tuer
STATE open
TYPE CUL_HM
chanNo 01
lastMsg No:FB - t:10 s:5913B7 d:115200 0601C800
myHmUARTLGW_MSGCNT 40
myHmUARTLGW_RAWMSG 05010029FBA6105913B71152000601C800
myHmUARTLGW_RSSI -41
myHmUARTLGW_TIME 2019-04-25 14:44:02
myHmUARTUSB_MSGCNT 40
myHmUARTUSB_RAWMSG 05000033FBA6105913B71152000601C800
myHmUARTUSB_RSSI -51
myHmUARTUSB_TIME 2019-04-25 14:44:02
peerList bad_Heizung_WindowRec,
protLastRcv 2019-04-25 14:44:02
protRcv 40 last_at:2019-04-25 14:44:02
protRcvB 6 last_at:2019-04-25 05:42:18
protSnd 34 last_at:2019-04-25 14:44:02
protState CMDs_done
rssi_at_myHmUARTLGW cnt:40 min:-44 max:-39 avg:-41.59 lst:-41
rssi_at_myHmUARTUSB cnt:40 min:-55 max:-49 avg:-50.92 lst:-51
READINGS:
2019-04-24 14:13:47 Activity alive
2018-02-15 20:26:04 D-firmware 1.0
2018-02-15 20:26:04 D-serialNr OEQ0495674
2019-04-05 12:52:01 PairedTo 0x115200
2018-02-15 23:40:26 R-bad_Heizung_WindowRec-expectAES off
2018-02-15 23:40:26 R-bad_Heizung_WindowRec-peerNeedsBurst on
2018-02-15 23:40:24 R-cyclicInfoMsg on
2018-02-15 23:40:25 R-eventDlyTime 0 s
2018-02-15 23:40:24 R-pairCentral 0x115200
2018-02-15 23:40:24 R-sabotageMsg on
2018-02-15 23:40:25 R-sign on
2019-04-05 12:52:01 RegL_00. 00:00 02:01 09:01 0A:11 0B:52 0C:00 10:01 14:06
2019-04-05 12:52:01 RegL_01. 00:00 08:01 20:9C 21:00 30:06
2019-04-05 12:52:02 RegL_04.bad_Heizung_WindowRec 00:00 01:01
2019-04-25 14:44:02 alive yes
2019-04-25 14:44:02 battery ok
2019-04-25 14:44:02 contact open (to VCCU)
2019-04-24 14:13:47 peerList bad_Heizung_WindowRec,
2019-04-05 11:57:55 powerOn 2019-04-05 11:57:55
2019-04-25 14:44:02 recentStateType info
2019-04-25 14:44:02 sabotageError off
2019-04-25 14:44:02 state open
2019-04-25 05:42:18 state1 open1
2019-04-25 05:42:19 trigger_cnt 96
helper:
HM_CMDNR 251
mId 00C7
peerFriend peerAct,peerVirt
peerOpt 4:threeStateSensor
regLst 0,1,4p
rxType 28
supp_Pair_Rep 0
ack:
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +5913B7,00,00,00
nextSend 1556196242.34312
prefIO
rxt 2
vccu VCCU
p:
5913B7
00
00
00
mRssi:
mNo FB
io:
myHmUARTLGW:
-33
-33
myHmUARTUSB:
-51
-51
prt:
bErr 0
sProc 0
sleeping 0
rspWait:
q:
qReqConf
qReqStat
role:
chn 1
dev 1
rpt:
IO myHmUARTUSB
flg A
ts 1556196242.07068
ack:
HASH(0x557895762200)
FB80021152005913B700
rssi:
at_myHmUARTLGW:
avg -41.6
cnt 40
lst -41
max -39
min -44
at_myHmUARTUSB:
avg -50.925
cnt 40
lst -51
max -49
min -55
Attributes:
DbLogExclude .*
IOgrp VCCU
actCycle 002:50
actStatus alive
autoReadReg 4_reqStatus
event-on-change-reading state,state1
expert 2_raw
firmware 1.0
icon fts_door_right_open
model HM-SEC-SCo
peerIDs 00000000,44F80E03,
room Badezimmer,Homekit
serialNr OEQ0495674
subType threeStateSensor
userReadings state1:.* {(ReadingsVal($name,"state","") =~ /^open/)?"open1":"closed1"}
verbose 2
In dem notify habe ich aber kein $v Variable.
$v benutze ich gerne in UserReadings in diversen Geräten, dies schaut z.B. so aus:
state1:alarm.*
{
my $v = (ReadingsVal($name,"alarm",""));;
if ($v =~ /HomeSecurity:.Motion.Detection/)
{
$v = 'motion';;
$v;;
}
elsif ($v =~ /HomeSecurity:.Event.cleared/)
{
$v = 'nomotion';;
$v;;
}
}
Ich weiß leider nicht, wo ich suchen muss, um den Übeltäter zu finden der augenscheinlich getriggert wird und den Eintrag in das Logfile schreibt.
@Edit: Beim weiteren testen ist mir aufgefallen, dass es nicht am MODIFY liegt, sondern direkt beim "anklicken" des Notify ein Logeintrag geschrieben wird. Kann es an dem "addRegexpPart" liegen? Siehe Bild. Wenn ich im "addRegexpPart" entweder "$v" oder "($v" auswähle bekomme ich eine jquery.min.js Fehlermeldung, siehe Bild.
Gruß
Mathze
Es hing mit dem Device ,,eventTypes" zusammen. Habe einfach ignoreList verwendet. Funktioniert.
Gruß Mathze