Hi all,
ich habe aus https://forum.fhem.de/index.php/topic,116737.0.html (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 (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
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
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
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
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