Fully local Sofabaton X1S Integration

Big update β€” the integration has come a long way

Hi all :waving_hand: it's been a while since I last posted here. When this thread started, the integration was a very rough proof-of-concept: basic command sending, no cards, no docs, no backups, no IR blob support, no Wifi Commands β€” most of the protocol was educated guesswork. A lot has changed, so I wanted to give a proper status update for anyone still following along (or considering trying it).

Repo: https://github.com/m3tac0de/home-assistant-sofabaton-x1s
Current version: 0.6.0 (HACS default)
Supports: X1, X1S, and X2 (X2 discovery is opt-in via configuration.yaml)

What's new since the first post

:brain: Proper protocol implementation, not guesswork
The hub protocol is now formally implemented with a full schema layer β€” Activities, Devices, Commands, Macros, Buttons, Favorites, Inputs and Power sequences are all modeled, parsed and serialized through a single code path. This made everything downstream (backup, restore, blobs, Wifi Commands) actually possible.

:counterclockwise_arrows_button: Fully local backup & restore
Back up an entire hub, restore it whole, or pick individual devices out of a backup and add them to another hub. Restore works across hub versions (X1 ↔ X1S ↔ X2) where the protocol allows it. Done entirely locally β€” no cloud round-trips.

:floppy_disk: IR Blobs
You can now capture the hub's real IR payloads, test them, save them, share them, and build new commands from them. There's also an experimental exporter to IrScrutinizer for analysis.

:satellite_antenna: Wifi Commands (receive key presses from the remote)
Configure up to 5 Wifi Devices per hub (10 slots each) and bind physical remote presses to Home Assistant Actions. Actions can be edited any time without re-syncing the hub.

:joystick: Two dashboard cards, auto-deployed

  • Sofabaton Virtual Remote β€” full on-screen remote, with Key Capture mode that drops ready-to-use YAML straight into your sidebar.
  • Sofabaton Control Panel β€” the central management UI: Wifi Commands, Backup, Blobs, Cache navigation, Settings, and a live Logs tab for real-time diagnostics.

:satellite: Real networking documentation
VLANs, firewalls, container/host-network setups, mDNS quirks, the iOS app discovery weirdness β€” it's all written up now in docs/networking.md. The proxy architecture (which lets the official app keep working alongside HA) is also documented.

:gear: Persistent cache
Once enabled, hub data survives HA restarts. Traffic between the hub and integration drops to near-zero in steady state, making the integration noticeably faster and more reliable.

:radio_button: A proper entity surface
remote, activity select, connection binary_sensors, current-activity sensor, recorded-keypress sensor, dynamic volume/mute/etc. buttons, find-remote buzzer, resync button, proxy enable switch, hex-logging switch, editable IP text entity. Enough to build any custom UI or automation you want.

If you're on an older version, HACS will pick up 0.6.0. If you're new, the README quickstart should get you going in a few minutes β€” and please make sure the official Sofabaton app is not connected to the hub during initial setup.
Always happy to take bug reports β€” please use GitHub Issues with logs from docs/logging.md so I can actually act on them.

Thanks to everyone who filed issues, sent captures, and tested weird network setups β€” none of this would have shipped without you. Feedback very welcome :folded_hands:

Hey @m3tac0de, I wanted to say thank you for creating a X1S integration for Home Assistant. I have been trying for the past hour to get my hub connected and haven't been able to at all. I have a X1S and took forever to find my hub IP address but finally was able to locate it. I force stopped the app on my phone and even unplugged the hub to try to restart it and it still shows the hub as disconnected. I have my Home Assistant and SofaBaton hub on the same network and shouldn't have any firewall in the way. I followed the README as closely as I could and don't understand what I could be doing wrong. Any help would be appreciated!

Hello @chrislparks . Let me see if I can help you out.
As you've been hunting for your hub's IP address i'm assuming you added your X1S hub manually. Is that right? Did the hub not show up automatically at all on the Settings -> Devices & services page? Tell me a little bit about your setup, how are you running HA?

What would be very helpful is if you could do the following:

  • Go to Settings -> Devices & services -> Sofabaton X1S
  • In the top right corner there is 3-dot button. Click that one and enable debug logging.
  • Now restart Home Assistant
  • Wait 2 minutes
  • Now go to Settings -> System -> Logs
  • In the top-right corner is a button with a downward pointing arrow. Click it to download your logfile

I will probably be able to understand your problem if I can see that logfile.
Important: that logfile may contain information that you do not want to share with the world. You should open it in a text editor to see it before you share. Send it to me in a PM if possible.

@m3tac0de, yes I had to add the IP address manually, there was never a hub to select, it always prompted me to enter an IP address. I think I'm a little to fresh on the forums to send a PM, is there a preferred way you would like me to send you the logs?

ideally you open an issue here and add the log to your issue.