title: HA Floorplan path: ha-floorplan icon: mdi:floor-plan panel: true cards: - type: vertical-stack cards: - type: horizontal-stack cards: - type: custom:floorplan-card config: image: /local/floorplan/fullsized_floorplan.svg # image: # location: /local/floorplan/fullsized_floorplan.svg # cache: false stylesheet: /local/floorplan/floorplan.css # log_level: debug # console_log_level: debug defaults: hover_action: hover-info hover_info_filter: - min_mireds - max_mireds - icon - order - color_mode tap_action: more-info rules: - entities: - fan.master_bedroom_fan_light_switch_fan - fan.girls_room_fan_light_switch_fan states: - state: "on" class: spinning-fan - entities: - sensor.hvac_action states: - state: heating class: hvac-heating - state: cooling class: hvac-cooling - state: fan class: hvac-fan - state: idle class: hvac-idle - entities: - input_boolean.entryway_occupied - input_boolean.front_room_occupied - input_boolean.dining_room_occupied - input_boolean.kitchen_occupied - input_boolean.girls_room_occupied - input_boolean.girls_room_closet_occupied - input_boolean.bedroom_occupied - input_boolean.bathroom_occupied - input_boolean.bedroom_closet_occupied - input_boolean.garage_occupied - input_boolean.computer_area_occupied - input_boolean.great_room_occupied - input_boolean.boys_room_occupied - input_boolean.mancave_occupied - input_boolean.utility_room_occupied - input_boolean.deck_occupied - input_boolean.front_porch_occupied - input_boolean.furnace_room_occupied - input_boolean.deck_occupied states: - state: "on" class: room-occupied - state: "off" class: room-empty action: domain: homeassistant service: homeassistant.toggle - entities: - sensor.general_waste states: - state: "today" class: bin-today - state: "tomorrow" class: bin-tomorrow - state: "future" class: bin-future - state: "false" class: bin-false - entities: - binary_sensor.furnace_room_water_sensor_leak states: - state: "on" class: water-wet - state: "off" class: water-dry - entities: - binary_sensor.gray_suv_east_side - binary_sensor.gray_suv_west_side states: - state: "on" class: "suv-home" - state: "off" class: "hidden-entity" - entities: - plant.plant_sensor_cea4 - plant.plant_sensor_3eae - plant.hasta_soil_sensor - plant.daisy_soil_sensor - plant.plant_sensor_3eb0 states: - state: "problem" class: "health-warning" - state: "ok" class: "health-good" tap_action: action: navigate navigation_path: /phone-yaml/plants - entities: - binary_sensor.black_bed_occupied - binary_sensor.white_bed_occupied - binary_sensor.master_bed_left_occupied - binary_sensor.master_bed_right_occupied - binary_sensor.computer_area_person_occupancy - binary_sensor.dining_room_person_occupancy - binary_sensor.entryway_person_occupancy - binary_sensor.front_porch_person_occupancy - binary_sensor.front_room_person_occupancy - binary_sensor.walkway_person_occupancy - binary_sensor.workshop_person_occupancy - binary_sensor.great_room_person_occupancy - binary_sensor.kitchen_person_occupancy - binary_sensor.master_bedroom_person_occupancy - binary_sensor.downstairs_person_occupancy - binary_sensor.upstairs_person_occupancy - binary_sensor.girls_room_person_occupancy - binary_sensor.utility_room_person_occupancy - binary_sensor.utility_room_person_occupancy - binary_sensor.boys_room_person_occupancy - binary_sensor.furnace_room_person_occupancy - binary_sensor.driveway_vehicle_occupancy states: - state: "on" class: "visible-entity" - state: "off" class: "hidden-entity" - state: "unavailable" class: "transparent" - entities: - sensor.thermal_comfort_dew_point_perception - sensor.master_bedroom_thermal_comfort_dew_point_perception - sensor.girls_room_thermal_comfort_dew_point_perception - sensor.great_room_thermal_comfort_dew_point_perception - sensor.front_room_thermal_comfort_dew_point_perception - sensor.master_bathroom_thermal_comfort_dew_point_perception - sensor.computer_area_thermal_comfort_dew_point_perception - sensor.boys_room_thermal_comfort_dew_point_perception - sensor.utility_room_thermal_comfort_dew_point_perception states: - state: "dry" class: "green-to-red-grad-2" - state: "very_comfortable" class: "green-to-red-grad-4" - state: "comfortable" class: "green-to-red-grad-6" - state: "ok_but_humid" class: "green-to-red-grad-8" - state: "somewhat_uncomfortable" class: "green-to-red-grad-10" - state: "quite_uncomfortable" class: "green-to-red-grad-14" - state: "extremely_uncomfortable" class: "green-to-red-grad-16" - state: "severely_high" class: "green-to-red-grad-18" - state: "unavailable" class: "entity-unavailable" - entities: - sensor.thermal_comfort_humidex_perception - sensor.master_bedroom_thermal_comfort_humidex_perception - sensor.girls_room_thermal_comfort_humidex_perception - sensor.great_room_thermal_comfort_humidex_perception - sensor.front_room_thermal_comfort_humidex_perception - sensor.master_bathroom_thermal_comfort_humidex_perception - sensor.computer_area_thermal_comfort_humidex_perception - sensor.boys_room_thermal_comfort_humidex_perception - sensor.utility_room_thermal_comfort_humidex_perception states: - state: "comfortable" class: "green-to-red-grad-3" - state: "noticable_discomfort" class: "green-to-red-grad-6" - state: "evident_discomfort" class: "green-to-red-grad-9" - state: "great_discomfort" class: "green-to-red-grad-12" - state: "dangerous_discomfort" class: "green-to-red-grad-15" - state: "heat_stroke" class: "green-to-red-grad-18" - state: "unavailable" class: "entity-unavailable" - entities: - sensor.thermal_comfort_summer_simmer_perception - sensor.master_bedroom_thermal_comfort_summer_simmer_perception - sensor.girls_room_thermal_comfort_summer_simmer_perception - sensor.great_room_thermal_comfort_summer_simmer_perception - sensor.front_room_thermal_comfort_summer_simmer_perception - sensor.master_bathroom_thermal_comfort_summer_simmer_perception - sensor.computer_area_thermal_comfort_summer_simmer_perception - sensor.boys_room_thermal_comfort_summer_simmer_perception - sensor.utility_room_thermal_comfort_summer_simmer_perception states: - state: "unavailable" class: "entity-unavailable" - state: "cool" class: "green-to-red-grad-2" - state: "slightly_cool" class: "green-to-red-grad-4" - state: "comfortable" class: "green-to-red-grad-6" - state: "slightly_warm" class: "green-to-red-grad-8" - state: "increasing_discomfort" class: "green-to-red-grad-10" - state: "extremely_warm" class: "green-to-red-grad-12" - state: "danger_of_heatstroke" class: "green-to-red-grad-14" - state: "extreme_danger_of_heatstroke" class: "green-to-red-grad-16" - state: "circulatory_collapse_imminent" class: "green-to-red-grad-18" - entities: - input_boolean.clint_home - group.phone_clint - input_boolean.emmett_home #- input_boolean.emmett_tablet_home #- device_tracker.emmett_s_fire_wifi - group.person_emmett - input_boolean.bridget_home #- input_boolean.bridget_tablet_home #- device_tracker.bridget_s_fire_wifi - group.person_bridget #- input_boolean.kristy_home #- input_boolean.marshall_home #- group.work_laptop #- group.person_kristy_work states: - state: "on" class: "tracker-home" - state: "off" class: "tracker-away" - state: "home" class: "tracker-home" - state: "not_home" class: "tracker-away" - state: "Work" class: "tracker-work" - state: "other" class: "tracker-work" - state: "WMU" class: "tracker-work" - state: "London 2" class: "tracker-work" - state: "At work" class: "tracker-other" # - entities: # - input_boolean.guest_mode # states: # - state: 'on' # class: 'tracker-home' # - state: 'off' # class: 'tracker-away' # - entities: # Google Homes, Minis, and Lenovo Clocks - media_player.bathroom_mini - media_player.computer_area_hub - media_player.deck - media_player.garage - media_player.great_room - media_player.kitchen - media_player.girls_room_clock - media_player.front_room_hub - media_player.bedroom_hub - media_player.boys_room_clock - media_player.ma_home_assistant_voice_097b44_media_player states: - state: "playing" class: "squeezebox-on" - state: "paused" class: "squeezebox-paused" - state: "off" class: "squeezebox-off" - state: "idle" class: "squeezebox-idle" # - entities: # # Chromecast # - media_player.master_bedroom_tv # states: # - state: 'on' # class: 'tv-on' # - state: 'playing' # class: 'tv-on' # - state: 'off' # class: 'tv-off' # - entities: # Rokus - media_player.front_room_tv - media_player.downstairs_roku states: - state: "on" class: "squeezebox-on" - state: "playing" class: "squeezebox-on" - state: "home" class: "squeezebox-on" - state: "Online" class: "squeezebox-on" - state: "off" class: "squeezebox-off" - state: "not home" class: "squeezebox-off" - state: "not_home" class: "squeezebox-off" - state: "Offline" class: "squeezebox-off" - state: "unknown" class: "squeezebox-unknown" # - entities: # - sensor.printer # class_template: ' # var health = parseFloat(entity.state.replace("°", "")); # if (health < 50) # return "health-critical"; # else if (health < 100) # return "health-warning"; # else if (health < 250) # return "health-info"; # else if (health >= 25) # return "health-good"; # else # return "health-unknown"; # ' # # Indoors should be moderate - entities: - sensor.front_room_thermostat_temperature - sensor.front_room_ecobee_temperature - sensor.entryway_hue_motion_sensor_temperature - sensor.girls_room_multisensor_air_temperature - sensor.master_bedroom_multisensor_air_temperature - sensor.thermostat_temperature - sensor.utility_room_thermostat_temperature - sensor.bathroom_multisensor_air_temperature - sensor.downstairs_temperature - sensor.computer_area_multisensor_air_temperature - sensor.mancave_thermostat_temperature - sensor.boys_room_multisensor_air_temperature - sensor.kitchen_multisensor_air_temperature - sensor.great_room_multisensor_air_temperature - sensor.dining_room_multisensor_air_temperature - sensor.furnace_room_thermostat_temperature - sensor.front_room_hue_motion_sensor_temperature - sensor.upstairs_mean_temperature - sensor.downstairs_mean_temperature # text_template: '${entity.state ? entity.state : "unknown"} F' # An example of rounding up a number, i.e. a temperature of 90.1 becomes 91 text_template: '${entity.state ? Math.ceil(entity.state) : "undefined"} F' class_template: ' var temp = parseFloat(entity.state.replace("°", "")); if (temp < 58) return "temp-freeze"; else if (temp < 68) return "temp-low"; else if (temp < 75) return "temp-medium"; else if (temp < 85) return "temp-high"; else if (temp >= 85) return "temp-hot"; else return "temp-unknown"; ' # Outside is expected to be colder/hotter - entities: - sensor.front_yard_thermostat_temperature - sensor.front_porch_hue_motion_sensor_temperature - sensor.deck_hue_motion_sensor_temperature - sensor.garage_multisensor_air_temperature # - sensor.hvac_supply_temperature # - sensor.hvac_return_temperature # - sensor.hvac_ambient_temperature - sensor.back_yard_thermostat_temperature - sensor.outdoor_temperature # text_template: '${entity.state ? entity.state : "unknown"} F' # An example of rounding up a number, i.e. a temperature of 90.1 becomes 91 text_template: '${entity.state ? Math.ceil(entity.state) : "undefined"} F' class_template: ' var temp = parseFloat(entity.state.replace("°", "")); if (temp < 30) return "temp-freeze"; else if (temp < 60) return "temp-low"; else if (temp < 85) return "temp-medium"; else if (temp < 100) return "temp-high"; else if (temp >= 100) return "temp-hot"; else return "temp-unknown"; ' # The HVAC Delta can be positive or negative, depending on if the furnace, heat pump, or ac is running - entities: - sensor.hvac_delta_temperature # An example of rounding up a number, i.e. a temperature of 90.1 becomes 91 text_template: '${entity.state ? Math.ceil(entity.state) : "undefined"} F' class_template: ' var temp = parseFloat(entity.state.replace("°", "")); if (temp < -30) return "temp-freeze"; else if (temp < -20) return "temp-low"; else if (temp < 10) return "temp-medium"; else if (temp < 30) return "temp-high"; else if (temp >= 100) return "temp-hot"; else return "hidden-entity"; ' - entities: - sensor.kitchen_fridge_thermostat_temperature text_template: '${entity.state ? Math.floor(entity.state) : "unknown"}' class_template: ' var temp = parseFloat(entity.state.replace("°", "")); if (temp < 32) return "fridge-low"; else if (temp < 40) return "fridge-medium"; else if (temp >= 41) return "fridge-high"; else return "temp-unknown"; ' - entities: - sensor.kitchen_freezer_thermostat_temperature text_template: '${entity.state ? Math.floor(entity.state) : "unknown"}' class_template: ' var temp = parseFloat(entity.state.replace("°", "")); if (temp < 4) return "fridge-medium"; else if (temp >= 5) return "fridge-high"; else return "temp-unknown"; ' # Bathrooms are expected to be a bit more humid - entities: - sensor.bathroom_multisensor_relative_humidity - sensor.utility_room_thermostat_humidity text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} %' class_template: ' var humid = parseFloat(entity.state.replace("%", "")); if (humid < 30) return "humid-low"; else if (humid < 45) return "humid-med-low"; else if (humid < 60) return "humid-medium"; else if (humid < 70) return "humid-med-high"; else return "humid-high"; ' - entities: - sensor.girls_room_multisensor_humidity - sensor.master_bedroom_multisensor_humidity - sensor.thermostat_humidity - sensor.computer_area_multisensor_humidity - sensor.great_room_multisensor_humidity - sensor.mancave_thermostat_humidity - sensor.front_room_thermostat_humidity - sensor.kitchen_multisensor_humidity - sensor.furnace_room_thermostat_humidity - sensor.boys_room_multisensor_humidity - sensor.dining_room_multisensor_humidity text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} %' class_template: ' var humid = parseFloat(entity.state.replace("%", "")); if (humid < 40) return "humid-low"; else if (humid < 50) return "humid-med-low"; else if (humid < 60) return "humid-medium"; else if (humid < 70) return "humid-med-high"; else return "humid-high"; ' - entities: - sensor.front_yard_thermostat_humidity - sensor.garage_multisensor_humidity - sensor.back_yard_thermostat_humidity - sensor.outdoor_humidity text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} %' class_template: ' var humid = parseFloat(entity.state.replace("%", "")); if (humid < 30) return "humid-low"; else if (humid < 45) return "humid-med-low"; else if (humid < 55) return "humid-medium"; else if (humid < 65) return "humid-med-high"; else return "humid-high"; ' - entities: - sensor.entryway_hue_motion_sensor_illuminance - sensor.front_porch_hue_motion_sensor_illuminance - sensor.deck_hue_motion_sensor_illuminance - sensor.girls_room_multisensor_illuminance - sensor.master_bedroom_multisensor_illuminance - sensor.computer_area_multisensor_illuminance - sensor.great_room_multisensor_illuminance - sensor.garage_multisensor_illuminance - sensor.front_room_hue_motion_sensor_illuminance - sensor.kitchen_multisensor_illuminance - sensor.boys_room_multisensor_illuminance - sensor.dining_room_multisensor_illuminance text_template: '${entity.state ? Math.ceil(entity.state) : "unknown"} lx' class_template: ' var light = parseFloat(entity.state.replace("°", "")); if (light < 10) return "light-low"; else if (light < 100) return "light-medium-low"; else if (light < 400) return "light-medium"; else return "light-high"; ' - entities: - sensor.furnace_room_multisensor_salt_level_in_bags text_template: '${entity.state ? Math.floor(entity.state) : "undefined"}' class_template: ' var bags = parseFloat(entity.state); if (bags > 4) return "bags-five"; else if (bags > 3) return "bags-four"; else if (bags > 2) return "bags-three"; else if (bags > 1) return "bags-two"; else if (bags > 0) return "bags-one"; else return "bags-zero"; ' - entities: - input_text.person_clint - input_text.person_emmett - input_text.person_bridget # - input_text.person_marshall # - input_text.person_kristy # - input_text.person_tess # - input_text.person_ebin # - input_text.person_guest text_template: '${entity.state ? entity.state : "unknown"}' class_template: ' return "info-text"; ' - entities: - light.front_room_splash_left - light.front_room_splash_right - light.black_bed_wled - light.white_bed_wled - light.dining_room - light.master_bedroom_hue - light.computer_area_hue - light.great_room_hue - light.bar - light.kitchen_overhead - light.girls_room_hue - light.entry - light.shower - light.master_bathroom_vanity_hue - light.master_bedroom_closet - light.girls_room_closet - light.garage_overhead - light.driveway - light.front_porch_overhead - light.utility_room_vanity - light.utility_room_hue - light.mancave - light.deck - light.boys_room_hue - light.boys_room_closet - light.furnace_room - light.storage_room - switch.utility_room_vent_switch - switch.master_bathroom_vent_switch states: - state: "on" class: "light-on" - state: "off" class: "light-off" - state: "unavailable" class: "entity-unavailable" action: domain: homeassistant service: homeassistant.toggle - entities: - binary_sensor.boys_room_naturally_lit - binary_sensor.computer_area_naturally_lit - binary_sensor.deck_naturally_lit - binary_sensor.dining_room_naturally_lit - binary_sensor.entryway_naturally_lit - binary_sensor.front_porch_naturally_lit - binary_sensor.front_room_naturally_lit - binary_sensor.garage_naturally_lit - binary_sensor.great_room_naturally_lit - binary_sensor.kitchen_naturally_lit - binary_sensor.master_bedroom_naturally_lit - binary_sensor.girls_room_naturally_lit states: - state: "on" class: "sun-on" - state: "off" class: "light-off" - state: "unavailable" class: "entity-unavailable" - state: "unknown" class: "light-unavailable" - entities: - light.accent - light.master_bedroom_accent states: - state: "on" class: "light-strip-on" - state: "off" class: "light-off" - state: "unavailable" class: "light-unavailable" - entities: - binary_sensor.computer_chair_contact_occupied # - switch.computer_area_pi_plug # - switch.computer_area_lighthouse # - switch.front_room_pi_plug # - switch.shelly1pm_f4cfa2748094 states: - state: "on" class: "doorbell-on" - state: "off" class: "doorbell-off" - entities: - binary_sensor.kitchen_motion_sensor_motion_detection - binary_sensor.kitchen_multisensor_motion_detection - binary_sensor.girls_room_multisensor_motion_detection - binary_sensor.master_bedroom_multisensor_motion_detection - binary_sensor.master_bathroom_motion_switch_motion_detection - binary_sensor.computer_area_multisensor_motion_detection - binary_sensor.front_room_motion_sensor_motion_detection - binary_sensor.dining_room_multisensor_motion_detection - binary_sensor.front_porch_motion - binary_sensor.deck_motion - binary_sensor.entryway_motion - binary_sensor.frigate_cam01_person_occupancy - binary_sensor.frigate_cam03_person_occupancy - binary_sensor.frigate_cam04_person_occupancy - binary_sensor.frigate_cam06_person_occupancy - binary_sensor.frigate_cam07_person_occupancy - binary_sensor.frigate_cam08_person_occupancy - binary_sensor.frigate_cam12_person_occupancy - binary_sensor.frigate_cam18_person_occupancy - binary_sensor.frigate_cam19_person_occupancy - binary_sensor.great_room_multisensor_motion_detection - binary_sensor.garage_multisensor_motion_detection - binary_sensor.master_bedroom_closet_motion_switch_motion_detection - binary_sensor.girls_room_closet_motion_switch_motion_detection - binary_sensor.great_room_motion_switch_motion_detection - binary_sensor.entryway_motion_switch_motion_detection - binary_sensor.garage_motion_switch_motion_detection - binary_sensor.front_room_motion_switch_motion_detection - binary_sensor.utility_room_motion_switch_motion_detection - binary_sensor.mancave_motion_switch_motion_detection - binary_sensor.dining_room_motion_switch_motion_detection - binary_sensor.boys_room_multisensor_motion_detection - binary_sensor.boys_room_motion_switch_motion_detection - binary_sensor.furnace_room_motion_switch_motion_detection - binary_sensor.front_room_motion states: - state: "off" class: "motion-background" - state: "on" class: "warning-background" - state: "unavailable" class: "motion-unavailable" - entities: #- binary_sensor.inner_garage_door - binary_sensor.inner_garage_door_contact - binary_sensor.garage_door - binary_sensor.patio_door_contact - binary_sensor.master_bedroom_door_contact - binary_sensor.front_door_contact #- binary_sensor.outer_garage_door - binary_sensor.outer_garage_door_contact - binary_sensor.girls_room_door - binary_sensor.master_suite_door_contact - binary_sensor.master_bathroom_door_contact - binary_sensor.basement_door_contact - binary_sensor.master_bedroom_closet_door_contact - binary_sensor.girls_room_closet_door_contact - binary_sensor.pantry_door_contact - binary_sensor.storage_room_door_contact - binary_sensor.mancave_door_contact - binary_sensor.boys_room_door_contact - binary_sensor.furnace_room_multisensor_door - binary_sensor.utility_room_door_contact states: - state: "off" class: "door-closed" - state: "on" class: "door-open" - entities: - sensor.dishwasher states: - state: "Idle" class: "appliance-off" - state: "Problem" class: "appliance-problem" - state: "Running" class: "appliance-on" - state: "Pending" class: "appliance-pending" - entities: - sensor.washing_machine - sensor.tumble_dryer - binary_sensor.keurig - binary_sensor.microwave - binary_sensor.stove - binary_sensor.furnace - binary_sensor.heat_pump - binary_sensor.sump_pump states: - state: "off" class: "appliance-off" - state: "on" class: "appliance-on" - state: "running" class: "appliance-on" - state: "pending" class: "appliance-pending" - state: "idle" class: "appliance-off" - entities: - binary_sensor.front_room_window_contact - binary_sensor.girls_room_window_contact - binary_sensor.master_bedroom_window_contact - binary_sensor.computer_area_window_contact - binary_sensor.boys_room_window_contact - binary_sensor.entryway_window_contact states: - state: "off" class: "window-closed" - state: "on" class: "window-open" - state: "unavailable" class: "window-unavailable" - entities: - camera.frigate_cam01 - camera.frigate_cam03 - camera.frigate_cam04 - camera.frigate_cam06 - camera.frigate_cam07 - camera.frigate_cam08 - camera.frigate_cam12 - camera.frigate_cam14 - camera.frigate_cam15 - camera.frigate_cam18 - camera.frigate_cam19 states: - state: "idle" class: "camera-idle" - state: "unavailable" class: "camera-unavailable" - state: "streaming" class: "camera-streaming" - state: "recording" class: "camera-recording" - name: thermostat_temp entities: - climate.thermostat text_template: '${entity.attributes.current_temperature ? entity.attributes.current_temperature : "undefined"}' # # The above text_template uses extended attributes from the climate.* objects to get current temperature. #- name: text_states # entities: # - sensor.downstairs_thermostat_humidity # - sensor.dark_sky_temperature # - sensor.last_message # text_template: '${entity.state ? entity.state.replace(/\s{2,}/g,"") : "undefined"}' # # The above text_template uses jQuery syntax to search and replace any instance of 2 consecutive (or more) spaces in a string of text.