{"id":31397656,"url":"https://github.com/dsackr/dash480","last_synced_at":"2026-04-21T05:32:51.598Z","repository":{"id":314551534,"uuid":"1055955370","full_name":"dsackr/dash480","owner":"dsackr","description":"Home Assistant integration for Dash480 (openHASP 480×480 panel). Tile layouts, popups, and page management via MQTT.","archived":false,"fork":false,"pushed_at":"2025-09-20T13:27:50.000Z","size":154,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-20T15:32:18.430Z","etag":null,"topics":["custom-integration","dashboard","hacs","home-assistant","mqtt","openhasp"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dsackr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-13T05:29:23.000Z","updated_at":"2025-09-20T13:27:53.000Z","dependencies_parsed_at":"2025-09-13T07:18:57.213Z","dependency_job_id":"f2722a14-e9a6-406d-8e88-799daf21fda1","html_url":"https://github.com/dsackr/dash480","commit_stats":null,"previous_names":["dsackr/dash480"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/dsackr/dash480","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsackr%2Fdash480","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsackr%2Fdash480/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsackr%2Fdash480/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsackr%2Fdash480/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dsackr","download_url":"https://codeload.github.com/dsackr/dash480/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dsackr%2Fdash480/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277526755,"owners_count":25833447,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-29T02:00:09.175Z","response_time":84,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["custom-integration","dashboard","hacs","home-assistant","mqtt","openhasp"],"created_at":"2025-09-29T14:00:07.962Z","updated_at":"2025-09-29T14:00:12.285Z","avatar_url":"https://github.com/dsackr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dash480 Custom Integration for Home Assistant\n\nThis custom integration provides seamless integration for an openHASP 480×480 panel (\"Dash480\") with Home Assistant. It provisions the screen layout over MQTT and exposes convenient config entities in HA to manage pages, tiles, and header content.\n\n## Features\n\n- **Simple Setup**: Add a Panel, then add Pages from the Integrations UI.\n- **Header Controls**: Set Home Title and a Temp sensor for the header from HA.\n- **Relay Switches**: Three switches for onboard relays (optional, if wired).\n- **Popup Controls for Tiles**:\n  - Fans: tapping the fan tile opens a popup with Off/Low/Med/High.\n  - Color-capable lights: tapping the light tile opens a color popup (Off, Red, Green, Blue, Warm, Cool). The tile icon tint updates to the chosen color.\n  - Switches and non-color lights: simple on/off toggle.\n- **Add Entity Flow**: Create pages with a title only; then add entities later using a Page-level entity picker and an Add button.\n- **Automatic Layout Push**: When the device comes online (MQTT LWT), the current layout is pushed.\n\n## Prerequisites\n\n1.  **Home Assistant**: A running instance of Home Assistant.\n2.  **MQTT Broker**: An MQTT broker that is connected to your Home Assistant instance.\n3.  **openHASP Device**: An ESP32-S3 480×480 panel flashed with openHASP, connected to your network and MQTT.\n\n## Installation\n\n1.  **Copy the Integration Files**:\n    -   Navigate to the `dash480-py` project folder.\n    -   Copy the entire `custom_components/dash480` directory into the `custom_components` directory of your Home Assistant configuration folder.\n    -   If you do not have a `custom_components` directory, create it.\n\n2.  (Optional) **Install via HACS**:\n    - Add this repo as a custom repository in HACS (Integrations) and install \"Dash480\".\n    - Or install manually as below.\n\n3.  **Restart Home Assistant**:\n    -   To make Home Assistant recognize the new integration, you must restart it.\n    -   Go to **Developer Tools** \u003e **YAML** and click **Restart**.\n\n## Configuration\n\n1.  **Add the Integration**:\n    -   Go to **Settings** \u003e **Devices \u0026 Services**.\n    -   Click the **+ ADD INTEGRATION** button in the bottom right.\n    -   Search for **\"Dash480\"** and select it.\n\n2.  **Enter Node Name**:\n    -   A configuration wizard will appear.\n    -   You will be asked for the **Node Name**. This is the MQTT hostname of your openHASP device (e.g., `plate`).\n    -   Click **Submit**.\n\n3.  **Configure Header (Options)**:\n    - Go to **Settings** \u003e **Devices \u0026 Services** \u003e Dash480 panel \u003e **Configure**.\n    - Set:\n      - Home Title: center title in the header (defaults to node name).\n      - Temp Entity: sensor to show at top-right (optional).\n    - Save. The header will update; the full layout is pushed when the device comes online (MQTT LWT `online`).\n\n4.  **Device Creation**:\n    -   The integration will be added, and you will see a new \"Dash480\" device with its associated entities (relays and node name).\n\n## Usage\n\n### Add Pages\n\n1. After adding the Panel, add one or more Pages from Integrations → Dash480 → Add → Page.\n2. Page creation asks for: Panel, Page Order, and optional Title. No entities at creation time.\n\n### Add Entities to a Page\n\nOn the Page device in HA, use:\n\n- P{n} Title (text): sets the page title.\n- P{n} Add Entity (select): choose any switch, light, fan, or sensor in HA that isn’t already on the page.\n- Add Entity (button): assigns the selected entity to the first empty slot and refreshes the screen.\n- Publish Page (button): republish the current layout for all pages on this panel (useful if you’ve changed multiple slots).\n\nYou can still edit specific slots via the Page’s Configure dialog if needed, but the above flow is simpler for most cases.\n\n### On-Device Controls\n\n- Switches and non-color lights: tap to toggle on/off.\n- Fans: tap the fan tile to open a popup with Off/Low/Med/High. The selection sets fan percentage (0/33/66/100).\n- Color-capable lights: tap the tile to open color options (Off, Red, Green, Blue, Warm, Cool). Choosing a color turns the light on and tints the tile icon to match.\n- Brightness/preset rows under tiles have been removed in favor of popups.\n\n### Changing the Node Name\n\nOn the Dash480 panel device page, set Node Name if needed. This changes the MQTT topic prefix used by the integration; it does not change the device’s own hostname.\n\n### Physical Device Setup\n\nFor the relays to function, ensure you have configured the outputs in your openHASP device's web UI. The integration assumes the following mapping:\n\n-   **Group 1** controls Relay 1\n-   **Group 2** controls Relay 2\n-   **Group 3** controls Relay 3\n\n## How the layout is pushed\n\n- When the device publishes `hasp/\u003cnode\u003e/LWT` with payload `online`, the integration pushes a basic JSONL layout to `hasp/\u003cnode\u003e/command/jsonl`.\n- The layout is sent line-by-line (one JSON object per publish), which is compatible with openHASP’s JSONL command handling.\n\n## Publish controls\n\n- On the Panel device:\n  - Publish All: clears the device and publishes the header/footer and all pages.\n  - Publish Home: publishes only the header/footer and home relays.\n- On each Page device:\n  - Publish Page: republish all pages for the associated panel (handy after changing slots).\n\nTip: The Add Entity button already triggers a republish; you can use Publish Page to force a manual refresh any time.\n## Branding (Icons)\n\nThis repo includes SVG sources you can export to PNG for Home Assistant Brands:\n\n- `branding/icon.svg` → export as transparent `icon.png` 256×256 (and optional `icon@2x.png` 512×512)\n- `branding/logo.svg` → export as transparent `logo.png` 256×256 (and optional `logo@2x.png` 512×512)\n\nExport with Inkscape (example):\n\n```\ninkscape branding/icon.svg -w 256 -h 256 -o icon.png\ninkscape branding/logo.svg -w 256 -h 256 -o logo.png\n```\n\nSubmit to the Home Assistant Brands repo:\n\n- Fork https://github.com/home-assistant/brands\n- Add files under `custom_integrations/dash480/`: `icon.png`, `logo.png` (and optional `@2x` variants)\n- Open a PR; once merged, HA will display the icon/logo in Integrations and HACS.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsackr%2Fdash480","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdsackr%2Fdash480","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdsackr%2Fdash480/lists"}