const states = global.get('homeassistant.homeAssistant.states') const occupied = states["binary_sensor.basement_occupied"].state const quiet = states["input_boolean.studio_quiet"].state const stateTinaDesk = states["light.tina_desk_lights"].state const stateLivingRoom = states["light.living_room_lights"].state const stateDiningRoom = states["light.dining_room_lamp"].state const stateBasement = states["light.basement_studio_lights"].state const adaptLivingRoom = states["switch.adaptive_lighting_living_room"].state const adaptBasement = states["switch.adaptive_lighting_basement_studio"].state const nightLivingRoom = states["switch.adaptive_lighting_sleep_mode_living_room"].state const nightBasement = states["switch.adaptive_lighting_sleep_mode_basement_studio"].state const currentSceneBasement = states["input_text.basement_studio_selected_scene"].state const currentSceneLivingRoom = states["input_text.living_room_selected_scene"].state const currentSceneTinaDesk = states["input_text.tina_desk_selected_scene"].state const effectBasement = msg.payload.event.basement const effectFirstFloor = msg.payload.event.first_floor const effectType = msg.payload.event.type const effectDivide = msg.payload.event.divide const duration = msg.payload.event.duration const delay = duration * 1000 const adaptiveSwitchFirstFloor = flow.get("adaptiveFirstFloor", "diskCon") const adaptiveSwitchBasement = flow.get("adaptiveBasement", "diskCon") //! Use delay in service calls, not duration flow.set("currentSceneBasement", currentSceneBasement) flow.set("currentSceneLivingRoom", currentSceneLivingRoom) flow.set("currentSceneTinaDesk", currentSceneTinaDesk) flow.set("adaptLivingRoom", adaptLivingRoom) flow.set("adaptBasement", adaptBasement) flow.set("nightLivingRoom", nightLivingRoom) flow.set("nightBasement", nightBasement) flow.set("stateTinaDesk", stateTinaDesk) flow.set("stateLivingRoom", stateLivingRoom) flow.set("stateDiningRoom", stateDiningRoom) flow.set("stateBasement", stateBasement) let firstFloorLights = [] let basementLights = [] let basement1 = [] let basement2 = [] let basementFull = [] let livingRoom1 = [] let livingRoom2 = [] let livingRoomFull = [] let colorName1 = effectType let colorName2 = "white" if (stateTinaDesk === 'on') { firstFloorLights.push('light.tina_desk_strip','light.tina_lamp_top','light.tina_lamp_side') } if (stateLivingRoom === 'on') { firstFloorLights.push('light.living_room_color_1','light.living_room_color_2','light.living_room_color_3','light.living_room_led_strip') } if (stateDiningRoom === 'on') { firstFloorLights.push('light.dining_room_lamp') } if (stateBasement === 'on') { basementLights.push('light.basement_tall_lamp','light.basement_short_lamp','light.basement_stairwell','light.basement_led_strip_1') } if (effectDivide === 'half') { basement1 = flow.get("halfBasement1", "diskCon") basement2 = flow.get("halfBasement2", "diskCon") livingRoom1 = flow.get("halfLivingRoom1", "diskCon") livingRoom2 = flow.get("halfLivingRoom2", "diskCon") } else if (effectDivide === 'quarter') { basement1 = flow.get("effectSegBasement1", "diskCon") basement2 = flow.get("effectSegBasement2", "diskCon") livingRoom1 = flow.get("effectSegLivingRoom1", "diskCon") livingRoom2 = flow.get("effectSegLivingRoom2", "diskCon") } else if (effectDivide === 'full') { basementFull = flow.get("basementFull", "diskCon") livingRoomFull = flow.get("livingRoomFull", "diskCon") } //! Implement setting of colors here // Set message payloads let sendBasementStripFX = { "payload": { "domain": "lifx", "service": "effect_move", "target": { "entity_id": ["light.basement_led_strip_1"] }, "data": { "speed": 0.5, "direction": "right", "power_on": false } } } let sendBasementStrip1 = { "payload": { "domain": "lifx", "service": "set_state", "target": { "entity_id": ["light.basement_led_strip_1"] }, "data": { "zones": basement1, "color_name": colorName1, "brightness": 255 } } } let sendBasementStrip2 = { "payload": { "domain": "lifx", "service": "set_state", "target": { "entity_id": ["light.basement_led_strip_1"] }, "data": { "zones": basement2, "color_name": colorName2, "brightness": 255, "power": true } } } let sendBasementLights = { "payload": { "domain": "light", "service": "turn_on", "target": { "entity_id": [ "light.basement_tall_lamp", "light.basement_short_lamp", "light.basement_stairwell" ] }, "data": { "color_name": colorName1, "brightness": 255 } } } let sendLivingRoomStripFX = { "payload": { "domain": "lifx", "service": "effect_move", "target": { "entity_id": ["light.living_room_led_strip"] }, "data": { "speed": 0.5, "direction": "right", "power_on": false } } } let sendLivingRoomStrip1 = { "payload": { "domain": "lifx", "service": "set_state", "target": { "entity_id": ["light.living_room_led_strip"] }, "data": { "zones": livingRoom1, "color_name": colorName1, "brightness": 255 } } } let sendLivingRoomStrip2 = { "payload": { "domain": "lifx", "service": "set_state", "target": { "entity_id": ["light.living_room_led_strip"] }, "data": { "zones": livingRoom2, "color_name": colorName2, "brightness": 255 } } } let sendLivingRoomLights = { "payload": { "domain": "light", "service": "turn_on", "target": { "entity_id": [ "light.living_room_color_1", "light.living_room_color_2", "light.living_room_color_3" ] }, "data": { "color_name": colorName1, "brightness": 255 } } } let sendTinaDeskLights = { "payload": { "domain": "light", "service": "turn_on", "target": { "entity_id": ["light.tina_desk_lights"] }, "data": { "color_name": colorName1, "brightness": 255 } } } let sendDiningRoomLamp = { "payload": { "domain": "light", "service": "turn_off", "target": { "entity_id": ["light.dining_room_lamp"] }, "data": {} } } if (effectBasement === true) { node.send([null,null,null,null,[sendBasementStripFX,sendBasementLights,sendBasementStrip1,sendBasementStrip2],null]) }