Hallo zusammen,
ich versuche Lightscene auf eine Rollo anzuwenden.
Das Rollodevice "Arbeitszimmer.Rollo_links" ist ein KNX device und so angelegt
3/4/7:dpt5.001 !Sollwert Rollohöhe
3/5/7:dpt5.001 !Istwert Rollohöhe
3/1/7:dpt1.008 !Rauf/Runter fahren
3/2/7:dpt1.001 !Stopp
Das nach nach dem ! habe ich zur Verdeutlichung hier eingefügt.
Dazu gibt es eine Szene def Arbeitszimmer.Szene LightScene Arbeitszimmer.Rollo_links
Dort soll es dann mehrere Positionen also Rollohöhen geben. Siehe Screenshot.
Wenn ich dann set Arbeitszimmer.Szene scene Pos1 ausführe komme folgende Rückmeldung: Arbeitszimmer.Rollo_links invalid cmd: "set Arbeitszimmer.Rollo_links 74" - ignored
im eventviewer steht leider auch nur dieser Befehl und sonst nichts. Führt manset Arbeitszimmer.Rollo_links 74
aus, wird anstandslos die neue Rollohöhe angefahren. Nur Lightscene ist nicht in der Lage dies zu tun. Was mache ich hier falsch?
viele Grüße
Frank
Hi Frank,
ich hab zwar bisher noch nicht mit Lightszene gearbeitet,
meine Vermutung:
- Nachdem KNX grundsätzlich funktioniert, kann das Problem nur durch ein "falsches set cmd" von Lightscene stammen....
..und tatsächlich: Lightszene sendet an das KNX-Modul:
set <device> 74 %
Abhilfe: "edit-scene" deine Pos1-Posx und entferne das blank und das % hinter der Zahl!
dann funktioniert ein
set <Lightscene-dev> scene Pos1
ohne Probleme.
l.g. erwin
Hallo Erwin,
wo siehst du, dass er ein Prozentzeichen schicken will?
Das mit dem nachträglich editieren wollte ich eigentlich nicht.
Hintergrund:
- Per KNX Taster wird über ein notify eine Szene abgerufen.
- Per langdruck am gleichen Taster soll das notify die Szene mit den aktuellen Rollo Positionen neu festlegen.
Szenen sollen also nicht per FHEM festgelegt sein sondern flexibel angepasst werden können. Glaube der waf steigt damit.
Hi Frank,
Zitatwo siehst du, dass er ein Prozentzeichen schicken will?
- mittels verbose5 im KNX-dev
Dein scenario geht ganz OHNE notify, Lightscene device - nur mit KNX-definition....
defmod knxTaster KNX x/y/z1:dpt1:short x/y/z2:dpt1:long
attr knxTaster stateCmd {
if ($gadName eq 'short') {
fhem('set Arbeitszimmer.Rollo_links g1 ' . readingsNum('Arbeitszimmer.Rollo_links','Pos1',0));
} elsif {
fhem('setreading Arbeitszimmer.Rollo_links Pos1 ' . readingsVal('Arbeitszimmer.Rollo_links','setG2',0))
}
return $state;
}
... ungetested, weil unterwegs, genauer/besser sobald du ein 'list Arbeitszimmer.Rollo_links' postest.
l.g.erwin
Hallo Erwin,
vielen Dank für deine Hilfe.
das List gibt folgendes aus:
nternals:
DEF 3/4/7:dpt5.001
3/5/7:dpt5.001
3/1/7:dpt1.008
3/2/7:dpt1.001
FUUID 5dbecaed-f33f-ba42-dc42-6201c0cb71d7a9a1
IODev knxbridge
LASTInputDev knxbridge
MSGCNT 38
NAME Arbeitszimmer.Rollo_links
NR 102
STATE 7 %
TYPE KNX
eventCount 44
knxbridge_MSGCNT 38
knxbridge_RAWMSG C01107w0350711
knxbridge_TIME 2024-10-13 10:12:20
model dpt5
GADDETAILS:
g1:
CODE 03407
MODEL dpt5.001
NO 1
OPTION
RDNAMEGET getG1
RDNAMESET setG1
SETLIST :slider,0,1,100
g2:
CODE 03507
MODEL dpt5.001
NO 2
OPTION
RDNAMEGET getG2
RDNAMESET setG2
SETLIST :slider,0,1,100
g3:
CODE 03107
MODEL dpt1.008
NO 3
OPTION
RDNAMEGET getG3
RDNAMESET setG3
SETLIST :up,down
g4:
CODE 03207
MODEL dpt1.001
NO 4
OPTION
RDNAMEGET getG4
RDNAMESET setG4
SETLIST :on,off,toggle
GADTABLE:
03107 g3
03207 g4
03407 g1
03507 g2
READINGS:
2024-10-12 23:24:06 IODev knxbridge
2024-10-13 10:12:18 getG1 7 %
2024-10-13 10:12:20 getG2 7 %
2024-10-13 07:21:31 getG3 up
2024-10-13 00:51:14 getG4 off
2024-10-13 10:12:20 last-sender 1.1.7
2024-10-13 10:12:18 setG1 7 %
2024-10-13 00:51:13 setG3 off
2024-10-13 00:51:14 setG4 off
2024-10-13 10:12:20 state 7 %
Attributes:
IODev knxbridge
alias Rolladen links
cmdIcon Auf:fts_shutter_up Ab:fts_shutter_down Stopp:rc_STOP
eventMap /off g3:Auf/on g3:Ab/off g4:Stopp
genericDeviceType blind
group Rolladen
homebridgeMapping clear CurrentPosition=getG2,minValue=0,maxValue=100,minStep=1,invert=1 TargetPosition=value::getG1,minValue=0,maxValue=100,minStep=1,invert=1
icon fts_window_2w
room Arbeitszimmer,Homekit
stateFormat getG2
userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
webCmd g1:Auf:Stopp:Ab
widgetOverride g1:slider,0,5,100
Mal schauen was ich für eine Alternative zu Lightscene nehme. Meine Präferenz wäre die Positionen in Dummys zu schreiben. In den Dummys steht pro Raum und Pos die Rolloposition. Sind bis zu 5 Rollos.
dummy hat den Charme, dass man pro Szene noch mal alle Rollopositionen zeigen kann.
ZitatMal schauen was ich für eine Alternative zu Lightscene nehme. Meine Präferenz wäre die Positionen in Dummys zu schreiben. In den Dummys steht pro Raum und Pos die Rolloposition. Sind bis zu 5 Rollos.
dummy hat den Charme, dass man pro Szene noch mal alle Rollopositionen zeigen kann.
... dafür wär readingsgroup - ideal.
Zu deiner definition, folgendes würde ich ändern: - jetzt mit einem dummy 'Rollodummy' zum speichern/abrufen einer Position
defmod Arbeitszimmer.Rollo_links KNX 3/4/7:dpt5.001:set:nosuffix 3/5/7:dpt5.001:get:nosuffix 3/1/7:dpt1.008 3/2/7:dpt1.001
attr Arbeitszimmer.Rollo_links /g3 off:Auf/g3 on:Ab/g4 off:Stopp/ # seit einigen Jahren der bessere Weg, deine Variante sollte jedesmal Log-Einträge produzieren...
attr Arbeitszimmer.Rollo_links stateFormat g2 # effekt von nosuffix
attr Arbeitszimmer.Rollo_links widgetOverride g1@set:slider,0,5,100
defmod KNXTaster KNX x/y/z1:dpt1:short x/y/z2:dpt1:long
attr KNXTaster statecmd {
if ($gadName eq 'short') {
fhem('set Arbeitszimmer.Rollo_links g1 ' . readingsNum('Rollodummy','Arbeitszimmer.Rollo_links_Pos',0)); # hole gespeicherte position aus dummy und execute cmd
} elsif ($gadName eq 'long') {
fhem('set Rollodummy Arbeitszimmer.Rollo_links_Pos ' . readingsVal('Arbeitszimmer.Rollo_links','g2',0)) # merke akt. pos in dummy
}
return $state;
}
defmod Rollodummy dummy
attr Rollodummy readingList Arbeitszimmer.Rollo_links_Pos
Weiterführende infos findest du in der cmd-ref und im wiki!
Ich gehe davon aus,dass du am aktuellen Stand bist (update)
l.g. erwin
Hallo Erwin,
danke für deine Hilfe. Ich habe jetzt pro Rollo einen Dummy in dem 3-4 Positionen gespeichert sind. Diese werden dann über Szenennummern abgerufen bzw. überschrieben.
Hier nochmal die Umsetzung. In der ETS hab ich pro Raum 3 Taster mit jeweils kurz und langem Tastendruck. Mit 11,21,31,41 wird der jeweilige Dummy abgerufen. mit 12,22,32,42 wird eine Position gespeichert.
Rollo
define BadOG.Rollo_links KNX 3/4/5:dpt5.001:set:nosuffix\
3/5/5:dpt5.001:get:nosuffix\
3/1/5:dpt1.008\
3/2/5:dpt1.001
attr BadOG.Rollo_links alias Rollo links
attr BadOG.Rollo_links cmdIcon Auf:fts_shutter_up Ab:fts_shutter_down Stopp:rc_STOP
attr BadOG.Rollo_links eventMap /g3 off:Auf/g3 on:Ab/g4 off:Stopp
attr BadOG.Rollo_links genericDeviceType blind
attr BadOG.Rollo_links group Rolladen
attr BadOG.Rollo_links homebridgeMapping clear CurrentPosition=g2,minValue=0,maxValue=100,minStep=1,invert=1 TargetPosition=value::g1,minValue=0,maxValue=100,minStep=1,invert=1
attr BadOG.Rollo_links room Bad OG
attr BadOG.Rollo_links siriName Bad OG Rollo links
attr BadOG.Rollo_links stateFormat g2
attr BadOG.Rollo_links webCmd g1:Auf:Stopp:Ab
attr BadOG.Rollo_links widgetOverride g1:slider,0,5,100
# DEF 3/4/5:dpt5.001:set:nosuffix
#3/5/5:dpt5.001:get:nosuffix
#3/1/5:dpt1.008
#3/2/5:dpt1.001
# FUUID 6712bb4c-f33f-d9f2-8141-9b570495f9e1754f
# IODev knxbridge
# LASTInputDev knxbridge
# MSGCNT 8
# NAME BadOG.Rollo_links
# NR 194
# STATE 0 %
# TYPE KNX
# eventCount 8
# knxbridge_MSGCNT 8
# knxbridge_RAWMSG C01165w0350500
# knxbridge_TIME 2024-10-24 08:25:05
# model dpt5
# GADDETAILS:
# g1:
# CODE 03405
# MODEL dpt5.001
# NO 1
# OPTION set
# RDNAMEGET g1
# RDNAMESET g1
# SETLIST :slider,0,1,100
# g2:
# CODE 03505
# MODEL dpt5.001
# NO 2
# OPTION get
# RDNAMEGET g2
# RDNAMESET g2
# SETLIST :slider,0,1,100
# g3:
# CODE 03105
# MODEL dpt1.008
# NO 3
# OPTION
# RDNAMEGET getG3
# RDNAMESET setG3
# SETLIST :up,down
# g4:
# CODE 03205
# MODEL dpt1.001
# NO 4
# OPTION
# RDNAMEGET getG4
# RDNAMESET setG4
# SETLIST :on,off,toggle
# GADTABLE:
# 03105 g3
# 03205 g4
# 03405 g1
# 03505 g2
# READINGS:
# 2024-10-23 12:02:20 IODev knxbridge
# 2024-10-24 07:48:21 g1 70 %
# 2024-10-24 08:25:05 g2 0 %
# 2024-10-21 08:12:48 getG3 up
# 2024-10-21 19:13:47 getG4 off
# 2024-10-24 08:25:05 last-sender 1.1.101
# 2024-10-20 23:36:14 setG3 on
# 2024-10-21 19:13:47 setG4 off
# 2024-10-24 08:25:05 state 0 %
# hmccu:
#
setstate BadOG.Rollo_links 0 %
setstate BadOG.Rollo_links 2024-10-23 12:02:20 IODev knxbridge
setstate BadOG.Rollo_links 2024-10-24 07:48:21 g1 70 %
setstate BadOG.Rollo_links 2024-10-24 08:25:05 g2 0 %
setstate BadOG.Rollo_links 2024-10-21 08:12:48 getG3 up
setstate BadOG.Rollo_links 2024-10-21 19:13:47 getG4 off
setstate BadOG.Rollo_links 2024-10-24 08:25:05 last-sender 1.1.101
setstate BadOG.Rollo_links 2024-10-20 23:36:14 setG3 on
setstate BadOG.Rollo_links 2024-10-21 19:13:47 setG4 off
setstate BadOG.Rollo_links 2024-10-24 08:25:05 state 0 %
Szene
define BadOG.Szene.Request KNX 5/0/3:dpt17.001:Szene
attr BadOG.Szene.Request eventMap /10 g1:Pos1/20 g1:Pos2/30 g1:Pos3/40 g1:Pos4
attr BadOG.Szene.Request group Szene
attr BadOG.Szene.Request room Bad OG
attr BadOG.Szene.Request stateCmd {\
if ($state eq "10") {\
fhem('set BadOG.Rollo_links g1 ' . ReadingsNum('BadOG.Rollo_links_Pos','Pos1',0));;\
fhem('set BadOG.Rollo_rechts g1 ' . ReadingsNum('BadOG.Rollo_rechts_Pos','Pos1',0));;}\
\
if ($state eq "11") {\
fhem('setreading BadOG.Rollo_Links_Pos Pos1 ' . ReadingsVal('BadOG.Rollo_links','g2',0));;\
fhem('setreading BadOG.Rollo_rechts_Pos Pos1 ' . ReadingsVal('BadOG.Rollo_rechts','g2',0));;}\
\
if ($state eq "20") {\
fhem('set BadOG.Rollo_links g1 ' . ReadingsNum('BadOG.Rollo_links_Pos','Pos2',0));;\
fhem('set BadOG.Rollo_rechts g1 ' . ReadingsNum('BadOG.Rollo_rechts_Pos','Pos2',0));;}\
\
if ($state eq "21") {\
fhem('setreading BadOG.Rollo_links_Pos Pos2 ' . ReadingsVal('BadOG.Rollo_links','g2',0));;\
fhem('setreading BadOG.Rollo_rechts_Pos Pos2 ' . ReadingsVal('BadOG.Rollo_rechts','g2',0));;}\
\
if ($state eq "30") {\
fhem('set BadOG.Rollo_links g1 ' . ReadingsNum('BadOG.Rollo_links_Pos','Pos3',0));;\
fhem('set BadOG.Rollo_rechts g1 ' . ReadingsNum('BadOG.Rollo_rechts_Pos','Pos3',0));;}\
\
if ($state eq "31") {\
fhem('setreading BadOG.Rollo_links_Pos Pos3 ' . ReadingsVal('BadOG.Rollo_links','g2',0));;\
fhem('setreading BadOG.Rollo_rechts_Pos Pos3 ' . ReadingsVal('BadOG.Rollo_rechts','g2',0));;}\
\
if ($state eq "40") {\
fhem('set BadOG.Rollo_links g1 ' . ReadingsNum('BadOG.Rollo_links_Pos','Pos4',0));;\
fhem('set BadOG.Rollo_rechts g1 ' . ReadingsNum('BadOG.Rollo_rechts_Pos','Pos4',0));;}\
\
if ($state eq "41") {\
fhem('setreading BadOG.Rollo_links_Pos Pos4 ' . ReadingsVal('BadOG.Rollo_links','g2',0));;\
fhem('setreading BadOG.Rollo_rechts_Pos Pos4 ' . ReadingsVal('BadOG.Rollo_rechts','g2',0));;}\
}
attr BadOG.Szene.Request webCmd Pos1:Pos2:Pos3:Pos4
# DEF 5/0/3:dpt17.001:Szene
# FUUID 671574aa-f33f-d9f2-5f36-3f8e771ca5c66ec9
# IODev knxbridge
# LASTInputDev knxbridge
# MSGCNT 3
# NAME BadOG.Szene.Request
# NR 201
# STATE 30
# TYPE KNX
# eventCount 3
# knxbridge_MSGCNT 3
# knxbridge_RAWMSG C0117ew050031e
# knxbridge_TIME 2024-10-24 07:48:21
# model dpt17
# GADDETAILS:
# Szene:
# CODE 05003
# MODEL dpt17.001
# NO 1
# OPTION
# RDNAMEGET Szene-get
# RDNAMESET Szene-set
# SETLIST
# GADTABLE:
# 05003 Szene
# READINGS:
# 2024-10-23 12:02:20 IODev knxbridge
# 2024-10-24 07:48:21 Szene-get 30
# 2024-10-21 19:13:05 Szene-set 30
# 2024-10-24 07:48:21 last-sender 1.1.126
# 2024-10-24 07:48:21 state 30
#
setstate BadOG.Szene.Request 30
setstate BadOG.Szene.Request 2024-10-23 12:02:20 IODev knxbridge
setstate BadOG.Szene.Request 2024-10-24 07:48:21 Szene-get 30
setstate BadOG.Szene.Request 2024-10-21 19:13:05 Szene-set 30
setstate BadOG.Szene.Request 2024-10-24 07:48:21 last-sender 1.1.126
setstate BadOG.Szene.Request 2024-10-24 07:48:21 state 30
Dummy
define BadOG.Rollo_links_Pos dummy
attr BadOG.Rollo_links_Pos group Szene
attr BadOG.Rollo_links_Pos readingList Pos1 Pos2 Pos3 Pos4
attr BadOG.Rollo_links_Pos room Bad OG
attr BadOG.Rollo_links_Pos setList Pos1:slider,00,1,100 Pos2:slider,00,1,100 Pos3:slider,00,1,100 Pos4:slider,00,1,100
attr BadOG.Rollo_links_Pos stateFormat Pos1 Pos2 Pos3 Pos4
attr BadOG.Rollo_links_Pos webCmd Pos1:Pos2:Pos3:Pos4
# FUUID 6715740b-f33f-d9f2-2c3a-c22a679ce162f361
# NAME BadOG.Rollo_links_Pos
# NR 199
# STATE 70 80 70 % 100
# TYPE dummy
# READINGS:
# 2024-10-20 23:30:52 Pos1 70
# 2024-10-20 23:30:44 Pos2 80
# 2024-10-22 18:16:59 Pos3 70 %
# 2024-10-20 23:29:39 Pos4 100
#
setstate BadOG.Rollo_links_Pos 70 80 70 % 100
setstate BadOG.Rollo_links_Pos 2024-10-20 23:30:52 Pos1 70
setstate BadOG.Rollo_links_Pos 2024-10-20 23:30:44 Pos2 80
setstate BadOG.Rollo_links_Pos 2024-10-22 18:16:59 Pos3 70 %
setstate BadOG.Rollo_links_Pos 2024-10-20 23:29:39 Pos4 100