Guide · Home Assistant

How to connect ADHDTasker to Home Assistant

Make the smart home pull its weight: announce a chore is due on the kitchen speaker, flash a light green when one's done, and add tasks straight from your automations.

New & recommended: there's now a native Home Assistant integration (HACS) — a To‑do board, sensors and services, no YAML wiring — plus a dedicated per‑profile announce blueprint. See the up‑to‑date integration guide and the blueprint repo. The webhook walkthrough below still works, but the integration is the easier path.
ADHDTasker × Home Assistant

ADHDTasker talks to Home Assistant both ways:

No custom component, no add‑on. About ten minutes. Let's go.

Part 1 — Events out (announce & light up)

The quickest path is the importable blueprint, which wires events to TTS + lights for you.

1. Import the blueprint. In Home Assistant go to Settings → Automations & Scenes → Blueprints → Import Blueprint and paste this URL:

https://adhdtasker.com/ha-blueprint.yaml

2. Create an automation from it. Give it a long, random Webhook ID and a shared secret, then pick your lights + a colour per event and a speaker + TTS engine. Defaults: blue on added, amber on due, green on completed.

3. Grab the webhook URL. On the new automation, open the ⋮ menu and copy its webhook URL. If you have Home Assistant Cloud (Nabu Casa), enable a cloudhook and use the https://hooks.nabu.casa/… URL — no port‑forwarding, and your instance stays private.

4. Tell ADHDTasker. In the web app (app.adhdtasker.com), open Manage → Home Assistant, paste the webhook URL, copy the shared secret it shows into the blueprint (they must match), Save, then hit Send test. Your speaker should say "ADHDTasker is connected to Home Assistant" and your lights should blink.

That's it — now mark a chore done and listen for it. 🎉

Prefer to write your own automation? The webhook payload puts everything on trigger.json — here's a celebration on completion:

- alias: ADHDTasker Celebrate
  triggers:
    - trigger: webhook
      webhook_id: !secret adhdtasker_webhook_id
      allowed_methods: [POST]
      local_only: false
  conditions:
    - condition: template
      value_template: "{{ trigger.json.event == 'task.completed' }}"
  actions:
    - action: tts.speak
      target: { entity_id: tts.home_assistant_cloud }
      data:
        media_player_entity_id: media_player.living_room
        message: "Nice work {{ trigger.json.profile.name }}! That's {{ trigger.json.task.points }} points."
  mode: queued

Part 2 — Commands in (add & complete from HA)

Now the other direction. In ADHDTasker open Manage → Inbound API and tap Generate API key. Pop it in secrets.yaml:

adhdtasker_api_key: "paste-your-key-here"

Add a REST command (and a sensor for dashboards) to configuration.yaml, then restart:

rest_command:
  adhdtasker:
    url: "https://us-central1-adhdtasker-68a50.cloudfunctions.net/api"
    method: POST
    headers:
      X-API-Key: !secret adhdtasker_api_key
      Content-Type: application/json
    payload: "{{ payload }}"

sensor:
  - platform: rest
    name: ADHDTasker
    resource: "https://us-central1-adhdtasker-68a50.cloudfunctions.net/api"
    headers:
      X-API-Key: !secret adhdtasker_api_key
    value_template: "{{ value_json.open }}"
    json_attributes: [counts, leaderboard]
    scan_interval: 300

⬇ Download config snippet

Part 3 — Two automations to steal

Nudge everyone on school mornings:

- alias: ADHDTasker School Morning Ping
  triggers:
    - trigger: time
      at: "07:00:00"
  conditions:
    - condition: time
      weekday: [mon, tue, wed, thu, fri]
  actions:
    - action: rest_command.adhdtasker
      data:
        payload: '{"action":"ping","title":"School morning","message":"Time to get ready for school!"}'
  mode: single

A bedtime board briefing — reads out what's left and who's winning:

- alias: ADHDTasker Bedtime Briefing
  triggers:
    - trigger: time
      at: "19:30:00"
  conditions:
    - condition: numeric_state
      entity_id: sensor.adhdtasker
      above: 0
  actions:
    - action: tts.speak
      target: { entity_id: tts.home_assistant_cloud }
      data:
        media_player_entity_id: media_player.living_room
        message: >
          {{ states('sensor.adhdtasker') }} chores still need doing.
          {% set lb = state_attr('sensor.adhdtasker','leaderboard') %}
          {% if lb and lb[0].lifetime | int > 0 %} {{ lb[0].name }} is leading.{% endif %}
  mode: single

Swap media_player.living_room, light.living_room and tts.home_assistant_cloud for your own entities. From here it's just Home Assistant — point press a button to complete a task, flash the hallway red when the bins haven't gone out, put the leaderboard on a dashboard. Have fun. 🏠

⬇ Download all examples Full integration reference →