Hallo zusammen,
ich möchte einen unserer Rollladen im Schlafzimmer über zwei gleiche Fernbedienungen (HM-RC-4-3) steuern.
Die Idee ist, da die Fernbedienung (FB) 4 unterschiedliche Zustände schalten kann, über den "Long-Befehl" die Zustände, Rollladen, auf, zu, 35% und 15% zu steuern.
Da jede Taste der FB sowohl "Long-Befehl" als auch "Short-Befehl" ermöglicht, wird der Lauf des Rollladen über den "Long-Befehl" initiert. Umsetzung der Befehle der Tastendrücke von der FB wird über ein DOIF gesteuert und funktioniert einwandfrei.
Die Idee ist jetzt, dass der "Short-Befehl" einer beliebigen Taste der FB den aktuellen Lauf des Rollladen stoppt, egal auf welchem Weg er grad war (auf oder ab)
Mein Problem ist jetzt, dass ich keinen Befehl (set 20_OG_Schlafzimmer_Rollladen:<irgendwas> stop/halt) finde, bzw. eine Funktion, die auf einen kurzen Tastendruck den Rollladen stoppt.
Hat jemand einen Rat oder sowas schon mal gemacht und kann mir mit einem Denkanstoß auf die Sprünge helfen ?
Danke Joachim
list 20_OG_Schlafzimmer_Rollladen
Internals:
CFGFN
DEF 670117
FUUID 5d175487-f33f-8c2a-a6e8-4268235fdd486bca
IODev myHmUART
LASTInputDev RM_HmUART_UG
MSGCNT 432
NAME 20_OG_Schlafzimmer_Rollladen
NOTIFYDEV global
NR 46502
RM_HmUART_DG_MSGCNT 168
RM_HmUART_DG_RAWMSG 0501003309A4106701174C3DF406014600
RM_HmUART_DG_RSSI -51
RM_HmUART_DG_TIME 2019-06-30 12:18:22
RM_HmUART_UG_MSGCNT 98
RM_HmUART_UG_RAWMSG 0500005609A4106701174C3DF406014600
RM_HmUART_UG_RSSI -86
RM_HmUART_UG_TIME 2019-06-30 12:18:22
STATE 35
TYPE CUL_HM
chanNo 01
lastMsg No:09 - t:10 s:670117 d:4C3DF4 06014600
myHmUART_MSGCNT 166
myHmUART_RAWMSG 0501003409A4106701174C3DF406014600
myHmUART_RSSI -52
myHmUART_TIME 2019-06-30 12:18:22
peerList self01,self02,
protCmdDel 69
protLastRcv 2019-06-30 12:18:17
protRcv 154 last_at:2019-06-30 12:18:17
protResnd 84 last_at:2019-06-29 17:40:17
protResndFail 25 last_at:2019-06-29 17:40:21
protSnd 186 last_at:2019-06-30 12:18:22
protState CMDs_done
rssi_RM_HmUART_DG cnt:4 min:-63 max:-50 avg:-56.75 lst:-57
rssi_at_RM_HmUART_DG cnt:168 min:-58 max:-42 avg:-50.79 lst:-51
rssi_at_RM_HmUART_UG cnt:98 min:-89 max:-83 avg:-86.22 lst:-86
rssi_at_myHmUART cnt:167 min:-62 max:-51 avg:-54.64 lst:-52
rssi_myHmUART cnt:44 min:-64 max:-58 avg:-60.68 lst:-58
READINGS:
2019-06-30 12:18:05 CommandAccepted yes
2019-06-29 21:32:11 PairedTo 0x4C3DF4
2019-06-29 21:32:12 R-driveDown 50 s
2019-06-29 21:32:12 R-driveTurn 0.5 s
2019-06-29 21:32:12 R-driveUp 50 s
2019-06-29 21:32:11 R-pairCentral 0x4C3DF4
2019-06-29 21:32:14 R-self01-lgActionType jmpToTarget
2019-06-29 21:32:14 R-self01-lgOnLevel 100 %
2019-06-29 21:32:14 R-self01-shActionType jmpToTarget
2019-06-29 21:32:14 R-self01-shOnLevel 100 %
2019-06-29 21:32:15 R-self02-lgActionType jmpToTarget
2019-06-29 21:32:15 R-self02-lgOnLevel 100 %
2019-06-29 21:32:15 R-self02-shActionType jmpToTarget
2019-06-29 21:32:15 R-self02-shOnLevel 100 %
2019-06-29 21:32:12 R-sign off
2019-06-29 21:32:11 RegL_00. 00:00 02:81 0A:4C 0B:3D 0C:F4 15:FF 18:00
2019-06-29 21:32:12 RegL_01. 00:00 08:00 09:00 0A:00 0B:01 0C:F4 0D:01 0E:F4 0F:05 10:00 30:06 56:00 57:24
2019-06-29 21:32:14 RegL_03.self01 00:00 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:11 0C:12 0D:68 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:68 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:11 8C:12 8D:68 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:68 9F:00
2019-06-29 21:32:15 RegL_03.self02 00:00 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:44 0C:54 0D:93 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:93 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:44 8C:54 8D:93 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:93 9F:00
2019-06-30 12:18:17 deviceMsg 35 (to VCCU)
2019-06-30 12:18:17 level 35
2019-06-30 12:18:17 motor stop:35
2019-06-30 12:18:17 pct 35
2019-06-30 11:47:54 peerList self01,self02,
2019-06-30 12:18:17 recentStateType info
2019-06-30 12:18:17 state 35
2019-06-30 12:18:17 timedOn off
helper:
HM_CMDNR 9
PONtest 0
cSnd 114C3DF467011702011E,114C3DF4670117020146
dlvlCmd ++A0114C3DF4670117020146
mId 0005
peerFriend peerSens,peerVirt
peerIDsRaw ,67011701,67011702,00000000
peerOpt 3:blindActuator
regLst 0,1,3p
rxType 1
supp_Pair_Rep 0
ack:
dir:
cur stop
rct up
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +670117,00,00,00
nextSend 1561889902.54019
prefIO
rxt 0
vccu
p:
670117
00
00
00
mRssi:
mNo 09
io:
RM_HmUART_DG:
-51
-51
RM_HmUART_UG:
-86
-86
myHmUART:
-46
-46
prt:
bErr 0
sProc 0
rspWait:
q:
qReqConf
qReqStat
regCollect:
role:
chn 1
dev 1
prs 1
rpt:
IO myHmUART
flg A
ts 1561889902.22488
ack:
HASH(0x5ac52e0)
0980024C3DF467011700
rssi:
RM_HmUART_DG:
avg -56.75
cnt 4
lst -57
max -50
min -63
at_RM_HmUART_DG:
avg -50.7976190476191
cnt 168
lst -51
max -42
min -58
at_RM_HmUART_UG:
avg -86.2244897959184
cnt 98
lst -86
max -83
min -89
at_myHmUART:
avg -54.6407185628742
cnt 167
lst -52
max -51
min -62
myHmUART:
avg -60.6818181818182
cnt 44
lst -58
max -58
min -64
shadowReg:
RegL_00. 00:00 02:81 0A:4C 0B:3D 0C:F4 15:FF 18:00
tmpl:
Attributes:
IODev myHmUART
IOgrp VCCU:myHmUART
autoReadReg 5_readMissing
devStateIcon auf:fts_shutter_10 zu:fts_shutter_100@green .*:fts_shutter_50@yellow
eventMap statusRequest toggleDir on:auf off:zu up:hoch down:runter stop:stop
expert 2_raw
firmware 2.11
group Rolllaeden
model HM-LC-BL1-FM
peerIDs 00000000,67011701,67011702,
room 20_Dachgeschoss->Schlafzimmer
serialNr OEQ2688233
subType blindActuator
webCmd pct:auf:zu:hoch:runter:stop
list 20_DG_SZ_Remote_Control1
Internals:
CFGFN
DEF 6AAECE
FUUID 5d1644e4-f33f-8c2a-569e-1efda07ce76f83bf
IODev myHmUART
LASTInputDev RM_HmUART_DG
MSGCNT 221
NAME 20_DG_SZ_Remote_Control1
NOTIFYDEV global
NR 36851
RM_HmUART_DG_MSGCNT 113
RM_HmUART_DG_RAWMSG 0500003C66A2406AAECE4C3DF40408
RM_HmUART_DG_RSSI -60
RM_HmUART_DG_TIME 2019-06-30 12:17:43
STATE CMDs_done
TYPE CUL_HM
chanNo 01
channel_01 20_DG_SZ_Remote_Control1_Btn_01
channel_02 20_DG_SZ_Remote_Control1_Btn_02
channel_03 20_DG_SZ_Remote_Control1_Btn_03
channel_04 20_DG_SZ_Remote_Control1_Btn_04
lastMsg No:66 - t:40 s:6AAECE d:4C3DF4 0408
myHmUART_MSGCNT 108
myHmUART_RAWMSG 0501004266A2406AAECE4C3DF40408
myHmUART_RSSI -66
myHmUART_TIME 2019-06-30 12:17:43
protLastRcv 2019-06-30 12:17:43
protRcv 118 last_at:2019-06-30 12:17:43
protSnd 73 last_at:2019-06-30 12:17:43
protState CMDs_done
rssi_at_RM_HmUART_DG cnt:113 min:-75 max:-50 avg:-60.39 lst:-60
rssi_at_myHmUART cnt:109 min:-87 max:-66 avg:-72.72 lst:-66
READINGS:
2019-06-28 23:26:39 CommandAccepted yes
2019-06-28 23:26:37 D-firmware 1.1
2019-06-28 23:26:37 D-serialNr PEQ0781233
2019-06-28 23:26:39 PairedTo 0x4C3DF4
2019-06-28 23:26:39 R-pairCentral 0x4C3DF4
2019-06-28 23:26:39 RegL_00. 00:00 02:01 0A:4C 0B:3D 0C:F4 18:00
2019-06-30 12:17:43 battery ok
2019-06-30 12:17:43 state CMDs_done
helper:
HM_CMDNR 102
PONtest 1
cSnd 014C3DF46AAECE04040000000001,014C3DF46AAECE0403
mId 00D4
peerFriend
peerOpt -:remote
regLst 0
rxType 28
supp_Pair_Rep 0
ack:
expert:
def 1
det 0
raw 1
tpl 0
io:
newChn +6AAECE,00,00,00
nextSend 1561889863.9373
prefIO
rxt 2
vccu
p:
6AAECE
00
00
00
mRssi:
mNo 66
io:
RM_HmUART_DG:
-60
-60
myHmUART:
-62
-62
prt:
bErr 0
sProc 0
sleeping 0
try 1
rspWait:
q:
qReqConf
qReqStat
regCollect:
role:
dev 1
rpt:
IO myHmUART
flg A
ts 1561889863.4201
ack:
HASH(0x6e747b0)
6680024C3DF46AAECE00
rssi:
at_RM_HmUART_DG:
avg -60.3982300884956
cnt 113
lst -60
max -50
min -75
at_myHmUART:
avg -72.7247706422018
cnt 109
lst -66
max -66
min -87
shadowReg:
tmpl:
Attributes:
IODev myHmUART
IOgrp VCCU:myHmUART
autoReadReg 4_reqStatus
expert 2_raw
firmware 1.1
group Remote-Control
model HM-RC-4-3
room 20_Dachgeschoss->Schlafzimmer
serialNr PEQ0781233
subType remote
webCmd getConfig:clear msgEvents
list 20_DG_DOIF_Schlafzimmer_Rolllaeden_Remote_Control
Internals:
CFGFN
DEF ## ======== Rollladensteuerung im Schlafzimmer über 2 Fernbedienungen HM-RC-4-3 ============
##
## cmd:1, Rollladen ganz hoch über Taster1 (100%)
([20_DG_SZ_Remote_Control1_Btn_02:"Long"] or [20_DG_SZ_Remote_Control2_Btn_02:"Long"])
(set 20_OG_Schlafzimmer_Rollladen 100 {Log 1, "cmd_1 - Taste_1 --> Rollladen Schlafzimmer vollstaendig geoeffnet 100%"})
##
## cmd:2, Rollladen auf Lüftung über Taster2 (35%)
DOELSEIF
([20_DG_SZ_Remote_Control1_Btn_01:"Long"] or [20_DG_SZ_Remote_Control2_Btn_01:"Long"])
(set 20_OG_Schlafzimmer_Rollladen 35 {Log 1, "cmd_2 - Taste_2 --> Rollladen Schlafzimmer Abschattung 35%"})
##
## cmd:3, Rollladen auf Abschattung über Taster3 (15%)
DOELSEIF
([20_DG_SZ_Remote_Control1_Btn_04:"Long"] or [20_DG_SZ_Remote_Control2_Btn_04:"Long"])
(set 20_OG_Schlafzimmer_Rollladen 15 {Log 1, "cmd_3 - Taste_3 --> Rollladen Schlafzimmer auf Lueftungsschlitze 15%"})
##
## cmd:4, Rollladen zu über Taster4 (0%)
DOELSEIF
([20_DG_SZ_Remote_Control1_Btn_03:"Long"] or [20_DG_SZ_Remote_Control2_Btn_03:"Long"])
(set 20_OG_Schlafzimmer_Rollladen 0 {Log 1, "cmd_4 - Taste_4 --> Rollladen Schlafzimmer geschlossen 0%"})
##
## cmd:5, kurzer Tastendruck (Taste 1,2,3,4) Rollladen stop
## DOELSEIF
## ([20_DG_SZ_Remote_Control1_Btn_02:"Short"] or [20_DG_SZ_Remote_Control1_Btn_01:"Short"])
## (set [20_OG_Schlafzimmer_Rollladen:motor] "stop" {Log 1, "cmd_5 - kurzer Tastendruck_1,2 --> Rollladen stop"})
FUUID 5d17786f-f33f-8c2a-b817-f47a7b174387e791
MODEL FHEM
NAME 20_DG_DOIF_Schlafzimmer_Rolllaeden_Remote_Control
NR 47934
NTFY_ORDER 50-20_DG_DOIF_Schlafzimmer_Rolllaeden_Remote_Control
STATE initialized
TYPE DOIF
VERSION 19303 2019-05-01 08:47:16
READINGS:
2019-07-01 14:18:09 cmd 0
2019-07-01 14:18:09 mode enabled
2019-07-01 14:18:09 state initialized
Regex:
accu:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::EventDoIf('20_DG_SZ_Remote_Control1_Btn_02',$hash,'Long',1) or ::EventDoIf('20_DG_SZ_Remote_Control2_Btn_02',$hash,'Long',1)
1 ::EventDoIf('20_DG_SZ_Remote_Control1_Btn_01',$hash,'Long',1) or ::EventDoIf('20_DG_SZ_Remote_Control2_Btn_01',$hash,'Long',1)
2 ::EventDoIf('20_DG_SZ_Remote_Control1_Btn_04',$hash,'Long',1) or ::EventDoIf('20_DG_SZ_Remote_Control2_Btn_04',$hash,'Long',1)
3 ::EventDoIf('20_DG_SZ_Remote_Control1_Btn_03',$hash,'Long',1) or ::EventDoIf('20_DG_SZ_Remote_Control2_Btn_03',$hash,'Long',1)
devices:
0 20_DG_SZ_Remote_Control1_Btn_02 20_DG_SZ_Remote_Control2_Btn_02
1 20_DG_SZ_Remote_Control1_Btn_01 20_DG_SZ_Remote_Control2_Btn_01
2 20_DG_SZ_Remote_Control1_Btn_04 20_DG_SZ_Remote_Control2_Btn_04
3 20_DG_SZ_Remote_Control1_Btn_03 20_DG_SZ_Remote_Control2_Btn_03
all 20_DG_SZ_Remote_Control1_Btn_02 20_DG_SZ_Remote_Control2_Btn_02 20_DG_SZ_Remote_Control1_Btn_01 20_DG_SZ_Remote_Control2_Btn_01 20_DG_SZ_Remote_Control1_Btn_04 20_DG_SZ_Remote_Control2_Btn_04 20_DG_SZ_Remote_Control1_Btn_03 20_DG_SZ_Remote_Control2_Btn_03
do:
0:
0 set 20_OG_Schlafzimmer_Rollladen 100 {Log 1, "cmd_1 - Taste_1 --> Rollladen Schlafzimmer vollstaendig geoeffnet 100%"}
1:
0 set 20_OG_Schlafzimmer_Rollladen 35 {Log 1, "cmd_2 - Taste_2 --> Rollladen Schlafzimmer Abschattung 35%"}
2:
0 set 20_OG_Schlafzimmer_Rollladen 15 {Log 1, "cmd_3 - Taste_3 --> Rollladen Schlafzimmer auf Lueftungsschlitze 15%"}
3:
0 set 20_OG_Schlafzimmer_Rollladen 0 {Log 1, "cmd_4 - Taste_4 --> Rollladen Schlafzimmer geschlossen 0%"}
4:
helper:
globalinit 1
last_timer 0
sleeptimer -1
triggerDev
internals:
itimer:
readings:
trigger:
all 20_DG_SZ_Remote_Control1_Btn_02 20_DG_SZ_Remote_Control2_Btn_02 20_DG_SZ_Remote_Control1_Btn_01 20_DG_SZ_Remote_Control2_Btn_01 20_DG_SZ_Remote_Control1_Btn_04 20_DG_SZ_Remote_Control2_Btn_04 20_DG_SZ_Remote_Control1_Btn_03 20_DG_SZ_Remote_Control2_Btn_03
uiState:
uiTable:
Attributes:
room 20_Dachgeschoss->Schlafzimmer
Hi,
hast Du probiert?
set 20_OG_Schlafzimmer_Rollladen stop
tut es bei mir. ;)
Gruß Otto
Hallo Otto,
danke, so einfach aber logisch, es funktioniert, manchmal sieht man den Wald vor lauter Bäumen nicht :-).
Es bleibt ein kleiner Nebeneffekt im DOIF.
Der Befehl (set 20_OG_Schlafzimmer_Rollladen stop {Log 1, "cmd_5 - kurzer Tastendruck_1,2,3,4 --> Rollladen stop"}) führt im DOIF zu folgender Fehlermeldung "error
set 20_OG_Schlafzimmer_Rollladen stop {Log 1, "cmd_5 - kurzer Tastendruck_1,2,3,4 --> Rollladen stop"}: stop requires no parameters" und der Tastendruck wird nicht ausgewertet.
Nehme ich den Logeintrag raus, funktioniert es wie von Dir vorgeschlagen.
Bei den "Longs" wird der Tastendruck mit der Log-Ergänzung sauber protokolliert.
Hast Du eine Idee wie die Syntax für den Log-Eintrag beim "stop" aussehen müsste? (ich kann aber auch ohne die Log-Ergänzung leben.
Grüße Joachim
"set" ist ein Befehl, {Log...} ist ein Befehl. 2 Befehle nebeneinander müssen irgendwie getrennt sein! Koma oder Semikolon, ich weiss nicht, was in dem Fall am besten passt (Mischung zwischen fhem Befehle und Perl Befehle)
Hallo amenomade,
ich bin kein Spezialist im programmieren aber das Verhalten wie Erweiterungen { ...} ins Log-File geschrieben werden finde ich inkonsistent.
Der Befehl "(set 20_OG_Schlafzimmer_Rollladen 0 {Log 1, "cmd_4 - Taste_4 --> Rollladen Schlafzimmer geschlossen 0%"})"
führt zum Log-File Eintrag "2019.07.01 22:11:15 3: CUL_HM set 20_OG_Schlafzimmer_Rollladen 100 {Log 1, "cmd_1 - Taste_1 --> Rollladen Schlafzimmer vollstaendig geoeffnet 100%"}"
Früher war vor der geschweiften Klammer noch ein "Doppel-Semikolon" notwendig, jetzt nicht mehr, geht aber immer noch.
Dann sieht der Log-Eintrag so aus "CUL_HM set 20_OG_Schlafzimmer_Rollladen 0; {Log 1, "cmd_4 - Taste_4 --> Rollladen Schlafzimmer geschlossen 0%"}" mit Semikolon vor der geschweiften Klammer.
Der Befehl "(set 20_OG_Schlafzimmer_Rollladen stop, {Log 1, "cmd_5 - kurzer Tastendruck_1,2,3,4 --> Rollladen stop"})"
führt zum Log-File Eintrag "2019.07.01 22:11:18 3: CUL_HM set 20_OG_Schlafzimmer_Rollladen stop
2019.07.01 22:11:18 1: cmd_5 - kurzer Tastendruck_1,2,3,4 --> Rollladen stop" (also mit Zeilenumbruch und damit funktioniert der Eintrag dann ohne error im DOIF)
Nur beim "set ..." vom Rollladen stop funktioniert Doppelsemikolon nicht und ohne Komma schreibt fhem die Ergänzung der geschweiften Klammer nicht in das Log-File.
Als Nichtfachmann sehen für mich beide "set ..." Befehle (cmd_4, cmd_5) gleich aus und das verwirrt etwas.
Grüße Joachim
Hallo Joachim,
was man im DOIF alles machen kann ist mir mittlerweile nicht mehr klar und für den Fall jetzt die Doku studieren mag ich nicht.
Ich vermeide diesen MischMasch, ich mache entweder FHEM Befehle oder ich mache Perl Befehle.
Da Log ein Perl Befehl ist würde ich alles in Perl schreiben, das wäre für mich konsistent. ;)
{fhem("set 20_OG_Schlafzimmer_Rollladen stop"); Log 1, "cmd_5 - kurzer Tastendruck_1,2,3,4 --> Rollladen stop"}
Wenn Du Perl Befehle in der Kommandozeile eingibst muss man das Semikolon verdoppeln, in der DEF ist es ein Semikolon als Trenner zwischen zwei Perl Befehlen.
Gruß Otto
Warum inconsistent? Die Befehle sind nicht getrennt, dann interpretiert Fhem beide als ein einzieges Befehl "set <Device> <value>". Und das Teil in {} wird nur noch als value betrachtet zusätzlich zu 0
ZitatDer Befehl "(set 20_OG_Schlafzimmer_Rollladen 0 {Log 1, "cmd_4 - Taste_4 --> Rollladen Schlafzimmer geschlossen 0%"})"
führt zum Log-File Eintrag "2019.07.01 22:11:15 3: CUL_HM set 20_OG_Schlafzimmer_Rollladen 100 {Log 1, "cmd_1 - Taste_1 --> Rollladen Schlafzimmer vollstaendig geoeffnet 100%"}"
Ich glaube nicht, dass ein Befehl mit cmd4 zu einem Log-File Eintrag mit cmd1 führt. Du hast bestimmt verwechselt.
Der normale Trennzeichen in DOIF Befehle zwischen () ist Koma. Von daher ist der Rest auch logisch. Also, für mich ist das ganze eher koherent