Hallo,
die Frage wurde wahrscheinlich schon öfters gestellt, aber ich werde nicht schlau aus den Antworten.
Ich möchte gerne die Lautstärke meines AVs über die Fernbedienung des Kodi verändern.
Daher habe ich mir ein notify definiert, dass auf Änderungen der Lautstärke des Kodi reagiert.
defmod notify_kodi_volume notify kodi:volume:.* IF ([Denon:zoneMain] eq "on" and [Denon:input] eq "Mediaplayer") (\
{Log 1, "kodi-Lautstärke, $NAME|$EVENT|"},\
set Denon volume [kodi:volume]\
)
Das funktioniert.
Allerdings möchte ich die Lautstärke nicht 1:1 ändern, sondern so: 30 + [kodi:volume]/5
Wenn ich nun z.B. schreibe "set Denon volume {30+[kodi:volume:d]/5} dann bekomme ich folgende Meldung im log:
2019.11.09 22:19:37.529 1: kodi-Lautstärke, kodi|volume: 85.00|
2019.11.09 22:19:37.531 1: PERL WARNING: Argument "{30+85.00}" isn't numeric in multiplication (*) at ./FHEM/70_DENON_AVR.pm line 2984.
Wie kann ich das lösen?
Danke im Voraus
lg, Gerhard
Hallo Gerhard,
so {(...)} klappt das. https://fhem.de/commandref_modular.html#set
Zitat{(perlExpression)} with the result of perlExpression.
Gruß Otto
Hallo Otto,
vielen Dank.
Ich habe das zwar vorher schon mehrmals durchgelesen, aber auf die zusätzliche umschließende "()" wäre ich nie und nimmer gekommen.
So klappt es also:
defmod notify_kodi_volume notify kodi:volume:.* IF ([Denon:zoneMain] eq "on" and [Denon:input] eq "Mediaplayer") (\
{Log 1, "kodi-Lautstärke, $NAME|$EVENT|"},\
set Denon volume {(30+[kodi:volume:d]/5)}\
)
Vielen Dank mal wieder
lg, Gerhard
Aus meinem "Hinterkopf": Die FHEM Kommandozeile und set magic haben gegenüber dem normalen Perl Code immer ein paar Besonderheiten. -> ;; {(...)} "$NAME"
;)