Hauptmenü

LIghtscene und Jalousie

Begonnen von Frank6320, 13 Oktober 2024, 01:17:36

Vorheriges Thema - Nächstes Thema

Frank6320

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_linksDort 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 74aus, 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




erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Frank6320

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.

erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Frank6320

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.

erwin

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
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

Frank6320

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