KNX Jalousiesteuerung mit AutoShuttersControl

Begonnen von superverbleit, 06 Dezember 2025, 10:06:35

Vorheriges Thema - Nächstes Thema

Beta-User

Das eventMap macht es m.E. nicht durchsichtiger...

Muss das sein?
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

superverbleit

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.

Beta-User

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...
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

superverbleit

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 %

Beta-User

#19
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
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

erwin

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
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,...

Damu

Zitat von: erwin am 13 Dezember 2025, 08:34:08
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
Das würde mich aber auch Interesieren.
So schnell wie FHEM (ASC) die Befehle abarbeiten kann, kann niemand per Hand.

erwin

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.
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,...

Damu

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.

erwin

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.
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,...

superverbleit

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.


Beta-User

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).
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

erwin

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
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,...

Beta-User

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.
Server: HP-elitedesk@Debian 13, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

superverbleit

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?