[Gelöst] KNX Rolladen Mapping

Begonnen von Kohle77, 18 Januar 2021, 10:05:44

Vorheriges Thema - Nächstes Thema

Kohle77

Hi all,
ich habe aus https://forum.fhem.de/index.php/topic,116737.0.html die neue KNX definition eingefügt.
Ändert das etwas an der dpt wer zuweisung bzw. gibt es eine aktuelle Liste dazu https://fhem.de/commandref.html#KNXdpt?

Ich habe jetzt dieses KNX device definiert:
3/1/4:dpt1.009:AufZu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:Position 3/1/17:dpt5.001:AktuellePos
dpt1.009 hätte die Werte open, closed
dpt1.017 ist ein trigger
dpt5.001 kann ein Wert gesetzt werden (3/1/16)
bzw. bei 3/1/17 leifert es den status zurück zwischen 0 (open) und 100 (closed).

Jetzt habe ich einfach mal folgende webCMD open:Auf closed:Zu definiert.
Das EventMap dazu ist open:Auf closed:Zu

Damit kann ich den Rolladen Auf und Zu fahren sowie im Web über den Slider bedienen.
Ich würde gerne als webCMD folgendes definieren Auf:Stop:Zu::Pos30:Pos50:Pos70

Wie bringe ich es den hin über EventMap auf 3/1/5:dpt1.017:Stop ein "on" zu schicken um diesen beim fahren zu stoppen?
Weiter würde ich gerne im Web auf Pos30 das auf 3/1/16:dpt5.001:Position ein 30 geschickt wird.
Als Beispiel:
set KNXDev Position 30 sendet den Wert 30 an den Rolladen aus der GUI Kommandozeile.

Gruß
Christian




erwin

#1
Hi Christian,

ZitatÄndert das etwas an der dpt wer zuweisung bzw. gibt es eine aktuelle Liste daz
natürlich nicht auf fhem.de, aber in deiner Installation ist die cmd-ref aktuell! (device specific help...)

meine definition schaut so aus:
define JalousieTest KNX 10/1/13:dpt1.008:aufab:set:nosuffix
10/1/15:dpt1.010:stop:set:nosuffix
10/1/20:dpt5.001:posstatus:listenonly:nosuffix
10/1/18:dpt5.001:position:set:nosuffix

attr JalousieTest IODev myTUL
attr JalousieTest cmdIcon Auf:black_up Ab:black_down Stop:remotecontrol/black_btn_RED
attr JalousieTest eventMap { dev=>{'^posstatus:.(.*)'=>'position: $1'}, usr=>{"Stop"=>"stop stop","Auf"=>"aufab up","Ab"=>"aufab down","Pos30"=>'position 30'},fw=>{'^posstatus (.*)'=>'position' } }
attr JalousieTest room KNXtest
attr JalousieTest webCmd Auf:Stop:Ab::Pos30:position
attr JalousieTest widgetOverride position:slider,0,10,100

..ist durchaus vergleichbar mit deinen definitionen, du musst nur die GA anpassen.
Damit funktionieren schon mal alle Web-cmds, was noch zu tun bleibt, ist das devstateicon hübscher zu machen.
edit: noch um Pos30 ergänzt...

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

Kohle77

Hi,
vielen Dank. Damit geht es. Hier mal ein komplettes device:
Internals:
   CFGFN      /opt/fhem/FHEM/CFG/2_neuMi_rollos.cfg
   DEF        2/0/0:dpt1.008:aufab:set:nosuffix
2/0/1:dpt1.010:stop:set:nosuffix
2/0/11:dpt5.001:posstatus:listenonly:nosuffix
2/0/10:dpt5.001:position:set:nosuffix
   DEVNAME    KNX_0200000
   Eversion   E04.20 10-01-2021
   FIRSTGADNAME aufab
   FUUID      5e89834a-f33f-f555-e44a-7ddce55277e7d366
   GETSTRING 
   IODev      KNX
   KNX_MSGCNT 6
   KNX_RAWMSG C00005w0200b59
   KNX_TIME   2021-01-18 20:13:22
   LASTInputDev KNX
   MSGCNT     6
   NAME       KNX_0200000
   NOTIFYDEV  global,TYPE=KNX
   NR         65
   NTFY_ORDER 50-KNX_0200000
   SETSTRING  aufab:up,down stop:stop,start position:slider,0,1,100
   STATE      35 %
   TYPE       KNX
   GADDETAILS:
     aufab:
       CODE       02000
       GROUP      2/0/0
       MODEL      dpt1.008
       NO         1
       OPTION     set
       RDNAMEGET 
       RDNAMEPUT  aufab
       RDNAMESET  aufab
       SETLIST    :up,down
     position:
       CODE       0200a
       GROUP      2/0/10
       MODEL      dpt5.001
       NO         4
       OPTION     set
       RDNAMEGET 
       RDNAMEPUT  position
       RDNAMESET  position
       SETLIST    :slider,0,1,100
     posstatus:
       CODE       0200b
       GROUP      2/0/11
       MODEL      dpt5.001
       NO         3
       OPTION     listenonly
       RDNAMEGET  posstatus
       RDNAMEPUT  posstatus
       RDNAMESET 
       SETLIST    :slider,0,1,100
     stop:
       CODE       02001
       GROUP      2/0/1
       MODEL      dpt1.010
       NO         2
       OPTION     set
       RDNAMEGET 
       RDNAMEPUT  stop
       RDNAMESET  stop
       SETLIST    :stop,start
   GADTABLE:
     02000      aufab
     02001      stop
     0200a      position
     0200b      posstatus
   READINGS:
     2021-01-18 14:09:03   Auf/Ab-get      up
     2021-01-18 14:09:03   Auf/Ab-set      up
     2021-01-18 14:09:03   Position-set    50 %
     2021-01-18 14:09:03   Status-get      0 %
     2021-01-18 14:09:03   Stop-get        trigger
     2021-01-18 14:09:03   Stop-set        trigger
     2021-01-18 20:13:20   aufab           up
     2021-01-18 14:09:03   getG1           off
     2021-01-18 14:09:03   getG2           off
     2021-01-18 20:13:22   last-sender     0.0.5
     2021-01-18 20:10:07   position        40
     2021-01-18 20:13:22   posstatus       35 %
     2021-01-18 14:09:03   setG1           on
     2021-01-18 14:09:03   setG2           on
     2021-01-18 20:13:22   state           35 %
     2021-01-18 20:13:21   stop            stop
Attributes:
   DbLogExclude .*
   IODev      KNX
   alias      Rechts
   devStateIcon up:fts_shutter_1w_0@green down:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_100 8\d.*:fts_shutter_1w_90 7\d.*:fts_shutter_1w_80 6\d.*:fts_shutter_1w_70 5\d.*:fts_shutter_1w_60 4\d.*:fts_shutter_1w_50 3\d.*:fts_shutter_1w_40 2\d.*:fts_shutter_1w_30 1\d.*:fts_shutter_1w_20 \d.*:fts_shutter_1w_10
   eventMap   { dev=>{'^posstatus:.(.*)'=>'position: $1'}, usr=>{"Stop"=>"stop stop","Auf"=>"aufab up","Zu"=>"aufab down","Pos30"=>'position 30'},fw=>{'^posstatus (.*)'=>'position' } }
   group      Wohnzimmer
   room       OG_MI->Wohnzimmer
   webCmd     Auf:Stop:Zu::Pos30:position
   widgetOverride position:slider,0,10,100


Jetzt kann ich mich wieder um die Integration in Alex kümmern.

Gruß
Christian

Kohle77

Hallo Erwin,
kannst du mir/uns vielleicht noch ein paar erklärungen geben was eventMap (in Perl, deswegen {}) so bedeutet?
Was macht ein =>
Was ist die, vermute ich, variable $?
Was bedeutet das "Stop"=>"stop stop"?

{ dev=>{'^[b]posstatus[/b]:.(.*)'=>'[b]position[/b]: $1'}, usr=>{"Stop"=>"[b]stop[/b] stop","Auf"=>"[b]aufab[/b] up","Ab"=>"[b]aufab[/b] down","Pos30"=>'[b]position[/b] 30'},fw=>{'^[b]posstatus[/b] (.*)'=>'position' } }

Bold markiert sind die Namen die hinter den dpt Werten stehen.
Vielleicht verstehe ich dann eher was hier gemacht wird.

Gruß
Christian

erwin

Hi Christian,

grundsätliches zu Eventmap findest du in der cmdref, das ist ja ein globales Attribut, nicht speziell für KNX.

Hier im speziellen:
usr=>{"Stop"=>"stop stop", ...}
usr bedeutet: den ersten Wert "Stop" gibts du in der cmd line ein also set <deviceName> Stop - daraus macht das eventmap das commando:
set <deviceName> stop stop -  das erste stop ist der alias (oder gadName- das was in der def unmittelbar hinter dptx.yyy steht) das zweite stop ist der wert (bei dpt1.010 sind das start oder stop.
zweites Beispiel: aus usr=>{"Pos30"=>'position 30'} wird set <deviceName> position 30

diesen teil: dev=>{'^posstatus:.(.*)'=>'position: $1'}, lösche, der funtioniert nicht !!!

der part mit fw=>  ist dazu da, die Anzeige in FHEM-WEB vernüftig zu machen, in diesem FAll: dass im set-pulldown positionstatus steht und nicht posstatus 30,40,50,60...   - kannst du auch weglassen, weil das kein set command ist, sondern ein get od. listenonly!

Einige Beispiele dazu gibts auch in der cmdref für KNX!
irgendwo hast du gefragt, warum an den readingname ein -set bzw. -get angehängt wird, ich denke da bist du schon selbst draufgekommen...
du hast jetzt von deinen Versuchen etliche "reading-Leichen" in deiner definition, z. set-G1,AufAb-set,.... ich würde ein deletereading <device> .* machen, damit die Verwirrung weniger wird...

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