{"id":50,"date":"2026-02-05T07:50:24","date_gmt":"2026-02-05T07:50:24","guid":{"rendered":"https:\/\/www.myuremote.com\/website\/?page_id=50"},"modified":"2026-02-05T07:54:37","modified_gmt":"2026-02-05T07:54:37","slug":"home-assistant-ui","status":"publish","type":"page","link":"https:\/\/www.myuremote.com\/website\/docs\/integrations\/home-assistant-ui\/","title":{"rendered":"Home Assistant UI"},"content":{"rendered":"\n<section style=\"max-width:1000px;margin:0 auto;padding:26px 18px;line-height:1.6;\">\n\n  <header style=\"margin-bottom:18px;\">\n    <h1 style=\"font-size:clamp(26px,4vw,38px);line-height:1.15;margin:0;\">\n      MyURemote \u2194 Home Assistant\n    <\/h1>\n    <p style=\"margin:10px 0 0 0;max-width:930px;\">\n      Official guide to control <strong>Home Assistant<\/strong> from <strong>MyURemote<\/strong>,\n      both via the <strong>Domotics page<\/strong> (UI &#038; feedback) and via <strong>Macro commands<\/strong>.\n    <\/p>\n  <\/header>\n\n  <!-- TOC -->\n  <section style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">Contents<\/h2>\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;\">\n      <a href=\"#concept\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>1.<\/strong> Concept\n      <\/a>\n      <a href=\"#why\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>2.<\/strong> Why MyURemote + Home Assistant\n      <\/a>\n      <a href=\"#requirements\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>3.<\/strong> Requirements\n      <\/a>\n      <a href=\"#token\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>4.<\/strong> Long-Lived Access Token\n      <\/a>\n      <a href=\"#naming\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>5.<\/strong> Naming Convention\n      <\/a>\n      <a href=\"#domotics\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>6.<\/strong> Domotics Page (UI &#038; Feedback)\n      <\/a>\n      <a href=\"#macros\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>7.<\/strong> Macros &#038; executeCommand()\n      <\/a>\n      <a href=\"#patterns\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>8.<\/strong> Common patterns\n      <\/a>\n      <a href=\"#troubleshooting\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>9.<\/strong> Troubleshooting\n      <\/a>\n      <a href=\"#pitfalls\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>10.<\/strong> Known pitfalls\n      <\/a>\n      <a href=\"#faq\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>11.<\/strong> FAQ\n      <\/a>\n      <a href=\"#changelog\" style=\"text-decoration:none;border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:10px 12px;display:block;\">\n        <strong>12.<\/strong> Changelog\n      <\/a>\n    <\/div>\n  <\/section>\n\n  <hr style=\"opacity:.25;margin:18px 0;\" \/>\n\n  <!-- 1 -->\n  <section id=\"concept\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">1. Concept<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      MyURemote acts as a local gateway. The Home Assistant extender communicates with Home Assistant using\n      raw HTTP requests over TCP (default <code>ip:8123<\/code>).\n    <\/p>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>The <strong>Domotics page<\/strong> uses polling to read states.<\/li>\n      <li><strong>Macros<\/strong> send a single command string.<\/li>\n      <li>The extender translates that string into Home Assistant service calls.<\/li>\n    <\/ul>\n    <p style=\"margin:10px 0 0 0;\">\n      <strong>Design goal:<\/strong> MyURemote stays generic and predictable, while Home Assistant remains the source of truth for logic and state.\n    <\/p>\n  <\/section>\n\n  <!-- 2 -->\n  <section id=\"why\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">2. Why MyURemote + Home Assistant<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      Home Assistant offers a huge ecosystem and powerful automation logic. MyURemote focuses on fast, AV-first control:\n      a consistent remote UI, zones\/inputs, and one-button macros. Together, they provide the best of both worlds.\n    <\/p>\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;\">\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>MyURemote does best<\/strong>\n        <ul style=\"margin:8px 0 0 18px;\">\n          <li>Remote UI &#038; AV navigation<\/li>\n          <li>Macros across protocols<\/li>\n          <li>Zones &#038; inputs (AV-first model)<\/li>\n        <\/ul>\n      <\/div>\n      <div style=\"border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;\">\n        <strong>Home Assistant does best<\/strong>\n        <ul style=\"margin:8px 0 0 18px;\">\n          <li>Entities &#038; state model<\/li>\n          <li>Automations &#038; scenes<\/li>\n          <li>Integration ecosystem<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- 3 -->\n  <section id=\"requirements\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">3. Requirements<\/h2>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>Home Assistant reachable on the local network.<\/li>\n      <li>A MyURemote device\/extender of type <code>homeassistant<\/code>.<\/li>\n      <li>Home Assistant entities created using the naming rules below.<\/li>\n    <\/ul>\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      Tip: use a fixed IP (DHCP reservation) for Home Assistant to avoid changing addresses.\n    <\/p>\n  <\/section>\n\n  <!-- 4 -->\n  <section id=\"token\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">4. Home Assistant Long-Lived Access Token<\/h2>\n    <ol style=\"margin:0 0 0 18px;\">\n      <li>Open the Home Assistant UI.<\/li>\n      <li>Click your <strong>profile<\/strong> (top right).<\/li>\n      <li>Go to <strong>Security<\/strong>.<\/li>\n      <li>Create a <strong>Long-Lived Access Token<\/strong>.<\/li>\n      <li>Copy the token.<\/li>\n      <li>Paste it into the MyURemote pairing dialog and save.<\/li>\n    <\/ol>\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      The token is stored as a MyURemote device parameter (<code>HAToken<\/code>).\n    <\/p>\n  <\/section>\n\n  <!-- 5 -->\n  <section id=\"naming\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">5. Naming Convention (very important)<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      MyURemote sends a single command string. The extender maps that string to the correct entity ID and service call.\n      Keep naming consistent (prefer lowercase, no spaces).\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">5.1 Lights<\/h3>\n    <pre style=\"background:#f6f7fb;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(0,0,0,.08);\"><code>MyURemote commands:\nlight_{room}_{n}_on\nlight_{room}_{n}_off\nlight_{room}_{n}_{level}pct\n\nHome Assistant entity:\nlight.light_{room}_{n}<\/code><\/pre>\n\n    <pre style=\"background:#f6f7fb;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(0,0,0,.08);\"><code>Examples:\nlight_living_1_on    \u2192 light.light_living_1\nlight_living_1_off   \u2192 light.light_living_1\nlight_living_1_50pct \u2192 light.light_living_1<\/code><\/pre>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">5.2 Screens \/ Curtains<\/h3>\n    <pre style=\"background:#f6f7fb;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(0,0,0,.08);\"><code>MyURemote commands:\nscreen_{room}_{n}_open\nscreen_{room}_{n}_close\n\nHome Assistant entity:\ncover.screen_{room}_{n}<\/code><\/pre>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">5.3 Scenes<\/h3>\n    <pre style=\"background:#f6f7fb;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(0,0,0,.08);\"><code>MyURemote commands:\nSCENE_FILM\nSCENE_AllOff\nSCENE_LEAVE\nSCENE_97\n\nHome Assistant entities:\nscene.film\nscene.alloff\nscene.leave\nscene.scene97<\/code><\/pre>\n  <\/section>\n\n  <!-- 6 -->\n  <section id=\"domotics\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">6. Domotics Page (UI &#038; Feedback)<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      On the MyURemote Domotics page you configure:\n    <\/p>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li><strong>Domotics Object<\/strong> (the HA entity ID)<\/li>\n      <li><strong>maxValue<\/strong> (defines how feedback is interpreted)<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">maxValue rules<\/h3>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li><code>1<\/code> \u2192 binary (on\/off, open\/close)<\/li>\n      <li><code>255<\/code> \u2192 dimmer (brightness)<\/li>\n      <li><code>100<\/code> \u2192 cover position<\/li>\n    <\/ul>\n\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      The extender polls Home Assistant using <code>GET \/api\/states\/{entity}<\/code> and converts the response to a MyURemote value.\n    <\/p>\n  <\/section>\n\n  <!-- 7 -->\n  <section id=\"macros\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">7. Macros &#038; executeCommand()<\/h2>\n    <p style=\"margin:0 0 10px 0;\">\n      A macro in MyURemote sends only a single command string. The Home Assistant extender interprets this string and executes\n      the correct Home Assistant service.\n    <\/p>\n    <pre style=\"background:#f6f7fb;padding:12px;border-radius:12px;overflow:auto;border:1px solid rgba(0,0,0,.08);\"><code>\/\/ Examples of executed HA services\n\nlight.turn_on\nlight.turn_off\ncover.open_cover\ncover.close_cover\nscene.turn_on<\/code><\/pre>\n    <p style=\"margin:10px 0 0 0;opacity:.75;\">\n      This design keeps MyURemote generic, while Home Assistant handles all automation logic.\n    <\/p>\n  <\/section>\n\n  <!-- 8 -->\n  <section id=\"patterns\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">8. Common patterns (practical)<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">8.1 \u201cMovie\u201d button (AV + lights + scene)<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Switch AV to the right input (receiver\/TV control).<\/li>\n      <li>Trigger a Home Assistant scene (lights, blinds, etc.).<\/li>\n    <\/ul>\n    <p style=\"margin:0;opacity:.75;\">\n      Tip: keep AV switching in MyURemote (fast remote UX) and keep home-automation logic in HA scenes (easy to maintain).\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">8.2 Dimmer presets<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      Use commands like <code>light_living_1_30pct<\/code> for quick presets. Set <code>maxValue=255<\/code> for dimmers.\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">8.3 Covers as binary buttons<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      For open\/close only: set <code>maxValue=1<\/code> and map to the correct <code>cover.*<\/code> entity.\n    <\/p>\n  <\/section>\n\n  <!-- 9 -->\n  <section id=\"troubleshooting\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">9. Troubleshooting<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">400 Bad Request<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Usually caused by double URL encoding.<\/li>\n      <li>Ensure raw HTTP is encoded only once.<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">No feedback in UI<\/h3>\n    <ul style=\"margin:0 0 10px 18px;\">\n      <li>Check polling is active.<\/li>\n      <li>Verify entity IDs in Home Assistant Developer Tools.<\/li>\n      <li>Verify <code>maxValue<\/code>.<\/li>\n    <\/ul>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Token issues (401\/403)<\/h3>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>Ensure the token is correct and not revoked.<\/li>\n      <li>Re-save the token if Home Assistant user permissions change.<\/li>\n      <li>Prefer using IP instead of hostname if DNS is unreliable.<\/li>\n    <\/ul>\n  <\/section>\n\n  <!-- 10 -->\n  <section id=\"pitfalls\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">10. Known pitfalls<\/h2>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li>Wrong entity domain (<code>light.<\/code> vs <code>switch.<\/code> vs <code>cover.<\/code>).<\/li>\n      <li>Mixed casing\/spaces in naming \u2192 breaks predictable mapping.<\/li>\n      <li>Reusing command names for different entities \u2192 ambiguity.<\/li>\n      <li>Network segmentation (VLANs\/firewalls) blocking access to <code>:8123<\/code>.<\/li>\n    <\/ul>\n  <\/section>\n\n  <!-- 11 -->\n  <section id=\"faq\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">11. FAQ<\/h2>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Do I need Home Assistant Cloud?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">No. This integration is designed for local network access.<\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Should I use scenes or individual commands?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      Prefer HA scenes for complex home-automation logic, and keep MyURemote macros focused on orchestration (AV + triggering HA).\n    <\/p>\n\n    <h3 style=\"margin:12px 0 8px 0;font-size:15px;\">Can I use both Domotics and macros?<\/h3>\n    <p style=\"margin:0;opacity:.75;\">\n      Yes. Domotics is best for UI feedback and interactive control. Macros are best for \u201cone button\u201d workflows.\n    <\/p>\n  <\/section>\n\n  <!-- 12 -->\n  <section id=\"changelog\" style=\"border:1px solid rgba(0,0,0,.15);border-radius:14px;padding:14px;margin:12px 0;\">\n    <h2 style=\"margin:0 0 10px 0;font-size:18px;\">12. Changelog<\/h2>\n    <ul style=\"margin:0 0 0 18px;\">\n      <li><strong>v2<\/strong> \u2013 Added contents, positioning section, common patterns, known pitfalls, expanded troubleshooting.<\/li>\n      <li><strong>v1<\/strong> \u2013 Initial integration guide.<\/li>\n    <\/ul>\n  <\/section>\n\n<\/section>\n\n","protected":false},"excerpt":{"rendered":"<p>MyURemote \u2194 Home Assistant Official guide to control Home Assistant from MyURemote, both via the Domotics page (UI &#038; feedback) and via Macro commands. Contents 1. Concept 2. Why MyURemote + Home Assistant 3. Requirements 4. Long-Lived Access Token 5. Naming Convention 6. Domotics Page (UI &#038; Feedback) 7. Macros &#038; executeCommand() 8. Common patterns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":28,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-50","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/50","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/comments?post=50"}],"version-history":[{"count":2,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/50\/revisions"}],"predecessor-version":[{"id":52,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/50\/revisions\/52"}],"up":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/28"}],"wp:attachment":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/media?parent=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}