-
Notifications
You must be signed in to change notification settings - Fork 6
Description
I am not very familiar with working on Github but want to share the solution that worked for me. After trying a couple of times and getting the NoSerial en Authetification failure messages, this worked for me.
Sorry if it does meet the official requirements for sharing :) Script is made with the assistants of Gemini.
`#!/bin/bash
# ==============================================================================
# Tado X / Device Flow Fix Installer for Home Assistant
#
# ISSUE: Tado X users experience infinite authentication loops or crashes
# due to missing 'shortSerialNo' in Matter devices.
# SOLUTION: Installs the 'tado-oauth-deviceflow' branch, forces a version
# override to prevent Core conflicts, and patches the coordinator.
#
# CREDITS:
# - Original work by @erwindouna
# - Branch maintenance by @karlbeecken
# - Installer script & patch logic optimized by "Bart's HA Partner" & Bart
# ==============================================================================
set -e
# Configuration
CONFIG_DIR="/config"
CUSTOM_DIR="$CONFIG_DIR/custom_components/tado"
TEMP_DIR="$CONFIG_DIR/temp_tado_download"
# Using KarlBeecken's fork which contains the working Device Flow branch
ZIP_URL="https://github.com/karlbeecken/ha-core/archive/refs/heads/tado-oauth-deviceflow.zip"
echo "π STARTED: Tado X Fix Installer..."
# 1. CLEANUP OLD INSTALLATIONS
# We remove previous attempts to ensure no file conflicts occur.
echo "π§Ή Step 1: Cleaning up old installations..."
if [ -d "$CUSTOM_DIR" ]; then
rm -rf "$CUSTOM_DIR"
echo " - Removed existing custom_components/tado"
fi
rm -rf "$TEMP_DIR"
# 2. DOWNLOAD SOURCE
echo "β¬οΈ Step 2: Downloading patched source code..."
mkdir -p "$TEMP_DIR"
wget -O "$TEMP_DIR/source.zip" "$ZIP_URL" > /dev/null 2>&1
echo " - Download complete."
# 3. EXTRACT & INSTALL
echo "π¦ Step 3: Extracting and installing..."
unzip -q "$TEMP_DIR/source.zip" -d "$TEMP_DIR"
# Locate the correct folder structure inside the zip
SOURCE_FILES=$(find "$TEMP_DIR" -type d -path "*/components/tado" | head -n 1)
if [ -z "$SOURCE_FILES" ]; then
echo "β ERROR: Could not find 'tado' component in the downloaded zip."
exit 1
fi
mkdir -p "$CONFIG_DIR/custom_components"
cp -r "$SOURCE_FILES" "$CONFIG_DIR/custom_components/"
echo " - Files placed in /config/custom_components/tado"
# 4. FORCE VERSION OVERRIDE (CRITICAL)
# We set version to 9.9.9 to force Home Assistant to use this Custom Component
# instead of the built-in Core integration (which might have a newer build date but broken code).
echo "π Step 4: Forcing version override (v9.9.9)..."
MANIFEST="$CUSTOM_DIR/manifest.json"
python3 -c "
import json
import os
manifest_path = '$MANIFEST'
if os.path.exists(manifest_path):
with open(manifest_path, 'r') as f:
data = json.load(f)
data['version'] = '9.9.9'
with open(manifest_path, 'w') as f:
json.dump(data, f, indent=2)
print(' - Manifest version updated to 9.9.9')
else:
print(' β ERROR: manifest.json not found!')
"
# 5. APPLY 'SHORT SERIAL' CRASH PATCH
# Tado X (Matter) devices do not return a shortSerialNo, causing a crash in the original code.
# This Python script injects a safe .get() method.
echo "π§ Step 5: Patching coordinator.py for Tado X compatibility..."
COORD_FILE="$CUSTOM_DIR/coordinator.py"
python3 -c "
import re
import os
path = '$COORD_FILE'
if os.path.exists(path):
with open(path, 'r') as f:
content = f.read()
# Regex to find device['shortSerialNo'] or device[\"shortSerialNo\"]
pattern = r'device\[([\"\047])shortSerialNo\1\]'
replacement = 'device.get(\"shortSerialNo\", \"unknown\")'
if re.search(pattern, content):
new_content = re.sub(pattern, replacement, content)
with open(path, 'w') as f:
f.write(new_content)
print(' β
PATCH APPLIED: Fixed shortSerialNo crash.')
elif 'device.get' in content and 'shortSerialNo' in content:
print(' βΉοΈ ALREADY PATCHED: File looks good.')
else:
print(' β οΈ WARNING: Could not find the code pattern to patch. Check manually.')
else:
print(' β ERROR: coordinator.py not found!')
"
# 6. FINAL CLEANUP
echo "π§Ή Step 6: Removing temporary files..."
rm -rf "$TEMP_DIR"
# Remove compiled python files to force re-compilation
find "$CUSTOM_DIR" -name "*.pyc" -delete
echo "======================================================="
echo "β
INSTALLATION COMPLETE!"
echo "======================================================="
echo "NEXT STEPS:"
echo "1. If you have a broken Tado integration, DELETE it now."
echo "2. Restart Home Assistant completely: 'ha core restart'"
echo "3. Add the Tado integration again via Settings."
echo "======================================================="`
Tado X Fix for Home Assistant (OAuth & Crash Loop)
This script installs a patched version of the Tado integration to support Tado X devices (Matter/Thread) in Home Assistant.
β οΈ The Problem
Users with Tado X devices often encounter:
- Authentication Loop: You log in, it says "Success", but immediately asks to reconfigure.
- Crash: Error logs showing
KeyError: 'shortSerialNo', causing the setup to fail.
This happens because the current Home Assistant Core integration does not yet support the new "Device Flow" authentication required for Tado X, and Tado X devices do not report a shortSerialNo like older devices did.
β The Solution
This installer script performs the following actions:
- Downloads the
tado-oauth-deviceflowbranch (forked from @karlbeecken). - Installs it as a
custom_component. - Forces version 9.9.9 in
manifest.jsonto ensure Home Assistant loads this version over the built-in one. - Patches
coordinator.pyto prevent crashes when a serial number is missing (returns 'unknown' instead of crashing).
π How to Install
Prerequisites
- You need access to the Home Assistant Terminal (e.g., via the "Advanced SSH & Web Terminal" add-on).
Installation Steps
- Open your Home Assistant Terminal.
- Run the following command to download and execute the installer:
wget -O tado_installer.sh [https://raw.githubusercontent.com/JOUW_GITHUB_NAAM/REPO_NAAM/main/install_tado_fix.sh](https://raw.githubusercontent.com/JOUW_GITHUB_NAAM/REPO_NAAM/main/install_tado_fix.sh)
chmod +x tado_installer.sh
./tado_installer.sh
>(Note: Replace the URL above with your actual GitHub Raw URL after uploading)
Restart Home Assistant (ha core restart).
Go to Settings > Devices & Services.
If an old/broken Tado integration exists: Delete it.
Click Add Integration > Tado.
Follow the login steps (you will be redirected to tado.com).
π§Ή How to Remove (When official fix is released)
Once Home Assistant officially updates the Tado integration (likely in version 2025.x):
Delete the folder /config/custom_components/tado.
Restart Home Assistant.
Credits
Logic based on the work of @erwindouna & @karlbeecken.
Installer script & patch logic consolidated by Bart & "Bart's HA Partner".