NEWS
Sonos Lautstärke regeln
-
@mickym einen guten Abend :-). Ich würde noch einmal deine Untersützung bei diesem Thema benötigen. Ich habe jetzt ein Touch KNX Display und versuche gerade da die Lautstärke über den Slider zu regeln, leider krieg ich das nicht umgesetzt. Der Slider hat 1 byte für die Lautstärke, leider fehlt mir die Idee wie ich das an nodered übergebe um die Lautstörke zu erhöhen hast du da eine idee?
Viele Grüße
-
@saranger Nun mit einem Byte solltest Du ja dann Werte zwischen 0 und 255 bekommen. Ggf. installiere Dir mal die Buffer Node um das Byte zu isolieren. Das KNX solltest Du ja selbst über die Nodes reinbekommen.
https://flows.nodered.org/node/node-red-contrib-buffer-parser
ggf. musst halt den Output hier posten, damit man das mittels einer Inject node nachvollziehen kann.
-
@mickym ich nutze ja den von dir erstellten Code. 1 Byte habe ich schon versucht aber ich kann in knx ultimate nicht 1 byte auswählen. Die richtige Position wo ich die KNX Ga einfügen habe ich da leider auch noch nicht gefunden.
{ "id": "3b0bbffb2f1260a1", "type": "tab", "label": "SONOS Küche", "disabled": true, "info": "", "env": [] }, { "id": "eea2cc880eef7afd", "type": "knxUltimate", "z": "3b0bbffb2f1260a1", "server": "6fc013af.98132c", "topic": "9/1/1", "outputtopic": "", "dpt": "5.001", "initialread": 0, "notifyreadrequest": false, "notifyresponse": false, "notifywrite": true, "notifyreadrequestalsorespondtobus": false, "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0", "listenallga": false, "name": "E2 - Sonos - Lautstärke", "outputtype": "write", "outputRBE": true, "inputRBE": false, "formatmultiplyvalue": 1, "formatnegativevalue": "leave", "formatdecimalsvalue": 999, "passthrough": "no", "x": 220, "y": 300, "wires": [ [ "6eeb84cae72dc350", "8d821701704626ce" ] ] }, { "id": "721838a9e1face5f", "type": "ioBroker in", "z": "3b0bbffb2f1260a1", "name": "E2 - Sonos - Lautstärke", "topic": "sonos.0.root.192_168_2_163.volume", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 1460, "y": 400, "wires": [ [ "00949f1cd219d931", "7d2bbada5346609e" ] ] }, { "id": "ded6cd44f4941843", "type": "split", "z": "3b0bbffb2f1260a1", "name": "", "splt": "2", "spltType": "len", "arraySplt": 1, "arraySpltType": "len", "stream": true, "addname": "", "x": 690, "y": 400, "wires": [ [ "c5d56b5c7dad46e7" ] ] }, { "id": "8d821701704626ce", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "$string(payload)\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 530, "y": 400, "wires": [ [ "ded6cd44f4941843" ] ] }, { "id": "6eeb84cae72dc350", "type": "switch", "z": "3b0bbffb2f1260a1", "name": "lauter/leiser", "property": "payload", "propertyType": "msg", "rules": [ { "t": "eq", "v": "4", "vt": "num" }, { "t": "eq", "v": "0", "vt": "num" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 510, "y": 300, "wires": [ [ "b44e2b0a7f76c424" ], [ "3f86a5b4c6c3f4ab" ] ], "outputLabels": [ "lauter", "leiser" ] }, { "id": "b44e2b0a7f76c424", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "lauter", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 700, "y": 280, "wires": [ [ "74edfcad54dbab9b" ] ] }, { "id": "3f86a5b4c6c3f4ab", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "lauter", "pt": "msg", "to": "false", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 700, "y": 320, "wires": [ [ "74edfcad54dbab9b" ] ] }, { "id": "00949f1cd219d931", "type": "ui_slider", "z": "3b0bbffb2f1260a1", "name": "", "label": "Lautstärke", "tooltip": "", "group": "50c891e83acc4eec", "order": 0, "width": 0, "height": 0, "passthru": true, "outs": "end", "topic": "topic", "topicType": "msg", "min": "0", "max": "100", "step": 1, "className": "", "x": 1670, "y": 300, "wires": [ [ "0912ceb3f4b48077" ] ] }, { "id": "f80ff9f492d577e2", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "volume", "tot": "flow" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1190, "y": 300, "wires": [ [ "a7403b7aedd71329" ] ] }, { "id": "0912ceb3f4b48077", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "volume", "pt": "flow", "to": "payload", "tot": "msg" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1850, "y": 300, "wires": [ [ "9c4512b0d68be67a" ] ] }, { "id": "338764ad03d254b1", "type": "change", "z": "3b0bbffb2f1260a1", "name": "lauter", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload + 1", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1510, "y": 280, "wires": [ [ "00949f1cd219d931" ] ] }, { "id": "5799da8d3fce0518", "type": "change", "z": "3b0bbffb2f1260a1", "name": "leiser", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "payload - 1", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 1510, "y": 320, "wires": [ [ "00949f1cd219d931" ] ] }, { "id": "a7403b7aedd71329", "type": "switch", "z": "3b0bbffb2f1260a1", "name": "", "property": "lauter", "propertyType": "msg", "rules": [ { "t": "true" }, { "t": "false" } ], "checkall": "true", "repair": false, "outputs": 2, "x": 1370, "y": 300, "wires": [ [ "338764ad03d254b1" ], [ "5799da8d3fce0518" ] ], "outputLabels": [ "lauter", "leiser" ] }, { "id": "74edfcad54dbab9b", "type": "trigger", "z": "3b0bbffb2f1260a1", "name": "", "op1": "", "op2": "0", "op1type": "pay", "op2type": "str", "duration": "-250", "extend": false, "overrideDelay": false, "units": "ms", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 950, "y": 300, "wires": [ [ "f80ff9f492d577e2" ] ] }, { "id": "c5d56b5c7dad46e7", "type": "change", "z": "3b0bbffb2f1260a1", "name": "", "rules": [ { "t": "set", "p": "reset", "pt": "msg", "to": "true", "tot": "bool" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 840, "y": 400, "wires": [ [ "74edfcad54dbab9b" ] ] }, { "id": "4372a809cbc07d83", "type": "comment", "z": "3b0bbffb2f1260a1", "name": "E2 - Gästebad - Lautstärke", "info": "", "x": 210, "y": 220, "wires": [] }, { "id": "7d2bbada5346609e", "type": "knxUltimate", "z": "3b0bbffb2f1260a1", "server": "6fc013af.98132c", "topic": "9/1/4", "outputtopic": "", "dpt": "5.001", "initialread": 0, "notifyreadrequest": false, "notifyresponse": false, "notifywrite": true, "notifyreadrequestalsorespondtobus": false, "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0", "listenallga": false, "name": "E2 - Sonos - Lautstärke", "outputtype": "write", "outputRBE": false, "inputRBE": false, "formatmultiplyvalue": 1, "formatnegativevalue": "leave", "formatdecimalsvalue": 999, "passthrough": "no", "x": 1770, "y": 400, "wires": [ [] ] }, { "id": "bfb8a256784efcdd", "type": "knxUltimate", "z": "3b0bbffb2f1260a1", "server": "6fc013af.98132c", "topic": "9/1/9", "outputtopic": "", "dpt": "1.007", "initialread": 0, "notifyreadrequest": false, "notifyresponse": false, "notifywrite": true, "notifyreadrequestalsorespondtobus": false, "notifyreadrequestalsorespondtobusdefaultvalueifnotinitialized": "0", "listenallga": false, "name": "E2 - Sonos - Lautstärke", "outputtype": "write", "outputRBE": false, "inputRBE": false, "formatmultiplyvalue": 1, "formatnegativevalue": "leave", "formatdecimalsvalue": 999, "passthrough": "no", "x": 490, "y": 200, "wires": [ [ "6eeb84cae72dc350" ] ] }, { "id": "d899cfbe9785646c", "type": "buffer-array", "z": "3b0bbffb2f1260a1", "name": "", "bufferLen": 6, "startWhenFilled": false, "x": 850, "y": 200, "wires": [ [] ] }, { "id": "9c4512b0d68be67a", "type": "sonos-universal", "z": "3b0bbffb2f1260a1", "confignode": "7167978c626da90a", "command": "player.set.volume", "state": "", "stateType": "num", "avoidCheckPlayerAvailability": true, "name": "", "x": 2090, "y": 300, "wires": [ [] ] }, { "id": "6fc013af.98132c", "type": "knxUltimate-config", "host": "192.168.2.146", "port": "3671", "physAddr": "15.15.22", "suppressACKRequest": true, "csv": "", "KNXEthInterface": "Auto", "KNXEthInterfaceManuallyInput": "", "statusDisplayLastUpdate": true, "statusDisplayDeviceNameWhenALL": true, "statusDisplayDataPoint": false, "stopETSImportIfNoDatapoint": "stop", "loglevel": "error", "name": "Martins KNX", "localEchoInTunneling": true, "delaybetweentelegrams": "40", "delaybetweentelegramsfurtherdelayREAD": "1", "ignoreTelegramsWithRepeatedFlag": false, "keyringFileXML": "" }, { "id": "50c891e83acc4eec", "type": "ui_group", "name": "Musik", "tab": "416beacd.6a5714", "order": 5, "disp": true, "width": "6", "collapse": false, "className": "" }, { "id": "7167978c626da90a", "type": "sonos-config", "name": "Sonos - Gästebad", "serialnum": "38-42-0B-13-DF-EE:F", "ipaddress": "192.168.2.163" }, { "id": "416beacd.6a5714", "type": "ui_tab", "name": "Gästebad", "icon": "dashboard", "order": 8, "disabled": false, "hidden": false } ] code_text
-
@saranger Der Flow nützt mir nichts da ich kein KNX habe. Du sollst Dir die Buffer Node installieren, dann kannst Du das Byte isolieren und als separate Nachricht weiterverarbeiten. Sprich Du nimmst den output der knx ultimate und parsed bzw. zerlegst den output mit der buffer node.
Wie gesagt der Flow nutzt hier wenig, sondern poste lieber den output aus der knx node, wo das von Dir gesuchte Byte enthalten ist.
-
@mickym also ich habe die KNX Node so eingestellt, dass ein % Wert raus kommt zwischen 0-100 und das scheint immer in 5er Schritten zu springen. Sprich wenn ich die Lautstärke bei Sonos auf 50% setze würde und der Wert bei 50% steht kommt über das Plus Touch Symbol immer 5% dazu und bei minus entsprechend minus 5%. Es ist dementsprechend kein Stufenloser Slider sonder nur Buttons.
-
@mickym
hat sich erledigt funktioniert jetzt. Hab jetzt die KNX Ultimate vor den Nodered slider mit zusätzlich eingefügt und klappt. Warum das gestern nicht ging weis ich noch nicht so genau. -
@saranger das ist doch gut, wenn du Deine Probleme selbst lösen kannst. Manchmal waren es nur Kleinigkeiten. Also Glückwunsch und viel Spaß.
-
@mickym so jetzt muss ich doch noch einmal nachfragen, weil ich gerade noch einen weiteren Touchtaster teste und hier ist die Lautstärke wieder ganz anders. Bei lauter gibt der Taster ein True und bei leiser ein false. Jetzt hab ich das gerade mit einem Counter probiert aber das funktioniert leider noch nicht so wirklich. Hast du eine Idee wie ich das umsetzen kann, dass der bei lauter +4 und bei leiser -4 oder ähnliches ausführen kann?
-
@saranger Ja ich habe schon mal einen Taster implementiert, das ist zwar nicht easy. Wobei ich bei einem Taster ja solange in eine Richtung geschaltet haben möchte, wie ich gedrückt halte.
Ich muss mal schauen, ob ich den Flow noch finde - da ich den mal zum Lernen erstellt habe. Wenn es laut und leise mit true und false ist musst Du halt selbst überlegen, wie lange ein Touch gelten soll. Einen richtigen Taster habe ich mal mit VIS simuliert und damit einen Dimmer geregelt und ein- und ausgeschaltet. Das kannst ggf. ja mal anpassen. Brauchst vielleicht bisschen bis Du das verstehst.
Links siehst Du wie ich quasi mit der Maus den Taster bediene. Beim Drücken kommt true beim Loslassen ein false.
Rechts siehst Du immer den zugehörigen Zustand der Lampe. Das müsste sich auf Ein/Aus Laut und Leise genauso anpassen lassen:tasterimplementierung-dimmer-vis-nodered.mp4
Hier der zugehörige Flow - die Ein- und Ausgaben sind deaktiviert und musst halt durch Deine Nodes ggf. ersetzen. Wichtig ist die function Node mit der Du festlegst, ab wann ein Short- oder Longpress erkannt wird.
-
@mickym ja das gedrückt halten geht ja schon mit dem normalen Taster. Jetzt wäre es quasi pro Tastendruck ein True
-
@saranger Schau Dir mal den Flow an und das kleine Video.
-
@mickym ok das hab ich so verstanden das video aber das hilft mir ja glaube nicht. Also das ist ein Touchdisplay was ich habe und der hat einen Plus button für lauter und einen Minus Button für lauter. So wenn ich jetzt 3x auf den Plus button (das die KNX kommt über die KNX Node Lautstärke - Taster GVS)
drücke wäre es cool wenn die Lautstärke (pro Druck 5 Punkte) um 15 Punkte oder Prozent wie man es immer sehen mag lauter wird oder bei Minus entsprechend leiser wird. Mit dem Counter klappt das nicht richtig, ich habe da 3 stehen und dann gibt er immer erstmal die 3 aus und adiert erst beim nächsten Druck.
-
@saranger Also dann hilft Dir mein Flow gar nicht - da würde ich von neuem anfangen. Also vergiss den Flow.
Du brauchst halt dann wohl eine flow Variable, die Du halt initiieren musst. (ggf. datenpunkt mit IST-Lautstärke auslesen)Deinen Taster simulieren ich jetzt mit einem true für lauter oder false für leiser.
Wie Du die Flow-Variable initialisiert weiss ich nicht.
-
@mickym vielen Dank das passt die KNX Node sendet immer sobald man den Button benötigt :-).
Jetzt geht es auch mit dem Touch Display.