# https://www.home-assistant.io/integrations/webostv
webostv:
  - host: !secret living_room_tv_ip
    name: Living Room TV
    turn_on_action:
      service: wake_on_lan.send_magic_packet
      data:
        mac: !secret living_room_tv_mac

media_player:
  - platform: androidtv
    name: nvidia shield
    host: !secret nvidia_shield_host

script:
  tv_twitch:
    icon: mdi:twitch
    alias: TV · Start Twitch stream
    sequence:
      - service: script.tv_prepare_for_playback
      - service: androidtv.adb_command
        entity_id: media_player.nvidia_shield
        data_template:
          command: "am start -a android.intent.action.VIEW -d twitch://stream/{{ channel }}"

  tv_fireplace:
    icon: mdi:fireplace
    alias: TV · Fireplace
    sequence:
      - service: script.tv_prepare_for_playback
        data_template:
          volume_level: "{{ volume_level | default(0.1) }}"
      - service: media_extractor.play_media
        entity_id: media_player.shield
        data:
          media_content_id: "https://www.youtube.com/watch?v=AWKzr6n0ea0"
          media_content_type: video/youtube

  tv_bulsatcom_toggle:
    icon: mdi:remote-tv
    alias: TV · Bulsatcom toggle
    sequence:
      - service: script.bulsatcom_power
      - condition: state
        entity_id: media_player.living_room_tv
        state: "off"
      - service: media_player.turn_on
        entity_id: media_player.living_room_tv
      - service: script.hdmi_switch_1
      - service: media_player.select_source
        entity_id: media_player.living_room_tv
        data:
          source: Switch

  latest_pds:
    alias: Play the latest PDS
    sequence:
      - service: media_extractor.play_media
        entity_id: media_player.shield
        data_template:
          media_content_id: "{{ state_attr('sensor.philip_defranco', 'url') }}"
          media_content_type: video/youtube

  tv_prepare_for_playback:
    alias: TV · Prepare for playback
    sequence:
      - service: sonos.unjoin
        entity_id: media_player.living_room
      - service: media_player.select_source
        entity_id: media_player.living_room
        data:
          source: TV
      - service: media_player.volume_set
        entity_id: media_player.living_room
        data_template:
          volume_level: "{{ volume_level | default(0.3) }}"
      - service: media_player.turn_on
        entity_id: media_player.nvidia_shield
      - service: media_player.select_source
        entity_id: media_player.living_room_tv
        data:
          source: Shield

  shield_screensaver:
    sequence:
      - service: media_player.turn_on
        entity_id: media_player.nvidia_shield
      - service: androidtv.adb_command
        entity_id: media_player.nvidia_shield
        data:
          command: "adb shell am start -n \"com.android.systemui/.Somnambulator\""

automation:
  - alias: TV · Join Beam to Sonos group when off
    trigger:
      platform: state
      entity_id: media_player.living_room_tv
      to: "off"
    condition:
      condition: state
      entity_id: input_select.house_mode
      state: "day"
    action:
      - service: script.sonos_join_bedroom
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "Sonos Group · TV off - joining Beam to Sonos Group"
          domain: media_player

  - alias: TV · State · Sync on TV on
    trigger:
      platform: state
      entity_id: media_player.living_room_tv
      to: "on"
    action:
      - service: media_player.turn_on
        entity_id: media_player.nvidia_shield
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "Sync TV state · Turning Shield on - TV is on"
          domain: media_player

  - alias: TV · State · Sync on TV off
    trigger:
      platform: state
      entity_id: media_player.living_room_tv
      to: "off"
    action:
      - service: media_player.turn_off
        entity_id: media_player.nvidia_shield
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "Sync TV state · Turning Shield off - TV is off"
          domain: media_player

  - alias: TV · State · Sync on Shield on
    trigger:
      platform: state
      entity_id: media_player.nvidia_shield
      from: "off"
    action:
      - service: media_player.turn_on
        entity_id: media_player.living_room_tv
      - delay: "00:00:15"
      - service: media_player.select_source
        entity_id: media_player.living_room_tv
        data:
          source: "Shield"
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "Sync TV state · Turning TV on - Shield is on"
          domain: media_player

  - alias: TV · State · Sync on Shield off
    trigger:
      platform: state
      entity_id: media_player.nvidia_shield
      to: "off"
    condition:
      condition: template
      value_template: "{{ is_state_attr('media_player.living_room_tv', 'source', 'Shield') }}"
    action:
      - service: media_player.turn_off
        entity_id: media_player.living_room_tv
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "Sync TV state · Turning TV off - Shield is off"
          domain: media_player

  - alias: TV · Prepare for casting
    trigger:
      platform: state
      entity_id: media_player.nvidia_shield
      to: 'playing'
    condition:
      - condition: template
        value_template: "{{ state_attr('media_player.nvidia_shield', 'source') == 'Google Cast' }}"
    action:
      - service: script.sonos_join_tv
      - service: logbook.log
        data:
          name: "📺 Media Module · "
          message: "TV · Google Cast - Joining Sonoses"
          domain: media_player
      - delay: "00:00:10"
      - service: media_player.select_source
        entity_id: media_player.living_room_tv
        data:
          source: Shield

homeassistant:
  customize:
    media_player.living_room_tv:
      icon: mdi:television
      friendly_name: LG TV
    media_player.nvidia_shield:
      icon: mdi:set-top-box
      friendly_name: Nvidia Shield
