MDT Dimmer einbinden

Begonnen von kobza, 24 Januar 2017, 18:36:49

Vorheriges Thema - Nächstes Thema

kobza

Hallo,

bin neu hier im Forum, und habe direkt eine Frage bezüglich dens neuen KNX Modules.

Ich verusche einen MDT Dimmer ins fhem einzubinden, leider bis jetzt ohne Erfolg...
Ich arbeite mit 4 KNX Addr. swicht, switch status, dim, dim status.

Ich haber versucht das nach dem Bsp. aus der Wiki zu implementieren, aber dort wird noch das alte EIB Module benutzt...

Grüße
Thomas

kobza

sehe, erst jetzt, ein paar Beiträge weiter unten gibt es schon eine Antwort darauf...
Ich probiere diese erst mal aus.

Gruß
Thomas

kobza

Hi,

komme einfach nicht weiter, was ich implementieren will ist ON/OFF und Slider:



define WZ.EssenDecke KNX 0/1/6:dpt1 10/1/6:dpt1
  attr WZ.EssenDecke IODev KNX
  attr WZ.EssenDecke alias Esstisch
  attr WZ.EssenDecke room Wohnzimmer,alexa

define WZ.EssenDecke_DIM_STATUS KNX 10/1/60:dpt5
  attr WZ.EssenDecke_DIM_STATUS IODev KNX
  attr WZ.EssenDecke_DIM_STATUS alias Esstisch_dimmen
  attr WZ.EssenDecke_DIM_STATUS room hiden
  define x_WE.EssenDecke_DIM_STATUS notify WZ.EssenDecke_DIM_STATUS { \
         my $i=Value("WZ.EssenDecke_DIM_STATUS");; \
         if(Value("WZ.EssenDecke_DIM_STATUS_T")) {fhem("delete WZ.EssenDecke_DIM_STATUS_T")};; \
         fhem("define WZ.EssenDecke_DIM_STATUS_T at +00:00:10 setreading WZ.EssenDecke_DIM_STATUS state $i") \
}

define WZ.EssenDecke_DUMMY dummy
  attr WZ.EssenDecke_DUMMY setList state:slider,1,1,100
  attr WZ.EssenDecke_DUMMY webCmd state

define WZ.EssenDecke_DIM KNX 0/1/60:dpt5
  attr WZ.EssenDecke_DIM format %
  attr WZ.EssenDecke_DIM room hidden

define x_WZ.EssenDecke_DUMMY notify WZ.EssenDecke_DUMMY { \
    my $v=Value("WZ.EssenDecke_DUMMY");; \
    fhem("set WZ.EssenDecke_DIM value $i") \
}



Was mache ich falsche?

Danke & Gruß
Thomas

crushvx

#3
Hi kobza,

schwer zu sagen. Was funktioniert denn nicht wie es soll?

Ich finde die Art wie du es umgesetzt hast vielleicht etwas eigenwillig/interessant; bin aber auch kein FHEM-Profi.
4 defines die direkt auf die GA's mappen und ein Dummy für die richtige Anzeige, korrekt?

Wäre ich so nicht drauf gekommen... Wo hast du das her?

Das hier ist meine "alte" Lösung für einen KNX-Dimmer. 2 Defines, die dann also solche auch im Frontend auftauchen.
Bei mir gibts keine separaten Rückmelde-Adressen. Das wird bei Dir warsch. anders sein. Die müsstest du aber einfach, als 2. Adresse an die jeweiligen defines hinzufügen können.

define wz_beleuchtung_esstisch_schalter KNX 3/1/46:DPT1
attr wz_beleuchtung_esstisch_schalter room _KNX,Wohnzimmer

define wz_beleuchtung_esstisch_dimmlevel KNX 3/1/14:DPT5.001
attr wz_beleuchtung_esstisch_dimmlevel room _KNX,Wohnzimmer
attr wz_beleuchtung_esstisch_dimmlevel slider 0,1,100
attr wz_beleuchtung_esstisch_dimmlevel webCmd value


Zur Zeit bastle ich aber parallel auch noch an einer "all-In-One"-Lösung, in der ich nur ein FHEM-define habe, dass im Frontend sichtbar ist, welches das von dir gewünschte on:off:value (Value entspricht bei webCmd dem Slider, wenn slider als attr definiert ist; find ich auch verwirrend) anbietet.
Die (beta)-Lösung dafür sieht dann so aus:


define wz_beleuchtung_esstisch_kombi KNX 3/1/14:DPT5.001:dimmlevel 3/1/46:DPT1:schalter 3/1/78:DPT3:schrittdimmer
attr wz_beleuchtung_esstisch_kombi room _KNX,Wohnzimmer
attr wz_beleuchtung_esstisch_kombi eventMap {\
usr=>{\
'^on'=>'value on g2',\
'^off'=>'value off g2',\
'^value on'=>'value on g2',\
'^value off'=>'value off g2',\
'^value (\d+)'=>'value $1 g1'\
},\
fw=>{\
'^on'=>'value on g2',\
'^off'=>'value off g2',\
'^value on'=>'value on g2',\
'^value off'=>'value off g2',\
'^value (\d+)'=>'value $1 g1'\
}\
}
attr wz_beleuchtung_esstisch_kombi slider 0,1,100
attr wz_beleuchtung_esstisch_kombi webCmd on:off:value
#hack damit der state immer nur den dimmlevel enthaelt.
#on und off von der schalter-GA bringt den Slider durcheinander
attr wz_beleuchtung_esstisch_kombi stateCmd {$state = sprintf("%s", ReadingsVal($name,"dimmlevel-get","undef"))}


Wo ich so drüber nachdenke, finde ich aber die Idee das über ein Dummy zu machen, welches die 3-4 "echten" defines Weg-Kapselt ziemlich charmant. Man hat dann (wenn es funktioniert) die ultimative Flexibilität. Muss sich aber auch im das ständige Update/Notify seiner Dummy's und "echten" defines kümmern. Sprich: überall den State synchron halten.

Gib mal Feedback ob eine der beiden Varianten klappt.
Ich probier derweil mit dem Dummy.

Gruß,
Christian

[Edit:] Kurze Anmerkung zu webCmd value im Text ergänzt.

[Edit 2:] Für das Code-Beispiel unnötige event-on-change-reading und userattr entfernt.

EIB-Fan

Hallo zusammen,

vielleicht hilft dir/euch ein Beispiel aus meiner Fhem-Programmierung weiter.

defmod EG_WZ_Licht_Esstisch KNX 2/0/12:dpt5.001:dimmen-absolut 2/0/10:dpt1:schalten 2/0/13:dpt3:dimmen-relativ 2/0/14:dpt5.001:status-dimmen
attr EG_WZ_Licht_Esstisch IODev tul
attr EG_WZ_Licht_Esstisch event-on-change-reading .*
attr EG_WZ_Licht_Esstisch eventMap /on g2:AN/off g2:AUS
attr EG_WZ_Licht_Esstisch group Licht
attr EG_WZ_Licht_Esstisch room Wohnen
attr EG_WZ_Licht_Esstisch slider 0,1,100
attr EG_WZ_Licht_Esstisch stateCmd {sprintf("%s", ReadingsVal($name,"status-dimmen-get",""))}
attr EG_WZ_Licht_Esstisch webCmd AN::AUS::value


Das sieht dann so (siehe Bild) aus.

Gruß Jens

crushvx

Hey,
Cool :D

Genauso sieht meins auch aus.
Wichtig und auch leidvoll herauszufinden fand ich dass das stateCmd notwendig ist, da damit erzwungen wird, dass der "state" des defines niemals nur "on" oder "off" enthält, sondern immer auch irgendwo den Prozenwert des Sliders. Wenn dem anders ist, spinnt der Slider!

So würde es also auch gehen:

attr EG_WZ_Licht_Esstisch stateCmd {sprintf("%s %s", ReadingsVal($name,"schalten-get",""), ReadingsVal($name,"status-dimmen-get",""))}


Gruß,
Christian

EIB-Fan

Hallo Christian,

in meiner Konfiguration funktioniert das nicht. Habe es mal zum Test eingefügt.

attr EG_WZ_Licht_Esstisch stateCmd {sprintf("%s %s", ReadingsVal($name,"schalten-get",""), ReadingsVal($name,"status-dimmen-get",""))}

Meine Gruppenadresse "schalten" ist ein set Befehl. Für mich ist ausreichend, wenn als state eine Angabe in Prozent steht. Alles was größer 0 ist, heißt es ist ein Licht an. ;)

Gruß Jens

kobza

Hi,

danke Euch alles :-) so jetzt habe ich es endlich mir Eurer Hilfe geschafft.

@crushvx meinen Code habe ich mir hier abgeschaut:
    Wiki: https://wiki.fhem.de/wiki/Dimmer_f%C3%BCr_EIB/KNX
    und hier: https://forum.fhem.de/index.php/topic,65475.0.html
    leider hat es mit dem Slider immer noch nicht funktioniert

@EIB-Fan danke Dein Code habe ich eingebaut mit einer zusätzlichen dpt1 Status Addr.

@all die anderen Bsp. werde ich mir antürlich auch anschauen :-)

Danke
Thomas

P.S. FHEM habe ich vor allem wegen Alexa Binding installiert