Hallo Zusammen,
ich würde gerne meine KNX Jalousien über das AutoShuttersControl steuern.
Eigentlich ganz einfach, abends will ich die Jalousie runter fahren (ab). Morgens will ich die Jalousie an eine bestimmte Position fahren (z.B. 50% halb hoch) und die Lamellen an eine bestimmte Position stellen, z.B. 60%.
Dazu habe ich folgendes device definiert (eigentlich wie ein Rolllo), nur mit dem Zusatzattribut ASC_SlatPosCmd_SlatDevice.
Hier das list:
Internals:
DEF 2/1/207:dpt5.001:Pos.Status 2/4/200:dpt5.001:Pos.Absolute:nosuffix
FUUID 5dfcf3ae-f33f-5687-034a-9ed97a3902dc74ea
IODev KNX
NAME DG.Treppenhaus.Jalousie.Position
NR 227
STATE 0 %
TYPE KNX
model dpt5
GADDETAILS:
Pos.Absolute:
CODE 024c8
MODEL dpt5.001
NO 2
OPTION
RDNAMEGET Pos.Absolute
RDNAMESET Pos.Absolute
SETLIST :slider,0,1,100
Pos.Status:
CODE 021cf
MODEL dpt5.001
NO 1
OPTION
RDNAMEGET Pos.Status-get
RDNAMESET Pos.Status-set
SETLIST :slider,0,1,100
GADTABLE:
021cf Pos.Status
024c8 Pos.Absolute
Helper:
READINGS:
2025-12-06 09:28:39 ASC_Enable on
2025-12-06 09:31:20 ASC_Time_DriveDown 06.12.2025 - 17:30
2025-12-06 09:31:20 ASC_Time_DriveUp 07.12.2025 - 08:06
2025-12-06 09:28:43 IODev KNX
2025-12-06 08:10:29 Pos.Absolute 0 %
2025-12-06 08:10:28 Pos.Status-get 0 %
2025-12-06 09:28:40 associatedWith AutoShuttersControl
2025-12-06 08:10:28 last-sender 1.1.2
2025-12-06 08:10:28 state 0 %
Attributes:
ASC 1
ASC_BrightnessSensor Aussenbereich.DachOst.Lux 150:15
ASC_Closed_Pos 100
ASC_CommandTemplate set $name Pos.Absolute $pos
ASC_Down astro
ASC_Drive_Delay 300
ASC_Open_Pos 50
ASC_Pos_Reading Pos.Status-get
ASC_SlatPosCmd_SlatDevice DG.Treppenhaus.Jalousie.Lamelle Pos.Absolute
ASC_Time_Down_Early 17:30
ASC_Time_Down_Late 22:00
ASC_Time_Up_Early 06:30
ASC_Time_Up_Late 08:30
ASC_Time_Up_WE_Holiday 08:00
ASC_Up astro
IODev KNX
group Jalousien
icon fts_shutter_updown
room Flur_DG
userattr ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforeDayOpen ASC_BlockingTime_beforeNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_CommandTemplate ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning,EG_window ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
webCmd Pos.Absolute
widgetOverride Pos.Absolute:slider,0,1,100
Und hier noch das zugehörige Lamellendevice:
Internals:
DEF 2/1/208:dpt5.001:Pos.Status 2/4/201:dpt5.001:Lamelle.Absolute:nosuffix
FUUID 5dfcf3ae-f33f-5687-2e06-6a4631dc552337b3
IODev KNX
NAME DG.Treppenhaus.Jalousie.Lamelle
NR 228
STATE 0 %
TYPE KNX
model dpt5
GADDETAILS:
Lamelle.Absolute:
CODE 024c9
MODEL dpt5.001
NO 2
OPTION
RDNAMEGET Lamelle.Absolute
RDNAMESET Lamelle.Absolute
SETLIST :slider,0,1,100
Pos.Status:
CODE 021d0
MODEL dpt5.001
NO 1
OPTION
RDNAMEGET Pos.Status-get
RDNAMESET Pos.Status-set
SETLIST :slider,0,1,100
GADTABLE:
021d0 Pos.Status
024c9 Lamelle.Absolute
Helper:
READINGS:
2025-12-06 09:28:43 IODev KNX
2025-10-25 12:54:48 Lamelle.Absolute 50 %
2025-12-06 08:10:28 Pos.Status-get 0 %
2025-10-25 12:54:48 Pos.Status-set 60 %
2025-12-06 08:10:28 last-sender 1.1.2
2025-12-06 08:10:28 state 0 %
Attributes:
IODev KNX
eventMap /Lamelle.Absolute 0:Pos_0%/Lamelle.Absolute 30:Pos_30%/Lamelle.Absolute 50:Pos_50%/Lamelle.Absolute 65:Pos_65%/Lamelle.Absolute 75:Pos_75%/Lamelle.Absolute 100:Pos_100%
group Jalousien
icon fts_blade_s
room Flur_DG
webCmd Pos_0%:Pos_30%:Pos_50%:Pos_65%:Pos_75%:Pos_100%
Soweit so gut, leider finde ich jetzt nicht das passende Attribut für die Lamellenposition, früher gab es da wohl ein Attribut ASC_SlatPosMorning.
Hat da von euch jemand eine Idee.
Danke schon mal für euren Support.
Allgemein gilt für Jalousien, dass der Dreh-Level mit Doppelpunkt von der Behanghöhe zu trennen ist, hier auszugsweise ein Beispiel für ZWave, ebenfalls mit 2 getrennten Devices für Behanghöhe und Drehwinkel:
define Jalousie_WZ ZWave bla
attr Jalousie_WZ ASC 2
attr Jalousie_WZ ASC_Closed_Pos 0:0
attr Jalousie_WZ ASC_ComfortOpen_Pos 80:0
attr Jalousie_WZ ASC_DriveUpMaxDuration 65
attr Jalousie_WZ ASC_Open_Pos 99:99
attr Jalousie_WZ ASC_Pos_Reading dim
attr Jalousie_WZ ASC_SlatPosCmd_SlatDevice dim:ZWave_SWITCH_MULTILEVEL_8.02
attr Jalousie_WZ ASC_Ventilate_Pos 75:30
Hab das mit EnOcean und einem ReadingsProxy versucht.
Geht leider nicht, wenn ich auf position 10 gehe geht wirklich auf position 10 aber in der Anzeige und im Status ist immer noch position 0.
Wenn ich jetzt auf position 20 gehe, wird auf position 20 gefahren, in der Anzeige steht aber jetzt position 10.
Das mit den Jalosie und der Lammelen_steuerung ist nicht gut gelöst
Damit das einigermasen funktioniert brauch ich Pro Jalosie
2 ReadingsProxy (1 x Jalosie 1 x Lamelle)
4 x cmdalias (1 x closes, 1 x opens, 1 x position 100, 1 x position 0) damit es bei open und close die Lammele richtig dreht
1 x cmdalias mit 1 x Dummy und 1 x Doif damit es beim runterfahren von position 0 0 auf position 1-100 100 die lamellen auf 100 dreht.
Verstehe ich nicht.
Das mit dem 2. Device ist optional! Es geht auch mit dem passenden Befehl auf den Jalousie-Aktor.
Bei Bedarf zeige ich ein zwave-list.
Habe auch Z-Wave aber bei den Storen neu EnOcean.
Das mit den 2 Device für Jalosie und Lamelle ist schon io.
Wie ist den das bei Z-Wave gelöst?
Geschlossen ist 0:0, Offen 99:99?
Wenn zb von Offen 99:99 auf 50 runter fährst muss es ja wieder auf 50:99? (es sind ja zwei Device).
Oder geht Z-Wave da auf 50:0?
Ich habe es jetzt auch mal folgendermaßen ausprobiert, eigentlich ja ganz simpel.
Folgende 2 Attribute geändert:
attr DG.Treppenhaus.Jalousie.Position ASC_Open_Pos 50:60attr DG.Treppenhaus.Jalousie.Position ASC_Closed_Pos 100:100
Morgens soll zum Test die Jalousie auf Höhe 50% fahren, dann die Lamellen auf 60% stellen ( damit ich es auch sehen kann).
Abends soll die Jalousie ganz runter (100%) und die Lamelle zu gehen (100%).
Leider passiert mit der Lamellenverstellung nichts.
Ich sehe auch im ASC Log nichts zu einer Lamellen Aktion:
ASC_DEBUG!!! 2025.12.08 08:07:28 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NICHT versetztes fahren
ASC_DEBUG!!! 2025.12.08 08:07:28 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.08 08:07:28 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
Müsste da was geloggt werden, zumindest der Versuch?
Ebenso im Log File Lamelle erscheint nichts sinniges, nur das hier vom Zeitraum her:
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 0 %
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Lamelle 0 %
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 100 %
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Lamelle 100 %
Hier noch das Log der Jalousie (hoch/runter):
2025-12-08_08:07:28 DG.Treppenhaus.Jalousie.Position last-sender: fhem
2025-12-08_08:07:28 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
2025-12-08_08:07:28 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 47 %
2025-12-08_08:08:03 DG.Treppenhaus.Jalousie.Position 47 %
2025-12-08_08:08:04 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 47 %
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 50 %
2025-12-08_08:08:05 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-08_08:08:06 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
Irgendwie wird die Lamellenverstellung ignoriert, denke ich.
Hab ich noch irgendwas falsch gemacht?
Wie ist das generell? Wird zuerst die Position angefahren, dann die Lamelle verstellt, müsste ja so sein, oder?
Vor dem Doppelpunkt ist die Pos (hoch/runter), nach dem Doppelpunkt die Lamelle?
Das mit dem attr ASC_SlatPosCmd_SlatDevice müsste ja auch passen, vermute ich mal?
Zitat von: Damu am 06 Dezember 2025, 18:26:11Das mit den 2 Device für Jalosie und Lamelle ist schon io.
Bin da nicht so sicher, was KNX angeht. Da sollte sich eigentlich auch die Lamellen-Steuerung direkt in das Shutter-Gerät integrieren lassen, eben als 2. Reading
Prinzipiell ist das imo ähnlich wie bei der "alten" Fibaro-Serie (@ZWave). Mir gefällt das in dem Punkt jedenfall besser wie die neue Serie (dazu gehört das bereits gepostete list von neulich). Bei den alten ist einfach das Kommando am selben Gerät anders:
define Jalousie_Links ZWave blablub
attr Jalousie_Links ASC_Closed_Pos 0:0
attr Jalousie_Links ASC_Open_Pos 99:99
attr Jalousie_Links ASC_Pos_Reading dim
attr Jalousie_Links ASC_SlatPosCmd_SlatDevice positionSlat
attr Jalousie_Links eventMap { usr=>{'dim.100'=>'dim 99' } }
attr Jalousie_Links userReadings positionSlat:power..0.0.W {ReadingsVal($name,'position',0) =~ m,Slat.([0-9]+),?$1:undef}, \
dim:power..0.0.W {my $pos = ReadingsVal($name,'state',0) =~ m,dim, ? ReadingsNum($name,'state',0) : ReadingsNum($name,'dim',0);; my $pos1 = ReadingsNum($name,'position',0);; $pos = $pos1 if abs($pos - $pos1) > 2 || $pos < 3 && ReadingsNum($name,'positionSlat',0) > 2;; if ($pos < 3) { $pos = 1 if ReadingsNum($name,'positionSlat',0) > 2;; $pos = 2 if ReadingsNum($name,'positionSlat',0) > 45;; };; return $pos }
# 2025-12-08 17:40:29 dim 0
# 2020-08-30 11:52:44 model FIBARO System FGRM222 Roller Shutter Controller 2
# 2025-12-08 16:40:29 position Blind 0 Slat 0
# 2025-12-08 17:40:29 positionSlat 0
Prinzipiell sendet ASC den "slat"-Command auch unmittelbar raus, bei meinen ZWave-Aktoren ist das ok, und anscheinend auch für viele andere Hardware-Typen wie HMCCU.* usw..
Falls das mit dem unmittelbaren Senden (wirklich) ein Problem ist, müßte es ggf. verzögert werden. Ich hatte dazu als Würgaround auch mal was für CUL_HM gebastelt, weil die normelen Rollladenaktoren keine Lamellen konnten - die sind zwischenzeitlich aber durch die Fibaro ersetzt...
re KNX: Zwei devices oder EINS für Jalousie / Slat:
ist völlig egal (Geschmackssache), Beispiel dazu gibts im wiki: (https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele) u.a."2 Slider mit Rückmeldung".
Was das unmittelbare senden der slat-position betrifft: Das könnte tatsächlich ein Problem sein, abhängig von der Hardware/Firmware im KNX-Aktor! Meine verbauten MDT Aktoren berücksichtigen das jedoch!
Die Jalousie hat ja grundsätzlich nur einen Motor für beide Funktionen:
ein "Jalousie position 50" fährt runter bis Position erreicht ist, die slat ist geschlossen. Anschließend fährt die Jal ganz kurz rauf und öffnet damit die slat...
Wenn das die Hardware/Firmware im Aktor nicht berücksichtigt, könnte man sich mit eine notify auf position-status... behelfen.
Evtl lässt sich das auch im ASC-device lösen, siehe "ASC_SlatPosCmd_SlatDevice" ?
l.g. erwin
Ob 2 oder 1 Device ist aktuell noch nicht mein Problem.
Ich sehe leider keine Ansteuerung meiner Lamelle (60%) im Log-File, siehe mein Kommentar.
Irgendwie müssen meine Attribute nicht korrekt sein, oder?
Müsste das auch im ASC Debug Log protokolliert sein?
Zitat von: superverbleit am 09 Dezember 2025, 06:39:33Irgendwie müssen meine Attribute nicht korrekt sein, oder?
Falls du das ASC_SlatPosCmd_SlatDevice im Nachgang zu meinem ersten Beitrag nicht verändert hast: Nein.
Siehe dazu auch die commandref:
ZitatASC_SlatPosCmd_SlatDevice - Angaben zu einem Slat (Lamellen) CMD und - sofern diese Lamellen über ein anderes Device gesteuert werden - zum Slat Device. Beispiele: attr ROLLO ASC_SlatPosCmd_SlatDevice slatPct oder attr ROLLO ASC_SlatPosCmd_SlatDevice dim:ROLLOSLATDEVICE. Die Angabe des Devices ist nur erforderlich, wenn zur Steuerung der Lamellen ein anderes Device verwendet wird. Damit das ganze dann auch greift, muss in den 6 Positionsangaben ASC_Open_Pos, ASC_Closed_Pos, ASC_Ventilate_Pos, ASC_ComfortOpen_Pos, ASC_Shading_Pos und ASC_Sleep_Pos ein weiterer Parameter für die Lamellenstellung mit angegeben werden.
Dass man ERST den command (dim bzw. positionSlat für ZWave) und dann - mit Doppelpunkt getrennt - das Device angeben muss (bei zweien), ist halt historisch so gewachsen, eben weil es (nur) bei ZWave diese Besonderheit gibt, dass da aus technischen Gründen zwei Devices gebildet werden.
Für KNX würde ich keine zwei Devices bilden - und einmal mehr - "ALLGEMEIN ÜBLICHE" setter-Namen verwenden, da das ROLLO-TYPE ist (ASC-Attribut 1), wäre es vermutlich sinnvoll, sich an ROLLO zu orientieren, das für die Behanghöhe "pct" verwendet (mit der Bedeutung 0=oben). Eventuell stört auch das commandTemplate, und das bekommst du damit uU. weg.
@erwin: ASC erwartet, dass das "Lese-Reading" und das "set"-Reading ein und denselben Namen haben.
Zitat@erwin: ASC erwartet, dass das "Lese-Reading" und das "set"-Reading ein und denselben Namen haben.
...kein Problem: bei jeder definition "nosuffix" setzen.
...siehe auch mein ASC-Beispiel im wiki (https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele)
l.g. erwin
Ich habe das attr ASC_SlatPosCmd_SlatDevice so gewählt:
ASC_SlatPosCmd_SlatDevice DG.Treppenhaus.Jalousie.Lamelle Pos.Absolute
Ohne Doppelpunkt.
@Beta-User: Stimmt das dann trotzdem so, meinst ja?
Ich habe ja nur das attr ASC_Open_Pos z.B. mit 50:60 gewählt, bzw. ASC_Closed_Pos 100:100
Das der ASC Log gar nichts von den Lamellen meldet, ist ja schon auch komisch, oder?
Auch im Lamellen Device Log sehe ich ja nichts.
Zitat von: superverbleit am 10 Dezember 2025, 10:34:48Ohne Doppelpunkt.
@Beta-User: Stimmt das dann trotzdem so, meinst ja?
Nein! Bei getrennten Devices erst den "set", dann das Device, zu trennen mit Doppelpunkt.
Hab das attr ASC_SlatPosCmd_SlatDevice jetzt folgendermaßen abgeändert:
attr DG.Treppenhaus.Jalousie.Position ASC_SlatPosCmd_SlatDevice Pos.Absolute:DG.Treppenhaus.Jalousie.Lamelle
Ist das attr so dann richtig?
Zur Erinnerung: Morgens soll er auf 50% auf fahren und die Lamellen auf Pos 60% stellen.
Abends wieder runter 100% und Lamelle auf 100%.
attr DG.Treppenhaus.Jalousie.Position ASC_Open_Pos 50:60
attr DG.Treppenhaus.Jalousie.Position ASC_Closed_Pos 100:100
Leider ist das Ganze immer noch ohne Erfolg, hier die Logs von heute morgen und gestern Abend:
ASC Log:
ASC_DEBUG!!! 2025.12.11 17:30:02 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - versetztes fahren
ASC_DEBUG!!! 2025.12.11 17:30:02 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.11 17:30:02 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2025.12.11 17:32:40 - FnSetCmdFn: DG.Treppenhaus.Jalousie.Position - Rollo wird gefahren, aktuelle Position: 50, Zielposition: 100. Grund der Fahrt: night close
ASC_DEBUG!!! 2025.12.12 08:11:37 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - versetztes fahren
ASC_DEBUG!!! 2025.12.12 08:11:37 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.12 08:11:37 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - versetztes fahren
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - versetztes fahren
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.12 08:12:33 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2025.12.12 08:16:59 - FnSetCmdFn: DG.Treppenhaus.Jalousie.Position - Rollo wird gefahren, aktuelle Position: 100, Zielposition: 50. Grund der Fahrt: day open
ASC_DEBUG!!! 2025.12.12 08:18:32 - FnSetCmdFn: DG.Treppenhaus.Jalousie.Position - Abbruch aktuelle Position ist gleich der Zielposition 50=50
Device Auf/Ab Log:
2025-12-11_17:32:40 DG.Treppenhaus.Jalousie.Position last-sender: fhem
2025-12-11_17:32:40 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 100 %
2025-12-11_17:32:40 DG.Treppenhaus.Jalousie.Position 100 %
2025-12-11_17:33:21 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-11_17:33:21 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 100 %
2025-12-11_17:33:21 DG.Treppenhaus.Jalousie.Position 100 %
2025-12-11_17:33:23 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 100 %
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 97 %
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Position 97 %
2025-12-11_17:33:25 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 97 %
2025-12-12_08:16:59 DG.Treppenhaus.Jalousie.Position last-sender: fhem
2025-12-12_08:16:59 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
2025-12-12_08:16:59 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 47 %
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Position 47 %
2025-12-12_08:17:35 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 47 %
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 50 %
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-12_08:17:37 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
Device Lamelle:
2025-12-11_17:33:22 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-11_17:33:22 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 100 %
2025-12-11_17:33:22 DG.Treppenhaus.Jalousie.Lamelle 100 %
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 0 %
2025-12-11_17:33:24 DG.Treppenhaus.Jalousie.Lamelle 0 %
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 0 %
2025-12-12_08:17:34 DG.Treppenhaus.Jalousie.Lamelle 0 %
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 100 %
2025-12-12_08:17:36 DG.Treppenhaus.Jalousie.Lamelle 100 %
Irgendwas passiert ja auch, aber nicht das, was ich will :( .
Auch sind im Log Aktionen doppelt drin, oder?
Komischerweise war die Lamellenposition gestern Abend auf 0%.
Heute morgen nicht 60%, sondern auch 100%.
Versteht ihr das?
...das sieht für mich so aus, als ob die Befehle für die Lamelle an das falsche deviceDG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 % gesendet werden und NICHT ans LamellenDevice.
Am Lamellendevice sieht man nur die "gets", die der Aktor auch schickt, falls nur "Position" verstellt wird.
Je nachdem ob Position relativ "hinauf" oder "runter" gefahren wird, steht die Lamelle entweder auf 0% oder 100% !
l.g. erwin
Das eventMap macht es m.E. nicht durchsichtiger...
Muss das sein?
Das eventMap nehme ich halt, um die default Positionen der Lamelle abzudecken.
50 ist aber schon richtig an der Stelle der Position der Jalousie selbst (nicht die Position der Lamelle).
attr DG.Treppenhaus.Jalousie.Position ASC_Open_Pos 50:60
Eigentlich müsste ja über dieses attr attr DG.Treppenhaus.Jalousie.Position ASC_Open_Pos 50:60 60 an die Lamelle geschickt werden, richtig?
50 ist die Position der Jalousie.
Hatte hier noch ein Fehler im Kommentar, es muss natürlich richtiger weiße so heißen (ist/war auch so umgesetzt).
attr DG.Treppenhaus.Jalousie.Position ASC_SlatPosCmd_SlatDevice Lamelle.Absolute:DG.Treppenhaus.Jalousie.Lamelle
Bin vorhin, als die Jalousie runter ging daneben gestanden, also erst nachdem die Jalousie unten war (so 2-3 Sekunden später), ging die Lamelle nochmals auf 0%, nachdem sie richtig auf 100% gestanden ist.
60 ist halt nicht im eventMap der Lamelle, oder...?
Teste doch einfach mal was passiert, wenn du beide Kommandos direkt nacheinander über das mehrzeilige Kommandofeld absetzt...
In der eventMap ist 60 nicht drin
Internals:
DEF 2/1/208:dpt5.001:Pos.Status 2/4/201:dpt5.001:Lamelle.Absolute:nosuffix
FUUID 5dfcf3ae-f33f-5687-2e06-6a4631dc552337b3
IODev KNX
KNX_MSGCNT 54
KNX_RAWMSG C01102w021d0ff
KNX_TIME 2025-12-12 20:20:02
LASTInputDev KNX
MSGCNT 54
NAME DG.Treppenhaus.Jalousie.Lamelle
NR 228
STATE 100 %
TYPE KNX
eventCount 57
model dpt5
GADDETAILS:
Lamelle.Absolute:
CODE 024c9
MODEL dpt5.001
NO 2
OPTION
RDNAMEGET Lamelle.Absolute
RDNAMESET Lamelle.Absolute
SETLIST :slider,0,1,100
Pos.Status:
CODE 021d0
MODEL dpt5.001
NO 1
OPTION
RDNAMEGET Pos.Status-get
RDNAMESET Pos.Status-set
SETLIST :slider,0,1,100
GADTABLE:
021d0 Pos.Status
024c9 Lamelle.Absolute
Helper:
READINGS:
2025-12-06 09:28:43 IODev KNX
2025-12-11 21:24:50 Lamelle.Absolute 100 %
2025-12-12 20:20:02 Pos.Status-get 100 %
2025-10-25 12:54:48 Pos.Status-set 60 %
2025-12-12 20:20:02 last-sender 1.1.2
2025-12-12 20:20:02 state 100 %
Attributes:
IODev KNX
eventMap /Lamelle.Absolute 0:Pos_0%/Lamelle.Absolute 30:Pos_30%/Lamelle.Absolute 50:Pos_50%/Lamelle.Absolute 65:Pos_65%/Lamelle.Absolute 75:Pos_75%/Lamelle.Absolute 100:Pos_100%
group Jalousien
icon fts_blade_s
room Flur_DG
webCmd Pos_0%:Pos_30%:Pos_50%:Pos_65%:Pos_75%:Pos_100%
Hab jetzt folgendes über das Kommandofeld gemacht:
set DG.Treppenhaus.Jalousie.Position Pos.Absolute 50
set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute 60
Resultat:
Log File Jalousie
2025-12-12_20:19:24 DG.Treppenhaus.Jalousie.Position last-sender: fhem
2025-12-12_20:19:24 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
2025-12-12_20:19:24 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 47 %
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Position 47 %
2025-12-12_20:20:00 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 47 %
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Position last-sender: 1.1.2
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Position Pos.Status-get: 50 %
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Position 50 %
2025-12-12_20:20:03 DG.Treppenhaus.Jalousie.Position Pos.Absolute: 50 %
Log File Lamelle:
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 0 %
2025-12-12_20:19:59 DG.Treppenhaus.Jalousie.Lamelle 0 %
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 100 %
2025-12-12_20:20:02 DG.Treppenhaus.Jalousie.Lamelle 100 %
Die 60% scheinen so nicht zu funktionieren....
Schick ich den Lamellen Befehl einzeln, kommt das an:
2025-12-12_20:24:08 DG.Treppenhaus.Jalousie.Lamelle last-sender: fhem
2025-12-12_20:24:08 DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute: 60 %
2025-12-12_20:24:08 DG.Treppenhaus.Jalousie.Lamelle 60 %
2025-12-12_20:24:09 DG.Treppenhaus.Jalousie.Lamelle last-sender: 1.1.2
2025-12-12_20:24:09 DG.Treppenhaus.Jalousie.Lamelle Pos.Status-get: 60 %
2025-12-12_20:24:09 DG.Treppenhaus.Jalousie.Lamelle 60 %
Dann ist die Frage, ob überhaupt der Lamellenbefehl rausgehen darf, solange der Motor läuft, oder erst danach...
Nachtrag noch: vielleicht gibt es die Möglichkeit, Perl-Anweisungen vorzugeben, ich meine, dazu mal vor langem mal Code beigesteuert zu haben. Bitte selbst suchen...
Edit: https://forum.fhem.de/index.php?topic=123670.0
ZitatDann ist die Frage, ob überhaupt der Lamellenbefehl rausgehen darf, solange der Motor läuft, oder erst danach...
Das hatte ich in #7 angesprochen: testen ob Set position und set Lamellen unmittelbar hintereinander funktioniert, direkt in den KNX-devices, ohne ASC Einfluss. Damit könnten wir ein mögliches Problem ausschließen.
l.g. erwin
Zitat von: erwin am 13 Dezember 2025, 08:34:08ZitatDann ist die Frage, ob überhaupt der Lamellenbefehl rausgehen darf, solange der Motor läuft, oder erst danach...
Das hatte ich in #7 angesprochen: testen ob Set position und set Lamellen unmittelbar hintereinander funktioniert, direkt in den KNX-devices, ohne ASC Einfluss. Damit könnten wir ein mögliches Problem ausschließen.
l.g. erwin
Das würde mich aber auch Interesieren.
So schnell wie FHEM (ASC) die Befehle abarbeiten kann, kann niemand per Hand.
ZitatSo schnell wie FHEM (ASC) die Befehle abarbeiten kann, kann niemand per Hand.
Per Hand vielleicht nicht, aber in einem at, notify oder 99_myUtils verpackt sehr wohl.
Zitat2025-12-12_20:24:09 DG.Treppenhaus.Jalousie.Lamelle 60 %
Das % stört das nicht?
Bei ZWave gibt es da ein Attribut um das zu entfernen.
ZitatDas % stört das nicht?
Dem KNX set cmd stört das nicht, der filtert das automatisch - ob es ASC stört ? Denke eher nicht, weil sonst würde auch das pos cmd nicht funktionieren...
..Aber man könnte das % verhindern, wenn man möchte, Dpt-definition! steht alles im help KNX.
Ich habe es heute mal ausprobiert, in meinem alten DOIF.
Hier der Code
([{sunrise("REAL",0,"07:30","08:45")}|WE] and [Aussenbereich.DachOst.Lux:state:d] > 150)
(set Stefan_Pushnachricht msg 'Rollladen: Gehen hoch')
(set EG.Essz.Jalousie.TerrasseLinks AufAb up)
(set EG.Essz.Jalousie.TerrasseRechts AufAb up)
(set EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute 50)
(set EG.Essz.Jalousie.Sitzfenster.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.Eck.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.FrontLinks.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.FrontRechts.Lamelle Lamelle.Absolute 60)
DOELSEIF ([{sunrise("REAL",0,"06:20","08:30")}|AT] and [Aussenbereich.DachOst.Lux:state:d] > 150)
(set Stefan_Pushnachricht msg 'Rollladen: Gehen hoch')
(set EG.Essz.Jalousie.TerrasseLinks AufAb up)
(set EG.Essz.Jalousie.TerrasseRechts AufAb up)
(set EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute 50)
(set EG.Essz.Jalousie.Sitzfenster.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.Eck.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.FrontLinks.Lamelle Lamelle.Absolute 60)
(set EG.Wohnz.Jalousie.FrontRechts.Lamelle Lamelle.Absolute 60)
Zu beachten sind:
(set EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute 50)
(set EG.Essz.Jalousie.Sitzfenster.Lamelle Lamelle.Absolute 60)
Es hat so funktioniert, zuerst wurde die Jalousie auf 50% angefahren, dann die Lamelle auf 60% gestellt.
Aktor ist ein MDT JAL-0810.02.
Jalousie Log:
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Position last-sender: fhem
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute-set: 50 %
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Position 50 %
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Position last-sender: 1.1.4
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Position Pos.Status-get: 46 %
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Position 46 %
2025-12-15_08:16:38 EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute: 46 %
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Position last-sender: 1.1.4
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Position Pos.Status-get: 48 %
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Position 48 %
2025-12-15_08:16:40 EG.Essz.Jalousie.Sitzfenster.Position Pos.Absolute: 48 %
Lamellen Log:
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Lamelle last-sender: fhem
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Lamelle Lamelle.Absolute-set: 60 %
2025-12-15_08:16:08 EG.Essz.Jalousie.Sitzfenster.Lamelle 60 %
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Lamelle last-sender: 1.1.4
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Lamelle Pos.Status-get: 0 %
2025-12-15_08:16:37 EG.Essz.Jalousie.Sitzfenster.Lamelle 0 %
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Lamelle last-sender: 1.1.4
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Lamelle Pos.Status-get: 60 %
2025-12-15_08:16:39 EG.Essz.Jalousie.Sitzfenster.Lamelle 60 %
Was ist dann der Unterschied zum Senden via "Kommandos direkt nacheinander über das mehrzeilige Kommandofeld".
Das ging ja nicht?
Ich schaue mir jetzt mal noch das an, was Beta-User mit den Pearl Anweisungen gemeint hat.
Ansonsten wäre mein Plan B, Abends fahre ich eigtl. immer nur Jalousie runter. Das funktioniert ja wunderbar mit ASC, morgens verstelle ich entweder die Jalousie Position oder nur die Lamelle. Nicht beides gleichzeitig. Da könnte ich ja so tun, als ob die Lamelle die Position der Jalousie wäre. Dann müsste das ja auch klappen. Die eigentliche Beschattung (Anpassen der Jalousie Position oder Lamelle) mache ich dann mittags via at Befehl.
Zitat von: superverbleit am 15 Dezember 2025, 17:12:33Ich schaue mir jetzt mal noch das an, was Beta-User mit den Pearl Anweisungen gemeint hat.
Es ging darum, das ASC-commandTemplate-Attribut zu füllen. Du musst dabei aber beachten: Wird es (irgendwie) gesetzt, gibt es KEINE separaten Anweisungen mehr an die Lamellen. (Das war ein Teil deiner ursprünglichen Konfiguration und damit mit des Problems!) Ergo muss man es dort machen, und u.a. dafür ist/war es auch gedacht.
Man KANN dort Perl verwenden, (z.B. auch um zu prüfen, ob überhaupt gefahren werden soll), aber zwingend ist es nicht. Es sollte z.B. auch gehen, FHEM-Syntax zu verwenden und eine (fhem-) sleep-Anweisung dazuwischenzuschalten, um sicherzustellen, dass das nicht "zu gleichzeitig" passiert (DOIF verwende ich nicht, von daher kann ich auch nicht sagen, was da bei der Abarbeitung der (anscheinend ja getrennten?) Anweisungen passiert).
my 2 ct: (inspiriert von cmd-ref) - untestet
attr <device> ASC_CommandTemplate {myASCsub($name,$pos,$slatpos,$cause);}
# ...und in der 99_myUtils:
sub myACSsub {
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name position $pos");
if ($slatpos ne '-1') {
fhem("set <Slatdevname> slatposition $slatpos");
}
return;
}
Was/wie spielt eigentlich das attr ASC_slatPosCmd_SlatDevice da mit? lt. cmd.ref sollte das ja auch funktionieren!
l.g. erwin
Zitat von: erwin am 15 Dezember 2025, 20:56:50my 2 ct: (inspiriert von cmd-ref) - untestet
attr <device> ASC_CommandTemplate {myASCsub($name,$pos,$slatpos,$cause);}
# ...und in der 99_myUtils:
sub myACSsub {
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name position $pos");
if ($slatpos ne '-1') {
fhem("set <Slatdevname> slatposition $slatpos");
}
return;
}
Das wäre eine "bare metal" Implementierung.
ZitatWas/wie spielt eigentlich das attr ASC_slatPosCmd_SlatDevice da mit? lt. cmd.ref sollte das ja auch funktionieren!
l.g. erwin
Wenn ASC_CommandTemplate gesetzt ist, spielt das andere Attribut schlicht keine Rolle mehr.
Ich habe ja attr DG.Treppenhaus.Jalousie.Position ASC_SlatPosCmd_SlatDevice Lamelle.Absolute:DG.Treppenhaus.Jalousie.Lamellegesetzt und aber
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate set $name Pos.Absolute $pos .
Wenn ich also ASC_CommandTemplate gesetzt habe, ist das attr ASC_SlatPosCmd_SlatDevice nicht mehr relevant.
Dann konnte das ja bei mir so oder so nicht funktionieren, oder?
ASC_CommandTemplate brauche ich aber, damit mein KNX Befehl sauber funktioniert.
Somit ist das ja mit meinem 2. Device zur Lamellenansteuerung schwierig, oder?
Wie bringe ich das dann meinem ASC_CommandTemplate bei, das es 2 Devices zur Ansteuerung braucht, eins für Jalousienposition und eins zur Lamellenansteuerung.
So was funktioniert dann ja für mich auch nicht, mit 2 devices:
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate set $name datapoint 4.LEVEL_2 $slatLevel 4.LEVEL Pos.Absolute $level.
Dann geht das bei mir nur so, wie ihr es mit 99_myUtils beschrieben habt, richtig?
ZitatDann geht das bei mir nur so, wie ihr es mit 99_myUtils beschrieben habt, richtig?
nicht ganz, du kannst natürlich den perlcode auch direkt in das ASC_CommandTemplate einpacken... würde ich aber davon abraten!
Gründe: -Viele Fehlermöglichkeiten beim erstellen.
-gilt dann nur für diese eine Jalousie, jedoch die sub in 99_myUtils kannst du von jeder Jal aufrufen!
Und mal noch Fragen zu eurer Funktion:
Bei mir würde das dann folgendermaßen aussehen:
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate {myASCsub($name,$pos,$slatpos,$cause);}
Woher kommen dann pos und slatpos?
Hierher?
attr DG.Treppenhaus.Jalousie.Position ASC_Open_Pos 50:60
attr DG.Treppenhaus.Jalousie.Position ASC_Closed_Pos 100:90
Also morgens ist pos=50 und slatpos=60, abends pos=100 und slatpos=90. Richtig?
Und die KNX Anpassungen für eure Funktion wären dann noch folgende:
# ...und in der 99_myUtils:
sub myACSsub {
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name Pos.Absolute $pos");
if ($slatpos ne '-1') {
fhem("set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos");
}
return;
}
Wenn ich eine zeitliche Verzögerung für fhem("set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos"); will (die Lamellen), könnte ich es ja auch noch folgendermaßen abändern:
fhem("define Lamellendelay at +00:02:00 set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos");.
Dann würde auf jeden Fall die Position angefahren und nach 2 Minuten "delay" die Lamelle verstellt, richtig?
Lt cmd-ref werden die Variablen $pos und $slatpos ddurch das ASC-device gesetzt.
Die "Verzögerung" würde ich anders implementieren, ist aber offensichtlich für deinen Aktor nicht nötig.
fhem("sleep 120 quiet;set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos");
Es sollte auch funktionieren, beide fhem-Kommandos in commandTemplate einzubauen - ohne Perl, halt wie sonst auch üblich durch Semikolon getrennt (vielleicht doppelt).
...noch eine kleine Verbesserung: der device-name Lamelle wird vom Position device abgeleitet...
sub myASCsub {
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name Pos.Absolute $pos");
if ($slatpos ne '-1') {
my $lname = $name =~ s/Position$/Lamelle/rxms;
fhem("set $lname Lamelle.Absolute $slatpos");
}
return;
}Damit ist die sub für alle Jal geeignet, falls die Namenskonvention immer so ist.
Zum ausprobieren könnte ich es ja mal ohne die Funktion probieren.
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate set $name Pos.Absolute $pos; set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos;
Mit Verzögerung:
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate set $name Pos.Absolute $pos; sleep 120 quiet; set DG.Treppenhaus.Jalousie.Lamelle Lamelle.Absolute $slatpos;
Wenn ich es via Funktion implementiere, wie kann ich dann den Namen des Lamellendevices mit übergeben?
Ich bräuchte ja dann so was:
attr <device> ASC_CommandTemplate {myASCsub($name,$nameLamelle,$pos,$slatpos,$cause);}
# ...und in der 99_myUtils:
sub myACSsub {
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name Pos.Absolute $pos");
if ($slatpos ne '-1') {
fhem("set $nameLamelle Lamelle.Absolute $slatpos");
}
return;
}
Ist das via ASC attr möglich?
Sonst passt es ja erst wieder nur auf ein device, dann macht die Funktion auch keinen Sinn.
Gerade erst gesehen, das Erwin meine Frage schon beantwortet hat. 8) Danke.
Hallo Leute,
ich bin jetzt endlich dazugekommen, die Funktion in 99_Utils.pm umzusetzen.
Leider bekomme ich noch Fehler im Logfile, bzw. der Aufruf tut nicht richtig, kann mir da jemand weiterhelfen?
Das hier ist ja die Funktion:
sub
myASCsub
{
my ($name,$pos,$slatpos,$cause) = @_;
fhem("set $name Pos.Absolute $pos");
if ($slatpos ne '-1') {
my $lname = $name =~ s/Position$/Lamelle/rxms;
fhem("sleep 120 quiet;set $lname Lamelle.Absolute $slatpos");
}
return;
}
Aufgerufen via attr ASC_CommandTemplate:
attr DG.Treppenhaus.Jalousie.Position ASC_CommandTemplate {myASCsub($name,$pos,$slatpos,$cause)}
Hier nochmals das aktuelle list:
Internals:
DEF 2/1/207:dpt5.001:Pos.Status 2/4/200:dpt5.001:Pos.Absolute:nosuffix
FUUID 5dfcf3ae-f33f-5687-034a-9ed97a3902dc74ea
IODev KNX
KNX_MSGCNT 4
KNX_RAWMSG C01102w021cf00
KNX_TIME 2025-12-21 08:52:10
LASTInputDev KNX
MSGCNT 4
NAME DG.Treppenhaus.Jalousie.Position
NR 227
STATE 0 %
TYPE KNX
eventCount 8
model dpt5
GADDETAILS:
Pos.Absolute:
CODE 024c8
MODEL dpt5.001
NO 2
OPTION
RDNAMEGET Pos.Absolute
RDNAMESET Pos.Absolute
SETLIST :slider,0,1,100
Pos.Status:
CODE 021cf
MODEL dpt5.001
NO 1
OPTION
RDNAMEGET Pos.Status-get
RDNAMESET Pos.Status-set
SETLIST :slider,0,1,100
GADTABLE:
021cf Pos.Status
024c8 Pos.Absolute
Helper:
READINGS:
2025-12-06 09:28:39 ASC_Enable on
2025-12-21 08:18:38 ASC_Time_DriveDown 21.12.2025 - 17:30
2025-12-21 08:18:38 ASC_Time_DriveUp 22.12.2025 - 08:19
2025-12-20 13:48:53 IODev KNX
2025-12-21 08:52:11 Pos.Absolute 0 %
2025-12-21 08:52:10 Pos.Status-get 0 %
2025-12-20 13:48:48 associatedWith AutoShuttersControl
2025-12-21 08:52:10 last-sender 1.1.2
2025-12-21 08:52:10 state 0 %
Attributes:
ASC 1
ASC_BrightnessSensor Aussenbereich.DachOst.Lux 150:15
ASC_Closed_Pos 80:90
ASC_CommandTemplate {myASCsub($name,$pos,$slatpos,$cause)}
ASC_Down astro
ASC_Drive_Delay 300
ASC_Drive_DelayStart 65
ASC_Open_Pos 50:60
ASC_Pos_Reading Pos.Status-get
ASC_Time_Down_Early 17:30
ASC_Time_Down_Late 22:00
ASC_Time_Up_Early 06:30
ASC_Time_Up_Late 08:30
ASC_Time_Up_WE_Holiday 08:00
ASC_Up astro
IODev KNX
group Jalousien
icon fts_shutter_updown
room Flur_DG
userattr ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforeDayOpen ASC_BlockingTime_beforeNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_CommandTemplate ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning,EG_window ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
webCmd Pos.Absolute
widgetOverride Pos.Absolute:slider,0,1,100
Hier die Fehler logs:
ASC_DEBUG!!! 2025.12.21 08:18:38 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - versetztes fahren
ASC_DEBUG!!! 2025.12.21 08:18:38 - FnSetDriveCmd: DG.Treppenhaus.Jalousie.Position - NoDelay: NEIN
ASC_DEBUG!!! 2025.12.21 08:18:38 - FnShuttersCommandSet: DG.Treppenhaus.Jalousie.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2025.12.21 08:21:15 - FnSetCmdFn: DG.Treppenhaus.Jalousie.Position - Rollo wird gefahren, aktuelle Position: 100, Zielposition: 50. Grund der Fahrt: day open
2025.12.21 08:21:15 1: ERROR evaluating my $cause= $evalSpecials->{'$cause'};my $name= $evalSpecials->{'$name'};my $pos= $evalSpecials->{'$pos'};my $slatPos= $evalSpecials->{'$slatPos'};{myASCsub($name,$pos,$slatpos,$cause)}: Global symbol "$slatpos" requires explicit package name (did you forget to declare "my $slatpos"?) at (eval 11428) line 1
In der commandref heißt der bemängelte Parameter auch anders... Schon mal da reingeschaut?!?
So klappt es jetzt, bin zufrieden.
Danke für eure Hilfe. :)
Hallo,
jetzt ergibt sich doch nochmals ein Problem.
Wenn ich bei einer Jalousie nur die Lamellen verstellen will, funktioniert der oben beschriebene Weg leider nicht.
Es gibt einen Check, der wohl zu Beginn die Position prüft, und wenn Ziel-Pos = Ist-Pos abbricht.
Das hat dann auch zur Folge, das die Lamellen auch nicht gestellt werden.
Im Log sieht es dann folgendermaßen aus:
ASC_DEBUG!!! 2026.01.22 17:30:02 - FnSetDriveCmd: EG.Wohnz.Jalousie.FrontLinks.Position - versetztes fahren
ASC_DEBUG!!! 2026.01.22 17:30:02 - FnSetDriveCmd: EG.Wohnz.Jalousie.FrontLinks.Position - NoDelay: NEIN
ASC_DEBUG!!! 2026.01.22 17:30:02 - FnShuttersCommandSet: EG.Wohnz.Jalousie.FrontLinks.Position - Das Rollo wird gefahren. Kein Partymodus aktiv und das zugordnete Fenster ist entweder nicht offen oder keine Terassentür
ASC_DEBUG!!! 2026.01.22 17:33:53 - FnSetCmdFn: EG.Wohnz.Jalousie.FrontLinks.Position - Abbruch aktuelle Position ist gleich der Zielposition 98=98
Hat jemand eine Idee, wie ich die Lamellen trotzdem via ASC gestellt bekomme?
Dann musst du halt doch geringfügig andere Positionen auch für die Behanghöhe angegeben.