Phone Modem

The Phone Modem integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1). Usually any modem that uses a CX93001 will support this.

When a call is detected, the sensor changes to ring. Caller ID information is reported separately and may not yet be available while the sensor is in the ring state. Once caller ID information is received, the sensor changes to callerid, and the available information is exposed in the cid_name, cid_number, and cid_time attributes. The sensor returns to idle once ringing stops.

Automations that use the caller’s name or number should therefore trigger on the callerid state rather than ring.

This integration also offers a button to pick up and then hang up the call to properly reject it (via ATA and ATH).

Configuration

To add the Phone Modem device to your Home Assistant instance, use this My button:

Manual configuration steps

If the above My button doesn’t work, you can also perform the following steps manually:

  • Browse to your Home Assistant instance.

  • Go to Settings > Devices & services.

  • In the bottom right corner, select the Add Integration button.

  • From the list, select Phone Modem.

  • Follow the instructions on screen to complete the setup.

Compatibility

Reported models with this integration include that work:

Devices that did not work:

Examples

An example automation:

automation:
  - alias: "Notify CallerID"
    triggers:
      - trigger: state
        entity_id: sensor.phone_modem
        to: "callerid"
    actions:
      - action: notify.notify
        data:
          message: "Call from {{ state_attr('sensor.phone_modem', 'cid_name') }} at {{ state_attr('sensor.phone_modem', 'cid_number') }} "

  - alias: "Notify CallerID webui"
    triggers:
      - trigger: state
        entity_id: sensor.phone_modem
        to: "callerid"
    actions:
      - action: persistent_notification.create
        data:
          title: "Call from"
          message: "{{ state_attr('sensor.phone_modem', 'cid_time').strftime("%I:%M %p") }} {{ state_attr('sensor.phone_modem', 'cid_name') }}  {{ state_attr('sensor.phone_modem', 'cid_number') }} "

  - alias: "Say CallerID"
    triggers:
      - trigger: state
        entity_id: sensor.phone_modem
        to: "callerid"
    actions:
      - action: tts.google_say
        data:
          message: "Call from {{ state_attr('sensor.phone_modem', 'cid_name') }}"