NEWS
Lautstärke regeln mit Blockly
-
Hallo iobroker Gemeinde
Kann mir jemand helfen, bin absoluter Neuling.
Ich habe folgende Frage:
habe mir eine VIS gebaut zur Steuerung meiner AV Anlage. Leider bekomme ich die Lautstärkeregelung meiner Sennheiser Soundbar nur so hin, dass ein Tastendruck die Lautstärke um den Wert 1 erhöht. Gibt es eine Möglichkeit das so anzupassen, dass die Lautstärke solange der Button gedrückt wird jeweils um 1 erhöht wird. Ich habe gehört, dass man ein Blockly erstellen kann, raffe das aber nicht, vielleicht hat jemand ein Beispiel wie sowas aussieht. Folgende Geräte setze ich ein:
Sennheiser Soundbar
Harmony Hub -
@robert-0 sagte: solange der Button gedrückt wird
Wie kann das Loslassen festgestellt werden?
-
Ich habe mir mal was ähnliches gebaut - und das ist schwer abzufangen wann es ein Tastendruck oder "wird gehalten" ist, denn dann musst du ja erst warten wie lange er drückt. Oder sofort Anfangen mit hochzählen, aber dann wird es schwer einen genauen Treffer zu bekommen bzw. die Lautstärke wirklich nur um z.B. 3 zu erhöhen.
Wie wäre es mit einer Serie an Buttons aka +1 +5 +10 (und dito für Minus)?
Kann du gezielt eine Laustärke setzen? oder nur erhöhen / reduzieren?
-
@bananajoe
Leider kann man keine Werte setzen, es geht nur um 1 höher. Die Idee AKA kenne ich nicht, ist das ein Button im VIS? -
@paul53 das denke ich könnte das Problem sein im Iobroker. Mit der Harmony APP funktioniert es aber, da gibt es ja auch nur jeweils eine Taste für up und down. Kann man evtl. im Iobroker den Buttontyp anpassen?
-
@robert-0 sagte: nur jeweils eine Taste für up und down.
Was man realisieren könnte: Mit einer "lauter"-Taste die Lautstärke-Erhöhung starten und mit "leiser"-Taste stoppen und umgekehrt.
-
@paul53 wie meinst du das?
-
@robert-0 sagte in Lautstärke regeln mit Blockly:
@bananajoe
Leider kann man keine Werte setzen, es geht nur um 1 höher. Die Idee AKA kenne ich nicht, ist das ein Button im VIS?aka = also known as (= „auch bekannt als“)
Du baust also einen Button der ein Skript (z.B. Blocky) triggert welches das 10 x lauter sendet
-
@bananajoe danke für das Feedback, das wäre aber die falsche Lösung. Ich frage mal Sennheiser ob die Soundbar nicht direkt via IP steuerbar ist, momentan ja nur via IR des Harmony Hubs.
-
@robert-0 Wenn müsstest Du ein Blockly basteln, dass parallel asynchron den Wert zyklisch erhöht - ich weiß nicht wie das geht. Ich habe sowas mal mit einem softwaremäßigen Dimmer implementiert für VIS - allerdings mit Node-Red - vielleicht kann @paul53 wie man sowas in java oder blockly macht.
Hier kann man das nachlesen: https://forum.iobroker.net/topic/40948/shelly-dimmer-datenpunkte-über-vis-steuern/3?_=1617647799844
und da ist auch kleines Video dabeiDas Einzige vis widget das ich soweit gefunden habe, dass man als Taster konfiguriert werden kann war das hier:
Das Icon kann man ja ändern. Dieses Widget kannst Du als Taster konfigurieren. Damit kannst Du dann sobald Du es drückst ein true erzeugen beim Loslassen ein false.
Während true ist muss Dein java oder blockly kontinuierlich die Lautstärke um 1 erhöhen bzw. erniedrigen.
Wie gesagt da kann ich Dir aber nicht helfen, das ich sowas nur in NodeRed implementiert habe. Aber anstelle eines Dimmers kann man sich natürlich auch einen Lautstärkeregler vorstellen.
Im NodeRed Dashboard habe ich auch so was reaslisiert - da man dort über HTML Events darauf reagieren kann.
Allerdings weiss ich nicht wie man in einem vis widget über HTML script einen Datenpunkt manipuliert:Also statt send - muss da halt irgendwas anderes hin.
<script> (function($scope) { $('.momentary_1').on('touchstart mousedown', function(e) { // e.preventDefault(); //prevent default behavior $scope.send({"payload": true}); }); $('.momentary_1').on('touchend mouseup', function(e) { // e.preventDefault(); //prevent default behavior $scope.send({"payload": false}); }); })(scope); </script>
Ich kann Dir trotzdem nur sagen, dass Du nicht die gleiche Performance hinbekommst, wie aus der Harmony App. Jede einzelne Tastendruck sendet einen Befehl an den Hub und arbeitet irgendwie anders als die Harmony App.
Alles was unter 500ms ist - landet in einer Queue und ist nicht mehr synchron mit dem Tastendruck. Das heißt Du drückst dann erhöht sich die Lautstärke lässt los und es wird weiter erhöht bis die Queue abgearbeitet ist.
-
-
@paul53 Ich weiß nicht ob Dein Blockly funktionieren würde - da bin ich nicht fit:
Ich habe das so realisiert:
Der trigger wird durch false beendet.
Innerhalb Deiner zyklischen Ausführung müsste diese gestoppt werden, wenn der gleiche Datenpunkt false wird. Sobald bei Dir ja die zyklische Ausführung gestartet ist - müsste innerhalb dieser ja die Datenpunktüberprüfung permanent erfolgen. Im Prinzip müsstest Du sowas wie dieser trigger Node in meinen Augen programmieren.So wie das bei Dir jetzt aussieht würde es immer lauter werden ohne dass das mit der Dauer des Tastendrucks korreliert - außerdem wie stoppst du die zyklische Ausführung durch die leiser Taste?
Also ich denke das geht nur asynchron zu lösen, indem irgendein Timer immer den Status eines Datenpunktes abfragt.
-
@paul53 das könnte funktionieren, ich versuche es morgen mal. Eine Frage habe ich dazu noch, was kommt bei default rein, sorry bin blutiger Anfänger
-
@paul53 habe nicht warten wollen, habe dein Blockly importiert, leider funktioniert es nur bedingt, sobald ich den Button lauter drücke geht eine Schleife los die nicht mehr zu stoppen ist. Ich muss den Script stoppen und den Harmony Hub reseten. Muss man evtl. noch was einabuen im Blockly?
-
@robert-0 sagte: sobald ich den Button lauter drücke geht eine Schleife los die nicht mehr zu stoppen ist.
Der Trigger-Datenpunkt muss ein virtueller Datenpunkt sein, der z.B. in Vis betätigt wird. Du hast zum Triggern den gleichen Datenpunkt verwendet, der die Lautstärke um 1 erhöht?
Ergänze bitte noch zwei Intervall-Stopps, damit mit Sicherheit nur ein Intervall läuft.
-
@robert-0 Wie gesagt Du siehst ja unter Deinen Objekten im Harmony Adapter schaust, dass Du keinen Zahlenwert addierst, sondern nur die Taste drückst:
Mit jedem Drücken (senden durch true) erhöhst Du genau um 1.
Der Harmony Hub speichert weder Zustände noch Werte sondern gibt IR einfach den Befehl weiter - deshalb hast Du hier nur Tastendrücke.
-
@paul53 danke für deine Antwort, leider habe ich es nicht hinbekommen einen virtuellen Datenpunkt zu erstellen. Kannst du mir helfen, wie muss ich den erfassen?
-
@robert-0 sagte: es nicht hinbekommen einen virtuellen Datenpunkt zu erstellen.
Tab "Objekte": "0_userdata.0" selektieren --> + (drittes Symbol von rechts) Datenpunkt Typ "Logikwert" mit Name "Soundbar.lauter" hinzufügen --> Rolle "button" eintragen
Ebenso für "leiser".
-
@paul53 danke für die Angaben, kannst du mir noch sagen mit was für einem Widget ich das am besten steuere. Momentan habe ich das hqwidget pool.button mal versucht. Sobald ich das wähle fährt die LS hoch bis ich den leiser Button drücke. Ich denke da müsste ein anderer Button eingesetzt werden.
-
@robert-0 sagte: mit was für einem Widget ich das am besten steuere.
Mit Vis kenne ich mich nicht aus.