Hallo Zusammen,
ich suche eigentlich eine Möglichkeit ein einzelnes Reading als separates Gerät zu extrahieren um dieses z.B. im Floorplan anzuzeigen.
Ich habe ein Gerät Denon vom Typ DENON_AVR_ZONE eigentlich auch egal.
Bei dem Gerät kann ich volume setzen.
Nicht an pct stören, ist für Homebridge.
Um jetzt in meinem Floorplan einen schicken Regler anzeigen zu können habe ich mir ein gerät Denon_Esszimmer_volume angelegt
define Denon_Esszimmer_volume dummy
attr Denon_Esszimmer_volume genericDeviceType blind
attr Denon_Esszimmer_volume setList on off volume:slider,0,2,100 pct
attr Denon_Esszimmer_volume webCmd volume
Der Regler geht per Notify auf das volume vom Denon
define n_Denon_Esszimmer_volume notify Denon_Esszimmer_volume:volume:.* {}
my $volume = 9;
Log 3, "$NAME: $EVENT \"$EVTPART1\"";
if ($EVTPART0 eq "volume:"){
if (IsNumeric($EVTPART1)){
if ($EVTPART1 > 70){
$volume = 70;
}else{
$volume = $EVTPART1;
}
}elsif ($EVTPART1 eq "open"){
$volume = 70;
}elsif ($EVTPART1 eq "closed"){
$volume = 0;
}
fhem("set Denon_Zone_2 volume $volume");
fhem("setReading $NAME pct $volume");
}
}
und natürlich anders rum um den Stand des Schiebers anzuzeigen:
define n_Denon_Zone_2 notify Denon_Zone_2.power:.* {}
Denon_Zone_2.volume:.* {
if ($EVTPART0 eq "volume:"){
Log 3, "Denon_Zone_2 $EVENT";
fhem("setReading Denon_Esszimmer_volume volume $EVTPART1");
}
}
Geht das einfacher?
Außerdem das Problem das alles Doppelt reagiert, setze ich volume direkt im Denon, oder per Fernbedieurng etc:
2019.02.11 15:21:49 3: Denon_Zone_2 volume: 20
2019.02.11 15:21:49 3: Denon_Esszimmer_volume: volume: 20 "20"
2019.02.11 15:21:49 3: set Denon_Zone_2 volume 20
2019.02.11 15:21:49 3: Denon_Zone_2 volume: 20
2019.02.11 15:21:49 3: Denon_Esszimmer_volume: volume: 20 "20"
2019.02.11 15:21:49 3: set Denon_Zone_2 volume 20
gibt es etwas um das notify nur auf Webeingaben hören zu lassen? also nur wenn der Schieber bewegt wird?
Ähnlich, aber mit nur einem Reading: ReadingsProxy. Sonst: ReadingsGroup (weiß aber nicht, ob sich das im Floorplan anzeigen läßt, glaube aber schon).
Danke schon mal, ein super Tip!
Das Problem ist jetzt aber noch die richtige Übersetzung.
Bei einem Schiebregler auf state, da passt der Status, es steht immer die Lautstärke vom Denon im Regler, aber ein verändern versucht ein "set Denon 22", es fehlt das volume.
Setze ich den Schiebregler auf volume, also:
setList volume:slider,0,2,100
webCmd volume
dann bekomme ich die Veränderung vom Denon nicht im Regler angezeigt.
Einer ne Idee? ???
Internals:
CFGFN
DEF Denon_Zone_2:volume
DEVICE Denon_Zone_2
NAME rp_Denon_Esszimmer_volume
NOTIFYDEV Denon_Zone_2,global
NR 932579
NTFY_ORDER 50-rp_Denon_Esszimmer_volume
READING volume
STATE 19
TYPE readingsProxy
CONTENT:
Denon_Zone_2 1
READINGS:
2019-02-12 07:51:03 lastCmd state
2019-02-12 07:50:36 state 19
Attributes:
setList state:slider,0,2,100
webCmd state
Hmm, hast du mal ein list vom Denon?
Vermute mal, dass es da kein Reading mit volume gibt? Wenn nein: das sollte es geben...
Ansonsten könntest du auch die setFn nutzen. Könnte dann mit "volume $CMD" klappen.
klappt leider nicht
Internals:
CHANGED
DEF 2
Denon_MSGCNT 2222
Denon_TIME 2019-02-12 08:17:17
IODev Denon
LASTInputDev Denon
MSGCNT 2222
NAME Denon_Zone_2
NR 341
STATE off
TYPE DENON_AVR_ZONE
ZONE 2
READINGS:
2018-11-02 17:46:03 autoStandby off
2018-11-02 17:44:31 channelSetting mono
2019-02-06 22:59:49 input OnlineMusic
2018-11-02 17:44:31 level 0 dB
2018-12-26 12:24:45 mute off
2019-02-12 08:17:17 power off
2019-02-12 08:17:17 presence present
2019-02-12 05:35:03 quickselect 1
2019-02-12 08:17:17 state off
2019-02-12 08:17:17 stateAV off
2019-02-12 08:15:52 volume 18
2019-02-12 08:15:52 volumeStraight -62
Attributes:
IODev Denon
T2F_rooms !Esszimmer, Erdgeschoss, Haus
T2F_types_blind !Lautstärke, Musik, Anlage
T2F_types_switch !Denon, Anlage, Verstärker, Musik, Zone, alles
alias Denon Esszimmer
cmdIcon muteT:rc_MUTE
devStateIcon on:rc_GREEN:off off:rc_STOP:on absent:rc_RED muted:rc_MUTE@green:muteT
group Multimedia
room Esszimmer,Wohnzimmer
snipsMapping 1
stateFormat stateAV
userattr T2F_places:textField-long T2F_properties:textField-long T2F_rooms:textField-long T2F_types_color:textField-long T2F_types_heating:textField-long T2F_types_info:textField-long T2F_types_switch:textField-long T2F_types_blind:textField-long
webCmd volume:muteT:input
mit setFn volume $CMD
Unknown argument 20, choose one of on off toggle volumeDown volumeUp volumeStraight:slider,-80,1,18 volume:slider,0,1,98 mute:on,off,toggle muteT sleep:off,10min,15min,20min,30min,40min,50min,60min,70min,80min,90min,100min,110min,120min autoStandby:off,2h,4h,8h channelSetting:stereo,mono highPassFilter:on,off favorite:1,2,3,4 quickselect:1,2,3,4,5 input:Aux1,Aux2,Aux3,Aux4,Aux5,Aux6,Aux7,Blu-Ray,Bluetooth,CD,Cbl/Sat,DVD,Favorites,Favorites_play,Flickr,Game,HDRadio,LastFM,Mediaplayer,OnlineMusic,Pandora,Phono,Server,SiriusXM,Source,Spotify,TV,Tuner,Usb/iPod,Usb_play,iPod_play,iRadio,iRadio_play remoteControl:down,up rawCommand
ahhh, soo gehts setFn {fhem("set $DEVICE volume $CMD")}
Du hattest dazu den Schieberegler auf state definiert?
Auch mal getestet, ob es mit Anführungszeichen drumrum besser ist?
Evtl. mußt du da etwas rumspielen und auch im Event-Monitor nachsehen, was da wie wohin geht, ich habe dafür auch keine fertige Lösung, aber weit weg von dem, was wir haben, kann es eigentlich nicht sein.