Hallo,
ich möchte das mein HM_SEC_MDIR bei Bewegung eine Steckdose anschaltet, allerdings klappt das aus irgendeinem Grund nicht:
Das notify dazu sieht so aus:
Internals:
CFGFN
DEF Bewegungsmelder:motion {fhem ("set LED_Leiste_Bett on-for-timer 40")
if (ReadingsVal("Bewegungsmelder","brightness",0) < 34)}
NAME LED_Bett
NOTIFYDEV Bewegungsmelder
NR 765
NTFY_ORDER 50-LED_Bett
REGEXP Bewegungsmelder:motion
STATE 2015-11-03 21:18:37
TYPE notify
CHANGETIME:
Helper:
Dblog:
State:
Mydblog:
TIME 1446581366.18501
VALUE active
Readings:
2015-11-03 21:09:26 state active
Attributes:
room Schlafzimmer
Aber bei Bewegunng wird nicht geschaltet und im Log steht dann:
2015.11.03 21:12:00.782 3: LED_Bett return value: syntax error at (eval 6166) line 2, near "<"
2015.11.03 21:18:37.861 3: LED_Bett return value: syntax error at (eval 6557) line 2, near "<"
2015.11.03 21:23:02.793 3: LED_Bett return value: syntax error at (eval 6856) line 2, near "<"
Wo ist mein Fehler?
Danke
Müsste dein DEF nicht so aussehen:
Bewegungsmelder:motion { if ( ReadingsVal("Bewegungsmelder","brightness",0) < 34) { fhem ("set LED_Leiste_Bett on-for-timer 40") }}
Also erst die Bedinung und dann was ausgeführt werden soll, wenn die Bedinung erfüllt ist.
Hallo,
wenn das zwei HM Geräte sind - peeren und in HMinfo mit dem Template Helligkeit und Zeit einstellen. Da brightness ein numerischer Wert ist, könnte man bei dem if auch mit < > = arbeiten.
Gruß Christoph
Hi, nein sind nicht beides HM, der Bewegungsmelder ja, die Steckdose ist eine intertechno
Werd heute Abend mal das notify drehen, wobei ich grade nicht glaube das das den Fehler im log löst, der scheint ja aus dem < (was im Code Tag als < dargestellt wird )zu kommen
Gesendet von iPhone mit Tapatalk
Hallo,
mal Perl if und Klammern - ich würde das mal einfach so
define LED_Bett DOIF ( [Bewegungsmelder] eq "motion" and [Bewegungsmelder:brightness] < 34) (set LED_Leiste_Bett on-for-timer 40)
alternativ mit fhem IF
define LED_Bett notify Bewegungsmelder:motion IF (ReadingsVal("Bewegungsmelder","brightness",0) < 34) (set LED_Leiste_Bett on-for-timer 40)
versuchen
Gruß Christoph
Zitat von: DecaTec am 04 November 2015, 06:17:36
Müsste dein DEF nicht so aussehen:
Bewegungsmelder:motion { if ( ReadingsVal("Bewegungsmelder","brightness",0) < 34) { fhem ("set LED_Leiste_Bett on-for-timer 40") }}
Also erst die Bedinung und dann was ausgeführt werden soll, wenn die Bedinung erfüllt ist.
Hi,
damit hat es super funktioniert, hatte es dann wohl einfach falsch rum gemacht.
Danke für eure Hilfe
Hallo,
da ich den Bewegungsmelder jetzt nochmal versetzt habe und er ein anderes Devices schalten soll habe ich das notify jetzt so geändert:
Internals:
DEF Bewegungsmelder:motion { if ( ReadingsVal("Bewegungsmelder","brightness",0) < 34) { fhem ("set Funkschalter_Keller_Licht on-for-timer 40") }}
NAME nt_Bewegungsmelder_Keller
NOTIFYDEV Bewegungsmelder
NR 289
NTFY_ORDER 50-LED_Bett
REGEXP Bewegungsmelder:motion
STATE active
TYPE notify
CHANGETIME:
Helper:
Dblog:
State:
Mydblog:
TIME 1447447403.15694
VALUE active
Readings:
2015-11-13 21:43:23 state active
Attributes:
room Kellerflur
Der Bewegunsmelder soll jetzt einen HM-LC-SW1-FM schalten, das sieht in der definition so aus:
Internals:
DEF 237437
HmLanAdapter_MSGCNT 80
HmLanAdapter_RAWMSG R02389EF2,0001,023C660F,FF,FFAF,17A0102374370000410100000000
HmLanAdapter_RSSI -81
HmLanAdapter_TIME 2015-11-13 20:00:44
IODev HmLanAdapter
LASTInputDev HmLanAdapter
MSGCNT 80
NAME Funkschalter_Keller_Licht
NR 294
NTFY_ORDER 50-Funkschalter_Keller_Licht
STATE off
TYPE CUL_HM
lastMsg No:17 - t:10 s:237437 d:000041 0100000000
protCmdDel 20
protLastRcv 2015-11-13 20:00:44
protResnd 16 last_at:2015-11-13 19:40:34
protResndFail 5 last_at:2015-11-13 19:40:39
protSnd 79 last_at:2015-11-13 20:00:44
protState CMDs_done
rssi_HmLanAdapter min:-101 lst:-101 cnt:12 max:-79 avg:-91
rssi_at_HmLanAdapter max:-75 avg:-85.68 cnt:80 lst:-81 min:-98
CHANGETIME:
Helper:
Dblog:
Devicemsg:
Mydblog:
TIME 1447440085.07844
VALUE off (to vccu)
Level:
Mydblog:
TIME 1447440085.07844
VALUE 0
Pct:
Mydblog:
TIME 1447440085.07844
VALUE 0
Poweron:
Mydblog:
TIME 1447439732.19509
VALUE 2015-11-13 19:35:32
State:
Mydblog:
TIME 1447440085.07844
VALUE off
Timedon:
Mydblog:
TIME 1447440085.07844
VALUE off
Readings:
2015-11-13 19:41:25 CommandAccepted yes
2015-11-07 11:16:01 D-firmware 1.12
2015-11-07 11:16:01 D-serialNr KEQ0631830
2015-11-13 20:00:42 PairedTo 0x000041
2015-11-07 11:16:05 R-pairCentral 0x000041
2015-11-07 11:16:06 R-sign off
2015-11-13 20:00:42 RegL_00: 02:01 03:00 04:00 05:00 06:00 07:00 08:00 09:00 0A:00 0B:00 0C:41 00:00
2015-11-13 20:00:43 RegL_01: 08:00 00:00
2015-11-13 19:41:25 deviceMsg off (to vccu)
2015-11-13 19:41:25 level 0
2015-11-07 18:13:16 levelMissed desired:0
2015-11-13 19:41:25 pct 0
2015-11-13 19:35:32 powerOn 2015-11-13 19:35:32
2015-11-13 19:41:25 recentStateType ack
2015-11-13 19:41:25 state off
2015-11-13 19:41:25 timedOn off
Helper:
HM_CMDNR 23
PONtest 0
cSnd 0100004123743701040000000001,010000412374370103
dlvlCmd ++A0110000412374370201000000
mId 0004
peerIDsRaw ,00000000
rxType 1
Expert:
def 1
det 0
raw 1
tpl 0
Io:
newChn +237437,00,00,00
nextSend 1447441244.14727
rxt 0
vccu vccu
p:
237437
00
00
00
prefIO:
HmLanAdapter
Mrssi:
mNo 17
Io:
HmLanAdapter -79
Prt:
bErr 0
sProc 0
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
prs 1
Rpt:
IO HmLanAdapter
flg A
ts 1447441244.0626
ack:
HASH(0x3d1f248)
17800200004123743700
Rssi:
Hmlanadapter:
avg -91
cnt 12
lst -101
max -79
min -101
At_hmlanadapter:
avg -85.6875
cnt 80
lst -81
max -75
min -98
Shadowreg:
Attributes:
IODev HmLanAdapter
IOgrp vccu:HmLanAdapter
autoReadReg 4_reqStatus
expert 2_full
firmware 1.12
model HM-LC-SW1-FM
peerIDs 00000000,
room Kellerflur
serialNr KEQ0631830
subType switch
webCmd statusRequest:toggle:on:off
Was hab ich hier falsch gemacht?
Danke
Hallo,
warum machst Du so etwas mit einem Notify. Das kann man doch per peeren und einstellen der Helligkeitsschwelle (template von hminfo) machen. Dann geht es auch, wenn fhem mal ausfällt und die Funklast am Fhem-Funkinterface wird gesenkt.
Wenn, dann würde ich das mit dem fhem IF machen. Dann kannst Du Dir die {} sparen und die "". Also
IF (ReadingsVal...) set Funkschalter... on-for-timer
Gruß Christoph
jetzt klappt es mit dem notify, werd mir die Geschichte mit dem peer aber maal überlegen, danke für den Tip