diff --git a/flows.json b/flows.json index b651b7d..02c0cad 100644 --- a/flows.json +++ b/flows.json @@ -1,12 +1,4 @@ [ - { - "id": "f02b32ef07b4b378", - "type": "tab", - "label": "Home Audio", - "disabled": false, - "info": "", - "env": [] - }, { "id": "da896085.24c698", "type": "tab", @@ -1708,2219 +1700,6 @@ "x": 520, "y": 100 }, - { - "id": "bc24bd25f183a7ac", - "type": "inject", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "3b572aa5a025838b" - ] - ], - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "", - "payloadType": "date", - "x": 140, - "y": 1760 - }, - { - "id": "3b572aa5a025838b", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Join media players", - "wires": [ - [ - "ed251e315e4c2c9f" - ] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.join", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "media_player.bathroom" - ], - "labelId": [], - "data": "{\"group_members\":[\"media_player.kitchen\",\"media_player.bedroom\"]}", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "join", - "x": 370, - "y": 1760 - }, - { - "id": "ed251e315e4c2c9f", - "type": "debug", - "z": "f02b32ef07b4b378", - "name": "debug 8", - "wires": [], - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 660, - "y": 1760 - }, - { - "id": "7ad8e1f3e2e0968a", - "type": "inject", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "b298882274d1cdf3" - ] - ], - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "", - "payloadType": "date", - "x": 140, - "y": 1840 - }, - { - "id": "b298882274d1cdf3", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Unjoin media players", - "wires": [ - [ - "bdd2b9572315b352" - ] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.unjoin", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "media_player.bathroom", - "media_player.bedroom", - "media_player.kitchen" - ], - "labelId": [], - "data": "", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "unjoin", - "x": 380, - "y": 1840 - }, - { - "id": "bdd2b9572315b352", - "type": "debug", - "z": "f02b32ef07b4b378", - "name": "debug 9", - "wires": [], - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 660, - "y": 1840 - }, - { - "id": "a17410f072874366", - "type": "inject", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "d94c32c408534cea" - ] - ], - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "true", - "payloadType": "bool", - "x": 130, - "y": 1960 - }, - { - "id": "d94c32c408534cea", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Unmute/Mute media players", - "wires": [ - [ - "c262b732d4b31093" - ] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.volume_mute", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "media_player.bathroom", - "media_player.bedroom", - "media_player.kitchen" - ], - "labelId": [], - "data": "{\"is_volume_muted\": {{{payload}}} }", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "volume_mute", - "x": 400, - "y": 1960 - }, - { - "id": "c262b732d4b31093", - "type": "debug", - "z": "f02b32ef07b4b378", - "name": "debug 10", - "wires": [], - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 660, - "y": 1960 - }, - { - "id": "023b11d63a8f319c", - "type": "inject", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "d94c32c408534cea" - ] - ], - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "false", - "payloadType": "bool", - "x": 130, - "y": 2020 - }, - { - "id": "947aef7d0b37c64e", - "type": "inject", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "b14ca76bd3f6d739" - ] - ], - "props": [ - { - "p": "payload" - }, - { - "p": "topic", - "vt": "str" - } - ], - "repeat": "", - "crontab": "", - "once": false, - "onceDelay": 0.1, - "topic": "", - "payload": "true", - "payloadType": "bool", - "x": 130, - "y": 2100 - }, - { - "id": "b14ca76bd3f6d739", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Set volume to 20", - "wires": [ - [ - "7ff52464dc77aa88" - ] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.volume_set", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "media_player.bathroom", - "media_player.bedroom", - "media_player.kitchen" - ], - "labelId": [], - "data": "{\"volume_level\": 0.2 }", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "volume_set", - "x": 370, - "y": 2100 - }, - { - "id": "7ff52464dc77aa88", - "type": "debug", - "z": "f02b32ef07b4b378", - "name": "debug 12", - "wires": [], - "active": true, - "tosidebar": true, - "console": false, - "tostatus": false, - "complete": "false", - "statusVal": "", - "statusType": "auto", - "x": 660, - "y": 2100 - }, - { - "id": "b35f9365319a9bd4", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Kitchen motion sensor", - "wires": [ - [], - [] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 2, - "exposeAsEntityConfig": "62ed34c9191cebca", - "entities": { - "entity": [ - "binary_sensor.kitchen_motion_sensor_occupancy" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "on", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": true, - "ignoreCurrentStateUnavailable": true, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 560 - }, - { - "id": "643f64eeb88d0dc2", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Bedroom motion sensor", - "wires": [ - [], - [] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 2, - "exposeAsEntityConfig": "62ed34c9191cebca", - "entities": { - "entity": [ - "binary_sensor.bedroom_motion_sensor_occupancy" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "on", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": true, - "ignoreCurrentStateUnavailable": true, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 620 - }, - { - "id": "b613959939f3fdb7", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Kitchen motion sensor", - "wires": [ - [], - [] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 2, - "exposeAsEntityConfig": "62ed34c9191cebca", - "entities": { - "entity": [ - "binary_sensor.kitchen_motion_sensor_occupancy" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "on", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": true, - "ignoreCurrentStateUnavailable": true, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 680 - }, - { - "id": "b57cf93b3481bb17", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Speaker config buttons", - "wires": [], - "info": "", - "x": 140, - "y": 80 - }, - { - "id": "73bf252f2983ae0c", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Mute Speakers", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": true, - "action": "media_player.volume_mute", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "{{ mute }}" - ], - "labelId": [], - "data": "{\"is_volume_muted\":true}", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "volume_mute", - "x": 800, - "y": 200 - }, - { - "id": "e8d4582f1a35b5fe", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Umute Speakers", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.volume_mute", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [ - "{{ unmute }}" - ], - "labelId": [], - "data": "{\"is_volume_muted\": false }", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "volume_mute", - "x": 810, - "y": 240 - }, - { - "id": "9c40d4014ed62a08", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Kitchen audio config", - "wires": [ - [ - "73bf252f2983ae0c", - "e8d4582f1a35b5fe" - ] - ], - "rules": [ - { - "t": "set", - "p": "unmute", - "pt": "msg", - "to": "media_player.kitchen", - "tot": "str" - }, - { - "t": "set", - "p": "mute", - "pt": "msg", - "to": "media_player.bedroom, media_player.bathroom, media_player.home_theater_universal", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 420, - "y": 120 - }, - { - "id": "4a3201a1c23eb1bd", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Bedroom audio config", - "wires": [ - [ - "73bf252f2983ae0c", - "e8d4582f1a35b5fe" - ] - ], - "rules": [ - { - "t": "set", - "p": "unmute", - "pt": "msg", - "to": "media_player.bedroom", - "tot": "str" - }, - { - "t": "set", - "p": "mute", - "pt": "msg", - "to": "media_player.bathroom, media_player.kitchen, media_player.home_theater_universal", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 420, - "y": 180 - }, - { - "id": "ab34bd65550a49eb", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Bathroom audio config", - "wires": [ - [ - "73bf252f2983ae0c", - "e8d4582f1a35b5fe" - ] - ], - "rules": [ - { - "t": "set", - "p": "unmute", - "pt": "msg", - "to": "media_player.bathroom", - "tot": "str" - }, - { - "t": "set", - "p": "mute", - "pt": "msg", - "to": "media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 420, - "y": 240 - }, - { - "id": "1ce85c93fddec1ed", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "All speaker unmute config", - "wires": [ - [ - "e8d4582f1a35b5fe" - ] - ], - "rules": [ - { - "t": "set", - "p": "unmute", - "pt": "msg", - "to": "media_player.bathroom, media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 430, - "y": 380 - }, - { - "id": "ed546967f38f4321", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "All speaker mute config", - "wires": [ - [ - "73bf252f2983ae0c" - ] - ], - "rules": [ - { - "t": "set", - "p": "mute", - "pt": "msg", - "to": "media_player.bathroom, media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 430, - "y": 440 - }, - { - "id": "4e372d2ae02e476f", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Kitchen audio button", - "wires": [ - [ - "9c40d4014ed62a08" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.kitchen_only_audio" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 130, - "y": 120 - }, - { - "id": "7e30cae17b6f1147", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Bedroom audio button", - "wires": [ - [ - "4a3201a1c23eb1bd" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.bedroom_only_audio" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 180 - }, - { - "id": "7087100e45352fd6", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Bathroom audio button", - "wires": [ - [ - "ab34bd65550a49eb" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.bathroom_only_audio" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 240 - }, - { - "id": "1e1bbdf54bcc0e71", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "All speakers unmute button", - "wires": [ - [ - "1ce85c93fddec1ed" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.unmute_all_speakers" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 150, - "y": 380 - }, - { - "id": "0dada2e07914212e", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "All speakers mute button", - "wires": [ - [ - "ed546967f38f4321" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.mute_all_speakers" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 150, - "y": 440 - }, - { - "id": "83cfde5f5f29bfee", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Audio Follow system", - "wires": [], - "info": "", - "x": 130, - "y": 520 - }, - { - "id": "d6a335eabf0309af", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Speaker time out", - "wires": [], - "info": "", - "x": 120, - "y": 820 - }, - { - "id": "8d0c16fdcaa044c5", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Music fade out button", - "wires": [ - [ - "5a53dda5700dcbd4" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.music_fade_out" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 860 - }, - { - "id": "487f7f9cb870301d", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Set bedroom volume", - "wires": [ - [ - "470f04a1f67ed2c5" - ] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.volume_set", - "floorId": [], - "areaId": [ - "7047cdd7d50e49f980eba16f832acb57" - ], - "deviceId": [], - "entityId": [], - "labelId": [], - "data": "{ \"volume_level\" : {{ payload }} }", - "dataType": "json", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "volume_set", - "x": 1700, - "y": 1020 - }, - { - "id": "099e68b4526af252", - "type": "easing", - "z": "f02b32ef07b4b378", - "name": "Calculate fade in volume", - "wires": [ - [ - "148bfd7bfd19a3f2" - ] - ], - "easingType": "linear", - "outputType": "overTime", - "duration": "30000", - "interval": "2000", - "numberOfValues": 10, - "x": 1710, - "y": 880 - }, - { - "id": "465266c8ebc87190", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set volume parameters", - "wires": [ - [ - "099e68b4526af252" - ] - ], - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "{\"from\": $number(payload), \"to\": 0, \"size\": 0.01}", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 1710, - "y": 820 - }, - { - "id": "148bfd7bfd19a3f2", - "type": "calculator", - "z": "f02b32ef07b4b378", - "name": "Round to max 2 decimals", - "wires": [ - [ - "487f7f9cb870301d" - ] - ], - "inputMsgField": "payload", - "outputMsgField": "payload", - "operation": "rdec", - "constant": "2", - "round": false, - "truncate": false, - "decimals": "0", - "decimals2": 0, - "x": 1710, - "y": 940 - }, - { - "id": "5a53dda5700dcbd4", - "type": "trigger", - "z": "f02b32ef07b4b378", - "name": "20min trigger to start fade out", - "wires": [ - [ - "64d51f4ce06f71bb" - ] - ], - "op1": "", - "op2": "off", - "op1type": "nul", - "op2type": "str", - "duration": "20", - "extend": false, - "overrideDelay": false, - "units": "min", - "reset": "on", - "bytopic": "all", - "topic": "topic", - "outputs": 1, - "x": 480, - "y": 860 - }, - { - "id": "243eaae96c3615b7", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Music cancel fade out button", - "wires": [ - [ - "5a53dda5700dcbd4" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.music_cancel_fade_out" - ], - "substring": [], - "regex": [] - }, - "outputInitially": true, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "reset", - "propertyType": "msg", - "value": "true", - "valueType": "bool" - } - ], - "x": 160, - "y": 920 - }, - { - "id": "658612bb048cebd0", - "type": "api-current-state", - "z": "f02b32ef07b4b378", - "name": "Get bedroom volume", - "wires": [ - [ - "9df152f9e9ea7a00" - ], - [ - "2c391596726d163a" - ] - ], - "server": "657c7463.48e1e4", - "version": 3, - "outputs": 2, - "halt_if": "playing", - "halt_if_type": "str", - "halt_if_compare": "is", - "entity_id": "media_player.bedroom", - "state_type": "str", - "blockInputOverrides": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "entity" - } - ], - "for": "0", - "forType": "num", - "forUnits": "minutes", - "override_topic": false, - "state_location": "payload", - "override_payload": "msg", - "entity_location": "data", - "override_data": "msg", - "x": 740, - "y": 860 - }, - { - "id": "eee9cae5a34371af", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set default volume", - "wires": [ - [ - "465266c8ebc87190" - ] - ], - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "0.2", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 1350, - "y": 860 - }, - { - "id": "2c391596726d163a", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Stop media players", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.media_stop", - "floorId": [], - "areaId": [ - "f7affcd2d1854f58b829a3d1f67684e9", - "7047cdd7d50e49f980eba16f832acb57", - "58b6232129db4aa396355dcff5edc036", - "9fb80339d4ee49f098decfafad38ab78" - ], - "deviceId": [], - "entityId": [], - "labelId": [], - "data": "", - "dataType": "jsonata", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "media_stop", - "x": 1690, - "y": 1180 - }, - { - "id": "470f04a1f67ed2c5", - "type": "switch", - "z": "f02b32ef07b4b378", - "name": "Volume all the way down?", - "wires": [ - [ - "2c391596726d163a" - ] - ], - "property": "payload", - "propertyType": "msg", - "rules": [ - { - "t": "eq", - "v": "0", - "vt": "num" - } - ], - "checkall": "true", - "repair": false, - "outputs": 1, - "x": 1710, - "y": 1100 - }, - { - "id": "32128a2d9466c2a5", - "type": "switch", - "z": "f02b32ef07b4b378", - "name": "Volume is numeric?", - "wires": [ - [ - "465266c8ebc87190" - ], - [ - "eee9cae5a34371af" - ] - ], - "property": "payload", - "propertyType": "msg", - "rules": [ - { - "t": "istype", - "v": "number", - "vt": "number" - }, - { - "t": "else" - } - ], - "checkall": "false", - "repair": false, - "outputs": 2, - "x": 1350, - "y": 800 - }, - { - "id": "9df152f9e9ea7a00", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set volume from speaker", - "wires": [ - [ - "32128a2d9466c2a5" - ] - ], - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "data.attributes.volume_level", - "tot": "msg" - }, - { - "t": "delete", - "p": "data", - "pt": "msg" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 1030, - "y": 860 - }, - { - "id": "64d51f4ce06f71bb", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Stop media players", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.media_stop", - "floorId": [], - "areaId": [ - "f7affcd2d1854f58b829a3d1f67684e9", - "7047cdd7d50e49f980eba16f832acb57", - "58b6232129db4aa396355dcff5edc036", - "9fb80339d4ee49f098decfafad38ab78" - ], - "deviceId": [], - "entityId": [], - "labelId": [], - "data": "", - "dataType": "jsonata", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": false, - "domain": "media_player", - "service": "media_stop", - "x": 730, - "y": 920 - }, - { - "id": "7537b14f401fe338", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Disabled fade out flow (breaks HEOS + spotify)", - "wires": [], - "info": "", - "x": 820, - "y": 820 - }, - { - "id": "691572bc73058f7b", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Livingroom audio config", - "wires": [ - [ - "73bf252f2983ae0c", - "e8d4582f1a35b5fe" - ] - ], - "rules": [ - { - "t": "set", - "p": "unmute", - "pt": "msg", - "to": "media_player.home_theater_universal", - "tot": "str" - }, - { - "t": "set", - "p": "mute", - "pt": "msg", - "to": "media_player.bedroom, media_player.kitchen, media_player.bathroom", - "tot": "str" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 430, - "y": 300 - }, - { - "id": "483ec65e18051a31", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Livingroom audio button", - "wires": [ - [ - "691572bc73058f7b" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.livingroom_only_audio" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 300 - }, - { - "id": "aa6cfabebf9a872f", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Grouping and ungrouping", - "wires": [], - "info": "", - "x": 150, - "y": 1040 - }, - { - "id": "0a5de0c3e1526c14", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Group all", - "wires": [ - [ - "608262f04a2a221d" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.heos_group_all" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 100, - "y": 1080 - }, - { - "id": "756d563e795b953a", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Group all, excl. livingroom", - "wires": [ - [ - "80be5093f48e88fc" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.heos_group_all_but_livingroom" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 150, - "y": 1140 - }, - { - "id": "a83c93f336d93f56", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Group all, excl bathroom", - "wires": [ - [ - "aaafe15411371f43" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.heos_group_all_but_bathroom" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 150, - "y": 1200 - }, - { - "id": "0fe637de86520e51", - "type": "server-state-changed", - "z": "f02b32ef07b4b378", - "name": "Group all, excl bedroom", - "wires": [ - [ - "980d8e52b0eceaff" - ] - ], - "server": "657c7463.48e1e4", - "version": 6, - "outputs": 1, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "input_button.heos_group_all_but_bedroom" - ], - "substring": [], - "regex": [] - }, - "outputInitially": false, - "stateType": "str", - "ifState": "", - "ifStateType": "str", - "ifStateOperator": "is", - "outputOnlyOnStateChange": true, - "for": "0", - "forType": "num", - "forUnits": "minutes", - "ignorePrevStateNull": false, - "ignorePrevStateUnknown": false, - "ignorePrevStateUnavailable": false, - "ignoreCurrentStateUnknown": false, - "ignoreCurrentStateUnavailable": false, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "eventData" - }, - { - "property": "topic", - "propertyType": "msg", - "value": "", - "valueType": "triggerId" - } - ], - "x": 140, - "y": 1260 - }, - { - "id": "ccc51eb8edf2e33d", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Join all speakers", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.join", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [], - "labelId": [], - "data": "{\t \"entity_id\": leader, \t \"group_members\": followers\t}", - "dataType": "jsonata", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": true, - "domain": "media_player", - "service": "join", - "x": 1130, - "y": 1180 - }, - { - "id": "608262f04a2a221d", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set leader and followers", - "wires": [ - [ - "ccc51eb8edf2e33d" - ] - ], - "rules": [ - { - "t": "set", - "p": "leader", - "pt": "msg", - "to": "media_player.bedroom", - "tot": "str" - }, - { - "t": "set", - "p": "followers", - "pt": "msg", - "to": "[\"media_player.denon_avr_x3600h\",\"media_player.kitchen\",\"media_player.bathroom\"]", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 450, - "y": 1080 - }, - { - "id": "80be5093f48e88fc", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set leader and followers", - "wires": [ - [ - "ccc51eb8edf2e33d" - ] - ], - "rules": [ - { - "t": "set", - "p": "leader", - "pt": "msg", - "to": "media_player.bedroom", - "tot": "str" - }, - { - "t": "set", - "p": "followers", - "pt": "msg", - "to": "[\"media_player.kitchen\",\"media_player.bathroom\"]", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 450, - "y": 1140 - }, - { - "id": "aaafe15411371f43", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set leader and followers", - "wires": [ - [ - "ccc51eb8edf2e33d" - ] - ], - "rules": [ - { - "t": "set", - "p": "leader", - "pt": "msg", - "to": "media_player.bedroom", - "tot": "str" - }, - { - "t": "set", - "p": "followers", - "pt": "msg", - "to": "[\"media_player.denon_avr_x3600h\",\"media_player.kitchen\"]", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 450, - "y": 1200 - }, - { - "id": "980d8e52b0eceaff", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Set leader and followers", - "wires": [ - [ - "ccc51eb8edf2e33d" - ] - ], - "rules": [ - { - "t": "set", - "p": "leader", - "pt": "msg", - "to": "media_player.kitchen", - "tot": "str" - }, - { - "t": "set", - "p": "followers", - "pt": "msg", - "to": "[\"media_player.denon_avr_x3600h\",\"media_player.bathroom\"]", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 450, - "y": 1260 - }, - { - "id": "1278b99a481e6dd1", - "type": "comment", - "z": "f02b32ef07b4b378", - "name": "Home Theather volume control on heos start", - "wires": [], - "info": "", - "x": 210, - "y": 1360 - }, - { - "id": "5f677939f2c09f28", - "type": "trigger-state", - "z": "f02b32ef07b4b378", - "name": "Switching home theather to heos", - "wires": [ - [ - "8c788d92123228cb" - ], - [] - ], - "server": "657c7463.48e1e4", - "version": 5, - "inputs": 0, - "outputs": 2, - "exposeAsEntityConfig": "", - "entities": { - "entity": [ - "media_player.home_theater_universal" - ], - "substring": [], - "regex": [] - }, - "debugEnabled": false, - "constraints": [ - { - "targetType": "this_entity", - "targetValue": "", - "propertyType": "property", - "propertyValue": "new_state.attributes.source", - "comparatorType": "is", - "comparatorValueDatatype": "str", - "comparatorValue": "HEOS Music" - }, - { - "targetType": "this_entity", - "targetValue": "", - "propertyType": "property", - "propertyValue": "old_state.attributes.source", - "comparatorType": "is_not", - "comparatorValueDatatype": "str", - "comparatorValue": "HEOS Music" - } - ], - "customOutputs": [], - "outputInitially": false, - "stateType": "str", - "enableInput": false, - "x": 170, - "y": 1400 - }, - { - "id": "8c788d92123228cb", - "type": "delay", - "z": "f02b32ef07b4b378", - "name": "", - "wires": [ - [ - "f1ddda7676ab9bbc" - ] - ], - "pauseType": "delay", - "timeout": "1", - "timeoutUnits": "seconds", - "rate": "1", - "nbRateUnits": "1", - "rateUnits": "second", - "randomFirst": "1", - "randomLast": "5", - "randomUnits": "seconds", - "drop": false, - "allowrate": false, - "outputs": 1, - "x": 430, - "y": 1400 - }, - { - "id": "f1ddda7676ab9bbc", - "type": "api-current-state", - "z": "f02b32ef07b4b378", - "name": "Fetch bedroom volume", - "wires": [ - [ - "087e6e0c92150113" - ] - ], - "server": "657c7463.48e1e4", - "version": 3, - "outputs": 1, - "halt_if": "", - "halt_if_type": "str", - "halt_if_compare": "is", - "entity_id": "media_player.bedroom", - "state_type": "str", - "blockInputOverrides": true, - "outputProperties": [ - { - "property": "payload", - "propertyType": "msg", - "value": "", - "valueType": "entityState" - }, - { - "property": "data", - "propertyType": "msg", - "value": "", - "valueType": "entity" - } - ], - "for": "0", - "forType": "num", - "forUnits": "minutes", - "override_topic": false, - "state_location": "payload", - "override_payload": "msg", - "entity_location": "data", - "override_data": "msg", - "x": 630, - "y": 1400 - }, - { - "id": "087e6e0c92150113", - "type": "change", - "z": "f02b32ef07b4b378", - "name": "Calculate volume", - "wires": [ - [ - "8a59f44f4fc0c8d0" - ] - ], - "rules": [ - { - "t": "set", - "p": "payload", - "pt": "msg", - "to": "(\t $leader_volume := data.attributes.is_volume_muted ? 0 : $number(data.attributes.volume_level ? data.attributes.volume_level : 0);\t $base_volume := $leader_volume = 0 ? 0.15 : $leader_volume;\t $added_volume := $base_volume + 0.18;\t $clamped_volume := $added_volume > 0.5 ? 0.5 : $added_volume;\t $target_volume := $round($clamped_volume, 2);\t { \"entity_id\": \"media_player.home_theater_universal\", \"volume_level\": $target_volume }\t)", - "tot": "jsonata" - } - ], - "action": "", - "property": "", - "from": "", - "to": "", - "reg": false, - "x": 880, - "y": 1400 - }, - { - "id": "8a59f44f4fc0c8d0", - "type": "api-call-service", - "z": "f02b32ef07b4b378", - "name": "Set home theather volume", - "wires": [ - [] - ], - "server": "657c7463.48e1e4", - "version": 7, - "debugenabled": false, - "action": "media_player.volume_set", - "floorId": [], - "areaId": [], - "deviceId": [], - "entityId": [], - "labelId": [], - "data": "payload", - "dataType": "jsonata", - "mergeContext": "", - "mustacheAltTags": false, - "outputProperties": [], - "queue": "none", - "blockInputOverrides": true, - "domain": "media_player", - "service": "volume_set", - "x": 1160, - "y": 1400 - }, { "id": "c8d37a58.56051", "type": "server-state-changed", @@ -22595,5 +20374,2289 @@ "output_location_type": "none", "x": 660, "y": 2000 + }, + { + "type": "tab", + "label": "Home Audio", + "id": "f02b32ef07b4b378" + }, + { + "id": "bc24bd25f183a7ac", + "type": "inject", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "3b572aa5a025838b" + ] + ], + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 140, + "y": 1760 + }, + { + "id": "3b572aa5a025838b", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Join media players", + "wires": [ + [ + "ed251e315e4c2c9f" + ] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.join", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "media_player.bathroom" + ], + "labelId": [], + "data": "{\"group_members\":[\"media_player.kitchen\",\"media_player.bedroom\"]}", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "join", + "x": 370, + "y": 1760 + }, + { + "id": "ed251e315e4c2c9f", + "type": "debug", + "z": "f02b32ef07b4b378", + "name": "debug 8", + "wires": [], + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "false", + "statusVal": "", + "statusType": "auto", + "x": 660, + "y": 1760 + }, + { + "id": "7ad8e1f3e2e0968a", + "type": "inject", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "b298882274d1cdf3" + ] + ], + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 140, + "y": 1840 + }, + { + "id": "b298882274d1cdf3", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Unjoin media players", + "wires": [ + [ + "bdd2b9572315b352" + ] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.unjoin", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "media_player.bathroom", + "media_player.bedroom", + "media_player.kitchen" + ], + "labelId": [], + "data": "", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "unjoin", + "x": 380, + "y": 1840 + }, + { + "id": "bdd2b9572315b352", + "type": "debug", + "z": "f02b32ef07b4b378", + "name": "debug 9", + "wires": [], + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "false", + "statusVal": "", + "statusType": "auto", + "x": 660, + "y": 1840 + }, + { + "id": "a17410f072874366", + "type": "inject", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "d94c32c408534cea" + ] + ], + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "true", + "payloadType": "bool", + "x": 130, + "y": 1960 + }, + { + "id": "d94c32c408534cea", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Unmute/Mute media players", + "wires": [ + [ + "c262b732d4b31093" + ] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.volume_mute", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "media_player.bathroom", + "media_player.bedroom", + "media_player.kitchen" + ], + "labelId": [], + "data": "{\"is_volume_muted\": {{{payload}}} }", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "volume_mute", + "x": 400, + "y": 1960 + }, + { + "id": "c262b732d4b31093", + "type": "debug", + "z": "f02b32ef07b4b378", + "name": "debug 10", + "wires": [], + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "false", + "statusVal": "", + "statusType": "auto", + "x": 660, + "y": 1960 + }, + { + "id": "023b11d63a8f319c", + "type": "inject", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "d94c32c408534cea" + ] + ], + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "false", + "payloadType": "bool", + "x": 130, + "y": 2020 + }, + { + "id": "947aef7d0b37c64e", + "type": "inject", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "b14ca76bd3f6d739" + ] + ], + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "true", + "payloadType": "bool", + "x": 130, + "y": 2100 + }, + { + "id": "b14ca76bd3f6d739", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Set volume to 20", + "wires": [ + [ + "7ff52464dc77aa88" + ] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.volume_set", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "media_player.bathroom", + "media_player.bedroom", + "media_player.kitchen" + ], + "labelId": [], + "data": "{\"volume_level\": 0.2 }", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "volume_set", + "x": 370, + "y": 2100 + }, + { + "id": "7ff52464dc77aa88", + "type": "debug", + "z": "f02b32ef07b4b378", + "name": "debug 12", + "wires": [], + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "false", + "statusVal": "", + "statusType": "auto", + "x": 660, + "y": 2100 + }, + { + "id": "b35f9365319a9bd4", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Kitchen motion sensor", + "wires": [ + [], + [] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 2, + "exposeAsEntityConfig": "62ed34c9191cebca", + "entities": { + "entity": [ + "binary_sensor.kitchen_motion_sensor_occupancy" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "on", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": true, + "ignoreCurrentStateUnavailable": true, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 560 + }, + { + "id": "643f64eeb88d0dc2", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Bedroom motion sensor", + "wires": [ + [], + [] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 2, + "exposeAsEntityConfig": "62ed34c9191cebca", + "entities": { + "entity": [ + "binary_sensor.bedroom_motion_sensor_occupancy" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "on", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": true, + "ignoreCurrentStateUnavailable": true, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 620 + }, + { + "id": "b613959939f3fdb7", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Kitchen motion sensor", + "wires": [ + [], + [] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 2, + "exposeAsEntityConfig": "62ed34c9191cebca", + "entities": { + "entity": [ + "binary_sensor.kitchen_motion_sensor_occupancy" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "on", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": true, + "ignoreCurrentStateUnavailable": true, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 680 + }, + { + "id": "b57cf93b3481bb17", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Speaker config buttons", + "wires": [], + "info": "", + "x": 140, + "y": 80 + }, + { + "id": "73bf252f2983ae0c", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Mute Speakers", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": true, + "action": "media_player.volume_mute", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "{{ mute }}" + ], + "labelId": [], + "data": "{\"is_volume_muted\":true}", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "volume_mute", + "x": 800, + "y": 200 + }, + { + "id": "e8d4582f1a35b5fe", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Umute Speakers", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.volume_mute", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [ + "{{ unmute }}" + ], + "labelId": [], + "data": "{\"is_volume_muted\": false }", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "volume_mute", + "x": 810, + "y": 240 + }, + { + "id": "9c40d4014ed62a08", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Kitchen audio config", + "wires": [ + [ + "73bf252f2983ae0c", + "e8d4582f1a35b5fe" + ] + ], + "rules": [ + { + "t": "set", + "p": "unmute", + "pt": "msg", + "to": "media_player.kitchen", + "tot": "str" + }, + { + "t": "set", + "p": "mute", + "pt": "msg", + "to": "media_player.bedroom, media_player.bathroom, media_player.home_theater_universal", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 420, + "y": 120 + }, + { + "id": "4a3201a1c23eb1bd", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Bedroom audio config", + "wires": [ + [ + "73bf252f2983ae0c", + "e8d4582f1a35b5fe" + ] + ], + "rules": [ + { + "t": "set", + "p": "unmute", + "pt": "msg", + "to": "media_player.bedroom", + "tot": "str" + }, + { + "t": "set", + "p": "mute", + "pt": "msg", + "to": "media_player.bathroom, media_player.kitchen, media_player.home_theater_universal", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 420, + "y": 180 + }, + { + "id": "ab34bd65550a49eb", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Bathroom audio config", + "wires": [ + [ + "73bf252f2983ae0c", + "e8d4582f1a35b5fe" + ] + ], + "rules": [ + { + "t": "set", + "p": "unmute", + "pt": "msg", + "to": "media_player.bathroom", + "tot": "str" + }, + { + "t": "set", + "p": "mute", + "pt": "msg", + "to": "media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 420, + "y": 240 + }, + { + "id": "1ce85c93fddec1ed", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "All speaker unmute config", + "wires": [ + [ + "e8d4582f1a35b5fe" + ] + ], + "rules": [ + { + "t": "set", + "p": "unmute", + "pt": "msg", + "to": "media_player.bathroom, media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 430, + "y": 380 + }, + { + "id": "ed546967f38f4321", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "All speaker mute config", + "wires": [ + [ + "73bf252f2983ae0c" + ] + ], + "rules": [ + { + "t": "set", + "p": "mute", + "pt": "msg", + "to": "media_player.bathroom, media_player.bedroom, media_player.kitchen, media_player.home_theater_universal", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 430, + "y": 440 + }, + { + "id": "4e372d2ae02e476f", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Kitchen audio button", + "wires": [ + [ + "9c40d4014ed62a08" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.kitchen_only_audio" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 130, + "y": 120 + }, + { + "id": "7e30cae17b6f1147", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Bedroom audio button", + "wires": [ + [ + "4a3201a1c23eb1bd" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.bedroom_only_audio" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 180 + }, + { + "id": "7087100e45352fd6", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Bathroom audio button", + "wires": [ + [ + "ab34bd65550a49eb" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.bathroom_only_audio" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 240 + }, + { + "id": "1e1bbdf54bcc0e71", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "All speakers unmute button", + "wires": [ + [ + "1ce85c93fddec1ed" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.unmute_all_speakers" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 150, + "y": 380 + }, + { + "id": "0dada2e07914212e", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "All speakers mute button", + "wires": [ + [ + "ed546967f38f4321" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.mute_all_speakers" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 150, + "y": 440 + }, + { + "id": "83cfde5f5f29bfee", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Audio Follow system", + "wires": [], + "info": "", + "x": 130, + "y": 520 + }, + { + "id": "d6a335eabf0309af", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Speaker time out", + "wires": [], + "info": "", + "x": 120, + "y": 820 + }, + { + "id": "8d0c16fdcaa044c5", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Music fade out button", + "wires": [ + [ + "5a53dda5700dcbd4" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.music_fade_out" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 860 + }, + { + "id": "487f7f9cb870301d", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Set bedroom volume", + "wires": [ + [ + "470f04a1f67ed2c5" + ] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.volume_set", + "floorId": [], + "areaId": [ + "7047cdd7d50e49f980eba16f832acb57" + ], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "{ \"volume_level\" : {{ payload }} }", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "volume_set", + "x": 1700, + "y": 1020 + }, + { + "id": "099e68b4526af252", + "type": "easing", + "z": "f02b32ef07b4b378", + "name": "Calculate fade in volume", + "wires": [ + [ + "148bfd7bfd19a3f2" + ] + ], + "easingType": "linear", + "outputType": "overTime", + "duration": "30000", + "interval": "2000", + "numberOfValues": 10, + "x": 1710, + "y": 880 + }, + { + "id": "465266c8ebc87190", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set volume parameters", + "wires": [ + [ + "099e68b4526af252" + ] + ], + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "{\"from\": $number(payload), \"to\": 0, \"size\": 0.01}", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1710, + "y": 820 + }, + { + "id": "148bfd7bfd19a3f2", + "type": "calculator", + "z": "f02b32ef07b4b378", + "name": "Round to max 2 decimals", + "wires": [ + [ + "487f7f9cb870301d" + ] + ], + "inputMsgField": "payload", + "outputMsgField": "payload", + "operation": "rdec", + "constant": "2", + "round": false, + "truncate": false, + "decimals": "0", + "decimals2": 0, + "x": 1710, + "y": 940 + }, + { + "id": "5a53dda5700dcbd4", + "type": "trigger", + "z": "f02b32ef07b4b378", + "name": "20min trigger to start fade out", + "wires": [ + [ + "64d51f4ce06f71bb" + ] + ], + "op1": "", + "op2": "off", + "op1type": "nul", + "op2type": "str", + "duration": "20", + "extend": false, + "overrideDelay": false, + "units": "min", + "reset": "on", + "bytopic": "all", + "topic": "topic", + "outputs": 1, + "x": 480, + "y": 860 + }, + { + "id": "243eaae96c3615b7", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Music cancel fade out button", + "wires": [ + [ + "5a53dda5700dcbd4" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.music_cancel_fade_out" + ], + "substring": [], + "regex": [] + }, + "outputInitially": true, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "reset", + "propertyType": "msg", + "value": "true", + "valueType": "bool" + } + ], + "x": 160, + "y": 920 + }, + { + "id": "658612bb048cebd0", + "type": "api-current-state", + "z": "f02b32ef07b4b378", + "name": "Get bedroom volume", + "wires": [ + [ + "9df152f9e9ea7a00" + ], + [ + "2c391596726d163a" + ] + ], + "server": "657c7463.48e1e4", + "version": 3, + "outputs": 2, + "halt_if": "playing", + "halt_if_type": "str", + "halt_if_compare": "is", + "entity_id": "media_player.bedroom", + "state_type": "str", + "blockInputOverrides": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "entity" + } + ], + "for": "0", + "forType": "num", + "forUnits": "minutes", + "override_topic": false, + "state_location": "payload", + "override_payload": "msg", + "entity_location": "data", + "override_data": "msg", + "x": 740, + "y": 860 + }, + { + "id": "eee9cae5a34371af", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set default volume", + "wires": [ + [ + "465266c8ebc87190" + ] + ], + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "0.2", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1350, + "y": 860 + }, + { + "id": "2c391596726d163a", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Stop media players", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.media_stop", + "floorId": [], + "areaId": [ + "f7affcd2d1854f58b829a3d1f67684e9", + "7047cdd7d50e49f980eba16f832acb57", + "58b6232129db4aa396355dcff5edc036", + "9fb80339d4ee49f098decfafad38ab78" + ], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "", + "dataType": "jsonata", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "media_stop", + "x": 1690, + "y": 1180 + }, + { + "id": "470f04a1f67ed2c5", + "type": "switch", + "z": "f02b32ef07b4b378", + "name": "Volume all the way down?", + "wires": [ + [ + "2c391596726d163a" + ] + ], + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "eq", + "v": "0", + "vt": "num" + } + ], + "checkall": "true", + "repair": false, + "outputs": 1, + "x": 1710, + "y": 1100 + }, + { + "id": "32128a2d9466c2a5", + "type": "switch", + "z": "f02b32ef07b4b378", + "name": "Volume is numeric?", + "wires": [ + [ + "465266c8ebc87190" + ], + [ + "eee9cae5a34371af" + ] + ], + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "istype", + "v": "number", + "vt": "number" + }, + { + "t": "else" + } + ], + "checkall": "false", + "repair": false, + "outputs": 2, + "x": 1350, + "y": 800 + }, + { + "id": "9df152f9e9ea7a00", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set volume from speaker", + "wires": [ + [ + "32128a2d9466c2a5" + ] + ], + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "data.attributes.volume_level", + "tot": "msg" + }, + { + "t": "delete", + "p": "data", + "pt": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 1030, + "y": 860 + }, + { + "id": "64d51f4ce06f71bb", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Stop media players", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.media_stop", + "floorId": [], + "areaId": [ + "f7affcd2d1854f58b829a3d1f67684e9", + "7047cdd7d50e49f980eba16f832acb57", + "58b6232129db4aa396355dcff5edc036", + "9fb80339d4ee49f098decfafad38ab78" + ], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "", + "dataType": "jsonata", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "media_player", + "service": "media_stop", + "x": 730, + "y": 920 + }, + { + "id": "7537b14f401fe338", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Disabled fade out flow (breaks HEOS + spotify)", + "wires": [], + "info": "", + "x": 820, + "y": 820 + }, + { + "id": "691572bc73058f7b", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Livingroom audio config", + "wires": [ + [ + "73bf252f2983ae0c", + "e8d4582f1a35b5fe" + ] + ], + "rules": [ + { + "t": "set", + "p": "unmute", + "pt": "msg", + "to": "media_player.home_theater_universal", + "tot": "str" + }, + { + "t": "set", + "p": "mute", + "pt": "msg", + "to": "media_player.bedroom, media_player.kitchen, media_player.bathroom", + "tot": "str" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 430, + "y": 300 + }, + { + "id": "483ec65e18051a31", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Livingroom audio button", + "wires": [ + [ + "691572bc73058f7b" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.livingroom_only_audio" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 300 + }, + { + "id": "aa6cfabebf9a872f", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Grouping and ungrouping", + "wires": [], + "info": "", + "x": 150, + "y": 1040 + }, + { + "id": "0a5de0c3e1526c14", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Group all", + "wires": [ + [ + "608262f04a2a221d" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.heos_group_all" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 100, + "y": 1080 + }, + { + "id": "756d563e795b953a", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Group all, excl. livingroom", + "wires": [ + [ + "80be5093f48e88fc" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.heos_group_all_but_livingroom" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 150, + "y": 1140 + }, + { + "id": "a83c93f336d93f56", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Group all, excl bathroom", + "wires": [ + [ + "aaafe15411371f43" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.heos_group_all_but_bathroom" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 150, + "y": 1200 + }, + { + "id": "0fe637de86520e51", + "type": "server-state-changed", + "z": "f02b32ef07b4b378", + "name": "Group all, excl bedroom", + "wires": [ + [ + "980d8e52b0eceaff" + ] + ], + "server": "657c7463.48e1e4", + "version": 6, + "outputs": 1, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "input_button.heos_group_all_but_bedroom" + ], + "substring": [], + "regex": [] + }, + "outputInitially": false, + "stateType": "str", + "ifState": "", + "ifStateType": "str", + "ifStateOperator": "is", + "outputOnlyOnStateChange": true, + "for": "0", + "forType": "num", + "forUnits": "minutes", + "ignorePrevStateNull": false, + "ignorePrevStateUnknown": false, + "ignorePrevStateUnavailable": false, + "ignoreCurrentStateUnknown": false, + "ignoreCurrentStateUnavailable": false, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "eventData" + }, + { + "property": "topic", + "propertyType": "msg", + "value": "", + "valueType": "triggerId" + } + ], + "x": 140, + "y": 1260 + }, + { + "id": "ccc51eb8edf2e33d", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Join all speakers", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.join", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "{\t \"entity_id\": leader, \t \"group_members\": followers\t}", + "dataType": "jsonata", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": true, + "domain": "media_player", + "service": "join", + "x": 1130, + "y": 1180 + }, + { + "id": "608262f04a2a221d", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set leader and followers", + "wires": [ + [ + "ccc51eb8edf2e33d" + ] + ], + "rules": [ + { + "t": "set", + "p": "leader", + "pt": "msg", + "to": "media_player.bedroom", + "tot": "str" + }, + { + "t": "set", + "p": "followers", + "pt": "msg", + "to": "[\"media_player.denon_avr_x3600h\",\"media_player.kitchen\",\"media_player.bathroom\"]", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 450, + "y": 1080 + }, + { + "id": "80be5093f48e88fc", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set leader and followers", + "wires": [ + [ + "ccc51eb8edf2e33d" + ] + ], + "rules": [ + { + "t": "set", + "p": "leader", + "pt": "msg", + "to": "media_player.bedroom", + "tot": "str" + }, + { + "t": "set", + "p": "followers", + "pt": "msg", + "to": "[\"media_player.kitchen\",\"media_player.bathroom\"]", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 450, + "y": 1140 + }, + { + "id": "aaafe15411371f43", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set leader and followers", + "wires": [ + [ + "ccc51eb8edf2e33d" + ] + ], + "rules": [ + { + "t": "set", + "p": "leader", + "pt": "msg", + "to": "media_player.bedroom", + "tot": "str" + }, + { + "t": "set", + "p": "followers", + "pt": "msg", + "to": "[\"media_player.denon_avr_x3600h\",\"media_player.kitchen\"]", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 450, + "y": 1200 + }, + { + "id": "980d8e52b0eceaff", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Set leader and followers", + "wires": [ + [ + "ccc51eb8edf2e33d" + ] + ], + "rules": [ + { + "t": "set", + "p": "leader", + "pt": "msg", + "to": "media_player.kitchen", + "tot": "str" + }, + { + "t": "set", + "p": "followers", + "pt": "msg", + "to": "[\"media_player.denon_avr_x3600h\",\"media_player.bathroom\"]", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 450, + "y": 1260 + }, + { + "id": "1278b99a481e6dd1", + "type": "comment", + "z": "f02b32ef07b4b378", + "name": "Home Theather volume control on heos start", + "wires": [], + "info": "", + "x": 210, + "y": 1360 + }, + { + "id": "5f677939f2c09f28", + "type": "trigger-state", + "z": "f02b32ef07b4b378", + "name": "Switching home theather to heos", + "wires": [ + [ + "8c788d92123228cb" + ], + [] + ], + "server": "657c7463.48e1e4", + "version": 5, + "inputs": 0, + "outputs": 2, + "exposeAsEntityConfig": "", + "entities": { + "entity": [ + "media_player.home_theater_universal" + ], + "substring": [], + "regex": [] + }, + "debugEnabled": false, + "constraints": [ + { + "targetType": "this_entity", + "targetValue": "", + "propertyType": "property", + "propertyValue": "new_state.attributes.source", + "comparatorType": "is", + "comparatorValueDatatype": "str", + "comparatorValue": "HEOS Music" + }, + { + "targetType": "this_entity", + "targetValue": "", + "propertyType": "property", + "propertyValue": "old_state.attributes.source", + "comparatorType": "is_not", + "comparatorValueDatatype": "str", + "comparatorValue": "HEOS Music" + } + ], + "customOutputs": [], + "outputInitially": false, + "stateType": "str", + "enableInput": false, + "x": 170, + "y": 1400 + }, + { + "id": "8c788d92123228cb", + "type": "delay", + "z": "f02b32ef07b4b378", + "name": "", + "wires": [ + [ + "f1ddda7676ab9bbc" + ] + ], + "pauseType": "delay", + "timeout": "1", + "timeoutUnits": "seconds", + "rate": "1", + "nbRateUnits": "1", + "rateUnits": "second", + "randomFirst": "1", + "randomLast": "5", + "randomUnits": "seconds", + "drop": false, + "allowrate": false, + "outputs": 1, + "x": 430, + "y": 1400 + }, + { + "id": "f1ddda7676ab9bbc", + "type": "api-current-state", + "z": "f02b32ef07b4b378", + "name": "Fetch bedroom volume", + "wires": [ + [ + "087e6e0c92150113" + ] + ], + "server": "657c7463.48e1e4", + "version": 3, + "outputs": 1, + "halt_if": "", + "halt_if_type": "str", + "halt_if_compare": "is", + "entity_id": "media_player.bedroom", + "state_type": "str", + "blockInputOverrides": true, + "outputProperties": [ + { + "property": "payload", + "propertyType": "msg", + "value": "", + "valueType": "entityState" + }, + { + "property": "data", + "propertyType": "msg", + "value": "", + "valueType": "entity" + } + ], + "for": "0", + "forType": "num", + "forUnits": "minutes", + "override_topic": false, + "state_location": "payload", + "override_payload": "msg", + "entity_location": "data", + "override_data": "msg", + "x": 630, + "y": 1400 + }, + { + "id": "087e6e0c92150113", + "type": "change", + "z": "f02b32ef07b4b378", + "name": "Calculate volume", + "wires": [ + [ + "8a59f44f4fc0c8d0" + ] + ], + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "(\t $leader_volume := data.attributes.is_volume_muted ? 0 : $number(data.attributes.volume_level ? data.attributes.volume_level : 0);\t $base_volume := $leader_volume = 0 ? 0.15 : $leader_volume;\t $added_volume := $base_volume + 0.18;\t $clamped_volume := $added_volume > 0.5 ? 0.5 : $added_volume;\t $target_volume := $round($clamped_volume, 2);\t { \"entity_id\": \"media_player.home_theater_universal\", \"volume_level\": $target_volume }\t)", + "tot": "jsonata" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 880, + "y": 1400 + }, + { + "id": "8a59f44f4fc0c8d0", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Set home theather volume", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "media_player.volume_set", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "payload", + "dataType": "jsonata", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": true, + "domain": "media_player", + "service": "volume_set", + "x": 1160, + "y": 1400 + }, + { + "id": "p2catch_aud", + "type": "catch", + "z": "f02b32ef07b4b378", + "name": "Catch all errors", + "wires": [ + [ + "p2fmt_aud" + ] + ], + "scope": null, + "uncaught": false, + "x": 160, + "y": 2300 + }, + { + "id": "p2fmt_aud", + "type": "function", + "z": "f02b32ef07b4b378", + "name": "Format error", + "wires": [ + [ + "p2ntfy_aud" + ] + ], + "func": "const err = (msg.error && msg.error.message) ? msg.error.message : String(msg.payload || 'Unknown error');\nconst src = (msg.error && msg.error.source) ? (msg.error.source.name || msg.error.source.id || '') : '';\nmsg.payload = JSON.stringify({\n title: 'Node-RED Error: Home Audio',\n message: err + (src ? '\\n\\nNode: ' + src : '')\n});\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "timeout": "", + "x": 400, + "y": 2300 + }, + { + "id": "p2ntfy_aud", + "type": "api-call-service", + "z": "f02b32ef07b4b378", + "name": "Notify error", + "wires": [ + [] + ], + "server": "657c7463.48e1e4", + "version": 7, + "debugenabled": false, + "action": "notify.gotify_ha", + "floorId": [], + "areaId": [], + "deviceId": [], + "entityId": [], + "labelId": [], + "data": "{{{payload}}}", + "dataType": "json", + "mergeContext": "", + "mustacheAltTags": false, + "outputProperties": [], + "queue": "none", + "blockInputOverrides": false, + "domain": "notify", + "service": "gotify_ha", + "output_location": "", + "output_location_type": "none", + "x": 660, + "y": 2300 } ] \ No newline at end of file