Integration · Beta

Phare Protect for Home Assistant.

Bring your Phare alarms into Home Assistant: live readings, alarm states, the break-in alarm and device controls. A Phare alert can then turn on your lights, unlock the door, stop the boiler and tell everyone at home.

  • Home Assistant2025.1 or later
  • Phare Protect app1.2.0 or later
  • Phare planIncluded in every plan
  • Setup timeAbout 15 minutes

This integration is in beta. It is safe to use, and we are still adding to it. Tell us what works and what doesn't at support@pharelabs.com or in the issue tracker. The README on GitHub is the reference for each release.

1 Before you start

You need:

  • A Phare C1, C1 Core or C1 Pro set up in the Phare Protect app, in a home you own or that is shared with you.
  • The Phare Protect app, version 1.2.0 or later, to create the token Home Assistant signs in with.
  • Home Assistant 2025.1 or later, connected to the internet. If you don't run it yet, step 2 covers the options.

The integration talks to the Phare cloud over HTTPS. It does not connect to your alarms over your home network, so Home Assistant and your Phare devices don't need to be on the same Wi-Fi, or even in the same building.

Home Assistant adds to your alarms. It does not replace them. Your Phare alarms sound, and the app notifies you, whether or not Home Assistant is running. Automations depend on your home network, power and internet, so treat them as extra help, never as the thing that keeps you safe.

2 Install Home Assistant

Already running Home Assistant? Check its version under Settings → About and skip to step 3. If you are not sure how it was installed, Settings → System → Repairs → ⋮ → System information shows the Installation type; step 3 asks for it.

New to Home Assistant? Pick the setup that suits you. The Phare integration works the same on all of them.

Home Assistant Green or YellowEasiest

A small ready-made box from the Home Assistant project. Nothing to install.

  1. Connect it to your router with an Ethernet cable and plug in the power.
  2. After a few minutes, open http://homeassistant.local:8123 in a browser on the same network.
  3. Create your owner account, set your home's location and finish the welcome screens.
Raspberry Pi, mini PC or virtual machineHome Assistant OS

Home Assistant OS is the full system, with apps (add-ons), backups and one-click updates. It runs on a Raspberry Pi 4 or 5, most mini PCs, and in a virtual machine such as Proxmox, VirtualBox or Hyper-V.

  1. Follow the guide for your hardware at home-assistant.io/installation. On a Raspberry Pi you write the system to an SD card or SSD with Raspberry Pi Imager.
  2. Open http://homeassistant.local:8123, create your owner account and finish onboarding.
DockerContainer

Runs Home Assistant in a container on a computer or NAS you already have. You don't get apps (add-ons), and the Phare integration doesn't need any.

On Linux, use host networking so Home Assistant can find devices on your network:

docker run -d \
  --name homeassistant \
  --restart unless-stopped \
  --network host \
  -e TZ=Europe/London \
  -v "$HOME/homeassistant:/config" \
  ghcr.io/home-assistant/home-assistant:stable

On a Mac or Windows with Docker Desktop, map the port instead:

docker run -d \
  --name homeassistant \
  --restart unless-stopped \
  -p 8123:8123 \
  -e TZ=Europe/London \
  -v "$HOME/homeassistant:/config" \
  ghcr.io/home-assistant/home-assistant:stable

With Docker Compose, save this as compose.yaml and run docker compose up -d:

services:
  homeassistant:
    container_name: homeassistant
    image: ghcr.io/home-assistant/home-assistant:stable
    restart: unless-stopped
    network_mode: host
    environment:
      TZ: Europe/London
    volumes:
      - ./homeassistant:/config

Set TZ to your own time zone, for example America/New_York. Wait about a minute, open http://localhost:8123 (or the computer's address on port 8123), and create your owner account.

Python virtual environmentCore · advanced

Home Assistant Core installed with pip, for people who manage their own Python. Follow the Home Assistant Core guide, then carry on with step 3.

3 Get the integration

Phare Protect is published on GitHub as pharelabs/phare-home-assistant. How you add it depends on your Home Assistant version.

Home Assistant 2026.11 or laterMarketplace

From 2026.11, community integrations are installed from the Marketplace built into Home Assistant. You need an administrator account.

  1. Go to Settings → Marketplace. The first time, read the notice about community-made items, tick I understand the risks and agree and select Continue. Then open the Add from link tab.
  2. Under GitHub link, enter pharelabs/phare-home-assistant and select Add. If you are asked for a type, choose Integration and select Add again. If GitHub isn't connected yet, the Marketplace asks you to connect it first.
  3. Open Phare Protect in the list, select Install, check the version and select Install again.
  4. If Home Assistant asks for a restart, select Restart Home Assistant. Otherwise a Set up button appears: get your token in step 4 first, then select it.
Home Assistant 2026.10 or olderHACS

On these versions, community integrations come from HACS, the Home Assistant Community Store. If you already use HACS, skip to Add Phare Protect below.

Install HACS

Home Assistant OS or Supervised (Green, Yellow, Raspberry Pi, virtual machine):

  1. Go to Settings → Apps (called Add-ons on older versions) and open the store. From its ⋮ menu choose Repositories and add https://github.com/hacs/addons.
  2. Find Get HACS, install it and start it.
  3. Open its Log tab and follow the instructions there.

Docker: run this on the computer that hosts the container:

docker exec -it homeassistant bash -c "wget -O - https://get.hacs.xyz | bash -"

Core: as the user that runs Home Assistant, run:

wget -O - https://get.hacs.xyz | bash -

Then, for every installation type:

  1. Restart Home Assistant: Settings → ⋮ → Restart Home Assistant, or docker restart homeassistant.
  2. Go to Settings → Devices & services → Add integration, search for HACS, tick the boxes and sign in to GitHub with the code it shows you (at github.com/login/device).

The full guide is at hacs.xyz.

Add Phare Protect

  1. Open HACS in the sidebar, then ⋮ → Custom repositories.
  2. Repository: https://github.com/pharelabs/phare-home-assistant. Type: Integration. Select Add.
  3. Search HACS for Phare Protect, open it and select Download.
  4. Restart Home Assistant.

Open Phare Protect in HACS

When you later upgrade to Home Assistant 2026.11, HACS becomes the Marketplace on its own. Phare Protect stays installed and keeps getting updates; you don't need to do anything.

Without HACS or the MarketplaceManual

Works on any installation, but you won't be told about updates and have to repeat these steps for each one.

  1. Download the latest release from GitHub releases (Source code (zip)) and unzip it.
  2. Copy its custom_components/phare folder into your Home Assistant configuration folder, so you end up with /config/custom_components/phare/manifest.json. On Home Assistant OS, the Samba share or Studio Code Server apps give you access to /config; with Docker it is the folder you mounted.
  3. Restart Home Assistant.

4 Create a token in the Phare Protect app

Home Assistant signs in with a personal access token, not your password. You create and revoke tokens yourself in the app.

  1. In the Phare Protect app, go to Settings → API tokens and tap Create token.
  2. Give it a name you will recognise, such as Home Assistant.
  3. Under What may it do?, choose a scope (see below).
  4. Leave Expiry date empty, or pick a date if you want the token to stop on its own.
  5. Create it and copy the token, which starts with phare_pat_. It is shown once. Keep it somewhere safe, such as a password manager, until you have pasted it into Home Assistant.
ScopeHome Assistant canChoose it if
Read onlyShow readings, online status and alarms.You only want sensors and alarm states for automations and dashboards.
Read and controlEverything above, plus arm and disarm the break-in alarm, run test, identify and silence, change device settings, and receive pushed alerts.You want Home Assistant to act on your Phare devices, or alerts within seconds.

Treat a Read and control token like a password: anyone who has it can arm, silence and change your devices. A token stops working after 90 days without use (Home Assistant uses it every minute, so this only happens if it stays off), or on the expiry date you chose. You can revoke it at any time: tap it in Settings → API tokens.

Use a separate token for each Home Assistant installation or script, so you can revoke one without breaking the others.

5 Connect your account

  1. In Home Assistant, go to Settings → Devices & services → Add integration and search for Phare Protect.
  2. Paste the token into Personal access token. Leave API base URL as it is.
  3. Select Submit.

Add Phare Protect to my Home Assistant

Within a minute, each Phare alarm appears as a device in the area of its room (Kitchen, or Kitchen (Flat 1) if you have several homes), and each home appears as a device of its own holding the home-wide controls. Readings match the app within a minute.

Have more than one Phare account? Add the integration again with a token from the other account. Each account is one entry.

6 Faster alerts Optional

Out of the box, Home Assistant asks Phare for news once a minute, so an alarm shows up within about a minute. If Phare can reach your Home Assistant from the internet over HTTPS, it pushes each alert instead, and it arrives within seconds. The once-a-minute check keeps running as a safety net, so a missed push still shows up.

Polling onlyHome Assistant CloudYour own address
Alerts arriveWithin about a minuteWithin secondsWithin seconds
You needNothing moreA Nabu Casa subscriptionA domain name, a valid certificate, and a port forward or tunnel
SetupNoneSign in, then reload the integrationSet the external URL, then reload the integration

Push needs a Read and control token, because setting it up registers the address with your Phare account. Readings are always fetched once a minute: alarms on Wi-Fi publish every 60 seconds and on cellular (LTE-M) every 5 minutes, so asking more often would not show anything new.

With Home Assistant Cloud (Nabu Casa)Simplest
  1. Go to Settings → Home Assistant Cloud and sign in, or start the free trial.
  2. Go to Settings → Devices & services → Phare Protect → ⋮ → Reload.

The integration creates its own cloud webhook and registers it with Phare. Nothing to open on your router.

With your own HTTPS addressSelf-hosted

If you already reach Home Assistant from outside your home through your own domain, for example with a reverse proxy, the Let's Encrypt or DuckDNS apps, or a Cloudflare tunnel:

  1. Go to Settings → System → Network and, under Home Assistant URL, set the Internet address, for example https://home.example.com.
  2. Go to Settings → Devices & services → Phare Protect → ⋮ → Reload.

The address must start with https:// and use a host name, not an IP address. Phare needs to reach /api/webhook/… on it, so if your proxy or tunnel filters paths, allow that one.

Check that it works

If push could not be set up, the log says why, once, in a line starting Phare alerts arrive by polling. Look for it under Settings → System → Logs. No such line after a reload means push is on.

Every push is signed by Phare and checked before it is used: a forged or replayed one is dropped and logged. Removing the integration tells Phare to stop sending.

7 What you get

Each entity appears only when your device has the sensor or feature behind it.

On each Phare alarm

In Home AssistantWhat it shows or does
SensorsTemperature, humidity, carbon monoxide, carbon dioxide, volatile organic compounds, air-quality index and battery level (battery level is off by default). The values are the ones the device last published.
AlarmsSmoke alarm, Carbon monoxide alarm and Movement: on while the alert is open. Temperature and Humidity alarms read Normal or Out of range.
Device healthConnectivity (Connected / Disconnected), Device health (OK / Fault), Mains power (Connected / Lost) and Battery (Normal / Low). While a device is offline, its other entities show as unavailable.
ButtonsTest (runs the self-test, which sounds the alarm), Identify, and Silence. Silence is off by default; turn it on per device only if you want automations to silence alarms.
SwitchesBreak-in alarm for that one device (C1 Pro), and Wireless interconnect for that one device (smoke-alarm firmware 1.2.0 or later).
Night path lightOn all models except the C1 Core: on or off, brightness, how long it stays on, ambient light threshold and movement sensitivity. From firmware 1.1.0, also the trigger mode (dark, schedule only, dark and schedule, or dark or schedule) and the schedule's start and end, on your home's local time.
Alert settingsSwitches for smoke, CO, mains power, battery, humidity, temperature and sound alerts, and the levels behind them. They decide what you are told, not whether the alarm sounds. The smoke and CO switches and all levels start disabled: enable the ones you want to change in the device's settings.
Device cardModel, firmware of all three processors, MAC address, and the SIM's ICCID on cellular models.

On each home

In Home AssistantWhat it shows or does
Break-in alarmAn alarm panel with Arm away and Disarm, no code needed. Only in homes with a C1 Pro, which has the radar the break-in alarm uses.
Wireless interconnectA switch: on, one alarm detecting smoke sounds every alarm in the home. Home owners only; needs at least two compatible devices.

The integration's texts are in English, Catalan, Spanish and French, following your Home Assistant language.

8 Automation ideas

To use one: Settings → Automations & scenes → Create automation → Create new automation, then ⋮ → Edit in YAML, paste, and save. Replace the entity IDs with yours: find them under Settings → Devices & services → Entities (search for smoke, movement and so on), or switch back to the visual editor and pick them from the lists.

Smoke or CO: light the way out

Turns every light on full, unlocks the front door and sends a critical notification that sounds even when the phone is on silent (iPhone). Only unlock the door if that suits your home.

alias: Phare – smoke or CO, light the way out
mode: single
triggers:
  - trigger: state
    entity_id:
      - binary_sensor.kitchen_smoke_alarm
      - binary_sensor.hallway_smoke_alarm
      - binary_sensor.kitchen_carbon_monoxide_alarm
    to: "on"
actions:
  - action: light.turn_on
    target:
      entity_id: all
    data:
      brightness_pct: 100
  - action: lock.unlock
    target:
      entity_id: lock.front_door
  - action: notify.mobile_app_your_phone
    data:
      title: Phare alarm
      message: "{{ trigger.to_state.name }}"
      data:
        push:
          sound:
            name: default
            critical: 1
            volume: 1.0

Carbon monoxide: stop the boiler and ventilate

alias: Phare – CO, stop the boiler
mode: single
triggers:
  - trigger: state
    entity_id: binary_sensor.kitchen_carbon_monoxide_alarm
    to: "on"
actions:
  - action: climate.set_hvac_mode
    target:
      entity_id: climate.boiler
    data:
      hvac_mode: "off"
  - action: fan.turn_on
    target:
      entity_id: fan.extractor

Arm the break-in alarm when everyone leaves

Uses the people Home Assistant tracks with the Companion app. Needs a Read and control token and a C1 Pro.

alias: Phare – arm when everyone leaves
mode: single
triggers:
  - trigger: numeric_state
    entity_id: zone.home
    below: 1
    for:
      minutes: 5
actions:
  - action: alarm_control_panel.alarm_arm_away
    target:
      entity_id: alarm_control_panel.home_break_in_alarm

And the other way round:

alias: Phare – disarm when someone gets home
mode: single
triggers:
  - trigger: numeric_state
    entity_id: zone.home
    above: 0
actions:
  - action: alarm_control_panel.alarm_disarm
    target:
      entity_id: alarm_control_panel.home_break_in_alarm

Movement while armed: lights and siren

alias: Phare – movement while armed
mode: single
triggers:
  - trigger: state
    entity_id: binary_sensor.living_room_movement
    to: "on"
conditions:
  - condition: state
    entity_id: alarm_control_panel.home_break_in_alarm
    state: armed_away
actions:
  - action: light.turn_on
    target:
      entity_id: all
  - action: siren.turn_on
    target:
      entity_id: siren.outdoor

Tell me when a device needs attention

Offline for 15 minutes, mains power lost, low battery or a fault.

alias: Phare – device needs attention
mode: queued
triggers:
  - trigger: state
    entity_id: binary_sensor.kitchen_connectivity
    to: "off"
    for:
      minutes: 15
  - trigger: state
    entity_id:
      - binary_sensor.kitchen_mains_power
      - binary_sensor.kitchen_battery
      - binary_sensor.kitchen_device_health
    to: "on"
actions:
  - action: notify.mobile_app_your_phone
    data:
      title: Phare
      message: "Check {{ trigger.to_state.name }}"

Humidity out of range: run the dehumidifier

alias: Phare – humidity, dehumidifier on
mode: single
triggers:
  - trigger: state
    entity_id: binary_sensor.bathroom_humidity_alarm
    to: "on"
actions:
  - action: switch.turn_on
    target:
      entity_id: switch.dehumidifier

React to the raw alert

With pushed alerts on, each alert also fires a phare_alert event carrying its fields: type_code (fire, co, mvmt, tmp, hum, flt, pwr, bat), stage, event, name, room, device_id, space_id and ts. Useful when you want the alert's own wording.

alias: Phare – log pushed alerts
mode: queued
triggers:
  - trigger: event
    event_type: phare_alert
    event_data:
      stage: new
actions:
  - action: logbook.log
    data:
      name: Phare
      message: >-
        {{ trigger.event.data.event }} –
        {{ trigger.event.data.name }} ({{ trigger.event.data.room }})

Be careful with Test and Silence in automations. Test sounds the alarm in your home, and an automation that silences alarms could hide a real fire. Silence is off by default for that reason.

9 Update, change or remove

Updates

New versions appear under Settings → Updates when you installed through the Marketplace or HACS. Install, then restart Home Assistant if it asks. What changed is in the release notes. Installed by hand? Repeat the manual steps with the new release.

A new token, or a different scope

When a token is revoked or expires, Home Assistant shows a re-authenticate notice under Settings → Devices & services. Create a new token in the app and paste it there. To move from Read only to Read and control (or back), create the new token, revoke the old one in the app, and paste the new one when the notice appears, within about 5 minutes. The token must belong to the same Phare account.

Diagnostics

If support asks for them: Settings → Devices & services → Phare Protect → ⋮ → Download diagnostics. The file leaves out your token, address and coordinates, and your name, email and phone.

Remove

  1. Settings → Devices & services → Phare Protect → ⋮ → Delete. This also tells Phare to stop pushing alerts.
  2. Remove Phare Protect from the Marketplace or HACS, or delete /config/custom_components/phare, and restart.
  3. Revoke the token in the app under Settings → API tokens.

10 Troubleshooting

Phare Protect doesn't appear in Add integration

Restart Home Assistant after installing it, then refresh the browser page (on a phone, close and reopen the app). If it still isn't there, check that /config/custom_components/phare/manifest.json exists.

"The token was refused"

Copy it again in full: it starts with phare_pat_ and has no spaces. It is shown once, so if you no longer have it, create a new one. Check it hasn't been revoked or passed its expiry date in Settings → API tokens.

"Could not reach the Phare API"

Home Assistant needs outbound HTTPS to api.pharelabs.com. Check its internet connection, and any firewall or DNS filtering on your network.

"Your Phare plan does not include API access"

API access is included in every Phare Protect plan today. If you see this, check your plan in the app, and contact support if it looks wrong.

Arm, Test or a setting fails with "the token may lack the control scope"

The token is Read only. Create a Read and control token and swap it in as described in step 9.

There is no break-in alarm panel

The break-in alarm needs the radar in the C1 Pro. Homes with only C1 or C1 Core alarms have no panel, and those devices can't be armed.

A device shows as unavailable

It is offline: check it in the app. Devices in a home that is shared with you are judged by the age of their last reading instead, and show unavailable after 15 minutes without one. Cellular alarms report every 5 minutes, so short gaps are normal.

A reading differs a little from the app

Both show the last value the device published. Home Assistant checks once a minute, so it can be up to a minute behind.

Alerts still take up to a minute

Push isn't on. Look in Settings → System → Logs for Phare alerts arrive by polling, which says why: usually a Read only token, or no HTTPS address that Phare can reach. Fix it, then reload the integration (see step 6).

My devices are in the wrong areas

Areas are set from the room in the app when a device is first added. After that, moving it in Home Assistant sticks. Move it under the device's settings, or remove and re-add the integration to start again from the app's rooms.

Some alert settings are greyed out

The smoke and CO alert switches and all alert levels start disabled so they aren't changed by accident. Open the device, find the entity under its settings, and enable it.

11 Help and feedback

Never paste your token into an issue, forum post or chat. If you did, revoke it in the app straight away. In an emergency, leave the building and call the emergency services; don't wait for Home Assistant or for us.