Unofficial Home Assistant Integration for Toniebox / Tonie Cloud
Inoffizielle Home Assistant Integration für Toniebox / Tonie Cloud
Disclaimer — Please read before use / Bitte vor der Nutzung lesen
This project has no affiliation with Boxine GmbH (manufacturer of Toniebox / tonies.de) and is neither supported nor endorsed by them. It uses the official Tonie Cloud REST API, which may change at any time without notice. Use at your own risk. No warranty, no support from Boxine.
Dieses Projekt steht in keiner Verbindung zu Boxine GmbH und wird von diesen weder unterstützt noch empfohlen. Es nutzt die offizielle Tonie Cloud REST API, die sich jederzeit ohne Ankündigung ändern kann. Nutzung auf eigene Gefahr.
🤖 This integration was vibecoded — developed with AI assistance (Claude by Anthropic) and tested against a real Toniebox account.
- 🧸 Each Creative Tonie as its own device with media player, cover image and chapter list
- 📻 Each Toniebox as its own device — shows the currently placed figure with name and cover
▶️ Full playback control on the Toniebox 2 (TNG) — play/pause, next/previous chapter, jump to any chapter (browse), volume, and put to sleep — live via the Tonie Cloud's real-time channel- 🎚️ Live "now playing" — current chapter title, progress bar and play/pause state
- ⏲️ Sleep timer — start a timer via the
toniebox.sleeptimeraction, with asleeptimer_activebinary sensor - 📊 Sensors for chapter count, total duration, firmware version, online status, battery level, active figure and figure ID
- 🔘 Buttons to sort (title / filename / date), shuffle, clear and refresh
- 🔀 Shuffle the chapter order on demand (
sort_chapterswithsort_by: random) or automatically on swap — a per-Creative-Tonie switch that reshuffles a Tonie once a different one replaces it on a box - 🔴 Binary Sensors for transcoding, live mode, household lock, active figure and running sleep timer
- 🎛️ Switches for LED, chapter skipping, scrubbing, offline mode, household lock
- 🌐 Select entities for language, LED level, tap direction, age mode
- ⚙️ Services for automations: sleeptimer, sort, clear, rename, apply tune, redeem voucher and more
- 🌍 Translations for English, German, French, Spanish and Italian
- 🔐 Keycloak OpenID Connect authentication — same credentials as the Toniebox app
- 🛠️ Config Flow setup — no YAML required
- 📦 HACS compatible
If the button does not work: add https://github.com/git4sim/HA-Toniebox manually in HACS as a Custom Repository of type Integration, search for Toniebox and download.
Restart Home Assistant after download.
Copy the custom_components/toniebox/ folder from the latest release into your HA configuration directory:
/config/custom_components/toniebox/
Restart Home Assistant.
If the button does not work: go to Settings → Devices & Services → Add Integration and search for Toniebox.
Enter the email address and password of your Toniebox account (the same credentials as in the Toniebox app or on my.tonies.com).
The integration creates a logical device hierarchy in Home Assistant:
Household (Hub)
├── Toniebox 1 → Media Player · Switches · Sensors · Buttons · Select
├── Toniebox 2 → ...
├── Creative Tonie A → Media Player · Chapters · Duration · Sort/Clear Buttons · Live/Private Switch
└── Creative Tonie B → ...
Each device appears under Settings → Devices & Services → Toniebox with its own entities.
| Entity | Description |
|---|---|
sensor.<household>_account |
Logged-in account (email) |
sensor.<household>_creative_tonies |
Number of Creative Tonies |
sensor.<household>_tonieboxes |
Number of Tonieboxes |
sensor.<household>_children |
Number of child profiles |
sensor.<household>_members |
Number of household members |
sensor.<household>_notifications |
Number of unread notifications |
sensor.<household>_pending_invitations |
Pending invitations |
button.<household>_refresh_all |
Reload all data from server |
| Entity | Description |
|---|---|
media_player.<toniebox> |
Current chapter, cover, progress and play/pause; on TNG also play/pause, next/previous, chapter browsing, volume and sleep (turn off) |
sensor.<toniebox>_current_tonie |
Currently placed figure (name) |
sensor.<toniebox>_current_tonie_id |
Currently placed figure (raw Tonie ID — useful as an automation trigger) |
sensor.<toniebox>_settings_applied |
Whether the latest settings have been transmitted |
switch.<toniebox>_skip_chapters |
Chapter skipping via tap on/off |
switch.<toniebox>_scrubbing |
Scrubbing by tilting on/off |
switch.<toniebox>_offline_mode |
Offline mode |
switch.<toniebox>_tilt_and_tap |
Accelerometer on/off (older boxes) |
sensor.<toniebox>_firmware |
Current firmware version |
sensor.<toniebox>_last_seen |
Timestamp of last connection |
sensor.<toniebox>_online_status |
API online status (connected / offline / unknown) |
sensor.<toniebox>_current_battery |
Live battery level — unknown when offline (TNG only) |
sensor.<toniebox>_current_battery_status |
Live charging status — unknown when offline (TNG only) |
sensor.<toniebox>_last_battery |
Last known battery level while online (TNG only) |
sensor.<toniebox>_last_battery_status |
Last known charging status while online (TNG only) |
sensor.<toniebox>_last_online |
Timestamp of last cloud connection (TNG only) |
sensor.<toniebox>_generation |
Model generation (classic / rosered / tng) |
sensor.<toniebox>_features |
Supported features |
sensor.<toniebox>_timezone |
Configured timezone |
sensor.<toniebox>_setup_wifi |
SSID of setup network |
sensor.<toniebox>_added_at |
Registration date |
sensor.<toniebox>_bedtime_color |
Night light color (tng) |
binary_sensor.<toniebox>_online |
Toniebox recently active (reachability) |
binary_sensor.<toniebox>_led_active |
LED status |
binary_sensor.<toniebox>_charging |
Currently charging — unknown when offline (TNG only) |
binary_sensor.<toniebox>_sleeptimer_active |
Whether a sleep timer is running; sleep_until attribute shows when the box will sleep (TNG only) |
select.<toniebox>_led_level |
LED brightness |
select.<toniebox>_language |
Language setting |
select.<toniebox>_tap_direction |
Tap direction |
select.<toniebox>_age_mode |
Age mode |
number.<toniebox>_max_volume |
Maximum volume |
number.<toniebox>_lightring_brightness |
Light ring brightness |
button.<toniebox>_refresh |
Reload device |
button.<toniebox>_factory_reset |
Reset settings |
| Entity | Description |
|---|---|
media_player.<tonie> |
Main entity with cover image and chapter overview |
sensor.<tonie>_chapters |
Number of chapters (incl. chapter list as attribute) |
sensor.<tonie>_total_duration |
Total playback duration in minutes |
sensor.<tonie>_remaining_time |
Remaining free capacity in minutes (max. 90 min) |
sensor.<tonie>_transcoding |
Transcoding status |
switch.<tonie>_private |
Hide Tonie from guest members |
switch.<tonie>_live |
Enable live mode |
switch.<tonie>_shuffle_on_swap |
Local only — when on, this Tonie's chapters are shuffled once it is replaced on a box by a different Tonie |
binary_sensor.<tonie>_transcoding |
Transcoding in progress |
binary_sensor.<tonie>_live |
Live status |
binary_sensor.<tonie>_private |
Private status |
button.<tonie>_clear_chapters |
Remove all chapters |
button.<tonie>_sort_by_title |
Sort chapters alphabetically |
button.<tonie>_sort_by_filename |
Sort chapters by filename |
button.<tonie>_sort_by_date |
Sort chapters by date |
button.<tonie>_shuffle_chapters |
Shuffle chapters into a random order |
button.<tonie>_refresh |
Reload Tonie data |
Shuffle on swap (
switch.<tonie>_shuffle_on_swap) is a local convenience toggle with no counterpart in the Tonie Cloud:
- Only a displacement counts: the shuffle fires for the Tonie that gets replaced on a box by a different Tonie. Simply lifting a Tonie off (box goes empty) never shuffles it, so you can pick it up and put it back later to keep listening where you left off.
- Only Creative Tonies with ≥ 2 chapters are shuffled.
- Each shuffle triggers a full re-transcode on the Tonie Cloud (typically 1–60 s) — expected, not an error.
- Real-time on the Toniebox 2 (TNG) via the cloud's push channel; on classic (non-TNG) boxes there is currently no placement data source to detect a swap from, so this only works on TNG.
service: toniebox.sort_chapters
data:
entity_id: media_player.my_tonie
sort_by: title # title | filename | date | random
randomshuffles the chapters into a new random order. Like every reorder, it triggers a full re-transcode of the Tonie on the Tonie Cloud (typically 1–60 s). Needs at least 2 chapters.
service: toniebox.clear_chapters
data:
entity_id: media_player.my_tonieservice: toniebox.remove_chapter
data:
entity_id: media_player.my_tonie
chapter_id: "abc123"Chapter IDs are available as the
chaptersattribute on the media player or chapter sensor.
service: toniebox.move_chapter
data:
entity_id: media_player.my_tonie
chapter_id: "abc123"
direction: up # up | downservice: toniebox.upload_audio
data:
entity_id: media_player.my_tonie
file_path: /config/tonie_audio/story.mp3
title: "My Story" # optionalSupported formats: mp3, ogg, wav, flac, m4a, aac, opus.
service: toniebox.rename_tonie
data:
entity_id: media_player.my_tonie
name: "Bedtime Tonie"service: toniebox.rename_toniebox
data:
entity_id: media_player.my_toniebox
name: "Kids Room"Start a sleep timer: the box falls asleep on its own after the given number of
minutes. Pass 0 to cancel a running timer.
service: toniebox.sleeptimer
data:
entity_id: media_player.my_toniebox
minutes: 30 # 0 = cancel the running timerSetting a timer has no immediate visible effect — the box keeps playing and sleeps later. Watch
binary_sensor.<toniebox>_sleeptimer_active(attributesleep_until) to confirm it is running.
service: toniebox.redeem_content_token
data:
entity_id: media_player.my_tonie
token: "TOKEN123"service: toniebox.apply_tune
data:
entity_id: media_player.my_tonie
tune_id: "tune-id-xyz"service: toniebox.remove_tune
data:
entity_id: media_player.my_tonieservice: toniebox.redeem_voucher
data:
code: "VOUCHER123"service: toniebox.dismiss_all_notificationsservice: Scan report · 2026-09-11 - ✓ Prohibited terms or links
- ✓ Repository eligibility
- ✓ slopscore.md paperwork
- ✓ Content policy
- ✓ Risk review — +10 owner has 0 followers
report this listing
— log in to report
0 comments
log in to comment.