Eventmap - KNX Dimmer mit Tuneable White

Begonnen von AlexSchei, 07 Mai 2024, 21:29:44

Vorheriges Thema - Nächstes Thema

AlexSchei

Moin!

Ich sitze jetzt seit mehreren Stunden vor meinem Problem. Ich konnte es jetzt eingrenzen auf das Attribut "eventmap".

Folgende Situation: 
KNX Dimmer von MDT. 
6 Gruppenadressen:
1. EinAus Schalten dpt1
2. EinAus Status dpt1
3. Dimmen dpt5.001
4. Dimmen Status dpt5.001
5. Tuneable White dpt7.600
6. Tuneable White Status dpt7.600

Das Device ist angelegt:
defmod Dimmer KNX 0/0/3:dpt1:EinAus:set:nosuffix \
0/0/4:dpt1:Status:listenonly:nosuffix \
0/0/5:dpt5.001:Dimmen:set:nosuffix \
0/0/6:dpt5.001:DimmStatus:listenonly:nosuffix\
0/0/7:dpt7.600:TW:set:nosuffix\
0/0/8:dpt7.600:TWStatus:listenonly:nosuffix

attr Dimmer devStateIcon devStateIcon off:li_wht_off:on on:li_wht_on:off 0.*:li_wht_off:on \d+.*:li_wht_on:off

attr Dimmer eventMap {\
usr=>{\
'^dimup'   => '" . sprintf("Dimmen %d",minNum(100,  ReadingsNum($NAME,"Dimmen",0) + 10)) . "', \
'^dimdown' => '" . sprintf("Dimmen %d",maxNum(0,    ReadingsNum($NAME,"Dimmen",0) - 10)) . "',\
'^twup'    => '" . sprintf("TW %d",    minNum(10000,ReadingsNum($NAME,"TW",    0) + 100)) . "', \
'^twdown'  => '" . sprintf("TW %d",    maxNum(0,    ReadingsNum($NAME,"TW",    0) - 100)) . "'\
}, \
fw=>{\
'^dimup'=> 'dimup', '^dimdown'=> 'dimdown','^twup'=> 'TWup', '^twdown'=> 'TWdown'\
}\
}

attr Dimmer stateCmd { \
if ($gadName eq 'DimmStatus') \
{     \
fhem ("sleep 0.05 quiet;;setreading $name Dimmen $state;;");; \
}\
elsif ($gadName eq 'TWStatus') \
{   \
fhem ("sleep 0.05 quiet;;setreading $name TW $state;;");; \
}\
elsif ($gadName eq 'EinAus') \
{\
my $val = ($state eq 'on')?'100':'0';;\
fhem ("sleep 0.05 quiet;;setreading $name Dimmen $val;;");;\
}   \
return $state;;\
}

attr Dimmer webCmd :dimup:dimdown:TWup:TWdown:Dimmen

attr Dimmer widgetOverride Dimmen@set:slider,0,5,100 TW@set:slider,1000,100,10000



setstate Dimmer 2700 K
setstate Dimmer 2024-05-07 20:46:25 DimmStatus 100 %
setstate Dimmer 2024-05-07 20:46:25 Dimmen 100 %
setstate Dimmer 2024-05-07 20:08:39 EinAus on
setstate Dimmer 2024-05-07 20:23:51 IODev KNX.MDTRouter.IO
setstate Dimmer 2024-05-07 20:08:39 Status on
setstate Dimmer 2024-05-07 20:46:28 TW 2700 K
setstate Dimmer 2024-05-07 20:46:28 TWStatus 2700 K
setstate Dimmer 2024-05-07 20:46:28 last-sender 1.2.77
setstate Dimmer 2024-05-07 20:46:28 state 2700 K

Das ganze ist diesem Beispiel entnommen: https://wiki.fhem.de/wiki/KNX_Device_Definition_-_Beispiele#Dimmer
Und ich habe des ergänzt durch den Tuneable White Code. Die Steuerung der Farbtemperatur per Slider funktioniert wunderbar. 

ABER:

Die beiden Schaltflächen TWup und TWdown geben folgende Fehlermeldung raus: 
invalid cmd: "set Dimmer TWup EinAus off" - ignored


Was sich auch im LogFile wiederfindet: 
2024.05.07 21:22:36 2: Dimmer [KNX_Set_dpt1 1043]: invalid cmd: "set Dimmer TWup EinAus off" issued - ignored



Meine Vermutung ist, dass die Funktion ReadingsNum nicht auf den Wert im Reading TW zugreift. Daher dann einen falschen Wert liefert. Ist diese Annahme richtig? 
Kann mir hierfür jemand helfen?

Viele Grüße
Alex



Intel Nuc mit Proxmox — KNX

erwin

Hi Alex,
versuch mal in der eventmap
'^TWup'    => '" . sprintf("TW %d",    minNum(10000,ReadingsNum($NAME,"TW",    0) + 100)) . "',
'^TWdown'  => '" . sprintf("TW %d",    maxNum(0,    ReadingsNum($NAME,"TW",    0) - 100)) . "'
.. TWup statt twup .... ;D

respekt, coole implementation!

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

AlexSchei

Zitat von: erwin am 07 Mai 2024, 22:19:28TWup statt twup
Moin! 
Danke für den Tipp! Der war goldrichtig. 
Gruß
Alex
Intel Nuc mit Proxmox — KNX