🌟 Astrion Custom Dashboard (Alternative UI + Direct Harmony Hub Integration)

Following up on my previous post, I wanted to share a quick update and introduce Astrion Custom, a custom dashboard and launcher for the Astrion device designed to provide a tailored, highly responsive experience.

:light_bulb: Why this project?

My initial goal was simply to get standalone access to the infrared features. However, it evolved into something even better: the ability to integrate directly with Logitech Harmony hubs without depending entirely on Home Assistant.

My philosophy is simple: Home Assistant is the brain and heart of the smart home, but a remote/wall panel should still be a smart device capable of interacting with HA without 100% dependency.

  • Reliability: Even if Home Assistant goes down, the multimedia control part remains fully operational.
  • Apple TV & Bluetooth fix: Since the hardware lacks direct Bluetooth to connect to my Apple TV, routing it through the Harmony Hub solved the issue seamlessly.
  • Custom Physical Buttons: Every physical key can be mapped and configured exactly how you want.

:hammer_and_wrench: New: Online Dashboard Editor

To make it easier for everyone to build and share layouts (especially for users less familiar with writing JSON from scratch), I put together a first lightweight version of an online configuration helper: :backhand_index_pointing_right: Astrion Custom — dashboard.json Editor

(Fun fact: I only received my Astrion remote this past Saturday at 8:00 AM, so everything came together pretty fast!)

:inbox_tray: Links & Code

Feel free to test it, share your feedback, or contribute (especially translations if you’d like to add your language)!

1 Like

This is fantastic work, especially considering you’ve only had the remote for a few days!

Thank you for taking the time to share both the project and the source code with the community. I also really like that you built a lightweight dashboard editor alongside it—it lowers the barrier for others who want to experiment without editing JSON manually.

I also appreciate you sharing the design philosophy behind the project. Different users have different priorities, and exploring alternative interaction models is exactly what helps the community discover new ideas and workflows.

Looking forward to seeing how the project evolves, and please keep us updated as you add new features. I’m sure many Harmony users will find it an interesting source of inspiration.

One of the things we’ve enjoyed most over the past few weeks is seeing everyone build a different Astrion experience.

That’s exactly what makes an open community fun.

Thanks for open-sourcing it. Whether people use the official interface, your custom dashboard, or build something entirely different, it’s always exciting to see new ideas emerge around the platform.

1 Like

:tada: v0.3.0 update available!

Mostly climate-card and translation improvements this time around:

  • :cyclone: New: swing mode support on the climate card (climate.set_swing_mode)
  • :artist_palette: Icon or label display, your choice, for hvac/fan/swing modes — with real per-mode icons (auto, speeds 1-5, quiet, etc.)
  • :bug: Translation fixes: the weather and vacuum cards were showing raw Home Assistant English (“Partlycloudy”, “Docked”…) instead of being translated — fixed
  • :bug: On the climate card, some fan/hvac modes could silently disappear if there were more than 4 — fixed, and the card is a bit more compact now too
  • :hammer_and_wrench: Dashboard builder: dedicated forms (no more hand-written JSON) for weather, vacuum, and climate cards, with a preview that finally looks like what you’ll actually see on the panel
1 Like

:rocket: Release v0.4.0: Standalone Local IR Support, New FanCard, and Editor Overhaul!

Hi everyone!

Version v0.4.0 is officially available! This update brings long-awaited features, particularly around fan management and native support for the remote’s built-in IR blaster.

:warning: Note regarding IR: The local IR activities engine and the Pronto Hex database editor are now live! However, the database (docs/ir-database/) will need to be populated over time with device codes (TV, plug, etc.). This gives a clear preview of where the project is heading: 100% standalone and local operation for setups that don’t rely on a Harmony hub or Home Assistant.

:glowing_star: Key Highlights

  • Standalone IR Activities & Pronto Hex Database:

    • Execute IR sequences directly through the remote’s built-in IR blaster (ConsumerIrManager).
    • Built-in Pronto Hex decoder in the web editor: converts Pronto codes into frequencies/patterns during dashboard.json export for zero-latency execution on device.
  • New Full FanCard:

    • Aligns with the ClimateCard design introduced in v0.3.0: dedicated power button, oscillation toggle, preset/speed selection, and configuration overrides.
  • Web Editor Overhaul (docs/index.html):

    • Realistic Preview: The preview pane now renders your dashboard inside an image of the physical remote frame (real 480Ă—800 screen resolution) with a mocked status bar. Tapping the screen expands it into a larger modal.
    • In-Place Editing: Click any item in a grid to edit it directly instead of having to delete and recreate it.
  • Unified Color Scheme: Power buttons across ClimateCard and FanCard now follow a consistent scheme (red = off, green = on).

  • Wi-Fi Startup Fix: Added a BOOT_COMPLETED receiver to automatically reactivate Wi-Fi on boot if disabled by the system.

:clipboard: Detailed Changelog v0.4.0

:green_circle: Added

  • FanCard:
    • New full style (auto-picked when the entity reports preset_modes and/or oscillating), featuring a dedicated power button, preset chips, and oscillation toggle.
    • preset_modes override option to filter or reorder displayed chips (the "off" state is excluded as it’s handled by the main power button).
    • Oscillate toggle chip reusing existing translations.
    • style config option ("auto", "simple", "full").
  • SceneGridCard:
    • Optional PNG icon rendering on scene tiles.
    • show_labels option: allows displaying icons only without text underneath.
    • Uniform tile height calculation across grids mixing icon and non-icon scenes.
  • ClimateCard / FanCard:
    • show_captions option: hides section header labels (“Mode”, “Fan”, “Oscillate”, etc.).
  • IR Activities & Editor:
    • Universal Pronto Hex support (protocol-agnostic).
    • New “IR Activities” section in the web editor with cascading dropdowns (Category → Brand → Model → Command).
    • Modularized editor codebase (styles.css + js/*.js).

:counterclockwise_arrows_button: Changed

  • ClimateCard / FanCard: Power buttons now share a consistent color scheme (red when off, green when on).
  • In-Place Editing: Grid items in button_grid / scene_grid can now be clicked to edit directly.
  • Cleaner Preview: Small preview mode hides clutter (card type labels, hints, action icons) to show only actual on-device visuals.

:hammer_and_wrench: Fixed

  • Wi-Fi Stability: Added WifiBootReceiver to ensure Wi-Fi stays enabled after device restart.
  • Grid Overflow: Fixed horizontal scrollbars on multi-column grid previews in the web editor.

:eyes: Sneak Peek / Coming Soon: Embedded Editor & Harmony Config Auto-Import!

Hey everyone! A quick update on what’s currently cooking for the next release:

:crystal_ball: What’s coming next:

  • Built-in Web Editor: You’ll soon be able to access the dashboard editor directly from the remote’s own configuration page (via its local IP address)—no external hosting or manual file handling required!
  • Harmony Hub Auto-Import: For Logitech Harmony Hub users, the editor will be able to retrieve your hub’s configuration file directly.
  • Smart Dropdowns & Pre-populated Lists: Once your configuration is fetched, all your Harmony devices, activities, and commands will automatically appear in easy-to-use dropdown menus, making dashboard setup faster and virtually error-free!

Stay tuned! :rocket:

:rocket: Release: Astrion v0.5.0 (2026-08-10)

Version v0.5.0 is now available! This update introduces Multi-Hub Logitech Harmony support, automatic ID resolution via IP, and integrates the Dashboard Builder directly into the app itself.

:glowing_star: Key Features & Improvements

:control_knobs: Multi-Hub Harmony Support & Automatic ID Resolution

  • Multi-Hub Management: You can now configure multiple Harmony hubs in the settings (/). Each hub gets assigned a stable localId.
  • Automatic ID Retrieval via IP: No need to manually copy the numeric hub ID from Home Assistant’s harmony_<id>.conf file. Simply enter the Hub’s IP address—as soon as the IP field loses focus (or when tapping “Auto-detect ID”), the app queries the hub and retrieves its numeric ID automatically.
  • Backward Compatibility: If no hub is specified on a card or tile, the first configured hub is used as a fallback. Your existing single-hub setups will keep working without any changes.
  • Config Export & Offline Caching: Full hub configuration (paired devices, IR commands, activities) is fetched via GET /harmony-config and cached locally to astrion/harmony_<hubId>.json next to dashboard.json, keeping things running smoothly even if a hub temporarily goes offline.

:hammer_and_wrench: Embedded Dashboard Builder

  • Hosted Locally: The dashboard builder (docs/) is now bundled as app assets and served locally at GET /builder/—no internet access or separate computer required to edit your dashboard.json.
  • Live Save & Reload: When opened directly on the device, the builder automatically loads your current dashboard.json and adds a “Save to device” button for instant saving and live UI reloading.
  • Cascading Harmony Picker: When creating tiles or hotkeys in the builder, you now get live Hub → Device → Command and Hub → Activity dropdown pickers fed directly from your paired hubs.

:flower_playing_cards: Card & Shortcut Enhancements

  • Added optional hub parameter support to SceneGridCard, AppleTvRemoteCard, and HotkeyConfig.
  • SceneGridCard tiles now support direct harmonyDevice and harmonyCommand actions alongside activities.

:warning: Breaking Changes & Removals

  • CustomIrCard Removed: Replaced by IR Activities (introduced in v0.4.0). To send local IR without a hub, use a scene_grid tile with an irActivity action (which offers a full Category → Brand → Model → Command picker in the builder).
    • Action required: Existing custom_ir cards should be migrated to scene_grid + irActivity.

:hammer_and_wrench: UI & Internal Refactoring

  • Redesigned Config Page (/): The Home Assistant and Dashboard panels are now displayed side-by-side in a 2-column layout on wider screens.
  • Streamlined Update Badge: The “Updates” block has been moved into a compact status badge at the top, showing the active version or an amber badge to install updates in 1 click.
  • Code Modularization: Split TileCards.kt into dedicated per-card files (CoverCard.kt, FanCard.kt, and SwitchCard.kt) to allow each component’s UI to evolve independently.

:rocket: Release v0.6.0 is out!

This update brings major UI enhancements (Mushroom-style layouts), improved dashboard editing tools, and localized security controls.

:sparkles: Key Highlights:

  • Config Server Security: A new toggle in Settings lets you turn off the local web interface (:8080) once setup is complete to close the unauthenticated LAN surface.
  • Redesigned Cover & Light Cards:
    • Mushroom-style layouts: Choose between default, horizontal, and vertical modes.
    • Covers: Added a long-press detail popup with a smooth position slider and quick presets (25%, 50%, 75%), dynamic MDI shutter icons, and smart button disabling at end stops.
    • Lights: The default layout’s brightness bar is now an interactive thick slider. Added live RGB color tinting, brightness percentages, and updated state icons.
  • Dashboard Builder Upgrades:
    • Dedicated forms and live previews for Light and Cover cards.
    • Visual Icon Picker: Includes an icon gallery picker listing all images uploaded to the remote (/icons-list).
  • UI Translations: Added full French & English localized string resources for state labels.

:high_voltage: Fixes & Performance:

  • Instant Page Navigation: Replaced animated page scrolling with instant jumps for physical hotkeys, page dots, and menu navigation (eliminates lag on the HA100 CPU).
  • Deprecation: Removed bubble_light card type (superseded by the updated LightCard).
  • Fixed status string translation bugs and web preview rendering glitches.
1 Like

[0.7.0] - 2026-08-14

Version 0.7.0 is now available! This release brings a major overhaul to media cards and the configuration tool, along with a fully redesigned, true-to-life virtual remote preview.

:glowing_star: Key Highlights

  • Complete Overhaul of MediaPlayerCard (Mushroom-style):
    • Compact Layout: Round avatar (album art or icon), name + state row, and an interactive control row. A small swap button lets you instantly toggle between transport buttons (previous, play/pause, next, optional options) and volume controls.
    • Full Layout: A dedicated look featuring large artwork, a live progress bar (updating every second during playback), and matching controls.
    • Detail Dialog: Long-pressing the compact card opens a new detailed view (MediaPlayerDetailDialog) featuring large visuals, a progress bar, full transport controls, volume slider, and a power toggle (if supported by the entity).
    • Smart Filtering: Every button and control is dynamically verified against the entity’s supported_features bitmask. If an entity doesn’t support a feature, the control is automatically hidden.
  • Enhancements to LightCard and CoverCard:
    • Added optional Mushroom-style controls (brightness, color temperature, and color swatches for lights; open/stop/close buttons, position slider, and tilt slider for covers).
    • A toggle button allows you to easily flip between controls if multiple are enabled.
  • Total Redesign of the Dashboard Builder:
    • MediaPlayer cards now feature their own dedicated configuration form (say goodbye to raw JSON fallback) with a real-time preview.
    • 100% HTML/CSS Remote Preview: The static remote background image has been replaced. The virtual remote preview is now drawn in clean code, matching the true scale, button positions, and screen-to-scroll limits of the physical device.
    • Hotkey Highlighting: The remote preview now highlights physical buttons that already have a hotkey assigned (either globally or on the current page), making it easy to see active mappings at a glance.

:counterclockwise_arrows_button: Changes & Improvements

  • Media Controls: The compact layout’s control row now supports mute and full transport controls (replacing the old fixed volume up/down pair that lacked playback controls).
  • State Indicators: Shuffle and repeat now tint the active button instead of swapping icons.
  • Cleanup: Removed the old static remote.png image from the dashboard builder, replacing it entirely with the high-fidelity HTML/CSS remote casing.

:hammer_and_wrench: Bug Fixes

  • Fixed the fill bar behavior on Cover and Light sliders (it now fills correctly from left to right instead of shrinking from both sides).
  • Fixed various minor scaling and positioning glitches on the dashboard builder preview to align perfectly with the real device dimensions.
1 Like

This looks fantastic, but beyond any hope I have of installing it. You have GOT to make some YouTube videos demonstrating what this is and how to install it. I would even pay for it! Thanks.

Thank you very much.

You asked for a quick guide: download the APK from the “Releases” section of my GitHub page, then check the README. Rest assured—once this initial setup is done, future updates will happen automatically, directly within the app! As for contributing, if you’d like to support the project, you can find a Ko-fi link on my GitHub.

[0.8.0] - 2026-08-16

This major update brings massive additions centered around AV (Audio/Video) control, complete offline hardware independence (local IR), full activity management (similar to Logitech Harmony) directly within the app, alongside numerous stability fixes.

:glowing_star: Major Additions

  • Tracked Activities:
    • Any scene_grid tile or hotkey can now be marked as "track": true with a specified "room".
    • At most one Activity is active per room at a time, with smart synchronization (including the ability to bind a Harmony hub’s live state).
  • Composed Activities:
    • Astrion can now orchestrate multiple devices itself (mixing IR, Harmony, and Home Assistant freely) without depending on an external hub.
    • Intelligent state management during room switches: shared devices stay powered on (only input changes), while devices unique to the outgoing activity are powered off.
  • IR Devices (100% Offline Baseline):
    • New local registry of commands per physical device (via a built-in community database cascade picker or hand-pasted Pronto Hex codes).
    • Works completely offline with zero cloud dependency, Home Assistant, or Harmony hub required.
  • New “Active Activities” Overlay:
    • Swipe up from the bottom edge (page-indicator dots) to view a list of all currently active Activities grouped by room, and tap one to jump straight to its page.
  • Builder Overhaul:
    • IR Section: Cascading picker (category → brand → model → command) or bulk import of all commands from a model, with inline renaming.
    • Activities Section: Step-by-step wizard (mirroring Logitech Harmony’s setup flow) to configure types, names, icons, rooms, device selection, delays, and volume control.
  • New “Title” Card Type:
    • Customizable section header for grouping cards (title, subtitle, alignment, icon, divider line, and optional color tinting).
  • Miscellaneous:
    • Direct use of the phone’s built-in physical IR blaster (ConsumerIrManager) for physical button bindings and local IR paths.
    • Optional devices list on tiles/activities to improve device state tracking during activity switches.

:counterclockwise_arrows_button: Changes

  • Builder: Fixed the default behavior when editing existing Harmony-backed tiles (the hub dropdown no longer silently defaults to the first configured hub if none was explicitly set).
  • Unicode Normalization: IDs generated from names (IR devices, Activities) now correctly strip accents using NFD normalization (e.g., "Xbox SĂ©rie X" becomes "xbox_serie_x").
  • Close Gestures: Swipe-to-close gestures have been moved to dedicated touch strips to prevent conflicts with vertical scrolling (SettingsOverlay and ActivitiesOverlay).

:bug: Bug Fixes

  • HA Attribute Stability: Fixed a critical crash on non-primitive attributes (such as Kodi’s nested media_content_id object on media players) by switching to a safe cast.
  • Status Bar: The top clock now properly honors the device’s 12/24h setting and is perfectly centered.
  • Config Server: Fixed port binding errors (EADDRINUSE) with a delayed retry mechanism on initial bind failure.
  • Miscellaneous (via PR #3 by @ClemsonJeeper):
    • Unmapped physical BACK presses no longer destroy the launcher activity.
    • Saving new connection settings now reconnects clients and restarts the local server in place without relying on Activity.recreate() (which was unreliable on Android 8.1).
    • Fixed various builder bugs (dropped fields on reload, unrefreshed pickers, menu compile errors).

:rocket: Astrion - Version 0.9.0: Home Assistant Integration & Hierarchical Navigation

This release introduces a major milestone: native two-way communication with Home Assistant, allowing Astrion to seamlessly expose its activities and version info to HA as native entities. It also adds hierarchical page navigation, a brand new SelectCard, and several key usability improvements.

:glowing_star: Major Additions & Dedicated Home Assistant Custom Component Support

  • Dedicated Home Assistant Custom Component Integration:

    • New HTTP Endpoints (ConfigServer): Added GET /activities, GET /activities/active, POST /activities/start, POST /activities/stop, and GET /version.

    • Companion Integration Ready: Built specifically to drive the companion Home Assistant custom integration, exposing entities like sensor.active_activity_<room>, select.activity_<room>, and an update.app_update entity that tracks GitHub releases.

    • Any third-party controller capable of plain HTTP can now query, start, and stop Astrion’s activities remotely.

  • Activity Stop Control & Direct UI Management:

    • stopActivity(room): The missing counterpart to switchActivity() and startActivity(). Safely turns off composed activities via individual power-off commands or targets a specific Harmony Hub’s active session without affecting other rooms sharing the same hub.

    • Active Activities Overlay Updates: Each active activity row now features a dedicated “Stop” button (ArrĂŞter), letting you end a running activity directly from the list.

  • Hierarchical Pages & Smarter Navigation:

    • Parent-Child Pages: PageConfig now supports an optional parent property, allowing pages to be organized into a clean navigation tree instead of a flat list.

    • Hardware BACK & Chevron Support: Pressing the physical BACK key now navigates back to the current page’s parent (unless a page-specific hotkey intercepts it, such as an Apple TV Menu button). Child pages also display a ‹ ParentName visual chevron on-screen.

    • Page Indicator Rework: Indicator dots now represent only page siblings (capped at 5 with a truncation …) to prevent large dashboards from cluttering the screen.

    • Builder Support: The page settings dialog includes a parent selector with loop protection, automatic cascade renaming for children, and ↳ prefixing in the preview tab strip.

  • New SelectCard ("type": "select"):

    • Tailor-made card for any input_select.* or select.* entity (e.g., choosing between “TV” and “Projector” for a room’s video output).

    • Adapts Home Assistant’s Mushroom select card design with 3 layout variants (default, horizontal, vertical) and dynamic option pickers. Fully supported in the Builder with a live preview mode (SELECT_MOCK).

:bug: Bug Fixes & Changes

  • Debug Toasts Disabled: MainActivity.DEBUG_KEYS has been switched to false, removing on-screen “Unmapped key: N” Toast notifications when pressing unbound remote buttons (they remain safely logged to adb logcat for debugging).

:link: Links & Code


:rocket: Astrion - Version 1.0.0: Major Milestone Release & Customization Overhaul

We are thrilled to announce Astrion v1.0.0, a massive milestone packed with visual customization, powerful new card types (including a fully-fledged Camera card), hardware hotkey expansions, and huge improvements to the web editor.

A special thank you to our amazing community contributors @ClemsonJeeper, @dskudrin, and @bilbon0bud for their incredible code contributions, testing, and documentation that made this release possible! :raising_hands:

:glowing_star: What’s New

  • scene_grid Icon Fill Mode: New optional icon_fill: true scales icons to fill the tile’s full height (ContentScale.FillHeight) instead of the default fitted size—ideal for icon-only grids (show_labels: false), complete with web editor support and live preview ( by ClemsonJeeper).

  • Live HA Entity Data in Web Editor Previews: Editor card previews (/builder/) now render with real states, names, and attributes fetched straight from Home Assistant via a new /ha-states endpoint (with automatic mock fallbacks when offline or on GitHub Pages). Entity ID fields also feature live autocomplete ( by ClemsonJeeper).

  • Getting Started Guide: New GETTING_STARTED.md walkthrough covering first-time setup for the Sanytron Astrion HA100—from enabling ADB to connecting Home Assistant, loading dashboard.json, troubleshooting, and updating ( by dskudrin).

  • Configurable Room-Clean Service (VacuumCard): Added options.room_clean_action to let cards call any custom domain/service (like Dreame integrations) instead of being hardcoded to Roborock/Xiaomi commands.

  • New Hardware Button Actions:

    • Bind a remote button to open overlays directly (openOverlay: "settings" or "activities").

    • Jump straight to the active activity page of a specific room (openCurrentActivityRoom: "<room>").

    • Configurable “return to parent” button (parentKey) for hierarchical child pages.

  • New Camera Card: Display Home Assistant camera.* feeds in live MJPEG stream mode (with automatic snapshot fallback) or interval-refreshed snapshot-only mode. Tapping opens a fullscreen viewer with pinch-to-zoom (1x–8x) and pan without interrupting streams ( by ClemsonJeeper).

  • Configurable Theme Colors: Customize the entire app palette (12 semantic tokens) via dashboard.json or visually in the web editor’s new “Theme & Colors” section without touching JSON ( by ClemsonJeeper).

  • Editor Improvements: Drag-to-reorder page tabs in the web editor and non-blocking auto-dismissing toast notifications for save confirmations ( by ClemsonJeeper).

  • Fan Card “Step” Style: New "style": "step" layout for discrete speed level fans, utilizing dedicated -/+ steppers calling fan.increase_speed/decrease_speed directly.

:bug: Key Bug Fixes & Internal Improvements

  • Activity Wizard Fix: Fixed a bug where adding a Harmony device silently failed because the picker container wiped out the add button (reported by bilbon0bud).

  • Theme Contrast Fixes: Restored proper button and icon contrast on CoverCard, LightCard, and MediaPlayerCard by switching their background tokens to theme.cardSurface.

  • HA Client & Server Updates: Added an un-timed-out HTTP client for MJPEG streaming, a proxy endpoint (/camera-snapshot) for the web editor, and a battery wall tablet status endpoint (/battery) for the companion Home Assistant integration.

:link: Links & Code

Feel free to test it, share your feedback, or contribute!

1 Like

I’ve been using and testing Astrion Custom Dashboard for a while now, and I wanted to add some real-world feedback to this thread.

What impressed me most is how quickly this project has grown. It started as an alternative UI with direct Harmony/IR control, but in a very short time it has developed into something much bigger: Activities, hierarchical pages, hardware key configuration, Home Assistant integration, device cards, remote page control, local configuration, and many other features.

In my installation, Astrion is gradually becoming the main user interface for the AV system.

My existing system is based on RTI. I have an RTI processor and several RTI handheld remotes. The interesting part is that I am now starting to replace the RTI remotes with Astrion units, while keeping the RTI processor.

This hybrid approach works very well for me. Astrion becomes the modern, fast and flexible user interface, while the RTI processor remains in the background as an AV control engine for equipment that still needs RS-232 and other reliable low-level control.

Home Assistant acts as another important part of the system and connects the different layers together. For example, I already use the Astrion Home Assistant integration to automatically open the intercom page on the remote when someone calls. Activities on Astrion can also trigger the rest of the AV logic.

So for me this project is no longer just an alternative dashboard. The remote is becoming the control center of the AV system, while the existing professional automation hardware can remain where it still makes sense.

I think this is one of the strongest aspects of Astrion: you don’t necessarily have to replace your entire control system. You can modernize the part you interact with every day — the remote itself — and integrate it with Home Assistant, Harmony, existing processors and other equipment.

Development has been extremely fast, and the project is already much more capable than when I first started testing it. I’m very interested to see where it goes next.

Thanks for making the project open and for responding so quickly to feedback from actual users.

1 Like

This is a really interesting milestone for the project — and honestly, dskudrin’s RTI + Home Assistant + Astrion setup highlights something I think is bigger than just an “alternative dashboard.”

I agree that Astrion doesn’t necessarily need to replace the systems people already have.

An RTI processor can remain the control engine.
Home Assistant can remain the automation and integration layer.
Harmony can remain useful for legacy devices.

And Astrion can become the interface layer that people actually interact with every day.

That is a very different model from the traditional universal remote:

Remote → Device → Command

Instead, we’re starting to see something more like:

Human → Astrion → Interface / Intent → HA / Automation → Control Systems → Devices

And the fact that the community is independently building different pieces of this — Harmonium, Custom Dashboard, HA integrations, Harmony/IR integrations, hardware button mapping, etc. — is particularly exciting to us.

We’re not expecting Sanytron to build every possible experience.

Quite the opposite.

If Astrion becomes a physical interface that people can build on, connect to, customize and extend, the community will inevitably discover use cases that we never anticipated.

Aurelien’s project is a great example of that.

And dskudrin’s comment about gradually replacing RTI handheld remotes while keeping the RTI processor is probably one of the clearest examples I’ve seen so far of where this can go:

You don’t necessarily need to replace the intelligence or control infrastructure in a home. You can modernize the interface people use to access it.

That’s a very powerful idea.

So thank you both for pushing this forward — and especially for sharing the real-world architecture rather than just a feature list.

We’re watching this very closely.

Maybe the future of Astrion isn’t about becoming the one remote that controls everything.

Maybe it’s about becoming the physical interface through which everything can be experienced.

2 Likes

It has now been nearly a month since I received my remote control, and releases have been coming out thick and fast. Version 1.0.0 launched just a week ago, and I’ve been working tirelessly on the project ever since. I decided to introduce a beta version: going forward, official releases will be less frequent, but beta versions will be updated regularly to add new features or fixes. We’ve released a new version every single day this week!

I want to highlight this because—as you’ve surely noticed—@ClemsonJeeper is playing a major role in improving the app. There are now two of us working on development! We also have two very active contributors handling testing and feature suggestions: @dskudrin and @bilbon0bud. Until now, we’ve handled everything via GitHub, which isn’t ideal for free-flowing discussion. So, I’ve set up a Discord server! If you’d like to join us, send me an email and I’ll send you an invitation.

:rocket: Release: v1.0.7 Beta: Instant Sync, Plex Overhaul & Performance Tuning

We are excited to roll out Astrion v1.0.7 Beta, bringing instant Home Assistant webhook syncing, a completely overhauled Plex card experience, a generic media player browser.

:glowing_star: What’s New

  • Instant Push Sync to Home Assistant: Replaces polling with real-time webhooks via an optional ha_webhook_id setting, updating active activity entities and pages the moment they change instead of on a timer.

  • Plex Card Overhaul & Detail Views: Features a dedicated web editor form, splits “Recently Added” into Movies and TV rows, and introduces a long-press library browser (PlexLibraryDialog) alongside a rich detail view with season/episode navigation (PlexDetailDialog).

  • Media Player Browse Button: Wires up a generic folder navigator (MediaBrowser) for any Home Assistant integration supporting browse_media (Sonos, Kodi, Chromecast, etc.) directly in the media player detail dialog.

  • “Find My Remote” Ring Endpoints: Adds POST /ring and POST /ring/stop on the local config server to play a customizable looping alarm sound at a chosen volume for locating misplaced tablets by ear.

  • Localized UI Strings: Resolves hardcoded French strings across settings menus, update rows, connection banners, and media cards by adding 28 new strings with English/French localization via navigator.language ( by ClemsonJeeper).

  • “HA remote command” Hotkey Action: Dedicated hotkey action for remote.send_command using entity command lists or built-in Android TV keymaps with autocomplete ( by ClemsonJeeper).

  • Tap Feedback Sound: Plays the system touch sound (Effect_Tick.ogg) on tappable elements and hardware button presses, toggleable via a new Settings switch ( by ClemsonJeeper).

  • Local Beta Push & In-App Updates: New push-beta.ps1 script for rolling pre-releases (dev-latest), alongside an in-app update indicator in the Settings panel for official and beta builds.

:bug: Key Bug Fixes & Internal Improvements

  • Performance & Memory Optimizations: Reduced scroll lag and bitmap memory on low-resource hardware by switching dashboards to LazyColumn, downsampling oversized icons and camera streams, and gating vacuum/camera rendering on screen-on state ( by ClemsonJeeper).

  • Motion-Wake & Screen-Off Fixes: Rewrote the accelerometer wake detector to use gravity-referencing to eliminate false triggers, added a keep-awake hold for in-hand use, and introduced an optional “Keep Wi-Fi awake” switch (WifiLock) to prevent HA disconnects while the screen is off ( by ClemsonJeeper).

  • Slider & Media Fixes: Fixed light and cover sliders snapping back to stale values on release, resolved broken ISO-8601 offset parsing for media progress bars, and added track rebasing on seeks.

  • D-Pad & Focus Fixes: Restored D-pad focus and long-press-to-detail support for Light, Cover, and MediaPlayer tiles using combinedClickable and hardware key modifiers.

  • Editor & Hotkey Fixes: Fixed silently ignored openOverlay and openCurrentActivityRoom hotkey configurations in the parser and editor previews.

:rocket: Release: v1.1.0

:mobile_phone: Devices Catalog & Hub Redesign
• Rebuilt the root URL (/) into a proper “add a device” hub, replacing the old single server-rendered form with a hero layout and four dedicated category tiles (Home Assistant, Harmony, IR Devices, and an Apple TV placeholder). Each tile features a live device count and opens a dedicated list + “+ Add device” flow inspired by Home Assistant integrations.

:globe_with_meridians: Unified Single-Page App Architecture
• Replaced ConfigServer.kt’s old serveForm() string output with two static single-page apps served from assets/docs/: devices.html (the new hub) and index.html (the dashboard builder). Both now share a unified routing path (serveDocsAsset()), allowing any new asset dropped into the folder to be served automatically.

:house_with_garden: Live Home Assistant Catalog Picker
• Cards referencing HA entities no longer require a free-typed entity_id. Users can pick a domain and a live entity directly on the Devices page. Names are pre-filled using HA’s friendly_name (editable) and stored in a new haDevices array inside dashboard.json. Added a GET /devices-config endpoint to pre-fill edit forms.

:puzzle_piece: Smart Catalog Retrocompatibility
• When editing an older or hand-modified dashboard containing an entity_id not present in the new catalog, the web builder automatically injects a “(not in catalog)” option. This ensures old values round-trip perfectly without silently blanking the field.

:gear: Aggressive Cache Control
• Added Cache-Control: no-cache, no-store, must-revalidate headers to every docs/ asset response. This forces browsers to drop old assets on app updates, eliminating elusive bugs caused by a stale .js file mismatched with a fresh .html wrapper.

:battery: Docked Charging Screen & Auto-Dimming
• Replaces the dashboard with a clean, low-power charging display showing a large battery percentage and a pulsing glyph when docked. The screen automatically dims to near-zero brightness after 15 seconds of inactivity and restores instantly upon touch, pickup, or unplugging.

:electric_plug: Hardware-Aware Dock Detection
• Leverages string literal representations of hidden AOSP intent constants (ACTION_USB_STATE) to check UsbManager data connectivity. Because the hardware charging dock features power-only pins with no data lines, the app accurately distinguishes a dock connection (no USB data) from a PC development cable connection (active USB data).

:building_construction: Architecture Refactoring (ChargeDockMonitor)
• Extracted charging state detection and the dim timer into ChargeDockMonitor.kt to prevent MainActivity.kt from triggering detekt’s LargeClass warning. Shifted touch detection to MainActivity.kt’s native onUserInteraction() hook, bypassing the need for separate touch listeners.

:artist_palette: Shared UI Theme & Localization
• Implemented the new charging layout via ChargingScreen.kt using the existing ProvideTheme/LocalTheme design system. The underlying state engine (rememberBatteryState()) and vector graphics (batteryGlyph()) are now shared with Topstatusbar.kt instead of being duplicated. Added French translation strings (values-fr/).

:television: On-Device IR Code Resolution
• Replaced the heavy pre-resolved {freq, pattern} database tables embedded in dashboard.json with an on-device runtime resolver (IrDatabaseRuntime.kt). The app now parses Pronto codes into hardware patterns locally the first time a button is pressed, removing the need to re-flash dashboards when updating the database.

:high_voltage: Two-Level IR Cache & Legacy Support
• Implemented a two-level memory cache (parsed category JSON files + resolved command steps) to eliminate repeat disk reads and math overhead during rapid button presses. Legacy dashboards with inline-resolved commands remain fully supported via a new IrDeviceSource sealed class (Inline vs SdCardRef).

:hammer_and_wrench: Upgraded Web Editor IR Inputs
• Removed the old bundled IR catalog assets from the APK wrapper. The web builder’s “Add IR device” panel now features two distinct modes (Manual Pronto paste or External ir-database reference). Grid tile fields (giIrCommand) and Activity wizard macro fields now utilize free-text inputs with <datalist> suggestions since the live command schema is resolved on the remote at runtime.

:open_file_folder: Local IR File Management
• Added an “IR devices” management panel to the local configuration page next to Icons. Users can upload curated <category>.json files directly to /sdcard/astrion/ir-database/ via a new validated POST /ir-database endpoint, removing the need for manual ADB or file-explorer copying.

:crystal_ball: Coming Soon / Roadmap:

:satellite_antenna: ESPHome IR Extender Support
• Native compatibility coming for budget-friendly MQTT/Tasmota/ESPHome hardware (like the popular ESP8285 IR remotes found online for under $10/10€) to blast IR codes anywhere in your house via Wi-Fi.

:television: Direct Media Control
• Direct integration for Apple TV and Chromecast protocol controls built straight into the remote’s native core without requiring external middleman hubs.

:speaking_head: Voice Recognition
• On-device voice control support to launch activities, trigger scripts, and control your smart home completely hands-free.

:rocket: Incoming Hardware: Astrion IR Extender (Will only work with Astrion Custom Dashboard)
!Hey everyone! I wanted to share a sneak peek at what’s cooking next: the Astrion IR Extender! If you have gear hidden away inside closed cabinets, behind a TV, or anywhere your remote’s built-in blaster can’t hit in a straight line, this little network-connected accessory has you covered. It takes commands over WiFi from the dashboard app and fires the real IR signal right where it needs to be. Key Highlights:Fully Standalone: No Home Assistant, no cloud, and no account required—the app talks to it directly over your local network. Dual Hardware Support: Built for cheap, low-cost modules like generic ESP8285 / ESP8266 (“Tasmota IR remote” style) and Beken BK7231N (CBU) blasters. Easy Provisioning: Captive portal setup on first boot, mDNS discovery, and a clean POST /pronto HTTP API endpoint for direct raw code transmission. Hardware bring-up and repository docs are already live, and the app-side device discovery/integration screen is coming soon! Stay tuned!

:satellite: Astrion IR Extender Repository: GitHub - astrion-ir-extender
Documentation, firmware binaries (ESP8285 & Beken BK7231N), and flashing guides for the standalone network IR blaster.

Congrats on the progress and providing an alt option.

Any plans to include Spotify/music assistant in the near future?

I think we can add that to the to-do list. Did you have a standalone setup in mind, or something that runs through Home Assistant?

1 Like