World's most private voice assistant

This tutorial will guide you to turn your old landline phone into the world’s most private voice assistant. Pick up the phone to talk to your smart home and issue commands and get responses.

Required material

Setting up Grandstream

  1. Connect the RJ11 cable from the phone to the green socket on the Grandstream. Grandstream HT801 ports
  2. Connect the Grandstream to your network:
    • Plug the Ethernet cable into the blue socket and connect it to your router.
  3. Start up the Grandstream.
    • Connect the power supply.
    • Once the Grandstream has booted, the two LEDs for power and Ethernet light up solid blue. The phone LED won’t light up.
  4. Identify the IP address of the Grandstream.
    • If your phone has a star * key, you can get your phone to tell you it’s IP address:
      • Press *** (press the star key three times) and wait until you hear Enter the menu option.
      • Press 02 and the phone will tell you its IP address.
    • If your phone does not have a star * key, log onto your router to find the IP address.
  5. Enter the IP address into a browser window and log onto the Grandstream Device Configuration software.
    • The default credentials are:
      • Username: admin
      • Password: admin
        Login to Grandstream
  6. Open the FXS Port tab and in the Offhook Auto-Dial field, enter the Home Assistant IP address in the following format:
    • *47192*168*1*100*5060 Define IP for autodial
    • Note: instead of 192*168*1*100*, enter the IP address of your Home Assistant instance.
    • At the bottom of the page, select Apply. Define IP for autodial
    • Offhook Auto-Dial means that when you pick up the phone, it directly calls Home Assistant. No need to dial.

Setting up the phone in Home Assistant

  1. In Home Assistant, go to Settings > Devices & Services > Add integration and add the Voice over IP integration. Voice over IP integration
  2. Once you see the integration, pick up the phone.
    • You should now hear the message This is your smart home speaking. Your phone is connected, but you must configure it within Home Assistant.
    • The integration should now include a device and entities. Voice over IP integration with device and entities
    • Don’t hear the voice? Try these troubleshooting steps.
  3. Allow calls.
    • Calls from new devices are blocked by default since voice commands could be used to control sensitive devices, such as locks and garage doors.
    • In the Voice over IP integration, select the device link.
    • To allow this phone to control your smart home, under Configuration, enable Allow calls. Voice over IP integration - allow calls
  4. Congratulations! You set up your analog phone to work with Home Assistant. Now pick up the phone and control your device.
    • Say a supported voice command. For example, Turn off the light in the kitchen.
    • You can also ask a question, such as
      • Is the front door locked?
      • Which lights are on in the living room?
    • Make sure you’re using the area name as you defined it in Home Assistant. If you have a room called bathroom, the phrase Turn on the lights in the bath won’t work.
    • Your command is not supported? Add your own commands.

Give your voice assistant personality using the OpenAI integration

To reproduce this example, follow these steps:

Note: this procedure requires an OpenAI account. To just run the example, the free trial option is sufficient. No need to leave your credit card information.

  1. Create a Mario personality.

  2. In the Voice over IP integration, under Configuration, select the Mario assistant you just created.

    VoIP: select OpenAI

  3. That’s it! Pick up your phone and ask Mario a question.

  4. You can repeat this with other OpenAI personalities. You can add as many OpenAI Conversation integrations as you would like.

    • To add a new personality, you need to create a new API key. Then, add a new OpenAI Conversation integration with that API key.

Troubleshoot Grandstream

The test call does not work

If you’re unable to call Home Assistant, confirm the following settings in your Grandstream device’s web interface.

  1. On the FXS Port tab, check the Preferred Vocoder list.
    • Make sure that OPUS is selected for one of the choices: Vocoder OPUS option
  2. Under OPUS Payload type, make sure the value is 123. It’s the default option. Vocoder OPUS payload type
  3. At the bottom of the page, select Apply.
  4. Pick up the phone again and check if you hear the voice.

The Voice over IP integration no longer works

Symptom You were able to control Home Assistant over the phone but it no longer works. When picking up the phone, no sound is played. The debug information shows no runs.

Potential remedy

  1. Log onto the Grandstream Device Configuration software.
  2. On the Status page, check if the Hook status changes from On Hook to In Use after you picked up the phone. Check the Grandstream status
    • The software is quite slow. Refresh the page and wait for a while before hanging up again.
  3. If the status does not change, reboot the Grandstream and try calling Home Assistant again.

Other troubleshooting steps

Are things still not working as expected?

About the analog phone

You can use any analog landline phone with an RJ11 socket.

The phone shown in the video by TheFes is a Heemaf type 1955, which was used by the Dutch telephone company PTT at the time.

The phone used during creation of this tutorial is a 1953 Tischstation Mod.29 HF-TR by Autophon AG. Analog phone Tischstation Mod.29 by Autophon AG