TV Auto-Pause When the Phone Rings — Regular Calls and Messenger

One automation that pauses the TV the moment either phone rings — regular mobile calls resume automatically, Messenger video calls get an actionable notification button.

#tv #automation #phone #messenger #home-assistant
October 17, 2025
TV Auto-Pause When the Phone Rings — Regular Calls and Messenger

The problem is obvious once you’ve experienced it enough times. Someone calls. You scramble for the remote. You find it under a cushion. You pause the film. You’ve already missed the first sentence of the conversation.

The automation is one condition: if a phone rings and the TV is on, pause it. When the call ends, resume it.

The phone sensor

The HA Companion App (free, Google Play / App Store) exposes sensor.pixel_10_phone_state with four states: ringing, in_call, offhook, idle. Install the app, sign in to your HA instance, and the sensor appears automatically — no extra configuration. The trigger covers all three non-idle states — you want the TV to pause the moment the phone rings, not after you’ve answered.

The TV remote entity (remote.tv_stuen) comes from the Android TV integration — built into HA, add it under Integrations and point it at your TV’s IP. The automation first checks whether the TV remote is actually on. There’s no point sending a pause command to a TV that’s already off or was already paused. input_boolean.tv_was_playing handles the latter — it’s set to on when the automation pauses and checked before resuming. Without it, a call could restart something that was intentionally paused before the call came in.

alias: TV — Pause on phone call
trigger:
  - platform: state
    entity_id: sensor.pixel_10_phone_state
    to: [ringing, in_call, offhook]
    id: phone
condition:
  - condition: state
    entity_id: remote.tv_stuen
    state: "on"
  - condition: state
    entity_id: input_boolean.tv_was_playing
    state: "off"
action:
  - action: input_boolean.turn_on
    target:
      entity_id: input_boolean.tv_was_playing
  - action: remote.send_command
    target:
      entity_id: remote.tv_stuen
    data:
      command: MEDIA_PAUSE
  - wait_for_trigger:
      - platform: state
        entity_id: sensor.pixel_10_phone_state
        to: idle
    timeout: "02:00:00"
    continue_on_timeout: true
  - delay:
      seconds: 2
  - condition: state
    entity_id: input_boolean.tv_was_playing
    state: "on"
  - action: remote.send_command
    target:
      entity_id: remote.tv_stuen
    data:
      command: MEDIA_PLAY
  - action: input_boolean.turn_off
    target:
      entity_id: input_boolean.tv_was_playing

The 2-second delay before resuming is intentional. Without it the play command fires while the call is still technically ending — the phone sensor hits idle a fraction of a second before the call actually drops, and the audio comes back mid-goodbye.

The 2-hour timeout is a safety net. If a call somehow doesn’t register as ended, the automation doesn’t sit waiting forever. continue_on_timeout: true means it resumes regardless after two hours.

Messenger is different

Messenger video calls don’t register in phone_state. They come through as a notification. The companion app exposes sensor.pixel_10_last_notification, and when the state contains “opkald” (call), it’s a Messenger call.

The handling is different because the end of a Messenger call is less reliable to detect. Instead of waiting for the sensor to go idle, it sends an actionable notification with a single button: Resume TV. Tapping it fires the resume immediately. If nobody taps within 30 minutes, the automation continues anyway.

  - choose:
      - conditions:
          - condition: template
            value_template: >
              {{ 'opkald' in (trigger.to_state.state | lower) }}
        sequence:
          - action: remote.send_command
            target:
              entity_id: remote.tv_stuen
            data:
              command: MEDIA_PAUSE
          - action: notify.alle_enheder
            data:
              title: "📞 Messenger call"
              message: "TV paused — tap to resume"
              data:
                actions:
                  - action: tv_resume_after_call
                    title: Resume TV
          - wait_for_trigger:
              - platform: event
                event_type: mobile_app_notification_action
                event_data:
                  action: tv_resume_after_call
              - platform: state
                entity_id: sensor.pixel_10_phone_state
                to: idle
            timeout: "00:30:00"
            continue_on_timeout: true
          - action: remote.send_command
            target:
              entity_id: remote.tv_stuen
            data:
              command: MEDIA_PLAY

The 30-minute timeout on Messenger versus 2 hours on regular calls reflects reality — Messenger video calls rarely last more than half an hour. A regular phone call to a parent might go for an hour and a half.

What this actually solves

The scramble for the remote. That’s it. It sounds small. After a few weeks of not having to do it, you notice how often it used to happen — and how the first thing you did when the call ended was find the remote and un-pause, which is not what you want to be thinking about.

The automation runs silently. There’s no “TV paused” banner unless it’s a Messenger call that needs the manual resume button. Regular calls: it pauses, you talk, it resumes. Nothing to confirm, nothing to tap.