[ { "id": "23b00a46.e5956e", "type": "better-sonos-status", "z": "61aa0dc9.a3e6bc", "confignode": "3b73355d.73ea9a", "name": "", "x": 362.5, "y": 147, "wires": [ [ "908e820a.9ada78", "463b8d88.878fec", "8c996697.e2d03" ] ] }, { "id": "cc27f4d7.832338", "type": "inject", "z": "61aa0dc9.a3e6bc", "name": "", "topic": "", "payload": "", "payloadType": "date", "repeat": "5", "crontab": "", "once": true, "onceDelay": "1", "x": 141.5, "y": 148, "wires": [ [ "23b00a46.e5956e" ] ] }, { "id": "69968bab.a91b54", "type": "better-sonos-control", "z": "61aa0dc9.a3e6bc", "confignode": "3b73355d.73ea9a", "name": "Control Sonos", "mode": "", "track": "", "volume": "empty", "volume_value": "", "x": 848, "y": 348, "wires": [] }, { "id": "908e820a.9ada78", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Playback state", "func": "var sonosPlayback = flow.get('sonosPlayback')||'';\nif (sonosPlayback !== msg.state) {\n flow.set('sonosPlayback', msg.state);\n if (msg.state == 'playing') {\n return {payload: 1};\n } else {\n return {payload: 0};\n }\n}", "outputs": 1, "noerr": 0, "x": 551.5, "y": 289, "wires": [ [ "38c63811.35ab08" ] ] }, { "id": "18cf89b1.e25986", "type": "loxone-control-in", "z": "61aa0dc9.a3e6bc", "name": "Sonos Play/Pause Virtual Input", "miniserver": "9504d2b0.e13108", "control": "11ca5fc3-02a0-1df4-ffff483ca29e53a4", "state": "11ca5fc3-02a0-1df4-ffff483ca29e53a4", "x": 197.5, "y": 348, "wires": [ [ "5b8b2331.13ff64" ] ] }, { "id": "5b8b2331.13ff64", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Play/Pause", "func": "if (msg.payload) {\n flow.set('sonosNowPlaying', 'playing');\n msg.payload = 'play';\n} else {\n flow.set('sonosNowPlaying', 'paused');\n msg.payload = 'pause';\n}\nreturn msg;", "outputs": 1, "noerr": 0, "x": 477.5, "y": 347, "wires": [ [ "69968bab.a91b54" ] ] }, { "id": "38c63811.35ab08", "type": "loxone-control-out", "z": "61aa0dc9.a3e6bc", "name": "Sonos Play state", "miniserver": "9504d2b0.e13108", "control": "11ca5fc3-02a0-1df4-ffff483ca29e53a4", "x": 758.5, "y": 289, "wires": [] }, { "id": "be887758.d95f2", "type": "loxone-control-in", "z": "61aa0dc9.a3e6bc", "name": "Sonos Volume", "miniserver": "9504d2b0.e13108", "control": "11ca5f8e-010a-77ed-ffff483ca29e53a4", "state": "11ca5f8e-010a-77ed-ffff483ca29e53a4", "x": 136.5, "y": 407, "wires": [ [ "17fb45e7.1990fa" ] ] }, { "id": "17fb45e7.1990fa", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Save volume (max 75%)", "func": "if (msg.payload > 75) {\n msg.payload = 75\n} else if (msg.payload === 0) {\n msg.payload = '0';\n}\nflow.set('sonosVolume', msg.payload);\nreturn msg;", "outputs": 1, "noerr": 0, "x": 441.5, "y": 408, "wires": [ [ "69968bab.a91b54" ] ] }, { "id": "463b8d88.878fec", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Volume", "func": "var sonosVolume = flow.get('sonosVolume')||0;\nif (sonosVolume !== msg.volume) {\n flow.set('sonosVolume', msg.volume);\n msg.payload = msg.volume;\n return msg;\n}", "outputs": 1, "noerr": 0, "x": 556.5, "y": 230, "wires": [ [ "8f10e052.af4698" ] ] }, { "id": "8f10e052.af4698", "type": "loxone-control-out", "z": "61aa0dc9.a3e6bc", "name": "Sonos Volume", "miniserver": "9504d2b0.e13108", "control": "11ca5f8e-010a-77ed-ffff483ca29e53a4", "x": 747.5, "y": 230, "wires": [] }, { "id": "e752b36b.aebbe8", "type": "link in", "z": "61aa0dc9.a3e6bc", "name": "Loxone UDP", "links": [ "342cd251.a492a6" ], "x": 194.5, "y": 481, "wires": [ [ "760a6df0.6142e4" ] ] }, { "id": "760a6df0.6142e4", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Prev/Next, Stop All", "func": "var send = false;\nif (msg.payload == 'SonosTrackPrev') {\n msg.payload = 'previous';\n send = true;\n} else if (msg.payload == 'SonosTrackNext') {\n msg.payload = 'next';\n send = true;\n} else if (msg.payload == 'SonosStopAll') {\n msg.payload = 'pause';\n send = true;\n}\n\nif (send) {\n return msg;\n}", "outputs": 1, "noerr": 0, "x": 419.5, "y": 480, "wires": [ [ "69968bab.a91b54" ] ] }, { "id": "8c996697.e2d03", "type": "function", "z": "61aa0dc9.a3e6bc", "name": "Now Playing", "func": "var sonosNowPlaying = flow.get('sonosNowPlaying')||'';\nvar parts = [];\nif (msg.track.artist !== '') {\n parts.push(msg.track.artist);\n}\nif (msg.track.title !== '') {\n parts.push(msg.track.title);\n}\nif (parts.length > 0) {\n var output = parts.join(' - ');\n if (output !== sonosNowPlaying) {\n flow.set('sonosNowPlaying', output);\n msg.payload = output;\n return msg;\n }\n}", "outputs": 1, "noerr": 0, "x": 575.5, "y": 79, "wires": [ [ "f6f4794d.d043e" ] ] }, { "id": "f6f4794d.d043e", "type": "loxone-webservice", "z": "61aa0dc9.a3e6bc", "name": "Set Now Playing", "miniserver": "9504d2b0.e13108", "uri": "jdev/sps/io/SonosNowPlaying/", "appendpayload": true, "x": 776.5, "y": 79, "wires": [ [] ] }, { "id": "3b73355d.73ea9a", "type": "better-sonos-config", "z": "", "name": "Living Room", "serialnum": "B8-E9-37-89-2D-C4:8", "ipaddress": "" }, { "id": "9504d2b0.e13108", "type": "loxone-miniserver", "z": "", "host": "192.168.100.10", "port": "18856", "enctype": "0", "active": true } ]