Hobba.

Your Smart Home Writes the List

Updated: September 2026

The window sensor's battery is almost dead, the printer is low on toner — things Home Assistant already knows. This bridge turns them into Hobba tasks. And once the problem resolves itself, the task checks itself off.

How it works

Home Assistant gets its own to-do list as a mailbox. Your automations drop items there — using built-in actions, no extra add-on. On a Mac in the same network, a small script empties the mailbox every five minutes and creates each item as a task via the Hobba Connector. From there, CloudKit syncs to iPhone, iPad, and Watch as usual.

The return path is built in: if an automation drops an item starting with erledigt:, the bridge checks off the matching task in Hobba. Tasks disappear on their own once the battery has been swapped — or the gauge was just acting up for a moment.

Prerequisites

Step 1: The mailbox in Home Assistant

Settings → Devices & Services → Add Integration → “Local to-do list” → name it “Hobba Eingang”. That creates the entity todo.hobba_eingang.

Step 2: The bridge on the Mac

Fetch the script and store the access token (token: HA → Profile → Security → “Long-lived access tokens”):

mkdir -p ~/.hobba-mcp
curl -o ~/.hobba-mcp/hobba-ha-bridge.py https://hobba.rinn-home.de/hobba-ha-bridge.py
printf '{"url": "http://homeassistant.local:8123", "token": "YOUR-TOKEN", "liste": "todo.hobba_eingang"}' > ~/.hobba-mcp/ha-bridge.conf
chmod 600 ~/.hobba-mcp/ha-bridge.conf

Run it once by hand — a test item on the HA list should appear in Hobba's inbox:

python3 ~/.hobba-mcp/hobba-ha-bridge.py

Then every five minutes automatically, via launchd:

cat > ~/Library/LaunchAgents/de.rinnhome.hobba.ha-bridge.plist <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key><string>de.rinnhome.hobba.ha-bridge</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/python3</string>
        <string>/Users/YOUR-USER/.hobba-mcp/hobba-ha-bridge.py</string>
    </array>
    <key>StartInterval</key><integer>300</integer>
    <key>StandardOutPath</key><string>/Users/YOUR-USER/.hobba-mcp/ha-bridge.log</string>
    <key>StandardErrorPath</key><string>/Users/YOUR-USER/.hobba-mcp/ha-bridge.log</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/de.rinnhome.hobba.ha-bridge.plist

Replace YOUR-USER in all three places — launchd doesn't expand the tilde.

Step 3: Automations that feed the list

Any automation can now create tasks with the built-in todo.add_item action. The battery example as a pair — warning and all-clear:

# Warning: below 20% for an hour → task
triggers:
  - trigger: numeric_state
    entity_id: sensor.fensterkontakt_battery
    below: 20
    for: { hours: 1 }
actions:
  - action: todo.add_item
    target: { entity_id: todo.hobba_eingang }
    data:
      item: "Replace battery in {{ trigger.to_state.name }}"
      description: "Level: {{ trigger.to_state.state }}%"

# All-clear: stable above 50% → check the task off
triggers:
  - trigger: numeric_state
    entity_id: sensor.fensterkontakt_battery
    above: 50
    for: { hours: 1 }
actions:
  - action: todo.add_item
    target: { entity_id: todo.hobba_eingang }
    data:
      item: "erledigt: Replace battery in {{ trigger.to_state.name }}"

The only rule: the title after erledigt: (the prefix is fixed, German for “done”) must exactly match the warning's title — that's how the bridge recognizes the task. The thresholds 20 and 50 are apart on purpose: the gap prevents ping-pong when a gauge hovers around the line.

Why this is safe

Hobba is a task app for iPhone, iPad, Mac, and Apple Watch — no account, no subscription, no tracking. On the App Store since August 30, 2026: one purchase, no monthly bill.

Get it on the App Store
← All guides