├── README.md ├── admin.yaml ├── bg_long.png ├── cameras.yaml ├── dashboard-400.png ├── dashboard.yaml ├── dashboard_sensors.yaml ├── fan.yaml ├── hvac.yaml ├── music.yaml ├── printer.yaml ├── security.yaml ├── tv_remotes.yaml ├── vacuum.yaml └── yt.png /README.md: -------------------------------------------------------------------------------- 1 | # homeassistant-dashboard 2 | __YAML configuration of my Home Assistant lovelace dashboard UI__ 3 | 4 | This repository includes the separate files that compose my dashboard. The main dashboard is dashboard.yaml which navigates to many sub-dashboards that contain distinct functionality. Also included is a file with yaml code for the sensors that are used in the masthead of the dashboard. 5 | 6 | __Some of the features that I'm most happy with and proud of__: 7 | 8 | * Masthead includes swiping left/right to quickly see the front door cam or the driveway in order to see whose car is blocking whom. 9 | 10 | * The camera view cycles through cameras surveillance-style (demo video is sped up during the camera view). 11 | 12 | * Universal TV remotes that control Roku enabled TV's and related DirecTV boxes. Family members have access to the remote for the family room TV and their own bedroom TV. 13 | 14 | * Certain lights (like bedroom lights) and buttons (such as the Admin view button) are only visible to appropriate family members. 15 | 16 | * Multi-room audio interface that broadcasts certain streaming services and local radio streams (using Mopidy). 17 | 18 |

19 | 20 |

21 |

22 | Video Demo 23 |

24 |

25 | 26 | 27 | 28 |

29 | -------------------------------------------------------------------------------- /admin.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:tools' 7 | badges: [] 8 | cards: 9 | - type: vertical-stack 10 | cards: 11 | - type: 'custom:button-card' 12 | size: 25px 13 | icon: 'mdi:close' 14 | tap_action: 15 | action: navigate 16 | navigation_path: /lovelace/0 17 | styles: 18 | card: 19 | - width: 40px 20 | - height: 40px 21 | - background-color: 'rgba(255,255,255,0)' 22 | - box-shadow: none 23 | - margin-bottom: '-25px' 24 | icon: 25 | - margin-left: px 26 | - type: 'custom:homekit-card' 27 | home: false 28 | title: Home 29 | useBrightness: true 30 | useTemperature: false 31 | titleColor: '#FFF' 32 | statePositionTop: true 33 | style: | 34 | :host { 35 | --tile-background: rgba(255, 255, 255, 0.10); 36 | --tile-border-radius: 12px; 37 | --tile-width: 100px; 38 | --tile-height: 100px; 39 | --tile-on-background: rgba(255, 255, 255, 0.7); 40 | 41 | --tile-name-text-color: rgba(255, 255, 255, 0.8); 42 | --tile-on-name-text-color: rgba(0, 0, 0, 1); 43 | 44 | --tile-state-text-color: rgba(255, 255, 255, 0.8); 45 | --tile-on-state-text-color: rgba(0, 0, 0, 1); 46 | 47 | --tile-state-changed-text-color: rgb(134, 134, 134); 48 | --tile-unavailable-state-text-color: rgba(255, 255, 255, 1); 49 | 50 | --tile-value-text-color: rgba(255, 0, 0, 1); 51 | 52 | 53 | --tile-icon-color: rgba(255, 255, 255, 0.8); 54 | --tile-on-icon-color: rgba(255,165,0,1.0); 55 | /* #f7d959; */ 56 | font-family: Arial; 57 | } 58 | homekit-button .icon.climate { 59 | background-color: rgba(255,165,0,1.0) !important; 60 | } 61 | .hideState .state { 62 | visibility:hidden !important; 63 | } 64 | entities: 65 | - title: Notification & Alert Control 66 | entities: 67 | - entity: input_boolean.door_motion_alert 68 | name: Door Motion Alert 69 | icon: 'mdi:alert' 70 | hold_action: 71 | action: none 72 | - entity: input_boolean.garage_open_alert 73 | name: Garage Open Alert 74 | icon: 'mdi:alert' 75 | hold_action: 76 | action: none 77 | - type: markdown 78 | content: '### System Monitoring' 79 | card_mod: 80 | style: | 81 | ha-card { 82 | background: rgba(0,0,0,0); 83 | box-shadow: none; 84 | padding: 0px; 85 | margin-bottom: -35px; 86 | top: -20px; 87 | left: 5px; 88 | } 89 | - type: entities 90 | entities: 91 | - entity: sensor.uptime 92 | name: 'HA: Last Restart' 93 | - entity: sensor.last_boot 94 | name: 'Server: Last Reboot' 95 | - entity: sensor.cpu_temp 96 | icon: 'mdi:thermometer' 97 | name: 'Server: CPU Temp' 98 | - entity: sensor.disk_free_home 99 | name: 'Server: Disk Free Space' 100 | - entity: sensor.memory_free 101 | name: 'Server: Memory Free' 102 | - entity: switch.adguard_protection 103 | - entity: switch.adguard_filtering 104 | - entity: switch.adguard_safe_browsing 105 | - entity: switch.adguard_safe_search 106 | - entity: switch.adguard_parental_control 107 | state_color: true 108 | card_mod: 109 | style: | 110 | ha-card { 111 | width: 92%; 112 | margin: auto; 113 | border-radius: 12px; 114 | background: rgba(255,255,255,0.1); 115 | color: white; 116 | --paper-item-icon-color: white; 117 | margin-bottom: 15px; 118 | } 119 | show_header_toggle: false 120 | - type: markdown 121 | content: '### Presence Tracking' 122 | card_mod: 123 | style: | 124 | ha-card { 125 | background: rgba(0,0,0,0); 126 | box-shadow: none; 127 | padding: 0px; 128 | margin-bottom: -35px; 129 | top: -20px; 130 | left: 5px; 131 | } 132 | - type: 'custom:icloud3-event-log-card' 133 | card_mod: 134 | style: | 135 | ha-card { 136 | width: 88%; 137 | margin: auto; 138 | border-radius: 12px; 139 | background: rgba(0,0,0,0.2); 140 | color: white; 141 | margin-bottom: 15px; 142 | padding: 5px; 143 | } 144 | #title { 145 | visibility: hidden; 146 | } 147 | #title:after { 148 | visibility: visible; 149 | position: absolute; 150 | top: 0; 151 | left: 0; 152 | font-size: 16px; 153 | font-weight: bold; 154 | content: "Event Log"; 155 | } 156 | title: Admin 157 | -------------------------------------------------------------------------------- /bg_long.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1miran/homeassistant-dashboard/93f72f92d15f811648b21c502a78200d952a4fe5/bg_long.png -------------------------------------------------------------------------------- /cameras.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:video-image' 7 | panel: false 8 | badges: [] 9 | cards: 10 | - type: vertical-stack 11 | cards: 12 | - type: 'custom:button-card' 13 | size: 25px 14 | icon: 'mdi:close' 15 | tap_action: 16 | action: navigate 17 | navigation_path: /lovelace/0 18 | styles: 19 | card: 20 | - width: 40px 21 | - height: 40px 22 | - background-color: 'rgba(255,255,255,0)' 23 | - box-shadow: none 24 | icon: 25 | - margin-left: px 26 | - type: markdown 27 | content: '### Front' 28 | style: | 29 | ha-card { 30 | margin-bottom: -7px; 31 | background: rgba(255, 255, 255, 0.0); 32 | border-radius: 0px; 33 | box-shadow: none; 34 | color: white; 35 | font-family: Arial; 36 | } 37 | - type: 'custom:swipe-card' 38 | reset_after: 20 39 | parameters: 40 | speed: 300 41 | effect: fade 42 | autoplay: 43 | delay: 3070 44 | cards: 45 | - type: picture-glance 46 | aspect_ratio: '16:9' 47 | camera_image: camera.driveway 48 | camera_view: live 49 | entities: [] 50 | title: Driveway 51 | - type: picture-glance 52 | aspect_ratio: '16:9' 53 | camera_image: camera.front_door 54 | camera_view: live 55 | entities: [] 56 | title: Front Door 57 | - type: picture-glance 58 | aspect_ratio: '16:9' 59 | camera_image: camera.corner 60 | camera_view: live 61 | entities: [] 62 | title: Front Lawn 63 | - type: picture-glance 64 | aspect_ratio: '16:9' 65 | camera_image: camera.garage 66 | camera_view: live 67 | entities: [] 68 | title: Garage 69 | - type: markdown 70 | content: '### Rear' 71 | style: | 72 | ha-card { 73 | margin-top: -7px; 74 | margin-bottom: -7px; 75 | background: rgba(255, 255, 255, 0.0); 76 | border-radius: 0px; 77 | box-shadow: none; 78 | color: white; 79 | font-family: Arial; 80 | } 81 | - type: 'custom:swipe-card' 82 | reset_after: 20 83 | parameters: 84 | speed: 300 85 | effect: fade 86 | autoplay: 87 | delay: 3010 88 | cards: 89 | - type: picture-glance 90 | aspect_ratio: '16:9' 91 | camera_image: camera.right_side 92 | camera_view: live 93 | entities: [] 94 | title: Right Side 95 | - type: picture-glance 96 | aspect_ratio: '16:9' 97 | camera_image: camera.center_right 98 | camera_view: live 99 | entities: [] 100 | title: Center Right 101 | - type: picture-glance 102 | aspect_ratio: '16:9' 103 | camera_image: camera.lanai 104 | camera_view: live 105 | entities: [] 106 | title: Lanai 107 | - type: picture-glance 108 | aspect_ratio: '16:9' 109 | camera_image: camera.center 110 | camera_view: live 111 | entities: [] 112 | title: Center 113 | - type: picture-glance 114 | aspect_ratio: '16:9' 115 | camera_image: camera.back 116 | camera_view: live 117 | entities: [] 118 | title: Back 119 | - type: picture-glance 120 | aspect_ratio: '16:9' 121 | camera_image: camera.left_side 122 | camera_view: live 123 | entities: [] 124 | title: Left Side 125 | title: Cameras 126 | -------------------------------------------------------------------------------- /dashboard-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1miran/homeassistant-dashboard/93f72f92d15f811648b21c502a78200d952a4fe5/dashboard-400.png -------------------------------------------------------------------------------- /dashboard.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | title: Home 3 | kiosk_mode: 4 | mobile_settings: 5 | hide_header: true 6 | views: 7 | - title: Home 8 | panel: true 9 | badges: [] 10 | cards: 11 | - type: vertical-stack 12 | cards: 13 | - type: 'custom:mod-card' 14 | card_mod: 15 | style: 16 | swipe-card: 17 | $: | 18 | .swiper-pagination-bullet { 19 | width: 10px; 20 | height: 10px; 21 | background-color: rgba(255,255,255,1.0) !important; 22 | position: relative; 23 | top: 15px 24 | } 25 | .swiper-pagination-bullet-active { 26 | background-color: rgba(247,148,29,1.0) !important; 27 | } 28 | card: 29 | type: 'custom:swipe-card' 30 | start_card: 2 31 | reset_after: 30 32 | parameters: 33 | spaceBetween: 8 34 | autoHeight: true 35 | pagination: 36 | type: bullets 37 | cards: 38 | - type: picture-glance 39 | aspect_ratio: '16:9' 40 | camera_image: camera.driveway 41 | camera_view: live 42 | entities: [] 43 | name: Driveway 44 | card_mod: 45 | style: | 46 | ha-card { 47 | margin-bottom: 15px; 48 | background: rgba(255, 255, 255, 0.0); 49 | border-radius: 0; 50 | box-shadow: none; 51 | color: white; 52 | } 53 | .box { 54 | background: rgba(255,255,255,0) !important; 55 | } 56 | - type: markdown 57 | content: > 58 |

{{ 59 | states('sensor.dashboard_greeting') }}, {{ user 60 | }}

Current Temperature: 61 | {{state_attr('weather.home','temperature') | 62 | round}}°F
{% if is_state("sun.sun", 63 | "above_horizon") -%} 64 | Next Sunset: {{as_timestamp(strptime(state_attr("sun.sun", "next_setting"), '')) | timestamp_custom("%-I:%M %p")}} 65 | {%- else -%} 66 | Next Sunrise: {{as_timestamp(strptime(state_attr("sun.sun", "next_rising"), '')) | timestamp_custom("%-I:%M %p")}} 67 | {%- endif %}

SmartHome Mode: {{ 68 | states('input_text.home_mode') }}
69 | Doors: {{ states('sensor.door_locks') 70 | }}
Grocery Budget: ${{ 71 | states('sensor.grocery_budget_balance') }} 72 |

{{ 75 | states('sensor.dashboard_occupancy') 76 | }}

77 | style: | 78 | ha-card { 79 | background: transparent; 80 | margin-top: -15px; 81 | margin-bottom: -7px; 82 | } 83 | - type: picture-glance 84 | aspect_ratio: '16:9' 85 | camera_image: camera.front_door 86 | camera_view: live 87 | entities: [] 88 | name: Front Door 89 | card_mod: 90 | style: | 91 | ha-card { 92 | margin-bottom: 15px; 93 | background: rgba(255, 255, 255, 0.0); 94 | border-radius: 0; 95 | box-shadow: none; 96 | color: white; 97 | } 98 | .box { 99 | background: rgba(255,255,255,0) !important; 100 | } 101 | - type: 'custom:homekit-card' 102 | home: false 103 | title: Home 104 | useBrightness: true 105 | useTemperature: true 106 | titleColor: '#FFF' 107 | statePositionTop: true 108 | style: | 109 | :host { 110 | --tile-background: rgba(255, 255, 255, 0.10); 111 | --tile-border-radius: 12px; 112 | --tile-width: 100px; 113 | --tile-height: 100px; 114 | --tile-on-background: rgba(255, 255, 255, 0.7); 115 | 116 | --tile-name-text-color: rgba(255, 255, 255, 0.8); 117 | --tile-on-name-text-color: rgba(0, 0, 0, 1); 118 | 119 | --tile-state-text-color: rgba(255, 255, 255, 0.8); 120 | --tile-on-state-text-color: rgba(0, 0, 0, 1); 121 | 122 | --tile-state-changed-text-color: rgb(134, 134, 134); 123 | --tile-unavailable-state-text-color: rgba(255, 255, 255, 1); 124 | 125 | --tile-value-text-color: rgba(255, 0, 0, 1); 126 | 127 | 128 | --tile-icon-color: rgba(255, 255, 255, 0.8); 129 | --tile-on-icon-color: rgba(247,148,29,0.9) !important; 130 | /* #f7d959; rgba(255,204,110,1.0) */ 131 | font-family: Arial; 132 | } 133 | .top-fav { 134 | background-color: rgba(255, 255, 230,0.5) !important; 135 | } 136 | .off-bg { 137 | background-color: rgba(255, 255, 255, 0.10) ; 138 | } 139 | .fan .icon { 140 | color: rgba(0, 0, 0, 0.5) !important; 141 | } 142 | .hideState .state { 143 | visibility:hidden !important; 144 | } 145 | homekit-button .icon.climate { 146 | background-color: rgba(247,148,29,1.0) !important; 147 | } 148 | entities: 149 | - title: Favorites 150 | entities: 151 | - card: 'custom:button-card' 152 | conditionalClass: | 153 | [[[ 154 | return "top-fav"; 155 | ]]] 156 | type: 'custom:light-popup-card' 157 | tap_action: 158 | action: navigate 159 | navigation_path: /sub-security/0 160 | hold_action: 161 | action: navigate 162 | navigation_path: /sub-security/0 163 | cardOptions: 164 | name: Alarm & Security 165 | icon: 'mdi:shield-home' 166 | size: 80% 167 | show_name: false 168 | show_state: false 169 | show_label: false 170 | styles: 171 | card: 172 | - '-webkit-box-shadow': none 173 | - box-shadow: none 174 | - background-color: 'rgba(255, 255, 255, 0.0)' 175 | - margin-top: 5px 176 | icon: 177 | - color: | 178 | [[[ 179 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 180 | return "rgba(51, 102, 0,1)"; 181 | return "rgba(230, 0, 0,0.7)"; 182 | ]]] 183 | - card: 'custom:button-card' 184 | tap_action: 185 | action: call-service 186 | service: cover.toggle 187 | service_data: 188 | entity_id: cover.sonoff_sv_switch_01 189 | confirmation: 190 | text: Are you sure you'd like to open/close the garage door? 191 | hold_action: 192 | action: none 193 | conditionalClass: | 194 | [[[ 195 | return "top-fav"; 196 | ]]] 197 | cardOptions: 198 | entity: cover.sonoff_sv_switch_01 199 | size: 100% 200 | icon: | 201 | [[[ 202 | if (states['binary_sensor.garage_door'].state == "on") 203 | return "mdi:garage"; 204 | else if (states['binary_sensor.garage_door'].state == "off") 205 | return "mdi:garage-open"; 206 | else 207 | return "mdi:cloud-question"; 208 | ]]] 209 | show_name: false 210 | show_state: false 211 | show_label: false 212 | styles: 213 | card: 214 | - box-shadow: none 215 | - background-color: 'rgba(255, 255, 255, 0.0)' 216 | - margin-top: '-8px' 217 | icon: 218 | - color: | 219 | [[[ 220 | if (states['binary_sensor.garage_door'].state == "on") 221 | return "white"; 222 | return "rgba(255, 204, 110,1.0)"; 223 | ]]] 224 | - card: 'custom:button-card' 225 | conditionalClass: | 226 | [[[ 227 | return "top-fav"; 228 | ]]] 229 | tap_action: 230 | action: navigate 231 | navigation_path: /sub-cameras/0 232 | hold_action: 233 | action: none 234 | cardOptions: 235 | name: Cameras 236 | icon: 'mdi:cctv' 237 | size: 90% 238 | show_name: false 239 | show_state: false 240 | show_label: false 241 | styles: 242 | card: 243 | - box-shadow: none 244 | - background-color: 'rgba(255, 255, 255, 0.0)' 245 | - margin-top: '-5px' 246 | icon: 247 | - color: white 248 | - entity: fan.family_room_fan 249 | name: Ceiling Fan 250 | icon: 'mdi:fan' 251 | spin: true 252 | state: input_select.family_room_fan_speed 253 | conditionalClass: | 254 | [[[ 255 | if (states['input_boolean.family_room_fan_state'].state == "on") 256 | return "fan"; 257 | ]]] 258 | tap_action: 259 | action: call-service 260 | service: fan.toggle 261 | service_data: 262 | entity_id: fan.family_room_fan 263 | hold_action: 264 | action: navigate 265 | navigation_path: /sub-fan/0 266 | double_tap_action: 267 | action: navigate 268 | navigation_path: /sub-fan/0 269 | - entity: light.corner_lamp 270 | name: Corner Lamp 271 | icon: 'mdi:floor-lamp-dual' 272 | - entity: input_boolean.dummy 273 | name: Television 274 | icon: 'mdi:remote-tv' 275 | tap_action: 276 | action: navigate 277 | navigation_path: /sub-remotes/0 278 | hold_action: 279 | action: none 280 | conditionalClass: | 281 | [[[ 282 | return "hideState"; 283 | ]]] 284 | - title: Lights 285 | entities: 286 | - entity: light.kitchen 287 | name: Kitchen Island 288 | icon: 'mdi:wall-sconce-round' 289 | double_tap_action: 290 | action: popup 291 | - entity: light.kitchen_table 292 | name: Kitchen Table 293 | icon: 'mdi:wall-sconce-round' 294 | double_tap_action: 295 | action: popup 296 | - entity: light.cabinets_btm 297 | name: Under Cabinets 298 | icon: 'mdi:wall-sconce-flat' 299 | double_tap_action: 300 | action: popup 301 | - entity: light.cabinets_top 302 | name: Above Cabinets 303 | icon: 'mdi:wall-sconce-flat-variant' 304 | double_tap_action: 305 | action: popup 306 | - entity: light.tower_lamps 307 | name: Tower Lamps 308 | icon: 'mdi:floor-lamp' 309 | double_tap_action: 310 | action: call-service 311 | service: scene.turn_on 312 | service_data: 313 | entity_id: scene.tower_lights_white 314 | hold_action: 315 | action: call-service 316 | service: scene.turn_on 317 | service_data: 318 | entity_id: scene.tower_lights_purple 319 | - entity: input_boolean.family_room_fan_light_state 320 | name: Fan Light 321 | icon: 'mdi:wall-sconce-round' 322 | hold_action: 323 | action: null 324 | - entity: light.corner_lamp 325 | name: Corner Lamp 326 | icon: 'mdi:floor-lamp-dual' 327 | - entity: light.porch 328 | name: Front Exterior 329 | icon: 'mdi:coach-lamp' 330 | double_tap_action: 331 | action: more-info 332 | - entity: switch.sonoff_switch_04 333 | name: Office Lamp 334 | icon: 'mdi:desk-lamp' 335 | hold_action: 336 | action: none 337 | hide: | 338 | [[[ 339 | if (user.name == "Ely") 340 | return false; 341 | else 342 | return true; 343 | ]]] 344 | - entity: light.master 345 | name: Master Fan Light 346 | icon: 'mdi:wall-sconce-round' 347 | hide: | 348 | [[[ 349 | if (user.name == "Ely" || user.name == "Annette") 350 | return false; 351 | else 352 | return true; 353 | ]]] 354 | - entity: switch.sonoff_switch_02 355 | name: Master Lamp 356 | icon: 'mdi:lamp' 357 | hold_action: 358 | action: none 359 | hide: | 360 | [[[ 361 | if (user.name == "Ely" || user.name == "Annette") 362 | return false; 363 | else 364 | return true; 365 | ]]] 366 | - title: Accessories 367 | entities: 368 | - entity: media_player.music 369 | name: Whole Home Music Stream 370 | icon: 'mdi:music-circle-outline' 371 | tap_action: 372 | action: navigate 373 | navigation_path: /sub-music/0 374 | hold_action: 375 | action: none 376 | - entity: switch.sonoff_switch_01 377 | name: Front Room Stereo 378 | icon: 'mdi:album' 379 | hold_action: 380 | action: none 381 | - entity: media_player.denon_avr 382 | name: Family Room Home Theater 383 | icon: 'mdi:cassette' 384 | - entity: sensor.arturito 385 | name: Vacuum 386 | icon: 'mdi:robot-vacuum' 387 | state: vacuum.arturito 388 | statePath: attributes.battery_level 389 | offStates: 390 | - docked 391 | spin: true 392 | tap_action: 393 | action: navigate 394 | navigation_path: /sub-vacuum/0 395 | hold_action: 396 | action: none 397 | - entity: climate.main_floor 398 | name: A/C 399 | icon: 'mdi:air-conditioner' 400 | offStates: 401 | - heat 402 | - cool 403 | - heat_cool 404 | tap_action: 405 | action: navigate 406 | navigation_path: /sub-hvac/0 407 | hold_action: 408 | action: none 409 | - entity: input_boolean.dummy 410 | name: Printer 411 | icon: 'mdi:printer' 412 | tap_action: 413 | action: navigate 414 | navigation_path: /sub-print/0 415 | hold_action: 416 | action: none 417 | conditionalClass: | 418 | [[[ 419 | return "hideState"; 420 | ]]] 421 | - entity: input_boolean.dummy 422 | name: Admin 423 | icon: 'mdi:tools' 424 | tap_action: 425 | action: navigate 426 | navigation_path: /sub-admin/0 427 | hold_action: 428 | action: none 429 | conditionalClass: | 430 | [[[ 431 | return "hideState"; 432 | ]]] 433 | hide: | 434 | [[[ 435 | if (user.name == "Ely") 436 | return false; 437 | else 438 | return true; 439 | ]]] 440 | -------------------------------------------------------------------------------- /dashboard_sensors.yaml: -------------------------------------------------------------------------------- 1 | ## Scrape Sensor ## 2 | - platform: scrape 3 | name: Dashboard Weather 4 | resource: "https://darksky.net/forecast/COORDINATES_REDACTED/us12" 5 | select: "img" 6 | attribute: "src" 7 | index: 5 8 | scan_interval: 900 9 | 10 | ## RESTful ## 11 | - platform: rest 12 | name: Grocery Budget Balance 13 | resource: "https://api.youneedabudget.com/v1/budgets/a5e22b16-31cc-012b9a08c503/categories/333fa203-7515-d1ce-0a3b-adcde39828bc?access_token=REDACTED" 14 | value_template: "{{ value_json.data.category.balance | multiply(0.001) | round(2) }}" 15 | scan_interval: 60 16 | 17 | ## Template Sensors ## 18 | - platform: template 19 | sensors: 20 | ## LOVELACE GREETING 21 | dashboard_greeting: 22 | value_template: > 23 | {% if as_timestamp(now()) | timestamp_custom('%H') | int < 12 %} 24 | Good morning 25 | {% elif as_timestamp(now()) | timestamp_custom('%H') | int < 17 %} 26 | Good afternoon 27 | {% else %} 28 | Good evening 29 | {% endif %} 30 | dashboard_occupancy: 31 | value_template: > 32 | {% if is_state("group.occupancy_inv", "home") %} 33 | Everyone is home 34 | {% elif is_state("group.occupancy", "not_home") %} 35 | No one is home 36 | {% else %} 37 | {% set people = '' -%} 38 | {% if states("person.annette") != "home" -%} 39 | {% set people = people + "Annette, " -%} 40 | {% endif %} 41 | {% if states("person.ariel") != "home" -%} 42 | {% set people = people + "Ariel, " -%} 43 | {% endif %} 44 | {% if states("person.ely") != "home" -%} 45 | {% set people = people + "Ely, " -%} 46 | {% endif %} 47 | {% if states("person.gerardo") != "home" -%} 48 | {% set people = people + "Gerardo, " -%} 49 | {% endif %} 50 | {% if states("person.josh") != "home" -%} 51 | {% set people = people + "Josh, " -%} 52 | {% endif %} 53 | {% set people = people[:-2] -%} 54 | Not at home: {{ people }} 55 | {% endif %} 56 | door_locks: 57 | value_template: > 58 | {% if states("lock.front_door_lock") == "unlocked" and 59 | states("lock.rear_door_lock") == "unlocked" %} 60 | Unlocked 61 | {% elif states("lock.front_door_lock") == "unlocked" %} 62 | Front door unlocked 63 | {% elif states("lock.rear_door_lock") == "unlocked" %} 64 | Rear door unlocked 65 | {% else %} 66 | Locked 67 | {% endif %} -------------------------------------------------------------------------------- /fan.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_lt_p.png') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:fan' 7 | panel: false 8 | badges: [] 9 | cards: 10 | - type: vertical-stack 11 | cards: 12 | - type: 'custom:button-card' 13 | size: 25px 14 | icon: 'mdi:close' 15 | tap_action: 16 | action: navigate 17 | navigation_path: /lovelace/0 18 | styles: 19 | card: 20 | - width: 40px 21 | - height: 40px 22 | - background-color: 'rgba(255,255,255,0)' 23 | - box-shadow: none 24 | icon: 25 | - margin-left: px 26 | - type: 'custom:homekit-card' 27 | home: false 28 | title: Home 29 | useBrightness: true 30 | useTemperature: true 31 | titleColor: '#FFF' 32 | statePositionTop: true 33 | style: | 34 | :host { 35 | --tile-background: rgba(255, 255, 255, 0.1); 36 | --tile-border-radius: 12px; 37 | --tile-width: 100px; 38 | --tile-height: 100px; 39 | --tile-on-background: rgba(255, 255, 255, 0.7); 40 | 41 | --tile-name-text-color: rgba(255, 255, 255, 0.8); 42 | --tile-on-name-text-color: rgba(0, 0, 0, 1); 43 | 44 | --tile-state-text-color: rgba(255, 255, 255, 0.8); 45 | --tile-on-state-text-color: rgba(0, 0, 0, 1); 46 | 47 | --tile-state-changed-text-color: rgb(134, 134, 134); 48 | --tile-unavailable-state-text-color: rgba(255, 255, 255, 1); 49 | 50 | --tile-value-text-color: rgba(255, 0, 0, 1); 51 | 52 | 53 | --tile-icon-color: rgba(255, 255, 255, 0.8); 54 | --tile-on-icon-color: rgba(255,204,110,1.0); 55 | /* #f7d959; */ 56 | font-family: Arial; 57 | } 58 | entities: 59 | - title: '' 60 | entities: 61 | - entity: input_boolean.family_room_fan_light_state 62 | name: Light 63 | wider: true 64 | widerSize: 3 65 | hold_action: 66 | action: null 67 | - card: 'custom:button-card' 68 | halfheight: true 69 | noPadding: true 70 | hide: | 71 | [[[ 72 | if (states['fan.family_room_fan'].state == "on") 73 | return false; 74 | else 75 | return true; 76 | ]]] 77 | tap_action: 78 | action: call-service 79 | service: fan.set_percentage 80 | service_data: 81 | entity_id: fan.family_room_fan 82 | percentage: 1 83 | hold_action: 84 | action: null 85 | cardOptions: 86 | size: 25% 87 | name: Low 88 | icon: 'mdi:fan' 89 | styles: 90 | card: 91 | - border-radius: 12px 92 | - box-shadow: none 93 | - color: | 94 | [[[ 95 | if (states['fan.family_room_fan'].attributes.percentage == "1") 96 | return "rgba(0,0,0,1)"; 97 | return "rgba(255,255,255,1)"; 98 | ]]] 99 | - background-color: | 100 | [[[ 101 | if (states['fan.family_room_fan'].attributes.percentage == "1") 102 | return "rgba(255,255,255,0.1)"; 103 | return "rgba(0,0,0,0.55)"; 104 | ]]] 105 | icon: 106 | - color: | 107 | [[[ 108 | if (states['fan.family_room_fan'].attributes.percentage == "1") 109 | return "rgba(0,0,0,1)"; 110 | return "rgba(255,255,255,1.0)"; 111 | ]]] 112 | - card: 'custom:button-card' 113 | halfheight: true 114 | noPadding: true 115 | hide: | 116 | [[[ 117 | if (states['fan.family_room_fan'].state == "on") 118 | return false; 119 | else 120 | return true; 121 | ]]] 122 | tap_action: 123 | action: call-service 124 | service: fan.set_percentage 125 | service_data: 126 | entity_id: fan.family_room_fan 127 | percentage: 50 128 | hold_action: 129 | action: null 130 | cardOptions: 131 | size: 25% 132 | name: Med 133 | icon: 'mdi:fan' 134 | styles: 135 | card: 136 | - border-radius: 12px 137 | - box-shadow: none 138 | - color: | 139 | [[[ 140 | if (states['fan.family_room_fan'].attributes.percentage == "50") 141 | return "rgba(0,0,0,1)"; 142 | return "rgba(255,255,255,1)"; 143 | ]]] 144 | - background-color: | 145 | [[[ 146 | if (states['fan.family_room_fan'].attributes.percentage == "50") 147 | return "rgba(255,255,255,0.1)"; 148 | return "rgba(0,0,0,0.55)"; 149 | ]]] 150 | icon: 151 | - color: | 152 | [[[ 153 | if (states['fan.family_room_fan'].attributes.percentage == "50") 154 | return "rgba(0,0,0,1)"; 155 | return "rgba(255,255,255,1.0)"; 156 | ]]] 157 | - card: 'custom:button-card' 158 | halfheight: true 159 | noPadding: true 160 | hide: | 161 | [[[ 162 | if (states['fan.family_room_fan'].state == "on") 163 | return false; 164 | else 165 | return true; 166 | ]]] 167 | tap_action: 168 | action: call-service 169 | service: fan.set_percentage 170 | service_data: 171 | entity_id: fan.family_room_fan 172 | percentage: 100 173 | hold_action: 174 | action: null 175 | cardOptions: 176 | size: 25% 177 | name: High 178 | icon: 'mdi:fan' 179 | styles: 180 | card: 181 | - border-radius: 12px 182 | - box-shadow: none 183 | - color: | 184 | [[[ 185 | if (states['fan.family_room_fan'].attributes.percentage == "100") 186 | return "rgba(0,0,0,1)"; 187 | return "rgba(255,255,255,1)"; 188 | ]]] 189 | - background-color: | 190 | [[[ 191 | if (states['fan.family_room_fan'].attributes.percentage == "100") 192 | return "rgba(255,255,255,0.1)"; 193 | return "rgba(0,0,0,0.55)"; 194 | ]]] 195 | icon: 196 | - color: | 197 | [[[ 198 | if (states['fan.family_room_fan'].attributes.percentage == "100") 199 | return "rgba(0,0,0,1)"; 200 | return "rgba(255,255,255,1)"; 201 | ]]] 202 | title: Fan 203 | -------------------------------------------------------------------------------- /hvac.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:air-conditioner' 7 | badges: [] 8 | cards: 9 | - type: vertical-stack 10 | cards: 11 | - type: 'custom:button-card' 12 | size: 25px 13 | icon: 'mdi:close' 14 | tap_action: 15 | action: navigate 16 | navigation_path: /lovelace/0 17 | styles: 18 | card: 19 | - width: 40px 20 | - height: 40px 21 | - background-color: 'rgba(255,255,255,0)' 22 | - box-shadow: none 23 | - margin-bottom: '-25px' 24 | icon: 25 | - margin-left: px 26 | - type: 'custom:homekit-card' 27 | home: false 28 | title: Home 29 | useBrightness: true 30 | useTemperature: false 31 | titleColor: '#FFF' 32 | statePositionTop: true 33 | style: | 34 | :host { 35 | --tile-background: rgba(255, 255, 255, 0.10); 36 | --tile-border-radius: 12px; 37 | --tile-width: 100px; 38 | --tile-height: 100px; 39 | --tile-on-background: rgba(255, 255, 255, 0.7); 40 | 41 | --tile-name-text-color: rgba(255, 255, 255, 0.8); 42 | --tile-on-name-text-color: rgba(0, 0, 0, 1); 43 | 44 | --tile-state-text-color: rgba(255, 255, 255, 0.8); 45 | --tile-on-state-text-color: rgba(0, 0, 0, 1); 46 | 47 | --tile-state-changed-text-color: rgb(134, 134, 134); 48 | --tile-unavailable-state-text-color: rgba(255, 255, 255, 1); 49 | 50 | --tile-value-text-color: rgba(255, 0, 0, 1); 51 | 52 | 53 | --tile-icon-color: rgba(255, 255, 255, 0.8); 54 | --tile-on-icon-color: rgba(222,144,0,1.0); 55 | /* #f7d959; */ 56 | font-family: Arial; 57 | } 58 | homekit-button .icon.climate { 59 | background-color: rgba(247,148,29,1.0) !important; 60 | } 61 | .hideState .state { 62 | visibility:hidden !important; 63 | } 64 | entities: 65 | - title: Climate Control 66 | entities: 67 | - entity: climate.main_floor 68 | offStates: 69 | - heat 70 | - cool 71 | - heat_cool 72 | double_tap_action: 73 | action: popup 74 | - entity: climate.upstairs 75 | offStates: 76 | - heat 77 | - cool 78 | - heat_cool 79 | double_tap_action: 80 | action: popup 81 | - type: markdown 82 | content: '### Room Sensors' 83 | card_mod: 84 | style: | 85 | ha-card { 86 | background: rgba(0,0,0,0); 87 | box-shadow: none; 88 | padding: 0px; 89 | margin-bottom: -35px; 90 | top: -20px; 91 | left: 5px; 92 | } 93 | - type: entities 94 | entities: 95 | - entity: binary_sensor.front_living_room 96 | icon: 'mdi:wifi' 97 | type: 'custom:multiple-entity-row' 98 | name: Front Living Room 99 | state_header: Occupancy 100 | entities: 101 | - entity: sensor.front_living_room_temperature 102 | name: Temperature 103 | - entity: binary_sensor.office 104 | icon: 'mdi:wifi' 105 | type: 'custom:multiple-entity-row' 106 | name: Office 107 | state_header: Occupancy 108 | entities: 109 | - entity: sensor.office_temperature 110 | name: Temperature 111 | - entity: binary_sensor.master 112 | icon: 'mdi:wifi' 113 | type: 'custom:multiple-entity-row' 114 | name: Master 115 | state_header: Occupancy 116 | entities: 117 | - entity: sensor.master_temperature 118 | name: Temperature 119 | - entity: binary_sensor.kitchen 120 | icon: 'mdi:wifi' 121 | type: 'custom:multiple-entity-row' 122 | name: Kitchen 123 | state_header: Occupancy 124 | entities: 125 | - entity: sensor.kitchen_temperature 126 | name: Temperature 127 | - entity: binary_sensor.family_room 128 | icon: 'mdi:wifi' 129 | type: 'custom:multiple-entity-row' 130 | name: Family Room 131 | state_header: Occupancy 132 | entities: 133 | - entity: sensor.family_room_temperature 134 | name: Temperature 135 | - entity: binary_sensor.josh 136 | icon: 'mdi:wifi' 137 | type: 'custom:multiple-entity-row' 138 | name: Josh's Room 139 | state_header: Occupancy 140 | entities: 141 | - entity: sensor.josh_temperature 142 | name: Temperature 143 | - entity: binary_sensor.guest_bedroom 144 | icon: 'mdi:wifi' 145 | type: 'custom:multiple-entity-row' 146 | name: Guest Room 147 | state_header: Occupancy 148 | entities: 149 | - entity: sensor.guest_bedroom_temperature 150 | name: Temperature 151 | - entity: binary_sensor.cruz 152 | icon: 'mdi:wifi' 153 | type: 'custom:multiple-entity-row' 154 | name: Cruz's Room 155 | state_header: Occupancy 156 | entities: 157 | - entity: sensor.guest_bedroom_temperature 158 | name: Temperature 159 | - entity: binary_sensor.upstairs_2 160 | icon: 'mdi:wifi' 161 | type: 'custom:multiple-entity-row' 162 | name: Ariel's Room 163 | state_header: Occupancy 164 | entities: 165 | - entity: climate.upstairs 166 | attribute: current_temperature 167 | format: precision1 168 | unit: °F 169 | name: Temperature 170 | card_mod: 171 | style: | 172 | ha-card { 173 | width: 92%; 174 | margin: auto; 175 | border-radius: 12px; 176 | background: rgba(255,255,255,0.1); 177 | color: white; 178 | --paper-item-icon-color: white; 179 | margin-bottom: 15px; 180 | } 181 | title: HVAC 182 | -------------------------------------------------------------------------------- /music.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:music' 7 | panel: false 8 | badges: [] 9 | cards: 10 | - type: vertical-stack 11 | cards: 12 | - type: horizontal-stack 13 | cards: 14 | - type: 'custom:button-card' 15 | size: 25px 16 | icon: 'mdi:close' 17 | tap_action: 18 | action: navigate 19 | navigation_path: /lovelace/0 20 | styles: 21 | card: 22 | - width: 40px 23 | - height: 40px 24 | - background-color: 'rgba(255,255,255,0)' 25 | - box-shadow: none 26 | icon: 27 | - margin-left: px 28 | - type: 'custom:gap-card' 29 | height: 30 | size: 31 | - type: 'custom:button-card' 32 | size: 25px 33 | icon: | 34 | [[[ 35 | if (states['media_player.entry'].state == "playing") 36 | return "mdi:cast-connected"; 37 | else if (states['media_player.front_living_room'].state == "playing") 38 | return "mdi:cast-connected"; 39 | else if (states['media_player.kitchen_speaker'].state == "playing") 40 | return "mdi:cast-connected"; 41 | else if (states['media_player.living_rooms'].state == "playing") 42 | return "mdi:cast-connected"; 43 | else if (states['media_player.office_speaker'].state == "playing") 44 | return "mdi:cast-connected"; 45 | else if (states['media_player.family_room_speaker_cast'].state == "playing") 46 | return "mdi:cast-connected"; 47 | else 48 | return "mdi:cast"; 49 | ]]] 50 | styles: 51 | card: 52 | - width: 40px 53 | - height: 40px 54 | - background-color: 'rgba(255,255,255,0)' 55 | - box-shadow: none 56 | icon: 57 | - margin-left: px 58 | tap_action: 59 | action: fire-dom-event 60 | browser_mod: 61 | command: popup 62 | title: Select where to cast 63 | card: 64 | type: vertical-stack 65 | cards: 66 | - type: 'custom:mini-media-player' 67 | group: true 68 | min_volume: 5 69 | max_volume: 75 70 | entity: media_player.office_speaker 71 | name: Office 72 | tap_action: 73 | action: call-service 74 | service: input_boolean.toggle 75 | service_data: 76 | entity_id: input_boolean.office_mp 77 | hide: 78 | controls: true 79 | icon: false 80 | info: true 81 | power: true 82 | progress: true 83 | state_label: false 84 | volume_level: false 85 | - type: 'custom:mini-media-player' 86 | name: Kitchen 87 | group: true 88 | min_volume: 5 89 | max_volume: 75 90 | tap_action: 91 | action: call-service 92 | service: input_boolean.toggle 93 | service_data: 94 | entity_id: input_boolean.kitchen_mp 95 | hide: 96 | controls: true 97 | icon: false 98 | info: true 99 | power: true 100 | progress: true 101 | state_label: false 102 | volume_level: false 103 | entity: media_player.kitchen_speaker 104 | - type: 'custom:mini-media-player' 105 | group: true 106 | min_volume: 5 107 | max_volume: 75 108 | name: Family Room 109 | tap_action: 110 | action: call-service 111 | service: input_boolean.toggle 112 | service_data: 113 | entity_id: input_boolean.familyroom_mp 114 | hide: 115 | controls: true 116 | icon: false 117 | info: true 118 | power: true 119 | progress: true 120 | state_label: false 121 | volume_level: false 122 | entity: media_player.family_room_speaker_cast 123 | - type: 'custom:mini-media-player' 124 | entity: media_player.front_living_room 125 | group: true 126 | min_volume: 5 127 | max_volume: 75 128 | name: Front Room 129 | tap_action: 130 | action: call-service 131 | service: input_boolean.toggle 132 | service_data: 133 | entity_id: input_boolean.frontroom_mp 134 | hide: 135 | controls: true 136 | icon: false 137 | info: true 138 | power: true 139 | progress: true 140 | state_label: false 141 | volume_level: false 142 | - type: 'custom:mini-media-player' 143 | name: Living Rooms 144 | group: true 145 | min_volume: 5 146 | max_volume: 75 147 | tap_action: 148 | action: call-service 149 | service: input_boolean.toggle 150 | service_data: 151 | entity_id: input_boolean.livingrooms_gp 152 | hide: 153 | controls: true 154 | icon: false 155 | info: true 156 | power: true 157 | progress: true 158 | state_label: false 159 | volume_level: false 160 | entity: media_player.living_rooms 161 | - type: 'custom:mini-media-player' 162 | entity: media_player.entry 163 | group: true 164 | min_volume: 5 165 | max_volume: 75 166 | name: Entry 167 | tap_action: 168 | action: call-service 169 | service: input_boolean.toggle 170 | service_data: 171 | entity_id: input_boolean.entry_gp 172 | hide: 173 | controls: true 174 | icon: false 175 | info: true 176 | power: true 177 | progress: true 178 | state_label: false 179 | volume_level: false 180 | deviceID: 181 | - this 182 | - dashboard 183 | style: 184 | $: > 185 | .mdc-dialog .mdc-dialog__container .mdc-dialog__surface 186 | { 187 | border-radius: 0px; 188 | } 189 | .: | 190 | :host { 191 | --mdc-theme-surface: rgba(0,0,0,0.8); 192 | --secondary-background-color: rgba(69,90,100,1); 193 | --ha-card-background: rgba(0,0,0,0.5); 194 | } 195 | :host .content { 196 | width: 90vw; 197 | height: 95vh; 198 | } 199 | - type: picture-glance 200 | entities: [] 201 | camera_image: camera.album_art 202 | tap_action: 203 | action: none 204 | hold_action: 205 | action: none 206 | card_mod: 207 | style: | 208 | ha-card { 209 | width: 98%; 210 | margin: auto; 211 | border-radius: 0; 212 | position: relative; 213 | } 214 | .box { 215 | background: rgba(255,255,255,0) !important; 216 | } 217 | - type: 'custom:mod-card' 218 | card_mod: 219 | style: | 220 | ha-card { 221 | background: rgba(255, 255, 255, 0.0); 222 | border-radius: 0; 223 | box-shadow: none; 224 | position: relative; 225 | top: -10px; 226 | } 227 | card: 228 | type: 'custom:html-template-card' 229 | ignore_line_breaks: true 230 | content: | 231 | 246 |
247 | {% if state_attr("media_player.music", "media_playlist") -%} 248 |

{{ state_attr('media_player.music', 'media_playlist') }}

249 | {{ state_attr('media_player.music', 'media_title') }}
250 | {% if state_attr("media_player.music", "media_artist") -%} 251 | {{ state_attr('media_player.music', 'media_artist') }} 252 | {%- else -%} 253 |
 
254 | {%- endif %} 255 | {%- else -%} 256 |

 

257 |  
258 |   259 | {%- endif %} 260 |
261 | - type: 'custom:mini-media-player' 262 | entity: media_player.music 263 | toggle_power: true 264 | artwork: none 265 | source: full 266 | name: Music Stream 267 | group: true 268 | scale: '1.25' 269 | info: scroll 270 | hide: 271 | info: true 272 | icon: true 273 | name: true 274 | runtime: true 275 | volume: true 276 | power: false 277 | controls: true 278 | progress: true 279 | style: | 280 | ha-card { 281 | float:right; 282 | position: relative; 283 | top: -140px; 284 | } 285 | - type: 'custom:mini-media-player' 286 | entity: media_player.music 287 | toggle_power: true 288 | artwork: none 289 | source: full 290 | name: Music Stream 291 | info: scroll 292 | group: true 293 | scale: '1.25' 294 | hide: 295 | info: true 296 | icon: true 297 | name: true 298 | runtime: false 299 | volume: true 300 | power: true 301 | source: true 302 | controls: true 303 | card_mod: 304 | style: | 305 | ha-card { 306 | width: 93%; 307 | margin: auto; 308 | position: relative; 309 | top: -100px; 310 | } 311 | - type: 'custom:mini-media-player' 312 | entity: media_player.music 313 | toggle_power: true 314 | artwork: none 315 | source: full 316 | name: Music Stream 317 | info: scroll 318 | group: true 319 | scale: '1.25' 320 | hide: 321 | info: true 322 | icon: true 323 | name: true 324 | volume: true 325 | power: true 326 | source: true 327 | progress: true 328 | play_pause: true 329 | play_stop: false 330 | card_mod: 331 | style: | 332 | ha-card { 333 | margin-left: auto; 334 | position: relative; 335 | top: -100px; 336 | } 337 | title: Music 338 | -------------------------------------------------------------------------------- /printer.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:printer' 7 | badges: [] 8 | cards: 9 | - type: vertical-stack 10 | cards: 11 | - type: 'custom:button-card' 12 | size: 25px 13 | icon: 'mdi:close' 14 | tap_action: 15 | action: navigate 16 | navigation_path: /lovelace/0 17 | styles: 18 | card: 19 | - width: 40px 20 | - height: 40px 21 | - background-color: 'rgba(255,255,255,0)' 22 | - box-shadow: none 23 | icon: 24 | - margin-left: px 25 | - type: 'custom:vertical-stack-in-card' 26 | title: '' 27 | cards: 28 | - type: markdown 29 | content: > 30 | Canon MX470 Status: {{ 31 | states('sensor.canon_mx470') | capitalize() }}

32 | Ink Levels 33 | card_mod: 34 | style: | 35 | ha-card { 36 | background: rgba(0,0,0,0.0); 37 | box-shadow:none; 38 | color: white; 39 | margin-bottom: -25px; 40 | } 41 | - type: 'custom:bar-card' 42 | columns: 2 43 | direction: up 44 | entities: 45 | - color: '#1a1a1a' 46 | entity: sensor.canon_mx470_black 47 | name: Black 48 | - color: DarkCyan 49 | name: Color 50 | entity: sensor.canon_mx470_color 51 | height: 200px 52 | max: 100 53 | min: 0 54 | padding: 2px 55 | positions: 56 | icon: 'off' 57 | indicator: 'off' 58 | title: outside 59 | minmax: 'off' 60 | value: inside 61 | card_mod: 62 | style: | 63 | ha-card { 64 | background: rgba(0,0,0,0.0); 65 | color: white; 66 | } 67 | card_mod: 68 | style: | 69 | ha-card { 70 | width: 92%; 71 | margin: auto; 72 | border-radius: 12px; 73 | background: rgba(255,255,255,0.1); 74 | color: white; 75 | --paper-item-icon-color: white; 76 | margin-bottom: 15px; 77 | } 78 | title: Printer 79 | -------------------------------------------------------------------------------- /security.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:shield-home' 7 | badges: [] 8 | cards: 9 | - type: vertical-stack 10 | cards: 11 | - type: 'custom:button-card' 12 | size: 25px 13 | icon: 'mdi:close' 14 | tap_action: 15 | action: navigate 16 | navigation_path: /lovelace/0 17 | styles: 18 | card: 19 | - width: 40px 20 | - height: 40px 21 | - background-color: 'rgba(255,255,255,0)' 22 | - box-shadow: none 23 | - margin-bottom: 15px 24 | icon: 25 | - margin-left: px 26 | - type: markdown 27 | content: '### Security' 28 | card_mod: 29 | style: | 30 | ha-card { 31 | background: rgba(0,0,0,0); 32 | box-shadow: none; 33 | padding: 0px; 34 | margin-bottom: -35px; 35 | top: -20px; 36 | left: 5px; 37 | } 38 | - type: 'custom:mod-card' 39 | card_mod: 40 | style: | 41 | ha-card { 42 | width: 92%; 43 | margin: auto; 44 | } 45 | card: 46 | type: horizontal-stack 47 | cards: 48 | - type: 'custom:button-card' 49 | entity: alarm_control_panel.abode_alarm 50 | name: Alarm 51 | icon: 'mdi:shield-home-outline' 52 | show_state: true 53 | aspect_ratio: 1/1 54 | card_size: 3 55 | size: 30% 56 | tap_action: 57 | action: call-service 58 | service: | 59 | [[[ 60 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 61 | return "alarm_control_panel.alarm_arm_home"; 62 | return "alarm_control_panel.alarm_disarm"; 63 | ]]] 64 | service_data: 65 | entity_id: alarm_control_panel.abode_alarm 66 | code: 1914 67 | hold_action: 68 | action: call-service 69 | service: | 70 | [[[ 71 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 72 | return "alarm_control_panel.alarm_arm_away"; 73 | return "alarm_control_panel.alarm_disarm"; 74 | ]]] 75 | service_data: 76 | entity_id: alarm_control_panel.abode_alarm 77 | code: XXXX 78 | styles: 79 | icon: 80 | - left: 15px 81 | - top: '-25px' 82 | - color: | 83 | [[[ 84 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 85 | return "rgba(24, 199, 71,1)"; 86 | return "rgba(230, 0, 0,0.7)"; 87 | ]]] 88 | card: 89 | - background: | 90 | [[[ 91 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 92 | return "rgba(255,255,255,0.1)"; 93 | return "rgba(255,255,255,0.7)"; 94 | ]]] 95 | - border-radius: 12px 96 | - box-shadow: 5px 5px 5px; 97 | - font-size: 100% 98 | grid: 99 | - grid-template-areas: '"i" "n" "s"' 100 | - grid-template-columns: 1fr 101 | - grid-template-rows: 1fr min-content min-content 102 | img_cell: 103 | - align-self: start 104 | - text-align: start 105 | name: 106 | - justify-self: start 107 | - padding-left: 10px 108 | - margin-top: '-65px' 109 | - color: | 110 | [[[ 111 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 112 | return "white"; 113 | return "black"; 114 | ]]] 115 | state: 116 | - justify-self: start 117 | - padding-left: 10px 118 | - margin-top: '-32px' 119 | - color: | 120 | [[[ 121 | if (states['alarm_control_panel.abode_alarm'].state == "disarmed") 122 | return "white"; 123 | return "black"; 124 | ]]] 125 | - type: 'custom:button-card' 126 | entity: lock.front_door_lock 127 | name: Front Door 128 | show_state: true 129 | aspect_ratio: 1/1 130 | card_size: 3 131 | size: 25% 132 | tap_action: 133 | action: call-service 134 | service: | 135 | [[[ 136 | if (states['lock.front_door_lock'].state == "locked") 137 | return "lock.unlock"; 138 | return "lock.lock"; 139 | ]]] 140 | service_data: 141 | entity_id: lock.front_door_lock 142 | styles: 143 | icon: 144 | - left: 15px 145 | - top: '-25px' 146 | - color: | 147 | [[[ 148 | if (states['lock.front_door_lock'].state == "unlocked") 149 | return "rgba(230, 0, 0,0.7)"; 150 | return "white"; 151 | ]]] 152 | card: 153 | - background: | 154 | [[[ 155 | if (states['lock.front_door_lock'].state == "locked") 156 | return "rgba(255,255,255,0.1)"; 157 | return "rgba(255,255,255,0.7)"; 158 | ]]] 159 | - border-radius: 12px 160 | - box-shadow: 5px 5px 5px; 161 | - font-size: 100% 162 | grid: 163 | - grid-template-areas: '"i" "n" "s"' 164 | - grid-template-columns: 1fr 165 | - grid-template-rows: 1fr min-content min-content 166 | img_cell: 167 | - align-self: start 168 | - text-align: start 169 | name: 170 | - justify-self: start 171 | - padding-left: 10px 172 | - margin-top: '-65px' 173 | - color: | 174 | [[[ 175 | if (states['lock.front_door_lock'].state == "unlocked") 176 | return "black"; 177 | return "white"; 178 | ]]] 179 | state: 180 | - justify-self: start 181 | - padding-left: 10px 182 | - margin-top: '-32px' 183 | - color: | 184 | [[[ 185 | if (states['lock.front_door_lock'].state == "unlocked") 186 | return "black"; 187 | return "white"; 188 | ]]] 189 | - type: 'custom:button-card' 190 | entity: lock.rear_door_lock 191 | name: Rear Door 192 | show_state: true 193 | aspect_ratio: 1/1 194 | card_size: 3 195 | size: 25% 196 | tap_action: 197 | action: call-service 198 | service: | 199 | [[[ 200 | if (states['lock.rear_door_lock'].state == "locked") 201 | return "lock.unlock"; 202 | return "lock.lock"; 203 | ]]] 204 | service_data: 205 | entity_id: lock.rear_door_lock 206 | styles: 207 | icon: 208 | - left: 15px 209 | - top: '-25px' 210 | - color: | 211 | [[[ 212 | if (states['lock.rear_door_lock'].state == "unlocked") 213 | return "rgba(230, 0, 0,0.7)"; 214 | return "white"; 215 | ]]] 216 | card: 217 | - background: | 218 | [[[ 219 | if (states['lock.rear_door_lock'].state == "locked") 220 | return "rgba(255,255,255,0.1)"; 221 | return "rgba(255,255,255,0.7)"; 222 | ]]] 223 | - border-radius: 12px 224 | - box-shadow: 5px 5px 5px; 225 | - font-size: 100% 226 | grid: 227 | - grid-template-areas: '"i" "n" "s"' 228 | - grid-template-columns: 1fr 229 | - grid-template-rows: 1fr min-content min-content 230 | img_cell: 231 | - align-self: start 232 | - text-align: start 233 | name: 234 | - justify-self: start 235 | - padding-left: 10px 236 | - margin-top: '-65px' 237 | - color: | 238 | [[[ 239 | if (states['lock.rear_door_lock'].state == "unlocked") 240 | return "black"; 241 | return "white"; 242 | ]]] 243 | state: 244 | - justify-self: start 245 | - padding-left: 10px 246 | - margin-top: '-32px' 247 | - color: | 248 | [[[ 249 | if (states['lock.rear_door_lock'].state == "unlocked") 250 | return "black"; 251 | return "white"; 252 | ]]] 253 | square: true 254 | - type: markdown 255 | content: '### Alarm Trigger Sensors' 256 | card_mod: 257 | style: | 258 | ha-card { 259 | background: rgba(0,0,0,0); 260 | box-shadow: none; 261 | padding: 0px; 262 | margin-bottom: -12px; 263 | left: 5px; 264 | } 265 | - type: entities 266 | entities: 267 | - entity: binary_sensor.entry_front 268 | - entity: binary_sensor.entry_garage 269 | - entity: binary_sensor.entry_rear 270 | - entity: binary_sensor.motion_family_rm 271 | - entity: binary_sensor.slider_front_rm 272 | - entity: binary_sensor.slider_master 273 | - entity: binary_sensor.slider_family_rm 274 | - entity: binary_sensor.slider_lanai 275 | - entity: binary_sensor.window_office 276 | - entity: binary_sensor.window_master_bath 277 | - entity: binary_sensor.window_laundry 278 | - entity: binary_sensor.window_josh 279 | - entity: binary_sensor.window_cruz 280 | state_color: false 281 | card_mod: 282 | style: | 283 | ha-card { 284 | width: 92%; 285 | margin: auto; 286 | border-radius: 12px; 287 | background: rgba(255,255,255,0.1); 288 | color: white; 289 | --paper-item-icon-color: white; 290 | } 291 | - type: markdown 292 | content: '### Occupancy Sensors' 293 | card_mod: 294 | style: | 295 | ha-card { 296 | background: rgba(0,0,0,0); 297 | box-shadow: none; 298 | padding: 0px; 299 | margin-bottom: -12px; 300 | left: 5px; 301 | } 302 | - type: entities 303 | entities: 304 | - entity: binary_sensor.front_living_room 305 | - entity: binary_sensor.office 306 | - entity: binary_sensor.master 307 | - entity: binary_sensor.kitchen 308 | - entity: binary_sensor.family_room 309 | - entity: binary_sensor.josh 310 | - entity: binary_sensor.cruz 311 | - entity: binary_sensor.upstairs_2 312 | name: Ariel 313 | icon: 'mdi:walk' 314 | state_color: false 315 | card_mod: 316 | style: | 317 | ha-card { 318 | width: 92%; 319 | margin: auto; 320 | border-radius: 12px; 321 | background: rgba(255,255,255,0.1); 322 | color: white; 323 | --paper-item-icon-color: white; 324 | margin-bottom: 15px; 325 | } 326 | title: Security 327 | -------------------------------------------------------------------------------- /tv_remotes.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | swipe_nav: 6 | wrap: false 7 | animate: swipe 8 | swipe_amount: 10 9 | views: 10 | - title: TV - Family Rm 11 | path: tv-family 12 | visible: 13 | - user: d871b4b8fa18df6e3ea7cf641 14 | - user: adafc39c4733451fa975858c6 15 | - user: ef8551138df645acab3b193b2 16 | - user: d5bd3c44e884450aacbaf0a76 17 | - user: e3947a74b2a141e9ab708c565 18 | badges: [] 19 | cards: 20 | - type: vertical-stack 21 | cards: 22 | - type: 'custom:button-card' 23 | size: 25px 24 | icon: 'mdi:close' 25 | tap_action: 26 | action: navigate 27 | navigation_path: /lovelace/0 28 | styles: 29 | card: 30 | - width: 40px 31 | - height: 40px 32 | - background-color: 'rgba(255,255,255,0)' 33 | - box-shadow: none 34 | - position: sticky 35 | - z-index: 99 36 | - type: picture-elements 37 | elements: 38 | - type: image 39 | title: LED 40 | image: /local/remotes/led_1x.png 41 | tap_action: none 42 | hold_action: none 43 | style: 44 | width: 35px 45 | top: 3.5% 46 | left: 25% 47 | border: solid 0px gray 48 | - type: image 49 | title: Family Room TV 50 | image: /local/remotes/name_family.png 51 | tap_action: none 52 | hold_action: none 53 | style: 54 | width: 25% 55 | top: 3.5% 56 | left: 77% 57 | border: solid 0px gray 58 | - type: image 59 | title: Power 60 | image: /local/remotes/btn.png 61 | tap_action: 62 | action: call-service 63 | service: script.family_room_tv_toggle 64 | hold_action: none 65 | style: 66 | width: 50px 67 | top: 3.3% 68 | left: 50% 69 | border: solid 0px gray 70 | - type: image 71 | title: Previous 72 | image: /local/remotes/btn.png 73 | tap_action: 74 | action: call-service 75 | service: script.tv_dual_keys_family_rm 76 | service_data: 77 | command_1: back 78 | command_2: back 79 | hold_action: none 80 | style: 81 | width: 135px 82 | height: 50px 83 | top: 8% 84 | left: 30% 85 | border: solid 0px gray 86 | - type: image 87 | title: Home 88 | image: /local/remotes/btn.png 89 | tap_action: 90 | action: call-service 91 | service: remote.send_command 92 | service_data: 93 | entity_id: remote.family_room_tv 94 | command: home 95 | hold_action: none 96 | style: 97 | width: 135px 98 | height: 50px 99 | top: 8% 100 | left: 70% 101 | border: solid 0px gray 102 | - type: image 103 | title: Guide 104 | image: /local/remotes/btn.png 105 | tap_action: 106 | action: call-service 107 | service: remote.send_command 108 | service_data: 109 | entity_id: remote.family_room_dtv 110 | command: guide 111 | hold_action: none 112 | style: 113 | width: 75px 114 | height: 50px 115 | top: 13% 116 | left: 23% 117 | border: solid 0px gray 118 | - type: image 119 | title: Info 120 | image: /local/remotes/btn.png 121 | tap_action: 122 | action: call-service 123 | service: remote.send_command 124 | service_data: 125 | entity_id: remote.family_room_dtv 126 | command: info 127 | hold_action: none 128 | style: 129 | width: 75px 130 | height: 50px 131 | top: 13% 132 | left: 50% 133 | border: solid 0px gray 134 | - type: image 135 | title: Exit 136 | image: /local/remotes/btn.png 137 | tap_action: 138 | action: call-service 139 | service: remote.send_command 140 | service_data: 141 | entity_id: remote.family_room_dtv 142 | command: exit 143 | hold_action: none 144 | style: 145 | width: 75px 146 | height: 50px 147 | top: 13% 148 | left: 76% 149 | border: solid 0px gray 150 | - type: image 151 | title: Up 152 | image: /local/remotes/btn.png 153 | tap_action: 154 | action: call-service 155 | service: script.tv_dual_keys_family_rm 156 | service_data: 157 | command_1: up 158 | command_2: up 159 | hold_action: none 160 | style: 161 | width: 75px 162 | height: 70px 163 | top: 19.4% 164 | left: 50% 165 | border: solid 0px gray 166 | - type: image 167 | title: Left 168 | image: /local/remotes/btn.png 169 | tap_action: 170 | action: call-service 171 | service: script.tv_dual_keys_family_rm 172 | service_data: 173 | command_1: left 174 | command_2: left 175 | hold_action: none 176 | style: 177 | width: 75px 178 | height: 70px 179 | top: 25.3% 180 | left: 26% 181 | border: solid 0px gray 182 | - type: image 183 | title: OK 184 | image: /local/remotes/btn.png 185 | tap_action: 186 | action: call-service 187 | service: script.tv_dual_keys_family_rm 188 | service_data: 189 | command_1: select 190 | command_2: select 191 | hold_action: none 192 | style: 193 | width: 75px 194 | height: 70px 195 | top: 25.3% 196 | left: 50% 197 | border: solid 0px gray 198 | - type: image 199 | title: Right 200 | image: /local/remotes/btn.png 201 | tap_action: 202 | action: call-service 203 | service: script.tv_dual_keys_family_rm 204 | service_data: 205 | command_1: right 206 | command_2: right 207 | hold_action: none 208 | style: 209 | width: 75px 210 | height: 70px 211 | top: 25.3% 212 | left: 74% 213 | border: solid 0px gray 214 | - type: image 215 | image: /local/remotes/btn.png 216 | title: Down 217 | tap_action: 218 | action: call-service 219 | service: script.tv_dual_keys_family_rm 220 | service_data: 221 | command_1: down 222 | command_2: down 223 | hold_action: none 224 | style: 225 | width: 75px 226 | height: 70px 227 | top: 31.2% 228 | left: 50% 229 | border: solid 0px gray 230 | - type: image 231 | image: /local/remotes/btn.png 232 | title: Record 233 | tap_action: 234 | action: call-service 235 | service: remote.send_command 236 | service_data: 237 | entity_id: remote.family_room_dtv 238 | command: record 239 | hold_action: none 240 | style: 241 | width: 50px 242 | height: 43px 243 | top: 30.8% 244 | left: 74.2% 245 | border: solid 0px gray 246 | - type: image 247 | image: /local/remotes/btn.png 248 | title: Menu 249 | tap_action: 250 | service: remote.send_command 251 | service_data: 252 | entity_id: remote.family_room_dtv 253 | command: menu 254 | hold_action: none 255 | style: 256 | width: 75px 257 | height: 50px 258 | top: 57.5% 259 | left: 23% 260 | border: solid 0px gray 261 | - type: image 262 | image: /local/remotes/btn.png 263 | title: TV 264 | tap_action: 265 | action: call-service 266 | service: media_player.select_source 267 | service_data: 268 | entity_id: media_player.family_room_tv 269 | source: "Cable\_box" 270 | hold_action: none 271 | style: 272 | width: 75px 273 | height: 50px 274 | top: 57.5% 275 | left: 50% 276 | border: solid 0px gray 277 | - type: image 278 | image: /local/remotes/btn.png 279 | title: List 280 | tap_action: 281 | action: call-service 282 | service: remote.send_command 283 | service_data: 284 | entity_id: remote.family_room_dtv 285 | command: list 286 | hold_action: none 287 | style: 288 | width: 75px 289 | height: 50px 290 | top: 57.5% 291 | left: 76% 292 | border: solid 0px gray 293 | - type: image 294 | image: /local/remotes/btn.png 295 | title: Back 296 | tap_action: 297 | action: call-service 298 | service: script.tv_dual_keys_family_rm 299 | service_data: 300 | command_1: replay 301 | command_2: replay 302 | hold_action: none 303 | style: 304 | width: 75px 305 | height: 50px 306 | top: 46% 307 | left: 23% 308 | border: solid 0px gray 309 | - type: image 310 | image: /local/remotes/btn.png 311 | title: Stop 312 | tap_action: 313 | action: call-service 314 | service: remote.send_command 315 | service_data: 316 | entity_id: remote.family_room_dtv 317 | command: stop 318 | hold_action: none 319 | style: 320 | width: 75px 321 | height: 50px 322 | top: 46% 323 | left: 50% 324 | border: solid 0px gray 325 | - type: image 326 | image: /local/remotes/btn.png 327 | title: Options 328 | tap_action: 329 | action: call-service 330 | service: script.tv_dual_keys_family_rm 331 | service_data: 332 | command_1: advance 333 | command_2: info 334 | hold_action: none 335 | style: 336 | width: 75px 337 | height: 50px 338 | top: 46% 339 | left: 76% 340 | border: solid 0px gray 341 | - type: image 342 | image: /local/remotes/btn.png 343 | title: Rewind 344 | tap_action: 345 | action: call-service 346 | service: script.tv_dual_keys_family_rm 347 | service_data: 348 | command_1: rew 349 | command_2: reverse 350 | hold_action: none 351 | style: 352 | width: 50px 353 | height: 95px 354 | top: 52% 355 | left: 20% 356 | border: solid 0px gray 357 | - type: image 358 | image: /local/remotes/btn.png 359 | title: Play/Pause 360 | tap_action: 361 | action: call-service 362 | service: script.tv_dual_keys_family_rm 363 | service_data: 364 | command_1: pause 365 | command_2: play 366 | hold_action: none 367 | style: 368 | width: 125px 369 | height: 80px 370 | top: 52% 371 | left: 50% 372 | border: solid 0px gray 373 | - type: image 374 | image: /local/remotes/btn.png 375 | title: Fast-Forward 376 | tap_action: 377 | action: call-service 378 | service: script.tv_dual_keys_family_rm 379 | service_data: 380 | command_1: ffwd 381 | command_2: forward 382 | hold_action: none 383 | style: 384 | width: 50px 385 | height: 95px 386 | top: 52% 387 | left: 80% 388 | border: solid 0px gray 389 | - type: image 390 | image: /local/remotes/btn.png 391 | title: Vol Dn 392 | tap_action: 393 | action: call-service 394 | service: media_player.volume_down 395 | service_data: 396 | entity_id: media_player.denon_avr 397 | hold_action: none 398 | style: 399 | width: 75px 400 | height: 50px 401 | top: 37% 402 | left: 23% 403 | border: solid 0px gray 404 | - type: image 405 | image: /local/remotes/btn.png 406 | title: Mute 407 | tap_action: 408 | action: call-service 409 | service: media_player.volume_mute 410 | service_data: 411 | entity_id: media_player.denon_avr 412 | is_volume_muted: false 413 | hold_action: none 414 | style: 415 | width: 75px 416 | height: 50px 417 | top: 37% 418 | left: 50% 419 | border: solid 0px gray 420 | - type: image 421 | image: /local/remotes/btn.png 422 | title: Vol Up 423 | tap_action: 424 | action: call-service 425 | service: media_player.volume_up 426 | service_data: 427 | entity_id: media_player.denon_avr 428 | hold_action: none 429 | style: 430 | width: 75px 431 | height: 50px 432 | top: 37% 433 | left: 76% 434 | border: solid 0px gray 435 | - type: image 436 | image: /local/remotes/btn.png 437 | title: Ch Dn 438 | tap_action: 439 | action: call-service 440 | service: remote.send_command 441 | service_data: 442 | entity_id: remote.family_room_dtv 443 | command: chandown 444 | hold_action: none 445 | style: 446 | width: 75px 447 | height: 50px 448 | top: 41.5% 449 | left: 23% 450 | border: solid 0px gray 451 | - type: image 452 | image: /local/remotes/btn.png 453 | title: Ch Prev 454 | tap_action: 455 | action: call-service 456 | service: remote.send_command 457 | service_data: 458 | entity_id: remote.family_room_dtv 459 | command: prev 460 | hold_action: none 461 | style: 462 | width: 75px 463 | height: 50px 464 | top: 41.5% 465 | left: 50% 466 | border: solid 0px gray 467 | - type: image 468 | image: /local/remotes/btn.png 469 | title: Ch Up 470 | tap_action: 471 | action: call-service 472 | service: remote.send_command 473 | service_data: 474 | entity_id: remote.family_room_dtv 475 | command: chanup 476 | hold_action: none 477 | style: 478 | width: 75px 479 | height: 50px 480 | top: 41.5% 481 | left: 76% 482 | border: solid 0px gray 483 | - type: image 484 | image: /local/remotes/btn.png 485 | title: Red 486 | tap_action: 487 | action: call-service 488 | service: remote.send_command 489 | service_data: 490 | entity_id: remote.family_room_dtv 491 | command: red 492 | hold_action: none 493 | style: 494 | width: 55px 495 | height: 50px 496 | top: 61.5% 497 | left: 20% 498 | border: solid 0px gray 499 | - type: image 500 | image: /local/remotes/btn.png 501 | title: Green 502 | tap_action: 503 | action: call-service 504 | service: remote.send_command 505 | service_data: 506 | entity_id: remote.family_room_dtv 507 | command: green 508 | hold_action: none 509 | style: 510 | width: 55px 511 | height: 45px 512 | top: 61.5% 513 | left: 40.7% 514 | border: solid 0px gray 515 | - type: image 516 | image: /local/remotes/btn.png 517 | title: Yellow 518 | tap_action: 519 | action: call-service 520 | service: remote.send_command 521 | service_data: 522 | entity_id: remote.family_room_dtv 523 | command: yellow 524 | hold_action: none 525 | style: 526 | width: 55px 527 | height: 45px 528 | top: 61.5% 529 | left: 59.9% 530 | border: solid 0px gray 531 | - type: image 532 | image: /local/remotes/btn.png 533 | title: Blue 534 | tap_action: 535 | action: call-service 536 | service: remote.send_command 537 | service_data: 538 | entity_id: remote.family_room_dtv 539 | command: blue 540 | hold_action: none 541 | style: 542 | width: 55px 543 | height: 45px 544 | top: 61.5% 545 | left: 80% 546 | border: solid 0px gray 547 | - type: image 548 | image: /local/remotes/btn.png 549 | title: 1 550 | tap_action: 551 | action: call-service 552 | service: remote.send_command 553 | service_data: 554 | entity_id: remote.family_room_dtv 555 | command: 1 556 | hold_action: none 557 | style: 558 | width: 55px 559 | height: 45px 560 | top: 65.5% 561 | left: 23% 562 | border: solid 0px gray 563 | - type: image 564 | image: /local/remotes/btn.png 565 | title: 2 566 | tap_action: 567 | action: call-service 568 | service: remote.send_command 569 | service_data: 570 | entity_id: remote.family_room_dtv 571 | command: 2 572 | hold_action: none 573 | style: 574 | width: 55px 575 | height: 45px 576 | top: 65.5% 577 | left: 50% 578 | border: solid 0px gray 579 | - type: image 580 | image: /local/remotes/btn.png 581 | title: 3 582 | tap_action: 583 | action: call-service 584 | service: remote.send_command 585 | service_data: 586 | entity_id: remote.family_room_dtv 587 | command: 3 588 | hold_action: none 589 | style: 590 | width: 55px 591 | height: 45px 592 | top: 65.5% 593 | left: 76% 594 | border: solid 0px gray 595 | - type: image 596 | image: /local/remotes/btn.png 597 | title: 4 598 | tap_action: 599 | action: call-service 600 | service: remote.send_command 601 | service_data: 602 | entity_id: remote.family_room_dtv 603 | command: 4 604 | hold_action: none 605 | style: 606 | width: 55px 607 | height: 45px 608 | top: 70.2% 609 | left: 23% 610 | border: solid 0px gray 611 | - type: image 612 | image: /local/remotes/btn.png 613 | title: 5 614 | tap_action: 615 | action: call-service 616 | service: remote.send_command 617 | service_data: 618 | entity_id: remote.family_room_dtv 619 | command: 5 620 | hold_action: none 621 | style: 622 | width: 55px 623 | height: 45px 624 | top: 70.2% 625 | left: 50% 626 | border: solid 0px gray 627 | - type: image 628 | image: /local/remotes/btn.png 629 | title: 6 630 | tap_action: 631 | action: call-service 632 | service: remote.send_command 633 | service_data: 634 | entity_id: remote.family_room_dtv 635 | command: 6 636 | hold_action: none 637 | style: 638 | width: 55px 639 | height: 45px 640 | top: 70.2% 641 | left: 76% 642 | border: solid 0px gray 643 | - type: image 644 | image: /local/remotes/btn.png 645 | title: 7 646 | tap_action: 647 | action: call-service 648 | service: remote.send_command 649 | service_data: 650 | entity_id: remote.family_room_dtv 651 | command: 7 652 | hold_action: none 653 | style: 654 | width: 55px 655 | height: 45px 656 | top: 74.8% 657 | left: 23% 658 | border: solid 0px gray 659 | - type: image 660 | image: /local/remotes/btn.png 661 | title: 8 662 | tap_action: 663 | action: call-service 664 | service: remote.send_command 665 | service_data: 666 | entity_id: remote.family_room_dtv 667 | command: 8 668 | hold_action: none 669 | style: 670 | width: 55px 671 | height: 45px 672 | top: 74.8% 673 | left: 50% 674 | border: solid 0px gray 675 | - type: image 676 | image: /local/remotes/btn.png 677 | title: 9 678 | tap_action: 679 | action: call-service 680 | service: remote.send_command 681 | service_data: 682 | entity_id: remote.family_room_dtv 683 | command: 9 684 | hold_action: none 685 | style: 686 | width: 55px 687 | height: 45px 688 | top: 74.8% 689 | left: 76% 690 | border: solid 0px gray 691 | - type: image 692 | image: /local/remotes/btn.png 693 | title: Cast 694 | tap_action: 695 | action: call-service 696 | service: media_player.select_source 697 | service_data: 698 | entity_id: media_player.denon_avr 699 | source: Chromecast 700 | hold_action: none 701 | style: 702 | width: 55px 703 | height: 45px 704 | top: 79.3% 705 | left: 23% 706 | border: solid 0px gray 707 | - type: image 708 | image: /local/remotes/btn.png 709 | title: 0 710 | tap_action: 711 | action: call-service 712 | service: remote.send_command 713 | service_data: 714 | entity_id: remote.family_room_dtv 715 | command: 0 716 | hold_action: none 717 | style: 718 | width: 55px 719 | height: 45px 720 | top: 79.5% 721 | left: 50% 722 | border: solid 0px gray 723 | - type: image 724 | image: /local/remotes/btn.png 725 | title: Turntable 726 | tap_action: 727 | action: call-service 728 | service: media_player.select_source 729 | service_data: 730 | entity_id: media_player.denon_avr 731 | source: Turntable 732 | hold_action: none 733 | style: 734 | width: 55px 735 | height: 45px 736 | top: 79.3% 737 | left: 76% 738 | border: solid 0px gray 739 | - type: image 740 | image: /local/remotes/btn.png 741 | title: Netflix 742 | tap_action: 743 | action: call-service 744 | service: media_player.select_source 745 | service_data: 746 | entity_id: media_player.family_room_tv 747 | source: Netflix 748 | hold_action: none 749 | style: 750 | width: 125px 751 | height: 50px 752 | top: 84.2% 753 | left: 30% 754 | border: solid 0px gray 755 | - type: image 756 | image: /local/remotes/btn.png 757 | title: Disney+ 758 | tap_action: 759 | action: call-service 760 | service: media_player.select_source 761 | service_data: 762 | entity_id: media_player.family_room_tv 763 | source: Disney Plus 764 | hold_action: none 765 | style: 766 | width: 125px 767 | height: 50px 768 | top: 84.2% 769 | left: 70% 770 | border: solid 0px gray 771 | - type: image 772 | image: /local/remotes/btn.png 773 | title: Hulu 774 | tap_action: 775 | action: call-service 776 | service: media_player.select_source 777 | service_data: 778 | entity_id: media_player.family_room_tv 779 | source: Hulu 780 | hold_action: none 781 | style: 782 | width: 125px 783 | height: 50px 784 | top: 89.7% 785 | left: 30% 786 | border: solid 0px gray 787 | - type: image 788 | image: /local/remotes/btn.png 789 | title: JW Broadcasting 790 | tap_action: 791 | action: call-service 792 | service: media_player.select_source 793 | service_data: 794 | entity_id: media_player.family_room_tv 795 | source: JW Broadcasting 796 | hold_action: none 797 | style: 798 | width: 125px 799 | height: 50px 800 | top: 89.7% 801 | left: 70% 802 | border: solid 0px gray 803 | - type: image 804 | image: /local/remotes/btn.png 805 | title: Prime Video 806 | tap_action: 807 | action: call-service 808 | service: media_player.select_source 809 | service_data: 810 | entity_id: media_player.family_room_tv 811 | source: Prime Video 812 | hold_action: none 813 | style: 814 | width: 125px 815 | height: 50px 816 | top: 95.2% 817 | left: 30% 818 | border: solid 0px gray 819 | - type: image 820 | image: /local/remotes/btn.png 821 | title: HBO Max 822 | tap_action: 823 | action: call-service 824 | service: media_player.select_source 825 | service_data: 826 | entity_id: media_player.family_room_tv 827 | source: HBO Max 828 | hold_action: none 829 | style: 830 | width: 125px 831 | height: 50px 832 | top: 95.2% 833 | left: 70% 834 | border: solid 0px gray 835 | image: /local/remotes/uni_famroom_tv.jpg?v=2 836 | card_mod: 837 | style: | 838 | ha-card { 839 | background: rgb(16,30,36); 840 | top: -55px; 841 | margin-bottom: -55px; 842 | } 843 | - title: TV - Cruz's Rm 844 | path: tv-cruz 845 | visible: 846 | - user: d5bd3c44e884450aacbaf0a76 847 | badges: [] 848 | cards: 849 | - type: vertical-stack 850 | cards: 851 | - type: 'custom:button-card' 852 | size: 25px 853 | icon: 'mdi:close' 854 | tap_action: 855 | action: navigate 856 | navigation_path: /lovelace/0 857 | styles: 858 | card: 859 | - width: 40px 860 | - height: 40px 861 | - background-color: 'rgba(255,255,255,0)' 862 | - box-shadow: none 863 | - position: sticky 864 | - z-index: 99 865 | - type: picture-elements 866 | elements: 867 | - type: image 868 | title: LED 869 | image: /local/remotes/led_2x.png 870 | tap_action: none 871 | hold_action: none 872 | style: 873 | width: 35px 874 | top: 3.5% 875 | left: 25% 876 | border: solid 0px gray 877 | - type: image 878 | title: Cruz's TV 879 | image: /local/remotes/name_cruz.png 880 | tap_action: none 881 | hold_action: none 882 | style: 883 | width: 25% 884 | top: 3.5% 885 | left: 76.5% 886 | border: solid 0px gray 887 | - type: image 888 | title: Power 889 | image: /local/remotes/btn.png 890 | tap_action: 891 | action: call-service 892 | service: script.cruz_room_tv_toggle 893 | hold_action: none 894 | style: 895 | width: 50px 896 | top: 3.3% 897 | left: 50% 898 | border: solid 0px gray 899 | - type: image 900 | title: Previous 901 | image: /local/remotes/btn.png 902 | tap_action: 903 | action: call-service 904 | service: script.tv_dual_keys_cruz_rm 905 | service_data: 906 | command_1: back 907 | command_2: back 908 | hold_action: none 909 | style: 910 | width: 135px 911 | height: 50px 912 | top: 8% 913 | left: 30% 914 | border: solid 0px gray 915 | - type: image 916 | title: Home 917 | image: /local/remotes/btn.png 918 | tap_action: 919 | action: call-service 920 | service: remote.send_command 921 | service_data: 922 | entity_id: remote.cruz_tv 923 | command: home 924 | hold_action: none 925 | style: 926 | width: 135px 927 | height: 50px 928 | top: 8% 929 | left: 70% 930 | border: solid 0px gray 931 | - type: image 932 | title: Guide 933 | image: /local/remotes/btn.png 934 | tap_action: 935 | action: call-service 936 | service: remote.send_command 937 | service_data: 938 | entity_id: remote.cruz_dtv 939 | command: guide 940 | hold_action: none 941 | style: 942 | width: 75px 943 | height: 50px 944 | top: 13% 945 | left: 23% 946 | border: solid 0px gray 947 | - type: image 948 | title: Info 949 | image: /local/remotes/btn.png 950 | tap_action: 951 | action: call-service 952 | service: remote.send_command 953 | service_data: 954 | entity_id: remote.cruz_dtv 955 | command: info 956 | hold_action: none 957 | style: 958 | width: 75px 959 | height: 50px 960 | top: 13% 961 | left: 50% 962 | border: solid 0px gray 963 | - type: image 964 | title: Exit 965 | image: /local/remotes/btn.png 966 | tap_action: 967 | action: call-service 968 | service: remote.send_command 969 | service_data: 970 | entity_id: remote.cruz_dtv 971 | command: exit 972 | hold_action: none 973 | style: 974 | width: 75px 975 | height: 50px 976 | top: 13% 977 | left: 76% 978 | border: solid 0px gray 979 | - type: image 980 | title: Up 981 | image: /local/remotes/btn.png 982 | tap_action: 983 | action: call-service 984 | service: script.tv_dual_keys_cruz_rm 985 | service_data: 986 | command_1: up 987 | command_2: up 988 | hold_action: none 989 | style: 990 | width: 75px 991 | height: 70px 992 | top: 19.4% 993 | left: 50% 994 | border: solid 0px gray 995 | - type: image 996 | title: Left 997 | image: /local/remotes/btn.png 998 | tap_action: 999 | action: call-service 1000 | service: script.tv_dual_keys_cruz_rm 1001 | service_data: 1002 | command_1: left 1003 | command_2: left 1004 | hold_action: none 1005 | style: 1006 | width: 75px 1007 | height: 70px 1008 | top: 25.3% 1009 | left: 26% 1010 | border: solid 0px gray 1011 | - type: image 1012 | title: OK 1013 | image: /local/remotes/btn.png 1014 | tap_action: 1015 | action: call-service 1016 | service: script.tv_dual_keys_cruz_rm 1017 | service_data: 1018 | command_1: select 1019 | command_2: select 1020 | hold_action: none 1021 | style: 1022 | width: 75px 1023 | height: 70px 1024 | top: 25.3% 1025 | left: 50% 1026 | border: solid 0px gray 1027 | - type: image 1028 | title: Right 1029 | image: /local/remotes/btn.png 1030 | tap_action: 1031 | action: call-service 1032 | service: script.tv_dual_keys_cruz_rm 1033 | service_data: 1034 | command_1: right 1035 | command_2: right 1036 | hold_action: none 1037 | style: 1038 | width: 75px 1039 | height: 70px 1040 | top: 25.3% 1041 | left: 74% 1042 | border: solid 0px gray 1043 | - type: image 1044 | image: /local/remotes/btn.png 1045 | title: Down 1046 | tap_action: 1047 | action: call-service 1048 | service: script.tv_dual_keys_cruz_rm 1049 | service_data: 1050 | command_1: down 1051 | command_2: down 1052 | hold_action: none 1053 | style: 1054 | width: 75px 1055 | height: 70px 1056 | top: 31.2% 1057 | left: 50% 1058 | border: solid 0px gray 1059 | - type: image 1060 | image: /local/remotes/btn.png 1061 | title: Record 1062 | tap_action: 1063 | action: call-service 1064 | service: remote.send_command 1065 | service_data: 1066 | entity_id: remote.cruz_dtv 1067 | command: record 1068 | hold_action: none 1069 | style: 1070 | width: 50px 1071 | height: 43px 1072 | top: 30.8% 1073 | left: 74.2% 1074 | border: solid 0px gray 1075 | - type: image 1076 | image: /local/remotes/btn.png 1077 | title: Menu 1078 | tap_action: 1079 | service: remote.send_command 1080 | service_data: 1081 | entity_id: remote.cruz_dtv 1082 | command: menu 1083 | hold_action: none 1084 | style: 1085 | width: 75px 1086 | height: 50px 1087 | top: 57.5% 1088 | left: 23% 1089 | border: solid 0px gray 1090 | - type: image 1091 | image: /local/remotes/btn.png 1092 | title: TV 1093 | tap_action: 1094 | action: call-service 1095 | service: media_player.select_source 1096 | service_data: 1097 | entity_id: media_player.cruz_tv 1098 | source: "Cable\_box" 1099 | hold_action: none 1100 | style: 1101 | width: 75px 1102 | height: 50px 1103 | top: 57.5% 1104 | left: 50% 1105 | border: solid 0px gray 1106 | - type: image 1107 | image: /local/remotes/btn.png 1108 | title: List 1109 | tap_action: 1110 | action: call-service 1111 | service: remote.send_command 1112 | service_data: 1113 | entity_id: remote.cruz_dtv 1114 | command: list 1115 | hold_action: none 1116 | style: 1117 | width: 75px 1118 | height: 50px 1119 | top: 57.5% 1120 | left: 76% 1121 | border: solid 0px gray 1122 | - type: image 1123 | image: /local/remotes/btn.png 1124 | title: Back 1125 | tap_action: 1126 | action: call-service 1127 | service: script.tv_dual_keys_cruz_rm 1128 | service_data: 1129 | command_1: replay 1130 | command_2: replay 1131 | hold_action: none 1132 | style: 1133 | width: 75px 1134 | height: 50px 1135 | top: 46% 1136 | left: 23% 1137 | border: solid 0px gray 1138 | - type: image 1139 | image: /local/remotes/btn.png 1140 | title: Stop 1141 | tap_action: 1142 | action: call-service 1143 | service: remote.send_command 1144 | service_data: 1145 | entity_id: remote.cruz_dtv 1146 | command: stop 1147 | hold_action: none 1148 | style: 1149 | width: 75px 1150 | height: 50px 1151 | top: 46% 1152 | left: 50% 1153 | border: solid 0px gray 1154 | - type: image 1155 | image: /local/remotes/btn.png 1156 | title: Options 1157 | tap_action: 1158 | action: call-service 1159 | service: script.tv_dual_keys_cruz_rm 1160 | service_data: 1161 | command_1: advance 1162 | command_2: info 1163 | hold_action: none 1164 | style: 1165 | width: 75px 1166 | height: 50px 1167 | top: 46% 1168 | left: 76% 1169 | border: solid 0px gray 1170 | - type: image 1171 | image: /local/remotes/btn.png 1172 | title: Rewind 1173 | tap_action: 1174 | action: call-service 1175 | service: script.tv_dual_keys_cruz_rm 1176 | service_data: 1177 | command_1: rew 1178 | command_2: reverse 1179 | hold_action: none 1180 | style: 1181 | width: 50px 1182 | height: 95px 1183 | top: 52% 1184 | left: 20% 1185 | border: solid 0px gray 1186 | - type: image 1187 | image: /local/remotes/btn.png 1188 | title: Play/Pause 1189 | tap_action: 1190 | action: call-service 1191 | service: script.tv_dual_keys_cruz_rm 1192 | service_data: 1193 | command_1: pause 1194 | command_2: play 1195 | hold_action: none 1196 | style: 1197 | width: 125px 1198 | height: 80px 1199 | top: 52% 1200 | left: 50% 1201 | border: solid 0px gray 1202 | - type: image 1203 | image: /local/remotes/btn.png 1204 | title: Fast-Forward 1205 | tap_action: 1206 | action: call-service 1207 | service: script.tv_dual_keys_cruz_rm 1208 | service_data: 1209 | command_1: ffwd 1210 | command_2: forward 1211 | hold_action: none 1212 | style: 1213 | width: 50px 1214 | height: 95px 1215 | top: 52% 1216 | left: 80% 1217 | border: solid 0px gray 1218 | - type: image 1219 | image: /local/remotes/btn.png 1220 | title: Vol Dn 1221 | tap_action: 1222 | action: call-service 1223 | service: media_player.volume_down 1224 | service_data: 1225 | entity_id: media_player.cruz_tv 1226 | hold_action: none 1227 | style: 1228 | width: 75px 1229 | height: 50px 1230 | top: 37% 1231 | left: 23% 1232 | border: solid 0px gray 1233 | - type: image 1234 | image: /local/remotes/btn.png 1235 | title: Mute 1236 | tap_action: 1237 | action: call-service 1238 | service: media_player.volume_mute 1239 | service_data: 1240 | entity_id: media_player.cruz_tv 1241 | is_volume_muted: true 1242 | hold_action: none 1243 | style: 1244 | width: 75px 1245 | height: 50px 1246 | top: 37% 1247 | left: 50% 1248 | border: solid 0px gray 1249 | - type: image 1250 | image: /local/remotes/btn.png 1251 | title: Vol Up 1252 | tap_action: 1253 | action: call-service 1254 | service: media_player.volume_up 1255 | service_data: 1256 | entity_id: media_player.cruz_tv 1257 | hold_action: none 1258 | style: 1259 | width: 75px 1260 | height: 50px 1261 | top: 37% 1262 | left: 76% 1263 | border: solid 0px gray 1264 | - type: image 1265 | image: /local/remotes/btn.png 1266 | title: Ch Dn 1267 | tap_action: 1268 | action: call-service 1269 | service: remote.send_command 1270 | service_data: 1271 | entity_id: remote.cruz_dtv 1272 | command: chandown 1273 | hold_action: none 1274 | style: 1275 | width: 75px 1276 | height: 50px 1277 | top: 41.5% 1278 | left: 23% 1279 | border: solid 0px gray 1280 | - type: image 1281 | image: /local/remotes/btn.png 1282 | title: Ch Prev 1283 | tap_action: 1284 | action: call-service 1285 | service: remote.send_command 1286 | service_data: 1287 | entity_id: remote.cruz_dtv 1288 | command: prev 1289 | hold_action: none 1290 | style: 1291 | width: 75px 1292 | height: 50px 1293 | top: 41.5% 1294 | left: 50% 1295 | border: solid 0px gray 1296 | - type: image 1297 | image: /local/remotes/btn.png 1298 | title: Ch Up 1299 | tap_action: 1300 | action: call-service 1301 | service: remote.send_command 1302 | service_data: 1303 | entity_id: remote.cruz_dtv 1304 | command: chanup 1305 | hold_action: none 1306 | style: 1307 | width: 75px 1308 | height: 50px 1309 | top: 41.5% 1310 | left: 76% 1311 | border: solid 0px gray 1312 | - type: image 1313 | image: /local/remotes/btn.png 1314 | title: Red 1315 | tap_action: 1316 | action: call-service 1317 | service: remote.send_command 1318 | service_data: 1319 | entity_id: remote.cruz_dtv 1320 | command: red 1321 | hold_action: none 1322 | style: 1323 | width: 55px 1324 | height: 50px 1325 | top: 61.5% 1326 | left: 20% 1327 | border: solid 0px gray 1328 | - type: image 1329 | image: /local/remotes/btn.png 1330 | title: Green 1331 | tap_action: 1332 | action: call-service 1333 | service: remote.send_command 1334 | service_data: 1335 | entity_id: remote.cruz_dtv 1336 | command: green 1337 | hold_action: none 1338 | style: 1339 | width: 55px 1340 | height: 45px 1341 | top: 61.5% 1342 | left: 40.7% 1343 | border: solid 0px gray 1344 | - type: image 1345 | image: /local/remotes/btn.png 1346 | title: Yellow 1347 | tap_action: 1348 | action: call-service 1349 | service: remote.send_command 1350 | service_data: 1351 | entity_id: remote.cruz_dtv 1352 | command: yellow 1353 | hold_action: none 1354 | style: 1355 | width: 55px 1356 | height: 45px 1357 | top: 61.5% 1358 | left: 59.9% 1359 | border: solid 0px gray 1360 | - type: image 1361 | image: /local/remotes/btn.png 1362 | title: Blue 1363 | tap_action: 1364 | action: call-service 1365 | service: remote.send_command 1366 | service_data: 1367 | entity_id: remote.cruz_dtv 1368 | command: blue 1369 | hold_action: none 1370 | style: 1371 | width: 55px 1372 | height: 45px 1373 | top: 61.5% 1374 | left: 80% 1375 | border: solid 0px gray 1376 | - type: image 1377 | image: /local/remotes/btn.png 1378 | title: 1 1379 | tap_action: 1380 | action: call-service 1381 | service: remote.send_command 1382 | service_data: 1383 | entity_id: remote.cruz_dtv 1384 | command: 1 1385 | hold_action: none 1386 | style: 1387 | width: 55px 1388 | height: 45px 1389 | top: 65.5% 1390 | left: 23% 1391 | border: solid 0px gray 1392 | - type: image 1393 | image: /local/remotes/btn.png 1394 | title: 2 1395 | tap_action: 1396 | action: call-service 1397 | service: remote.send_command 1398 | service_data: 1399 | entity_id: remote.cruz_dtv 1400 | command: 2 1401 | hold_action: none 1402 | style: 1403 | width: 55px 1404 | height: 45px 1405 | top: 65.5% 1406 | left: 50% 1407 | border: solid 0px gray 1408 | - type: image 1409 | image: /local/remotes/btn.png 1410 | title: 3 1411 | tap_action: 1412 | action: call-service 1413 | service: remote.send_command 1414 | service_data: 1415 | entity_id: remote.cruz_dtv 1416 | command: 3 1417 | hold_action: none 1418 | style: 1419 | width: 55px 1420 | height: 45px 1421 | top: 65.5% 1422 | left: 76% 1423 | border: solid 0px gray 1424 | - type: image 1425 | image: /local/remotes/btn.png 1426 | title: 4 1427 | tap_action: 1428 | action: call-service 1429 | service: remote.send_command 1430 | service_data: 1431 | entity_id: remote.cruz_dtv 1432 | command: 4 1433 | hold_action: none 1434 | style: 1435 | width: 55px 1436 | height: 45px 1437 | top: 70.2% 1438 | left: 23% 1439 | border: solid 0px gray 1440 | - type: image 1441 | image: /local/remotes/btn.png 1442 | title: 5 1443 | tap_action: 1444 | action: call-service 1445 | service: remote.send_command 1446 | service_data: 1447 | entity_id: remote.cruz_dtv 1448 | command: 5 1449 | hold_action: none 1450 | style: 1451 | width: 55px 1452 | height: 45px 1453 | top: 70.2% 1454 | left: 50% 1455 | border: solid 0px gray 1456 | - type: image 1457 | image: /local/remotes/btn.png 1458 | title: 6 1459 | tap_action: 1460 | action: call-service 1461 | service: remote.send_command 1462 | service_data: 1463 | entity_id: remote.cruz_dtv 1464 | command: 6 1465 | hold_action: none 1466 | style: 1467 | width: 55px 1468 | height: 45px 1469 | top: 70.2% 1470 | left: 76% 1471 | border: solid 0px gray 1472 | - type: image 1473 | image: /local/remotes/btn.png 1474 | title: 7 1475 | tap_action: 1476 | action: call-service 1477 | service: remote.send_command 1478 | service_data: 1479 | entity_id: remote.cruz_dtv 1480 | command: 7 1481 | hold_action: none 1482 | style: 1483 | width: 55px 1484 | height: 45px 1485 | top: 74.8% 1486 | left: 23% 1487 | border: solid 0px gray 1488 | - type: image 1489 | image: /local/remotes/btn.png 1490 | title: 8 1491 | tap_action: 1492 | action: call-service 1493 | service: remote.send_command 1494 | service_data: 1495 | entity_id: remote.cruz_dtv 1496 | command: 8 1497 | hold_action: none 1498 | style: 1499 | width: 55px 1500 | height: 45px 1501 | top: 74.8% 1502 | left: 50% 1503 | border: solid 0px gray 1504 | - type: image 1505 | image: /local/remotes/btn.png 1506 | title: 9 1507 | tap_action: 1508 | action: call-service 1509 | service: remote.send_command 1510 | service_data: 1511 | entity_id: remote.cruz_dtv 1512 | command: 9 1513 | hold_action: none 1514 | style: 1515 | width: 55px 1516 | height: 45px 1517 | top: 74.8% 1518 | left: 76% 1519 | border: solid 0px gray 1520 | - type: image 1521 | image: /local/remotes/btn.png 1522 | title: 0 1523 | tap_action: 1524 | action: call-service 1525 | service: remote.send_command 1526 | service_data: 1527 | entity_id: remote.cruz_dtv 1528 | command: 0 1529 | hold_action: none 1530 | style: 1531 | width: 55px 1532 | height: 45px 1533 | top: 79.5% 1534 | left: 50% 1535 | border: solid 0px gray 1536 | - type: image 1537 | image: /local/remotes/btn.png 1538 | title: Netflix 1539 | tap_action: 1540 | action: call-service 1541 | service: media_player.select_source 1542 | service_data: 1543 | entity_id: media_player.cruz_tv 1544 | source: Netflix 1545 | hold_action: none 1546 | style: 1547 | width: 125px 1548 | height: 50px 1549 | top: 84.2% 1550 | left: 30% 1551 | border: solid 0px gray 1552 | - type: image 1553 | image: /local/remotes/btn.png 1554 | title: Disney+ 1555 | tap_action: 1556 | action: call-service 1557 | service: media_player.select_source 1558 | service_data: 1559 | entity_id: media_player.cruz_tv 1560 | source: Disney Plus 1561 | hold_action: none 1562 | style: 1563 | width: 125px 1564 | height: 50px 1565 | top: 84.2% 1566 | left: 70% 1567 | border: solid 0px gray 1568 | - type: image 1569 | image: /local/remotes/btn.png 1570 | title: Hulu 1571 | tap_action: 1572 | action: call-service 1573 | service: media_player.select_source 1574 | service_data: 1575 | entity_id: media_player.cruz_tv 1576 | source: Hulu 1577 | hold_action: none 1578 | style: 1579 | width: 125px 1580 | height: 50px 1581 | top: 89.7% 1582 | left: 30% 1583 | border: solid 0px gray 1584 | - type: image 1585 | image: /local/remotes/btn.png 1586 | title: JW Broadcasting 1587 | tap_action: 1588 | action: call-service 1589 | service: media_player.select_source 1590 | service_data: 1591 | entity_id: media_player.cruz_tv 1592 | source: JW Broadcasting 1593 | hold_action: none 1594 | style: 1595 | width: 125px 1596 | height: 50px 1597 | top: 89.7% 1598 | left: 70% 1599 | border: solid 0px gray 1600 | - type: image 1601 | image: /local/remotes/btn.png 1602 | title: Prime Video 1603 | tap_action: 1604 | action: call-service 1605 | service: media_player.select_source 1606 | service_data: 1607 | entity_id: media_player.cruz_tv 1608 | source: Prime Video 1609 | hold_action: none 1610 | style: 1611 | width: 125px 1612 | height: 50px 1613 | top: 95.2% 1614 | left: 30% 1615 | border: solid 0px gray 1616 | - type: image 1617 | image: /local/remotes/btn.png 1618 | title: HBO Max 1619 | tap_action: 1620 | action: call-service 1621 | service: media_player.select_source 1622 | service_data: 1623 | entity_id: media_player.cruz_tv 1624 | source: HBO Max 1625 | hold_action: none 1626 | style: 1627 | width: 125px 1628 | height: 50px 1629 | top: 95.2% 1630 | left: 70% 1631 | border: solid 0px gray 1632 | image: /local/remotes/uni_cruz_tv.jpg?v=2 1633 | card_mod: 1634 | style: | 1635 | ha-card { 1636 | background: rgb(16,30,36); 1637 | top: -55px; 1638 | margin-bottom: -55px; 1639 | } 1640 | - title: TV - Josh's Rm 1641 | path: tv-josh 1642 | visible: 1643 | - user: e3947a74b2a141e9ab708c565 1644 | badges: [] 1645 | cards: 1646 | - type: vertical-stack 1647 | cards: 1648 | - type: 'custom:button-card' 1649 | size: 25px 1650 | icon: 'mdi:close' 1651 | tap_action: 1652 | action: navigate 1653 | navigation_path: /lovelace/0 1654 | styles: 1655 | card: 1656 | - width: 40px 1657 | - height: 40px 1658 | - background-color: 'rgba(255,255,255,0)' 1659 | - box-shadow: none 1660 | - position: sticky 1661 | - z-index: 99 1662 | - type: picture-elements 1663 | elements: 1664 | - type: image 1665 | title: LED 1666 | image: /local/remotes/led_2x.png 1667 | tap_action: none 1668 | hold_action: none 1669 | style: 1670 | width: 35px 1671 | top: 3.5% 1672 | left: 25% 1673 | border: solid 0px gray 1674 | - type: image 1675 | title: Josh's TV 1676 | image: /local/remotes/name_josh.png 1677 | tap_action: none 1678 | hold_action: none 1679 | style: 1680 | width: 25% 1681 | top: 3.5% 1682 | left: 76.5% 1683 | border: solid 0px gray 1684 | - type: image 1685 | title: Power 1686 | image: /local/remotes/btn.png 1687 | tap_action: 1688 | action: call-service 1689 | service: script.josh_tv_toggle 1690 | hold_action: none 1691 | style: 1692 | width: 50px 1693 | top: 3.3% 1694 | left: 50% 1695 | border: solid 0px gray 1696 | - type: image 1697 | title: Previous 1698 | image: /local/remotes/btn.png 1699 | tap_action: 1700 | action: call-service 1701 | service: script.tv_dual_keys_josh_rm 1702 | service_data: 1703 | command_1: back 1704 | command_2: back 1705 | hold_action: none 1706 | style: 1707 | width: 135px 1708 | height: 50px 1709 | top: 8% 1710 | left: 30% 1711 | border: solid 0px gray 1712 | - type: image 1713 | title: Home 1714 | image: /local/remotes/btn.png 1715 | tap_action: 1716 | action: call-service 1717 | service: remote.send_command 1718 | service_data: 1719 | entity_id: remote.josh_tv 1720 | command: home 1721 | hold_action: none 1722 | style: 1723 | width: 135px 1724 | height: 50px 1725 | top: 8% 1726 | left: 70% 1727 | border: solid 0px gray 1728 | - type: image 1729 | title: Guide 1730 | image: /local/remotes/btn.png 1731 | tap_action: 1732 | action: call-service 1733 | service: remote.send_command 1734 | service_data: 1735 | entity_id: remote.josh_dtv 1736 | command: guide 1737 | hold_action: none 1738 | style: 1739 | width: 75px 1740 | height: 50px 1741 | top: 13% 1742 | left: 23% 1743 | border: solid 0px gray 1744 | - type: image 1745 | title: Info 1746 | image: /local/remotes/btn.png 1747 | tap_action: 1748 | action: call-service 1749 | service: remote.send_command 1750 | service_data: 1751 | entity_id: remote.josh_dtv 1752 | command: info 1753 | hold_action: none 1754 | style: 1755 | width: 75px 1756 | height: 50px 1757 | top: 13% 1758 | left: 50% 1759 | border: solid 0px gray 1760 | - type: image 1761 | title: Exit 1762 | image: /local/remotes/btn.png 1763 | tap_action: 1764 | action: call-service 1765 | service: remote.send_command 1766 | service_data: 1767 | entity_id: remote.josh_dtv 1768 | command: exit 1769 | hold_action: none 1770 | style: 1771 | width: 75px 1772 | height: 50px 1773 | top: 13% 1774 | left: 76% 1775 | border: solid 0px gray 1776 | - type: image 1777 | title: Up 1778 | image: /local/remotes/btn.png 1779 | tap_action: 1780 | action: call-service 1781 | service: script.tv_dual_keys_josh_rm 1782 | service_data: 1783 | command_1: up 1784 | command_2: up 1785 | hold_action: none 1786 | style: 1787 | width: 75px 1788 | height: 70px 1789 | top: 19.4% 1790 | left: 50% 1791 | border: solid 0px gray 1792 | - type: image 1793 | title: Left 1794 | image: /local/remotes/btn.png 1795 | tap_action: 1796 | action: call-service 1797 | service: script.tv_dual_keys_josh_rm 1798 | service_data: 1799 | command_1: left 1800 | command_2: left 1801 | hold_action: none 1802 | style: 1803 | width: 75px 1804 | height: 70px 1805 | top: 25.3% 1806 | left: 26% 1807 | border: solid 0px gray 1808 | - type: image 1809 | title: OK 1810 | image: /local/remotes/btn.png 1811 | tap_action: 1812 | action: call-service 1813 | service: script.tv_dual_keys_josh_rm 1814 | service_data: 1815 | command_1: select 1816 | command_2: select 1817 | hold_action: none 1818 | style: 1819 | width: 75px 1820 | height: 70px 1821 | top: 25.3% 1822 | left: 50% 1823 | border: solid 0px gray 1824 | - type: image 1825 | title: Right 1826 | image: /local/remotes/btn.png 1827 | tap_action: 1828 | action: call-service 1829 | service: script.tv_dual_keys_josh_rm 1830 | service_data: 1831 | command_1: right 1832 | command_2: right 1833 | hold_action: none 1834 | style: 1835 | width: 75px 1836 | height: 70px 1837 | top: 25.3% 1838 | left: 74% 1839 | border: solid 0px gray 1840 | - type: image 1841 | image: /local/remotes/btn.png 1842 | title: Down 1843 | tap_action: 1844 | action: call-service 1845 | service: script.tv_dual_keys_josh_rm 1846 | service_data: 1847 | command_1: down 1848 | command_2: down 1849 | hold_action: none 1850 | style: 1851 | width: 75px 1852 | height: 70px 1853 | top: 31.2% 1854 | left: 50% 1855 | border: solid 0px gray 1856 | - type: image 1857 | image: /local/remotes/btn.png 1858 | title: Sleep 1859 | tap_action: 1860 | action: fire-dom-event 1861 | browser_mod: 1862 | command: popup 1863 | title: Select Sleep Time 1864 | card: 1865 | type: vertical-stack 1866 | cards: 1867 | - type: entities 1868 | entities: 1869 | - entity: input_select.josh_tv 1870 | - type: markdown 1871 | content: > 1872 | {% if state_attr("timer.josh_tv", "finishes_at") != 1873 | None -%} 1874 |                 Sleep Timer is set 1875 |                 TV will turn off at {{ as_timestamp(strptime(state_attr("timer.josh_tv", "finishes_at"), "")) | timestamp_custom('%I:%M %p') }}, if on. 1876 | {%- endif %} 1877 | deviceID: 1878 | - this 1879 | - dashboard 1880 | style: 1881 | $: > 1882 | .mdc-dialog .mdc-dialog__container .mdc-dialog__surface 1883 | { 1884 | border-radius: 0px; 1885 | } 1886 | .: | 1887 | :host { 1888 | --mdc-theme-surface: rgba(0,0,0,0.8); 1889 | --secondary-background-color: rgba(69,90,100,1); 1890 | --ha-card-background: rgba(0,0,0,0.5); 1891 | } 1892 | :host .content { 1893 | width: 90vw; 1894 | height: 95vh; 1895 | } 1896 | hold_action: none 1897 | style: 1898 | width: 50px 1899 | height: 43px 1900 | top: 30.8% 1901 | left: 25.9% 1902 | border: solid 0px gray 1903 | - type: image 1904 | image: /local/remotes/btn.png 1905 | title: Record 1906 | tap_action: 1907 | action: call-service 1908 | service: remote.send_command 1909 | service_data: 1910 | entity_id: remote.josh_dtv 1911 | command: record 1912 | hold_action: none 1913 | style: 1914 | width: 50px 1915 | height: 43px 1916 | top: 30.8% 1917 | left: 74.2% 1918 | border: solid 0px gray 1919 | - type: image 1920 | image: /local/remotes/btn.png 1921 | title: Menu 1922 | tap_action: 1923 | service: remote.send_command 1924 | service_data: 1925 | entity_id: remote.josh_dtv 1926 | command: menu 1927 | hold_action: none 1928 | style: 1929 | width: 75px 1930 | height: 50px 1931 | top: 57.5% 1932 | left: 23% 1933 | border: solid 0px gray 1934 | - type: image 1935 | image: /local/remotes/btn.png 1936 | title: TV 1937 | tap_action: 1938 | action: call-service 1939 | service: media_player.select_source 1940 | service_data: 1941 | entity_id: media_player.josh_tv 1942 | source: "Cable\_box" 1943 | hold_action: none 1944 | style: 1945 | width: 75px 1946 | height: 50px 1947 | top: 57.5% 1948 | left: 50% 1949 | border: solid 0px gray 1950 | - type: image 1951 | image: /local/remotes/btn.png 1952 | title: List 1953 | tap_action: 1954 | action: call-service 1955 | service: remote.send_command 1956 | service_data: 1957 | entity_id: remote.josh_dtv 1958 | command: list 1959 | hold_action: none 1960 | style: 1961 | width: 75px 1962 | height: 50px 1963 | top: 57.5% 1964 | left: 76% 1965 | border: solid 0px gray 1966 | - type: image 1967 | image: /local/remotes/btn.png 1968 | title: Back 1969 | tap_action: 1970 | action: call-service 1971 | service: script.tv_dual_keys_josh_rm 1972 | service_data: 1973 | command_1: replay 1974 | command_2: replay 1975 | hold_action: none 1976 | style: 1977 | width: 75px 1978 | height: 50px 1979 | top: 46% 1980 | left: 23% 1981 | border: solid 0px gray 1982 | - type: image 1983 | image: /local/remotes/btn.png 1984 | title: Stop 1985 | tap_action: 1986 | action: call-service 1987 | service: remote.send_command 1988 | service_data: 1989 | entity_id: remote.josh_dtv 1990 | command: stop 1991 | hold_action: none 1992 | style: 1993 | width: 75px 1994 | height: 50px 1995 | top: 46% 1996 | left: 50% 1997 | border: solid 0px gray 1998 | - type: image 1999 | image: /local/remotes/btn.png 2000 | title: Options 2001 | tap_action: 2002 | action: call-service 2003 | service: script.tv_dual_keys_josh_rm 2004 | service_data: 2005 | command_1: advance 2006 | command_2: info 2007 | hold_action: none 2008 | style: 2009 | width: 75px 2010 | height: 50px 2011 | top: 46% 2012 | left: 76% 2013 | border: solid 0px gray 2014 | - type: image 2015 | image: /local/remotes/btn.png 2016 | title: Rewind 2017 | tap_action: 2018 | action: call-service 2019 | service: script.tv_dual_keys_josh_rm 2020 | service_data: 2021 | command_1: rew 2022 | command_2: reverse 2023 | hold_action: none 2024 | style: 2025 | width: 50px 2026 | height: 95px 2027 | top: 52% 2028 | left: 20% 2029 | border: solid 0px gray 2030 | - type: image 2031 | image: /local/remotes/btn.png 2032 | title: Play/Pause 2033 | tap_action: 2034 | action: call-service 2035 | service: script.tv_dual_keys_josh_rm 2036 | service_data: 2037 | command_1: pause 2038 | command_2: play 2039 | hold_action: none 2040 | style: 2041 | width: 125px 2042 | height: 80px 2043 | top: 52% 2044 | left: 50% 2045 | border: solid 0px gray 2046 | - type: image 2047 | image: /local/remotes/btn.png 2048 | title: Fast-Forward 2049 | tap_action: 2050 | action: call-service 2051 | service: script.tv_dual_keys_josh_rm 2052 | service_data: 2053 | command_1: ffwd 2054 | command_2: forward 2055 | hold_action: none 2056 | style: 2057 | width: 50px 2058 | height: 95px 2059 | top: 52% 2060 | left: 80% 2061 | border: solid 0px gray 2062 | - type: image 2063 | image: /local/remotes/btn.png 2064 | title: Vol Dn 2065 | tap_action: 2066 | action: call-service 2067 | service: media_player.volume_down 2068 | service_data: 2069 | entity_id: media_player.josh_tv 2070 | hold_action: none 2071 | style: 2072 | width: 75px 2073 | height: 50px 2074 | top: 37% 2075 | left: 23% 2076 | border: solid 0px gray 2077 | - type: image 2078 | image: /local/remotes/btn.png 2079 | title: Mute 2080 | tap_action: 2081 | action: call-service 2082 | service: media_player.volume_mute 2083 | service_data: 2084 | entity_id: media_player.josh_tv 2085 | is_volume_muted: true 2086 | hold_action: none 2087 | style: 2088 | width: 75px 2089 | height: 50px 2090 | top: 37% 2091 | left: 50% 2092 | border: solid 0px gray 2093 | - type: image 2094 | image: /local/remotes/btn.png 2095 | title: Vol Up 2096 | tap_action: 2097 | action: call-service 2098 | service: media_player.volume_up 2099 | service_data: 2100 | entity_id: media_player.josh_tv 2101 | hold_action: none 2102 | style: 2103 | width: 75px 2104 | height: 50px 2105 | top: 37% 2106 | left: 76% 2107 | border: solid 0px gray 2108 | - type: image 2109 | image: /local/remotes/btn.png 2110 | title: Ch Dn 2111 | tap_action: 2112 | action: call-service 2113 | service: remote.send_command 2114 | service_data: 2115 | entity_id: remote.josh_dtv 2116 | command: chandown 2117 | hold_action: none 2118 | style: 2119 | width: 75px 2120 | height: 50px 2121 | top: 41.5% 2122 | left: 23% 2123 | border: solid 0px gray 2124 | - type: image 2125 | image: /local/remotes/btn.png 2126 | title: Ch Prev 2127 | tap_action: 2128 | action: call-service 2129 | service: remote.send_command 2130 | service_data: 2131 | entity_id: remote.josh_dtv 2132 | command: prev 2133 | hold_action: none 2134 | style: 2135 | width: 75px 2136 | height: 50px 2137 | top: 41.5% 2138 | left: 50% 2139 | border: solid 0px gray 2140 | - type: image 2141 | image: /local/remotes/btn.png 2142 | title: Ch Up 2143 | tap_action: 2144 | action: call-service 2145 | service: remote.send_command 2146 | service_data: 2147 | entity_id: remote.josh_dtv 2148 | command: chanup 2149 | hold_action: none 2150 | style: 2151 | width: 75px 2152 | height: 50px 2153 | top: 41.5% 2154 | left: 76% 2155 | border: solid 0px gray 2156 | - type: image 2157 | image: /local/remotes/btn.png 2158 | title: Red 2159 | tap_action: 2160 | action: call-service 2161 | service: remote.send_command 2162 | service_data: 2163 | entity_id: remote.josh_dtv 2164 | command: red 2165 | hold_action: none 2166 | style: 2167 | width: 55px 2168 | height: 50px 2169 | top: 61.5% 2170 | left: 20% 2171 | border: solid 0px gray 2172 | - type: image 2173 | image: /local/remotes/btn.png 2174 | title: Green 2175 | tap_action: 2176 | action: call-service 2177 | service: remote.send_command 2178 | service_data: 2179 | entity_id: remote.josh_dtv 2180 | command: green 2181 | hold_action: none 2182 | style: 2183 | width: 55px 2184 | height: 45px 2185 | top: 61.5% 2186 | left: 40.7% 2187 | border: solid 0px gray 2188 | - type: image 2189 | image: /local/remotes/btn.png 2190 | title: Yellow 2191 | tap_action: 2192 | action: call-service 2193 | service: remote.send_command 2194 | service_data: 2195 | entity_id: remote.josh_dtv 2196 | command: yellow 2197 | hold_action: none 2198 | style: 2199 | width: 55px 2200 | height: 45px 2201 | top: 61.5% 2202 | left: 59.9% 2203 | border: solid 0px gray 2204 | - type: image 2205 | image: /local/remotes/btn.png 2206 | title: Blue 2207 | tap_action: 2208 | action: call-service 2209 | service: remote.send_command 2210 | service_data: 2211 | entity_id: remote.josh_dtv 2212 | command: blue 2213 | hold_action: none 2214 | style: 2215 | width: 55px 2216 | height: 45px 2217 | top: 61.5% 2218 | left: 80% 2219 | border: solid 0px gray 2220 | - type: image 2221 | image: /local/remotes/btn.png 2222 | title: 1 2223 | tap_action: 2224 | action: call-service 2225 | service: remote.send_command 2226 | service_data: 2227 | entity_id: remote.josh_dtv 2228 | command: 1 2229 | hold_action: none 2230 | style: 2231 | width: 55px 2232 | height: 45px 2233 | top: 65.5% 2234 | left: 23% 2235 | border: solid 0px gray 2236 | - type: image 2237 | image: /local/remotes/btn.png 2238 | title: 2 2239 | tap_action: 2240 | action: call-service 2241 | service: remote.send_command 2242 | service_data: 2243 | entity_id: remote.josh_dtv 2244 | command: 2 2245 | hold_action: none 2246 | style: 2247 | width: 55px 2248 | height: 45px 2249 | top: 65.5% 2250 | left: 50% 2251 | border: solid 0px gray 2252 | - type: image 2253 | image: /local/remotes/btn.png 2254 | title: 3 2255 | tap_action: 2256 | action: call-service 2257 | service: remote.send_command 2258 | service_data: 2259 | entity_id: remote.josh_dtv 2260 | command: 3 2261 | hold_action: none 2262 | style: 2263 | width: 55px 2264 | height: 45px 2265 | top: 65.5% 2266 | left: 76% 2267 | border: solid 0px gray 2268 | - type: image 2269 | image: /local/remotes/btn.png 2270 | title: 4 2271 | tap_action: 2272 | action: call-service 2273 | service: remote.send_command 2274 | service_data: 2275 | entity_id: remote.josh_dtv 2276 | command: 4 2277 | hold_action: none 2278 | style: 2279 | width: 55px 2280 | height: 45px 2281 | top: 70.2% 2282 | left: 23% 2283 | border: solid 0px gray 2284 | - type: image 2285 | image: /local/remotes/btn.png 2286 | title: 5 2287 | tap_action: 2288 | action: call-service 2289 | service: remote.send_command 2290 | service_data: 2291 | entity_id: remote.josh_dtv 2292 | command: 5 2293 | hold_action: none 2294 | style: 2295 | width: 55px 2296 | height: 45px 2297 | top: 70.2% 2298 | left: 50% 2299 | border: solid 0px gray 2300 | - type: image 2301 | image: /local/remotes/btn.png 2302 | title: 6 2303 | tap_action: 2304 | action: call-service 2305 | service: remote.send_command 2306 | service_data: 2307 | entity_id: remote.josh_dtv 2308 | command: 6 2309 | hold_action: none 2310 | style: 2311 | width: 55px 2312 | height: 45px 2313 | top: 70.2% 2314 | left: 76% 2315 | border: solid 0px gray 2316 | - type: image 2317 | image: /local/remotes/btn.png 2318 | title: 7 2319 | tap_action: 2320 | action: call-service 2321 | service: remote.send_command 2322 | service_data: 2323 | entity_id: remote.josh_dtv 2324 | command: 7 2325 | hold_action: none 2326 | style: 2327 | width: 55px 2328 | height: 45px 2329 | top: 74.8% 2330 | left: 23% 2331 | border: solid 0px gray 2332 | - type: image 2333 | image: /local/remotes/btn.png 2334 | title: 8 2335 | tap_action: 2336 | action: call-service 2337 | service: remote.send_command 2338 | service_data: 2339 | entity_id: remote.josh_dtv 2340 | command: 8 2341 | hold_action: none 2342 | style: 2343 | width: 55px 2344 | height: 45px 2345 | top: 74.8% 2346 | left: 50% 2347 | border: solid 0px gray 2348 | - type: image 2349 | image: /local/remotes/btn.png 2350 | title: 9 2351 | tap_action: 2352 | action: call-service 2353 | service: remote.send_command 2354 | service_data: 2355 | entity_id: remote.josh_dtv 2356 | command: 9 2357 | hold_action: none 2358 | style: 2359 | width: 55px 2360 | height: 45px 2361 | top: 74.8% 2362 | left: 76% 2363 | border: solid 0px gray 2364 | - type: image 2365 | image: /local/remotes/btn.png 2366 | title: 0 2367 | tap_action: 2368 | action: call-service 2369 | service: remote.send_command 2370 | service_data: 2371 | entity_id: remote.josh_dtv 2372 | command: 0 2373 | hold_action: none 2374 | style: 2375 | width: 55px 2376 | height: 45px 2377 | top: 79.5% 2378 | left: 50% 2379 | border: solid 0px gray 2380 | - type: image 2381 | image: /local/remotes/btn.png 2382 | title: Netflix 2383 | tap_action: 2384 | action: call-service 2385 | service: media_player.select_source 2386 | service_data: 2387 | entity_id: media_player.josh_tv 2388 | source: Netflix 2389 | hold_action: none 2390 | style: 2391 | width: 125px 2392 | height: 50px 2393 | top: 84.2% 2394 | left: 30% 2395 | border: solid 0px gray 2396 | - type: image 2397 | image: /local/remotes/btn.png 2398 | title: Disney+ 2399 | tap_action: 2400 | action: call-service 2401 | service: media_player.select_source 2402 | service_data: 2403 | entity_id: media_player.josh_tv 2404 | source: Disney Plus 2405 | hold_action: none 2406 | style: 2407 | width: 125px 2408 | height: 50px 2409 | top: 84.2% 2410 | left: 70% 2411 | border: solid 0px gray 2412 | - type: image 2413 | image: /local/remotes/btn.png 2414 | title: YouTube 2415 | tap_action: 2416 | action: call-service 2417 | service: media_player.select_source 2418 | service_data: 2419 | entity_id: media_player.josh_tv 2420 | source: YouTube 2421 | hold_action: none 2422 | style: 2423 | width: 125px 2424 | height: 50px 2425 | top: 89.7% 2426 | left: 30% 2427 | border: solid 0px gray 2428 | - type: image 2429 | image: /local/remotes/btn.png 2430 | title: JW Broadcasting 2431 | tap_action: 2432 | action: call-service 2433 | service: media_player.select_source 2434 | service_data: 2435 | entity_id: media_player.josh_tv 2436 | source: JW Broadcasting 2437 | hold_action: none 2438 | style: 2439 | width: 125px 2440 | height: 50px 2441 | top: 89.7% 2442 | left: 70% 2443 | border: solid 0px gray 2444 | - type: image 2445 | image: /local/remotes/btn.png 2446 | title: Prime Video 2447 | tap_action: 2448 | action: call-service 2449 | service: media_player.select_source 2450 | service_data: 2451 | entity_id: media_player.josh_tv 2452 | source: Prime Video 2453 | hold_action: none 2454 | style: 2455 | width: 125px 2456 | height: 50px 2457 | top: 95.2% 2458 | left: 30% 2459 | border: solid 0px gray 2460 | - type: image 2461 | image: /local/remotes/btn.png 2462 | title: HBO Max 2463 | tap_action: 2464 | action: call-service 2465 | service: media_player.select_source 2466 | service_data: 2467 | entity_id: media_player.josh_tv 2468 | source: HBO Max 2469 | hold_action: none 2470 | style: 2471 | width: 125px 2472 | height: 50px 2473 | top: 95.2% 2474 | left: 70% 2475 | border: solid 0px gray 2476 | image: /local/remotes/uni_josh_tv.jpg?v=3 2477 | card_mod: 2478 | style: | 2479 | ha-card { 2480 | background: rgb(16,30,36); 2481 | top: -55px; 2482 | margin-bottom: -55px; 2483 | } 2484 | - title: TV - Master 2485 | path: tv-master 2486 | icon: '' 2487 | visible: 2488 | - user: be77752d871b4b8fa18df6e3 2489 | - user: ef8551138df645acab3b193b 2490 | badges: [] 2491 | cards: 2492 | - type: vertical-stack 2493 | cards: 2494 | - type: 'custom:button-card' 2495 | size: 25px 2496 | icon: 'mdi:close' 2497 | tap_action: 2498 | action: navigate 2499 | navigation_path: /lovelace/0 2500 | styles: 2501 | card: 2502 | - width: 40px 2503 | - height: 40px 2504 | - background-color: 'rgba(255,255,255,0)' 2505 | - box-shadow: none 2506 | - position: sticky 2507 | - z-index: 99 2508 | - type: picture-elements 2509 | elements: 2510 | - type: image 2511 | title: LED 2512 | image: /local/remotes/led_2x.png 2513 | tap_action: none 2514 | hold_action: none 2515 | style: 2516 | width: 35px 2517 | top: 3.5% 2518 | left: 25% 2519 | border: solid 0px gray 2520 | - type: image 2521 | title: Master Bedroom TV 2522 | image: /local/remotes/name_master.png 2523 | tap_action: none 2524 | hold_action: none 2525 | style: 2526 | width: 25% 2527 | top: 3.5% 2528 | left: 77% 2529 | border: solid 0px gray 2530 | - type: image 2531 | title: Power 2532 | image: /local/remotes/btn.png 2533 | tap_action: 2534 | action: call-service 2535 | service: script.master_tv_toggle 2536 | hold_action: none 2537 | style: 2538 | width: 50px 2539 | top: 3.3% 2540 | left: 50% 2541 | border: solid 0px gray 2542 | - type: image 2543 | title: Previous 2544 | image: /local/remotes/btn.png 2545 | tap_action: 2546 | action: call-service 2547 | service: remote.send_command 2548 | service_data: 2549 | entity_id: remote.master_dtv 2550 | command: back 2551 | hold_action: none 2552 | style: 2553 | width: 135px 2554 | height: 50px 2555 | top: 8% 2556 | left: 30% 2557 | border: solid 0px gray 2558 | - type: image 2559 | title: Home 2560 | image: /local/remotes/btn.png 2561 | tap_action: 2562 | action: call-service 2563 | service: remote.send_command 2564 | service_data: 2565 | entity_id: remote.master_dtv 2566 | command: menu 2567 | hold_action: none 2568 | style: 2569 | width: 135px 2570 | height: 50px 2571 | top: 8% 2572 | left: 70% 2573 | border: solid 0px gray 2574 | - type: image 2575 | title: Guide 2576 | image: /local/remotes/btn.png 2577 | tap_action: 2578 | action: call-service 2579 | service: remote.send_command 2580 | service_data: 2581 | entity_id: remote.master_dtv 2582 | command: guide 2583 | hold_action: none 2584 | style: 2585 | width: 75px 2586 | height: 50px 2587 | top: 13% 2588 | left: 23% 2589 | border: solid 0px gray 2590 | - type: image 2591 | title: Info 2592 | image: /local/remotes/btn.png 2593 | tap_action: 2594 | action: call-service 2595 | service: remote.send_command 2596 | service_data: 2597 | entity_id: remote.master_dtv 2598 | command: info 2599 | hold_action: none 2600 | style: 2601 | width: 75px 2602 | height: 50px 2603 | top: 13% 2604 | left: 50% 2605 | border: solid 0px gray 2606 | - type: image 2607 | title: Exit 2608 | image: /local/remotes/btn.png 2609 | tap_action: 2610 | action: call-service 2611 | service: remote.send_command 2612 | service_data: 2613 | entity_id: remote.master_dtv 2614 | command: exit 2615 | hold_action: none 2616 | style: 2617 | width: 75px 2618 | height: 50px 2619 | top: 13% 2620 | left: 76% 2621 | border: solid 0px gray 2622 | - type: image 2623 | title: Up 2624 | image: /local/remotes/btn.png 2625 | tap_action: 2626 | action: call-service 2627 | service: script.tv_dual_keys_master 2628 | service_data: 2629 | command_1: up 2630 | codeset: 3 2631 | code: 8 2632 | hold_action: none 2633 | style: 2634 | width: 75px 2635 | height: 70px 2636 | top: 19.4% 2637 | left: 50% 2638 | border: solid 0px gray 2639 | - type: image 2640 | title: Left 2641 | image: /local/remotes/btn.png 2642 | tap_action: 2643 | action: call-service 2644 | service: script.tv_dual_keys_master 2645 | service_data: 2646 | command_1: left 2647 | codeset: 3 2648 | code: 1 2649 | hold_action: none 2650 | style: 2651 | width: 75px 2652 | height: 70px 2653 | top: 25.3% 2654 | left: 26% 2655 | border: solid 0px gray 2656 | - type: image 2657 | title: OK 2658 | image: /local/remotes/btn.png 2659 | tap_action: 2660 | action: call-service 2661 | service: script.tv_dual_keys_master 2662 | service_data: 2663 | command_1: select 2664 | codeset: 3 2665 | code: 2 2666 | hold_action: none 2667 | style: 2668 | width: 75px 2669 | height: 70px 2670 | top: 25.3% 2671 | left: 50% 2672 | border: solid 0px gray 2673 | - type: image 2674 | title: Right 2675 | image: /local/remotes/btn.png 2676 | tap_action: 2677 | action: call-service 2678 | service: script.tv_dual_keys_master 2679 | service_data: 2680 | command_1: right 2681 | codeset: 3 2682 | code: 7 2683 | hold_action: none 2684 | style: 2685 | width: 75px 2686 | height: 70px 2687 | top: 25.3% 2688 | left: 74% 2689 | border: solid 0px gray 2690 | - type: image 2691 | image: /local/remotes/btn.png 2692 | title: Down 2693 | tap_action: 2694 | action: call-service 2695 | service: script.tv_dual_keys_master 2696 | service_data: 2697 | command_1: down 2698 | codeset: 3 2699 | code: 0 2700 | hold_action: none 2701 | style: 2702 | width: 75px 2703 | height: 70px 2704 | top: 31.2% 2705 | left: 50% 2706 | border: solid 0px gray 2707 | - type: image 2708 | image: /local/remotes/btn.png 2709 | title: Sleep 2710 | tap_action: 2711 | action: fire-dom-event 2712 | browser_mod: 2713 | command: popup 2714 | title: Select Sleep Time 2715 | card: 2716 | type: vertical-stack 2717 | cards: 2718 | - type: entities 2719 | entities: 2720 | - entity: input_select.master_tv 2721 | - type: markdown 2722 | content: > 2723 | {% if state_attr("timer.master_tv", "finishes_at") 2724 | != None -%} 2725 |                 Sleep Timer is set 2726 |                 TV will turn off at {{ as_timestamp(strptime(state_attr("timer.master_tv", "finishes_at"), "")) | timestamp_custom('%I:%M %p') }}, if on. 2727 | {%- endif %} 2728 | deviceID: 2729 | - this 2730 | - dashboard 2731 | style: 2732 | $: > 2733 | .mdc-dialog .mdc-dialog__container .mdc-dialog__surface 2734 | { 2735 | border-radius: 0px; 2736 | } 2737 | .: | 2738 | :host { 2739 | --mdc-theme-surface: rgba(0,0,0,0.8); 2740 | --secondary-background-color: rgba(69,90,100,1); 2741 | --ha-card-background: rgba(0,0,0,0.5); 2742 | } 2743 | :host .content { 2744 | width: 90vw; 2745 | height: 95vh; 2746 | } 2747 | hold_action: none 2748 | style: 2749 | width: 50px 2750 | height: 43px 2751 | top: 30.8% 2752 | left: 25.9% 2753 | border: solid 0px gray 2754 | - type: image 2755 | image: /local/remotes/btn.png 2756 | title: Record 2757 | tap_action: 2758 | action: call-service 2759 | service: remote.send_command 2760 | service_data: 2761 | entity_id: remote.master_dtv 2762 | command: record 2763 | hold_action: none 2764 | style: 2765 | width: 50px 2766 | height: 43px 2767 | top: 30.8% 2768 | left: 74.2% 2769 | border: solid 0px gray 2770 | - type: image 2771 | image: /local/remotes/btn.png 2772 | title: Vol Dn 2773 | tap_action: 2774 | action: call-service 2775 | service: media_player.volume_down 2776 | service_data: 2777 | entity_id: media_player.master_tv 2778 | hold_action: none 2779 | style: 2780 | width: 75px 2781 | height: 50px 2782 | top: 37% 2783 | left: 23% 2784 | border: solid 0px gray 2785 | - type: image 2786 | image: /local/remotes/btn.png 2787 | title: Mute 2788 | tap_action: 2789 | action: call-service 2790 | service: media_player.volume_mute 2791 | service_data: 2792 | entity_id: media_player.master_tv 2793 | is_volume_muted: true 2794 | hold_action: none 2795 | style: 2796 | width: 75px 2797 | height: 50px 2798 | top: 37% 2799 | left: 50% 2800 | border: solid 0px gray 2801 | - type: image 2802 | image: /local/remotes/btn.png 2803 | title: Vol Up 2804 | tap_action: 2805 | action: call-service 2806 | service: media_player.volume_up 2807 | service_data: 2808 | entity_id: media_player.master_tv 2809 | hold_action: none 2810 | style: 2811 | width: 75px 2812 | height: 50px 2813 | top: 37% 2814 | left: 76% 2815 | border: solid 0px gray 2816 | - type: image 2817 | image: /local/remotes/btn.png 2818 | title: Ch Dn 2819 | tap_action: 2820 | action: call-service 2821 | service: remote.send_command 2822 | service_data: 2823 | entity_id: remote.master_dtv 2824 | command: chandown 2825 | hold_action: none 2826 | style: 2827 | width: 85px 2828 | height: 50px 2829 | top: 41.5% 2830 | left: 23.5% 2831 | border: solid 0px red 2832 | - type: image 2833 | image: /local/remotes/btn.png 2834 | title: Ch Prev 2835 | tap_action: 2836 | action: call-service 2837 | service: remote.send_command 2838 | service_data: 2839 | entity_id: remote.master_dtv 2840 | command: prev 2841 | hold_action: none 2842 | style: 2843 | width: 75px 2844 | height: 50px 2845 | top: 41.5% 2846 | left: 50% 2847 | border: solid 0px red 2848 | - type: image 2849 | image: /local/remotes/btn.png 2850 | title: Ch Up 2851 | tap_action: 2852 | action: call-service 2853 | service: remote.send_command 2854 | service_data: 2855 | entity_id: remote.master_dtv 2856 | command: chanup 2857 | hold_action: none 2858 | style: 2859 | width: 75px 2860 | height: 50px 2861 | top: 41.5% 2862 | left: 76% 2863 | border: solid 0px red 2864 | - type: image 2865 | image: /local/remotes/btn.png 2866 | title: Back 2867 | tap_action: 2868 | action: call-service 2869 | service: remote.send_command 2870 | service_data: 2871 | entity_id: remote.master_dtv 2872 | command: replay 2873 | hold_action: none 2874 | style: 2875 | width: 75px 2876 | height: 50px 2877 | top: 46% 2878 | left: 23% 2879 | border: solid 0px gray 2880 | - type: image 2881 | image: /local/remotes/btn.png 2882 | title: Stop 2883 | tap_action: 2884 | action: call-service 2885 | service: script.tv_dual_keys_master 2886 | service_data: 2887 | command_1: stop 2888 | codeset: 2 2889 | code: 9 2890 | hold_action: none 2891 | style: 2892 | width: 75px 2893 | height: 50px 2894 | top: 46% 2895 | left: 50% 2896 | border: solid 0px gray 2897 | - type: image 2898 | image: /local/remotes/btn.png 2899 | title: Options 2900 | tap_action: 2901 | action: call-service 2902 | service: remote.send_command 2903 | service_data: 2904 | entity_id: remote.master_dtv 2905 | command: advance 2906 | hold_action: none 2907 | style: 2908 | width: 75px 2909 | height: 50px 2910 | top: 46% 2911 | left: 76% 2912 | border: solid 0px gray 2913 | - type: image 2914 | image: /local/remotes/btn.png 2915 | title: Rewind 2916 | tap_action: 2917 | action: call-service 2918 | service: script.tv_dual_keys_master 2919 | service_data: 2920 | command_1: rew 2921 | codeset: 2 2922 | code: 1 2923 | hold_action: none 2924 | style: 2925 | width: 50px 2926 | height: 95px 2927 | top: 52% 2928 | left: 20% 2929 | border: solid 0px gray 2930 | - type: image 2931 | image: /local/remotes/btn.png 2932 | title: Play/Pause 2933 | tap_action: 2934 | action: call-service 2935 | service: script.tv_dual_keys_master 2936 | service_data: 2937 | command_1: pause 2938 | codeset: 2 2939 | code: 2 2940 | hold_action: none 2941 | style: 2942 | width: 125px 2943 | height: 80px 2944 | top: 52% 2945 | left: 50% 2946 | border: solid 0px gray 2947 | - type: image 2948 | image: /local/remotes/btn.png 2949 | title: Fast-Forward 2950 | tap_action: 2951 | action: call-service 2952 | service: script.tv_dual_keys_master 2953 | service_data: 2954 | command_1: ffwd 2955 | codeset: 2 2956 | code: 0 2957 | hold_action: none 2958 | style: 2959 | width: 50px 2960 | height: 95px 2961 | top: 52% 2962 | left: 80% 2963 | border: solid 0px gray 2964 | - type: image 2965 | image: /local/remotes/btn.png 2966 | title: Input 2967 | tap_action: 2968 | action: call-service 2969 | service: script.master_tv_source 2970 | hold_action: none 2971 | style: 2972 | width: 75px 2973 | height: 50px 2974 | top: 57.5% 2975 | left: 23% 2976 | border: solid 0px gray 2977 | - type: image 2978 | image: /local/remotes/btn.png 2979 | title: Active 2980 | tap_action: 2981 | action: call-service 2982 | service: remote.send_command 2983 | service_data: 2984 | entity_id: remote.master_dtv 2985 | command: active 2986 | hold_action: none 2987 | style: 2988 | width: 75px 2989 | height: 50px 2990 | top: 57.5% 2991 | left: 50% 2992 | border: solid 0px gray 2993 | - type: image 2994 | image: /local/remotes/btn.png 2995 | title: List 2996 | tap_action: 2997 | action: call-service 2998 | service: remote.send_command 2999 | service_data: 3000 | entity_id: remote.master_dtv 3001 | command: list 3002 | hold_action: none 3003 | style: 3004 | width: 75px 3005 | height: 50px 3006 | top: 57.5% 3007 | left: 76% 3008 | border: solid 0px gray 3009 | - type: image 3010 | image: /local/remotes/btn.png 3011 | title: Red 3012 | tap_action: 3013 | action: call-service 3014 | service: remote.send_command 3015 | service_data: 3016 | entity_id: remote.master_dtv 3017 | command: red 3018 | hold_action: none 3019 | style: 3020 | width: 55px 3021 | height: 50px 3022 | top: 61.5% 3023 | left: 20% 3024 | border: solid 0px gray 3025 | - type: image 3026 | image: /local/remotes/btn.png 3027 | title: Green 3028 | tap_action: 3029 | action: call-service 3030 | service: remote.send_command 3031 | service_data: 3032 | entity_id: remote.master_dtv 3033 | command: green 3034 | hold_action: none 3035 | style: 3036 | width: 55px 3037 | height: 45px 3038 | top: 61.5% 3039 | left: 40.7% 3040 | border: solid 0px gray 3041 | - type: image 3042 | image: /local/remotes/btn.png 3043 | title: Yellow 3044 | tap_action: 3045 | action: call-service 3046 | service: remote.send_command 3047 | service_data: 3048 | entity_id: remote.master_dtv 3049 | command: yellow 3050 | hold_action: none 3051 | style: 3052 | width: 55px 3053 | height: 45px 3054 | top: 61.5% 3055 | left: 59.9% 3056 | border: solid 0px gray 3057 | - type: image 3058 | image: /local/remotes/btn.png 3059 | title: Blue 3060 | tap_action: 3061 | action: call-service 3062 | service: remote.send_command 3063 | service_data: 3064 | entity_id: remote.master_dtv 3065 | command: blue 3066 | hold_action: none 3067 | style: 3068 | width: 55px 3069 | height: 45px 3070 | top: 61.5% 3071 | left: 80% 3072 | border: solid 0px gray 3073 | - type: image 3074 | image: /local/remotes/btn.png 3075 | title: 1 3076 | tap_action: 3077 | action: call-service 3078 | service: remote.send_command 3079 | service_data: 3080 | entity_id: remote.master_dtv 3081 | command: 1 3082 | hold_action: none 3083 | style: 3084 | width: 55px 3085 | height: 45px 3086 | top: 65.5% 3087 | left: 23% 3088 | border: solid 0px gray 3089 | - type: image 3090 | image: /local/remotes/btn.png 3091 | title: 2 3092 | tap_action: 3093 | action: call-service 3094 | service: remote.send_command 3095 | service_data: 3096 | entity_id: remote.master_dtv 3097 | command: 2 3098 | hold_action: none 3099 | style: 3100 | width: 55px 3101 | height: 45px 3102 | top: 65.5% 3103 | left: 50% 3104 | border: solid 0px gray 3105 | - type: image 3106 | image: /local/remotes/btn.png 3107 | title: 3 3108 | tap_action: 3109 | action: call-service 3110 | service: remote.send_command 3111 | service_data: 3112 | entity_id: remote.master_dtv 3113 | command: 3 3114 | hold_action: none 3115 | style: 3116 | width: 55px 3117 | height: 45px 3118 | top: 65.5% 3119 | left: 76% 3120 | border: solid 0px gray 3121 | - type: image 3122 | image: /local/remotes/btn.png 3123 | title: 4 3124 | tap_action: 3125 | action: call-service 3126 | service: remote.send_command 3127 | service_data: 3128 | entity_id: remote.master_dtv 3129 | command: 4 3130 | hold_action: none 3131 | style: 3132 | width: 55px 3133 | height: 45px 3134 | top: 70.2% 3135 | left: 23% 3136 | border: solid 0px gray 3137 | - type: image 3138 | image: /local/remotes/btn.png 3139 | title: 5 3140 | tap_action: 3141 | action: call-service 3142 | service: remote.send_command 3143 | service_data: 3144 | entity_id: remote.master_dtv 3145 | command: 5 3146 | hold_action: none 3147 | style: 3148 | width: 55px 3149 | height: 45px 3150 | top: 70.2% 3151 | left: 50% 3152 | border: solid 0px gray 3153 | - type: image 3154 | image: /local/remotes/btn.png 3155 | title: 6 3156 | tap_action: 3157 | action: call-service 3158 | service: remote.send_command 3159 | service_data: 3160 | entity_id: remote.master_dtv 3161 | command: 6 3162 | hold_action: none 3163 | style: 3164 | width: 55px 3165 | height: 45px 3166 | top: 70.2% 3167 | left: 76% 3168 | border: solid 0px gray 3169 | - type: image 3170 | image: /local/remotes/btn.png 3171 | title: 7 3172 | tap_action: 3173 | action: call-service 3174 | service: remote.send_command 3175 | service_data: 3176 | entity_id: remote.master_dtv 3177 | command: 7 3178 | hold_action: none 3179 | style: 3180 | width: 55px 3181 | height: 45px 3182 | top: 74.8% 3183 | left: 23% 3184 | border: solid 0px gray 3185 | - type: image 3186 | image: /local/remotes/btn.png 3187 | title: 8 3188 | tap_action: 3189 | action: call-service 3190 | service: remote.send_command 3191 | service_data: 3192 | entity_id: remote.master_dtv 3193 | command: 8 3194 | hold_action: none 3195 | style: 3196 | width: 55px 3197 | height: 45px 3198 | top: 74.8% 3199 | left: 50% 3200 | border: solid 0px gray 3201 | - type: image 3202 | image: /local/remotes/btn.png 3203 | title: 9 3204 | tap_action: 3205 | action: call-service 3206 | service: remote.send_command 3207 | service_data: 3208 | entity_id: remote.master_dtv 3209 | command: 9 3210 | hold_action: none 3211 | style: 3212 | width: 55px 3213 | height: 45px 3214 | top: 74.8% 3215 | left: 76% 3216 | border: solid 0px gray 3217 | - type: image 3218 | image: /local/remotes/btn.png 3219 | title: 0 3220 | tap_action: 3221 | action: call-service 3222 | service: remote.send_command 3223 | service_data: 3224 | entity_id: remote.master_dtv 3225 | command: 0 3226 | hold_action: none 3227 | style: 3228 | width: 55px 3229 | height: 45px 3230 | top: 79.5% 3231 | left: 50% 3232 | border: solid 0px gray 3233 | - type: image 3234 | image: /local/remotes/btn.png 3235 | title: Netflix 3236 | tap_action: 3237 | action: call-service 3238 | service: media_player.select_source 3239 | service_data: 3240 | entity_id: media_player.master_tv 3241 | source: Netflix 3242 | hold_action: none 3243 | style: 3244 | width: 125px 3245 | height: 50px 3246 | top: 84.2% 3247 | left: 30% 3248 | border: solid 0px gray 3249 | - type: image 3250 | image: /local/remotes/btn.png 3251 | title: Disney+ 3252 | tap_action: 3253 | action: call-service 3254 | service: media_player.select_source 3255 | service_data: 3256 | entity_id: media_player.master_tv 3257 | source: Disney+ 3258 | hold_action: none 3259 | style: 3260 | width: 125px 3261 | height: 50px 3262 | top: 84.2% 3263 | left: 70% 3264 | border: solid 0px gray 3265 | - type: image 3266 | image: /local/remotes/btn.png 3267 | title: Hulu 3268 | tap_action: 3269 | action: call-service 3270 | service: media_player.select_source 3271 | service_data: 3272 | entity_id: media_player.master_tv 3273 | source: Hulu 3274 | hold_action: none 3275 | style: 3276 | width: 125px 3277 | height: 50px 3278 | top: 89.7% 3279 | left: 30% 3280 | border: solid 0px gray 3281 | - type: image 3282 | image: /local/remotes/btn.png 3283 | title: Prime Video 3284 | tap_action: 3285 | action: call-service 3286 | service: media_player.select_source 3287 | service_data: 3288 | entity_id: media_player.master_tv 3289 | source: Prime Video 3290 | hold_action: none 3291 | style: 3292 | width: 125px 3293 | height: 50px 3294 | top: 89.7% 3295 | left: 70% 3296 | border: solid 0px gray 3297 | image: /local/remotes/uni_master_tv.jpg?v=3 3298 | card_mod: 3299 | style: | 3300 | ha-card { 3301 | background: rgb(16,30,36); 3302 | top: -55px; 3303 | margin-bottom: -55px; 3304 | } 3305 | title: Remotes 3306 | -------------------------------------------------------------------------------- /vacuum.yaml: -------------------------------------------------------------------------------- 1 | background: center / cover no-repeat fixed url('/local/lovelace/bg_long.png?v=1') 2 | kiosk_mode: 3 | mobile_settings: 4 | hide_header: true 5 | views: 6 | - icon: 'mdi:robot-vacuum' 7 | panel: false 8 | badges: [] 9 | cards: 10 | - type: vertical-stack 11 | cards: 12 | - type: 'custom:button-card' 13 | size: 25px 14 | icon: 'mdi:close' 15 | tap_action: 16 | action: navigate 17 | navigation_path: /lovelace/0 18 | styles: 19 | card: 20 | - width: 40px 21 | - height: 40px 22 | - background-color: 'rgba(255,255,255,0)' 23 | - box-shadow: none 24 | icon: 25 | - margin-left: px 26 | - type: 'custom:vacuum-card' 27 | entity: vacuum.arturito 28 | image: /local/lovelace/arturito_500a.png 29 | show_toolbar: true 30 | show_status: true 31 | compact_view: false 32 | show_name: true 33 | stats: 34 | default: 35 | - attribute: filter_left 36 | unit: hours 37 | subtitle: Filter 38 | - attribute: side_brush_left 39 | unit: hours 40 | subtitle: Side brush 41 | - attribute: main_brush_left 42 | unit: hours 43 | subtitle: Main brush 44 | - attribute: sensor_dirty_left 45 | unit: hours 46 | subtitle: Sensors 47 | cleaning: 48 | - attribute: cleaned_area 49 | unit: ft2 50 | subtitle: Cleaning area 51 | - attribute: cleaning_time 52 | unit: minutes 53 | subtitle: Cleaning time 54 | card_mod: 55 | style: | 56 | ha-card { 57 | width: 95%; 58 | margin: auto; 59 | /* margin-right: 14px; 60 | margin-left: 15px; */ 61 | border-radius: 12px !important; 62 | } 63 | .preview { 64 | background: rgba(255, 255, 255, 0.3) !important; 65 | background: url('/local/lovelace/wood_floor.png') !important; 66 | background-position: center !important; 67 | background-repeat: no-repeat !important; 68 | background-size: cover; 69 | } 70 | .vacuum { 71 | image-rendering: auto !important; 72 | } 73 | .vacuum.docked { 74 | filter: grayscale(1); 75 | opacity: 80% !important; 76 | } 77 | .header { 78 | background: rgba(0, 0, 0, 0.3) !important; 79 | } 80 | .stats { 81 | background: rgba(0, 0, 0, 0.3) !important; 82 | } 83 | .status-text { 84 | color: rgba(0, 0, 0, 0.7) !important; 85 | font-weight: bold; 86 | font-size: 16px; 87 | } 88 | .battery { 89 | font-weight: normal !important; 90 | } 91 | .toolbar { 92 | background: rgba(255, 255, 255, 0.7) !important; 93 | } 94 | .toolbar ha-icon-button { 95 | color: rgba(0, 0, 0, 0.7) !important; 96 | } 97 | .toolbar paper-button { 98 | color: rgba(0, 51, 204, 1) !important; 99 | } 100 | .toolbar ha-icon { 101 | color: rgba(0, 51, 204, 1) !important; 102 | } 103 | - type: 'custom:mod-card' 104 | card_mod: 105 | style: | 106 | ha-card { 107 | width: 95%; 108 | margin: auto; 109 | } 110 | card: 111 | type: horizontal-stack 112 | cards: 113 | - type: 'custom:button-card' 114 | aspect_ratio: 2/1 115 | card_size: 4 116 | name: Front 117 | entity: switch.vac_front 118 | show_icon: false 119 | styles: 120 | card: 121 | - background: 'rgba(255,255,255,.1)' 122 | - type: 'custom:button-card' 123 | aspect_ratio: 2/1 124 | card_size: 4 125 | name: Family Rm 126 | entity: switch.vac_family_rm 127 | show_icon: false 128 | styles: 129 | card: 130 | - background: 'rgba(255,255,255,.1)' 131 | - type: 'custom:button-card' 132 | aspect_ratio: 2/1 133 | card_size: 4 134 | name: Kitchen 135 | entity: switch.vac_kitchen 136 | show_icon: false 137 | styles: 138 | card: 139 | - background: 'rgba(255,255,255,.1)' 140 | - type: 'custom:button-card' 141 | aspect_ratio: 2/1 142 | card_size: 4 143 | name: Office 144 | entity: switch.vac_office 145 | show_icon: false 146 | styles: 147 | card: 148 | - background: 'rgba(255,255,255,.1)' 149 | entity: vacuum.arturito 150 | - type: 'custom:mod-card' 151 | card_mod: 152 | style: | 153 | ha-card { 154 | width: 95%; 155 | margin: auto; 156 | } 157 | card: 158 | type: horizontal-stack 159 | cards: 160 | - type: 'custom:button-card' 161 | aspect_ratio: 2/1 162 | card_size: 4 163 | name: Master 164 | entity: switch.vac_master 165 | show_icon: false 166 | styles: 167 | card: 168 | - background: 'rgba(255,255,255,.1)' 169 | - type: 'custom:button-card' 170 | aspect_ratio: 2/1 171 | card_size: 4 172 | name: Josh's 173 | entity: switch.vac_josh 174 | show_icon: false 175 | styles: 176 | card: 177 | - background: 'rgba(255,255,255,.1)' 178 | - type: 'custom:button-card' 179 | aspect_ratio: 2/1 180 | card_size: 4 181 | name: Guest 182 | entity: switch.vac_guest 183 | show_icon: false 184 | styles: 185 | card: 186 | - background: 'rgba(255,255,255,.1)' 187 | - type: 'custom:button-card' 188 | aspect_ratio: 2/1 189 | card_size: 4 190 | name: Cruz's 191 | entity: switch.vac_cruz 192 | show_icon: false 193 | styles: 194 | card: 195 | - background: 'rgba(255,255,255,.1)' 196 | entity: vacuum.arturito 197 | - type: markdown 198 | content: > 199 | Tasks to complete: {{ states('counter.vac_tasks') 200 | }} 201 | card_mod: 202 | style: | 203 | ha-card { 204 | background: rgba(0,0,0,0); 205 | box-shadow: none 206 | } 207 | - type: picture-glance 208 | entities: [] 209 | camera_image: camera.arturito_map 210 | card_mod: 211 | style: | 212 | ha-card { 213 | width: 95%; 214 | margin: auto; 215 | /* margin-right: 14px; 216 | margin-left: 15px; */ 217 | border-radius: 12px !important; 218 | } 219 | .box { 220 | background: rgba(255,255,255,0) !important; 221 | } 222 | - type: 'custom:mod-card' 223 | card_mod: 224 | style: | 225 | ha-card { 226 | width: 95%; 227 | margin: auto; 228 | padding-bottom: 10px !important; 229 | } 230 | card: 231 | type: horizontal-stack 232 | cards: 233 | - type: 'custom:button-card' 234 | aspect_ratio: 2/1 235 | card_size: 4 236 | name: Daily 237 | entity: switch.vac_daily 238 | show_icon: false 239 | styles: 240 | card: 241 | - background: 'rgba(255,255,255,.1)' 242 | - type: 'custom:gap-card' 243 | height: null 244 | size: null 245 | - type: 'custom:gap-card' 246 | height: null 247 | size: null 248 | - type: 'custom:button-card' 249 | aspect_ratio: 2/1 250 | card_size: 4 251 | name: Reset 252 | entity: switch.vac_reset 253 | show_icon: false 254 | styles: 255 | card: 256 | - background: 'rgba(255,255,255,.1)' 257 | title: Vacuum 258 | -------------------------------------------------------------------------------- /yt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/e1miran/homeassistant-dashboard/93f72f92d15f811648b21c502a78200d952a4fe5/yt.png --------------------------------------------------------------------------------