Home Assistant Cast

Thanks for the update. I actually have another nuc running Ubuntu with docker on it. I could use that for Catt I guess :slight_smile:

You definitely can!

Thank you!

This dashboard really shines because of the amazing work of @DBuit. He is the creator of the sidebar.

Here is a part of the Lovelace code, mostly for hiding the top header and enabling the sidebar and all the templating i am using.

custom_header:
  hide_header: '{{ states.input_boolean.ch_hub_show_header.state == "on" }}'
sidebar:
  digitalClock: true
  digitalClockWithSeconds: true
  sidebarMenu:
    - action: navigate
      active: true
      icon: 'mdi:home-assistant'
      name: Home
      navigation_path: /hub-panel/home
    - action: navigate
      active: true
      icon: 'mdi:desk-lamp'
      name: Lights
      navigation_path: /hub-panel/lights
    - action: navigate
      icon: 'mdi:speaker-wireless'
      name: Sonos
      navigation_path: /hub-panel/media
    - action: navigate
      icon: 'mdi:shield-home'
      name: Alarm
      navigation_path: /hub-panel/alarmpanel
    - action: navigate
      icon: 'mdi:navigation'
      name: Navigate
      navigation_path: /hub-panel/navigate
  style: |
    :host {
        --sidebar-background: 'rgba 50, 50, 50, .5';
        --sidebar-text-color: #B9B9B9;
        --face-color: 'rgba 50, 50, 50, .5';
        --face-border-color: 'rgb 84, 84, 84';
        --clock-hands-color: #000;
        --clock-seconds-hand-color: #216491;
        --clock-middle-background: 'rgb 4, 84, 84';
        --clock-middle-border: #000;
        --border-radius: 5px;
    }
  template: >

    {% if "gft" in states('sensor.trash_today') %} <li>Vandaag GFT</li> {% endif
    %}

    {% if "papier" in states('sensor.trash_today') %} <li>Vandaag papier</li> {%
    endif %}

    {% if "plastic verpakkingsafval" in states('sensor.trash_today') %}
    <li>Vandaag plastic</li> {% endif %}

    {% if "restafval" in states('sensor.trash_today') %} <li>Vandaag
    restafval</li> {% endif %}

    {% if "gft" in states('sensor.trash_tomorrow') %} <li>Morgen GFT</li> {%
    endif %}

    {% if "papier" in states('sensor.trash_tomorrow') %} <li>Morgen papier</li>
    {% endif %}

    {% if "plastic verpakkingsafval" in states('sensor.trash_tomorrow') %}
    <li>Morgen plastic</li> {% endif %}

    {% if "restafval" in states('sensor.trash_tomorrow') %} <li>Morgen
    restafval</li> {% endif %}

    {% if states('sensor.current_lights_on_living_room') | float > 1 %}
    <li>Beneden {{states('sensor.current_lights_on_living_room')}} lampen
    aan</li> {% endif %}

    {% if "1" in states('sensor.current_lights_on_living_room') %} <li>Beneden 1
    lamp aan</li> {% endif %}

    {% if states('sensor.current_lights_first_floor_on') | float > 1 %}
    <li>Boven {{states('sensor.current_lights_first_floor_on')}} lampen aan</li>
    {% endif %}

    {% if "1" in states('sensor.current_lights_first_floor_on') %} <li>Boven 1
    lamp aan</li> {% endif %}
          
    {% if states('sensor.current_lights_second_floor_on') | float > 1 %}
    <li>Zolder {{states('sensor.current_lights_second_floor_on')}} lampen
    aan</li> {% endif %}

    {% if "1" in states('sensor.current_lights_second_floor_on') %} <li>Zolder 1
    lamp aan</li> {% endif %}

    {% if "1" in states('sensor.current_windows_first_floor_open') %} <li>Boven
    1 raam open</li> {% endif %}

    {% if states('sensor.current_windows_first_floor_open') | float > 1 %}
    <li>Boven {{states('sensor.current_windows_first_floor_open')}} ramen
    open</li> {% endif %}
          
    {% if "1" in states('sensor.current_windows_second_floor_open') %}
    <li>Zolder 1 raam open</li> {% endif %}

    {% if states('sensor.current_windows_second_floor_open') | float > 1 %}
    <li>Zolder {{states('sensor.current_windows_second_floor_open')}} ramen
    open</li> {% endif %}

    {% if "playing" in states('media_player.sonos_woonkamer') %} <li>Sonos
    woonkamer actief</li> {% endif %}

    {% if "playing" in states('media_player.sonos_kantoor') %} <li>Sonos kantoor
    actief</li> {% endif %}

    {% if "playing" in states('media_player.sonos_badkamer') %} <li>Sonos
    badkamer actief</li> {% endif %}

    {% if "on" in states('binary_sensor.updater') %} <li>Core update
    beschikbaar</li> {% endif %}

    {% if "1" in states('sensor.hacs') %} <li>1 HACS update</li> {% endif %}

    {% if states('sensor.hacs') | float > 1 %} <li>{{states('sensor.hacs')}}
    HACS updates</li> {% endif %}

    {% if "on" in states('binary_sensor.door_sensor_front_door') %} <li>Voordeur
    geopend</li> {% endif %}

    {% if "on" in states('binary_sensor.door_sensor_back_door') %}
    <li>Achterdeur geopend</li> {% endif %}

    {% if "on" in states('binary_sensor.rain_sensor_garden') %} <li>Het
    regent</li> {% endif %}

    {% if "on" in states('switch.irrigation_relay_garden') %} <li>Irrigatie
    gestart</li> {% endif %}

    {% if "armed_home" in states('alarm_control_panel.ha_alarm') %} <li>Alarm
    thuis actief</li> {% endif %}

    {% if "armed_away" in states('alarm_control_panel.ha_alarm') %} <li>Alarm
    afwezig actief</li> {% endif %}

    {% if "disarmed" in states('alarm_control_panel.ha_alarm') %} <li>Alarm
    inactief</li> {% endif %}

    {% if "pending" in states('alarm_control_panel.ha_alarm') %} <li>Alarm
    bezig...</li> {% endif %}

The next part i’m using in the frontend, a combination of button card, weather, stack-in-card, layout-card and gap card.

cards:
  - cards:
      - color_type: icon
        entity: input_boolean.lights_livingroom
        icon: 'mdi:home-assistant'
        show_name: false
        tap_action:
          action: toggle
        template: living_room
        type: 'custom:button-card'
      - color_type: icon
        entity: input_boolean.lights_dining
        icon: 'mdi:silverware'
        show_name: false
        tap_action:
          action: toggle
        template: dining
        type: 'custom:button-card'
      - color_type: icon
        entity: input_boolean.lights_movietime
        icon: 'mdi:movie-roll'
        show_name: false
        tap_action:
          action: toggle
        template: movie
        type: 'custom:button-card'
    type: horizontal-stack
  - entities:
      - height: 20
        size: 20
        type: 'custom:gap-card'
    type: 'custom:layout-card'
  - current: true
    details: false
    entity: weather.buienradar
    forecast: true
    type: 'custom:weather-card'
mode: vertical
style: |
  ha-card {
    font-variant: small-caps;
    background-repeat: no-repeat;
    background-color: rgba(50,50,50,0.3);
    background-size: 100% 68px;
    border-radius: 5px;
    }
  .card-header {
    font-size: 20px;
  }
type: 'custom:stack-in-card'

Hope this helps you!

1 Like

A new issue appeared “today” (not sure it actually happen the first time today) Before everything worked perfect with casting, both from automation and service. But now after 10 minutes it closes the cast and it goes into photo frame. I have tried to find if there is any setting in Google Home App but nothing. I first thought it was due 0.109 release because it has been working flawless before that but unfortunately not, moving back to 0.108.9 didn’t work. Even tried with different pychromecast versions but no success. Last thing that I could thought about is that I got a new pre release version for my Nest Hub:
System: 203796
Cast: 1.46.203796
Has anyone else that version and got it to work with casting from home assistant longer than 10 minutes. Because it works as expected but exactly after 10 min it cuts the cast.

Same behaviour here

Which version of firmware do you have on your nest hub?

Same as yours

System: 203796
Cast: 1.46.203796

Thanks for your update. Anyone else that experience the same problem with other firmware version or someone that it works for after update to 0.109?

Can also confirm that the same happens when using CATT instead. So I guess this has to do with Nest Hub Firmware.

Well that is a pretty big issue… Does it kill the cast completely? Or does it ‘pause’ it in one of these panels you can find by clicking the clock? I’m on Cast version 1.44.x. Right now i’m trying to kill the internet access but the device is smart enough to simply show a screen that says “connect to internet” and you cannot do anything with the device anymore… I actually can block all the internet access back into my network (WAN in)but i guess that will not help…

It looks like it kill the cast completely and yes this will kill the whole nest hub experience for me so I will need to go to a tablet with stand instead. Question is still though if this is a bug in the pre firmware only. Let’s hope so

If you ask me it looks like a bug in the pre firmware. I can not come up with one single thing why this would be a good idea. Let’s hope it is a bug…

Sounds like some sort of screensaver gone wrong.

I can confirm that my Nest Hub has been updated to cast version 1.46.20.37.96.
When i swipe the active cast to the right side, before the update the stream was paused and i could press on it at a later moment. Right now the cast will stop completely.
Alltho that happens, the cast stays active as long as it stays in the foreground. Tested this last night and it stayed active without the 10 minute stop. So i guess it was a bug in the firmware @pgreberg was running?

Its still running in the background. But you need to do the following steps to bring it back:

  • swipe down from top to reveal menu
  • tap on media
  • tap on your display in the list

It no longer floats on the home screen anymore. Kinda annoying though.

On the latest nest hub beta firmware. My cast stays on whole day without stop. But the display restarts itself everyday at 4AM, i think it does that on purpose.

2 Likes

Good find!

Using CATT here and I also experience this 10 minutes timeout, probably a google thing.

Confirming I am also having the timeout issue with cast firmware 1.46.203796 on my two devices that upgraded. My third device that is still on 1.44 is fine.

That is both with CATT and HA Cast

Yup, same here on a nest hub. Was working fine. Now on 1.46.203796 times out after 10 minutes.

I think if we keep something playing in the background on the receiver side. It should prevent the timeout. Some blank music perhaps??