NEWS
Mapping von Werten
-
Hallo zusammen,
ich nutze den Yamaha Adapter um das Heimkino zu steuern. Einzig mit der Lautstärkeregelung über Alexa gibt es Probleme, da Yamaha die Lautstärke nicht von 0 - X angibt, sondern ich glaube in dB.
Der geringste Wert (0%) ist -805
Der höchste Wert (100%) ist 165
Gibt es eine Möglichkeit diese Werte, ähnlich wie beim Arduino, zu mappen? Dort wäre der Code
map(val, -805, 165, 0, 100)
Ich hab zwar schon gegoogelt, aber so wie ich das verstehe, ist die javascript Version von Map etwas anderes.
Dennoch hab ich mir dieses hier zusammengestrickt:
setState("javascript.0.scriptEnabled.Eigene.Test.Lautstaerke", map("yamaha.0.volume"/*Volume*/,-805,165,0,100));
Dort erhalte ich aber die Fehler hier:
! ````
javascript.0
2018-11-13 15:34:55.270
info
Stop script script.js.Eigene.Test.Skript2
javascript.0
2018-11-13 15:34:52.896
error
at ContextifyScript.Script.runInContext (vm.js:59:29)
javascript.0
2018-11-13 15:34:52.896
error
at script.js.Eigene.Test.Skript2:1:1
javascript.0
2018-11-13 15:34:52.896
error
ReferenceError: map is not defined
javascript.0
2018-11-13 15:34:52.896
error
^
javascript.0
2018-11-13 15:34:52.896
error
setState("javascript.0.scriptEnabled.Eigene.Test.Lautstaerke", map("yamaha.0.volume"/Volume/,-805,165,0,100));
javascript.0
2018-11-13 15:34:52.896
error
script.js.Eigene.Test.Skript2: script.js.Eigene.Test.Skript2:1
javascript.0
2018-11-13 15:34:52.896
info
Start javascript script.js.Eigene.Test.Skript2Ich danke euch für eure Hilfe :)
-
@DKM:Hallo zusammen,
Ich hab zwar schon gegoogelt, aber so wie ich das verstehe, ist die javascript Version von Map etwas anderes. `
Ja in JS ist das was komplett anderes.
Du müsstest dir eine skalierbare Funktion erstellen.
-
Ok… Kannst du mir erklären was das ist und wie ich das erstelle? Links reichen auch:)
Gesendet von meinem SM-G960F mit Tapatalk
-
Vielleicht hilft dir das weiter.
-
Vorschlag:
on("yamaha.0.volume", function(dp) { var vol = dp.state.val; setState("javascript.0.scriptEnabled.Eigene.Test.Lautstaerke", 100 * (vol + 805) / 970, true); });
-
Vorschlag:
on("yamaha.0.volume", function(dp) { var vol = dp.state.val; setState("javascript.0.scriptEnabled.Eigene.Test.Lautstaerke", 100 * (vol + 805) / 970, true); }); ```` `
Danke, dass hat mir weitergeholfen…. Irgendwie kam ich nicht drauf, dass es auch mit "einfacher" Mathematik zu machen ist. Ich hab es nur umgedreht, da ich mit dem DP Lautstärke das Heimkino ändern will - und Lautstärke durch Alexa gesteuert werden soll.
on("javascript.0.scriptEnabled.Eigene.Test.Lautstaerke", function(dp) { var vol = dp.state.val; setState("yamaha.0.volume", (vol * 970 / 100) - 805, true); });
Vielleicht hilft dir das weiter.
Das werde ich mir aber auf alle Fälle auch anschauen
Ich danke euch beiden für die schnelle Hilfe!
-
@DKM:Hallo zusammen,
ich nutze den Yamaha Adapter um das Heimkino zu steuern. Einzig mit der Lautstärkeregelung über Alexa gibt es Probleme, da Yamaha die Lautstärke nicht von 0 - X angibt, sondern ich glaube in dB.
Der geringste Wert (0%) ist -805
Der höchste Wert (100%) ist 165 `
Ich nutze auch den Yamaha Adapter, da habe ich aber bei meinem Receiver die db-Werte -80.5 und 16.5 als geringsten und höchsten Wert.
Gruß
Volker
-
Ja, ich hab da schon gelesen, dass die Werte je nach Yamaha Gerät anders dargestellt werden. In den Optionen kann ich bei mir aber zu mindestens die Anzeigeart auf dem Gerät auf % ändern. Wobei dort das maximum dann 97,5 % ist.
Begründet ist das wohl damit, dass Yamaha aus dem Musikbereich kommt und das dort eher mit dB geregelt wird.