Progress made on setting the necessary variables for lighting effects

This commit is contained in:
2023-10-16 14:15:30 -04:00
parent f84a9c5aad
commit 90aef47ef1
2 changed files with 158 additions and 15 deletions

View File

@ -1,3 +1,4 @@
const states = global.get('homeassistant.homeAssistant.states')
// Set some constants for all of the lights // Set some constants for all of the lights
// Half and half for living room LED strip // Half and half for living room LED strip
@ -10,6 +11,13 @@ const segLivingRoom2 = [10,11,12,13,14,15,16,17,18,19]
const segLivingRoom3 = [20,21,22,23,24,25,26,27,28,29] const segLivingRoom3 = [20,21,22,23,24,25,26,27,28,29]
const segLivingRoom4 = [30,31,32,33,34,35,36,37,38,39] const segLivingRoom4 = [30,31,32,33,34,35,36,37,38,39]
// Preset effect segments for living room LED strip
const effectSegLivingRoom1 = [].concat(segLivingRoom1, segLivingRoom3)
const effectSegLivingRoom2 = [].concat(segLivingRoom2, segLivingRoom4)
// Full strip for living room LED strip
const livingRoomFull = [].concat(halfLivingRoom1, halfLivingRoom2)
// Half and half for basement LED strip // Half and half for basement LED strip
const halfBasement1 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] const halfBasement1 = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
const halfBasement2 = [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31] const halfBasement2 = [16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]
@ -20,6 +28,29 @@ const segBasement2 = [8,9,10,11,12,13,14,15]
const segBasement3 = [16,17,18,19,20,21,22,23] const segBasement3 = [16,17,18,19,20,21,22,23]
const segBasement4 = [24,25,26,27,28,29,30,31] const segBasement4 = [24,25,26,27,28,29,30,31]
// Preset effect segments for basement LED strip
const effectSegBasement1 = [].concat(segBasement1, segBasement3)
const effectSegBasement2 = [].concat(segBasement2, segBasement4)
// Full strip for basement LED strip
const basementFull = [].concat(halfBasement1, halfBasement2)
// Adaptive Lighting switches
const adaptiveFirstFloor = [
"switch.adaptive_lighting_living_room",
"switch.adaptive_lighting_dining_room_lamp",
"switch.adaptive_lighting_tina_lamp"]
const adaptiveBasement = [
"switch.adaptive_lighting_basement_studio"
]
// Room scene options
const scenesLivingRoom = states["input_select.living_room_scenes"].attributes.options
const scenesBasement = states["input_select.basement_studio_scenes"].attributes.options
const scenesTinaDesk = states["input_select.tina_desk_scenes"].attributes.options
// Write flow variables
flow.set("halfLivingRoom1", halfLivingRoom1, "diskCon") flow.set("halfLivingRoom1", halfLivingRoom1, "diskCon")
flow.set("halfLivingRoom2", halfLivingRoom1, "diskCon") flow.set("halfLivingRoom2", halfLivingRoom1, "diskCon")
@ -28,6 +59,11 @@ flow.set("segLivingRoom2", segLivingRoom2, "diskCon")
flow.set("segLivingRoom3", segLivingRoom3, "diskCon") flow.set("segLivingRoom3", segLivingRoom3, "diskCon")
flow.set("segLivingRoom4", segLivingRoom4, "diskCon") flow.set("segLivingRoom4", segLivingRoom4, "diskCon")
flow.set("effectSegLivingRoom1", effectSegLivingRoom1, "diskCon")
flow.set("effectSegLivingRoom2", effectSegLivingRoom2, "diskCon")
flow.set("livingRoomFull", livingRoomFull, "diskCon")
flow.set("halfBasement1", halfBasement1, "diskCon") flow.set("halfBasement1", halfBasement1, "diskCon")
flow.set("halfBasement2", halfBasement1, "diskCon") flow.set("halfBasement2", halfBasement1, "diskCon")
@ -35,3 +71,15 @@ flow.set("segBasement1", segBasement1, "diskCon")
flow.set("segBasement2", segBasement2, "diskCon") flow.set("segBasement2", segBasement2, "diskCon")
flow.set("segBasement3", segBasement3, "diskCon") flow.set("segBasement3", segBasement3, "diskCon")
flow.set("segBasement4", segBasement4, "diskCon") flow.set("segBasement4", segBasement4, "diskCon")
flow.set("effectSegBasement1", effectSegBasement1, "diskCon")
flow.set("effectSegBasement2", effectSegBasement2, "diskCon")
flow.set("basementFull", basementFull, "diskCon")
flow.set("adaptiveFirstFloor", adaptiveFirstFloor, "diskCon")
flow.set("adaptiveBasement", adaptiveBasement, "diskCon")
flow.set("scenesLivingRoom", scenesLivingRoom, "diskCon")
flow.set("scenesBasement", scenesBasement, "diskCon")
flow.set("scenesTinaDesk", scenesTinaDesk, "diskCon")

View File

@ -1,36 +1,131 @@
const states = global.get('homeassistant.homeAssistant.states') const states = global.get('homeassistant.homeAssistant.states')
const occupied = states["binary_sensor.basement_occupied"].state const occupied = states["binary_sensor.basement_occupied"].state
const quiet = states["input_boolean.studio_quiet"].state const quiet = states["input_boolean.studio_quiet"].state
const deskState = states["light.tina_desk_lights"].state const stateTinaDesk = states["light.tina_desk_lights"].state
const livingRoomState = states["light.living_room_lights"].state const stateLivingRoom = states["light.living_room_lights"].state
const diningRoomState = states["light.dining_room_lamp"].state const stateDiningRoom = states["light.dining_room_lamp"].state
const basementState = states["light.basement_studio_lights"].state const stateBasement = states["light.basement_studio_lights"].state
const where = msg.payload.event.where const adaptLivingRoom = states["switch.adaptive_lighting_living_room"].state
const type = msg.payload.event.type 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 duration = msg.payload.event.duration
const delay = duration * 1000
const adaptiveSwitchFirstFloor = flow.get("adaptiveFirstFloor")
const adaptiveSwitchBasement = flow.get("adaptiveBasement")
//! 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 firstFloorLights = []
let basementLights = [] let basementLights = []
let basement1 = []
let basement2 = []
let basementFull = []
let livingRoom1 = []
let livingRoom2 = []
let livingRoomFull = []
if (deskState === 'on') { if (stateTinaDesk === 'on') {
firstFloorLights.push('light.tina_desk_strip','light.tina_lamp_top','light.tina_lamp_side') firstFloorLights.push('light.tina_desk_strip','light.tina_lamp_top','light.tina_lamp_side')
} }
if (livingRoomState === 'on') { 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') firstFloorLights.push('light.living_room_color_1','light.living_room_color_2','light.living_room_color_3','light.living_room_led_strip')
} }
if (diningRoomState === 'on') { if (stateDiningRoom === 'on') {
firstFloorLights.push('light.dining_room_lamp') firstFloorLights.push('light.dining_room_lamp')
} }
if (basementState === 'on') { if (stateBasement === 'on') {
basementLights.push('light.basement_tall_lamp','light.basement_short_lamp','light.basement_stairwell','light.basement_led_strip_1') basementLights.push('light.basement_tall_lamp','light.basement_short_lamp','light.basement_stairwell','light.basement_led_strip_1')
} }
flow.set("deskState", deskState) if (effectDivide === 'half') {
flow.set("livingRoomState", livingRoomState) basement1 = flow.get("halfBasement1")
flow.set("diningRoomState", diningRoomState) basement2 = flow.get("halfBasement2")
flow.set("basementState", basementState) livingRoom1 = flow.get("halfLivingRoom1")
livingRoom2 = flow.get("halfLivingRoom2")
} else if (effectDivide === 'quarter') {
basement1 = flow.get("effectSegBasement1")
basement2 = flow.get("effectSegBasement2")
livingRoom1 = flow.get("effectSegLivingRoom1")
livingRoom2 = flow.get("effectSegLivingRoom2")
} else if (effectDivide === 'full') {
basementFull = flow.get("basementFull")
livingRoomFull = flow.get("livingRoomFull")
}
// let segLivingRoom = [].concat(segLivingRoom1, segLivingRoom2) //! Implement setting of colors here
// Set message payloads
let sendBasementStrip1 = {
"payload": {
"domain": "lifx",
"service": "set_state",
"target": {
"entity_id": ["light.basement_led_strip_1"]
},
"data": {
"zones": basement1
}
}
}
let sendBasementStrip2 = {
"payload": {
"domain": "lifx",
"service": "set_state",
"target": {
"entity_id": ["light.basement_led_strip_1"]
},
"data": {
"zones": basement2
}
}
}
let sendLivingRoomStrip1 = {
"payload": {
"domain": "lifx",
"service": "set_state",
"target": {
"entity_id": ["light.living_room_led_strip"]
},
"data": {
"zones": livingRoom1
}
}
}
let sendLivingRoomStrip2 = {
"payload": {
"domain": "lifx",
"service": "set_state",
"target": {
"entity_id": ["light.living_room_led_strip"]
},
"data": {
"zones": livingRoom2
}
}
}