HomematicIP Local Frontend

April 8, 2026 · View on GitHub

License: MIT

A monorepo containing shared frontend libraries, custom Lovelace cards, and the configuration panel for the HomematicIP Local Home Assistant integration.

All cards and the config panel are delivered directly through the integration — no separate HACS installation required.

Packages

PackageVersionDescription
@hmip/schedule-core1.0.0Shared schedule logic, types, adapters, localization, and utilities
@hmip/schedule-ui1.0.0Shared Lit web components for schedule editing
@hmip/panel-api1.0.0Shared WebSocket API client (types and functions for all endpoints)
@hmip/climate-schedule-card0.10.0Lovelace card for thermostat schedule editing
@hmip/schedule-card0.1.0Lovelace card for device schedule editing (switches, lights, covers, valves)
@hmip/status-card0.1.0Lovelace cards for system health, device status, and messages
@hmip/config-panel1.0.0Integration config panel for device configuration, paramset editing, and linking

Cards

All cards are automatically available once the HomematicIP Local integration is loaded. They appear in the Lovelace card picker.

Climate Schedule Card

Visual week schedule display with color-coded temperature blocks for thermostat schedules.

  • Profile switching with active profile indicator
  • Inline editor for time slots and temperatures
  • Copy/paste and import/export schedules
  • Undo/redo support
type: custom:homematicip-local-climate-schedule-card
entities:
  - entity: climate.living_room
    name: "Living Room"
    profile_names:
      P1: "Comfort"
      P2: "Eco"
  - climate.bedroom
OptionTypeDefaultDescription
entitystringSingle climate entity (legacy)
entitiesstring[] or arrayList of climate entities
namestringEntity nameCustom card title
profilestringActive profileForce specific profile
show_profile_selectorbooleantrueShow profile dropdown
editablebooleantrueEnable editing
show_temperaturebooleantrueShow temperature values on blocks
show_gradientbooleanfalseShow color gradient between temperatures
temperature_unitstring°CTemperature unit
hour_formatstring2412 or 24 hour format
languagestringAuto-detectForce language: en or de

Schedule Card

Event-based device schedules for switches, lights, covers, and valves.

  • Fixed time and astronomical triggers (sunrise/sunset with offsets)
  • Category-specific UI (on/off, dimming, position + slat)
  • Duration and ramp time configuration
type: custom:homematicip-local-schedule-card
entities:
  - sensor.living_room_schedule
  - sensor.bedroom_schedule
editable: true
hour_format: "24"
OptionTypeDefaultDescription
entitystringSingle entity ID
entitiesstring[]List of entity IDs
namestringEntity nameCustom card title
editablebooleantrueEnable editing
hour_formatstring2412 or 24 hour format
languagestringAuto-detectForce language: en or de

Status Cards

Three monitoring cards bundled in one package:

System Health Card (homematicip-system-health-card)

  • Health score, device statistics (total/unreachable/firmware updates)
  • Duty Cycle and Carrier Sense levels per radio module/HAP/LAN gateway
  • Optional incidents list with adaptive polling

Device Status Card (homematicip-device-status-card)

  • Device status overview with problem highlighting
  • Filtering: all, problems, unreachable, low battery, config pending

Messages Card (homematicip-messages-card)

  • Service messages and alarm messages with acknowledge buttons

All status cards require an entry_id (selectable via dropdown in the editor).

Installation

Cards are automatically registered when the HomematicIP Local integration starts. No manual resource configuration needed.

Migrating from standalone HACS cards: If you previously installed the climate or schedule card via HACS, the integration-bundled version detects this and shows a console warning. Remove the HACS card resource at your convenience — both versions coexist without conflicts.

Requirements

Development

Prerequisites

  • Node.js 20.x or 22.x
  • npm

Setup

npm install

Commands

npm run build         # Build all packages
npm run build:core    # Build only schedule-core
npm run build:ui      # Build only schedule-ui
npm test              # Run all tests
npm run lint          # ESLint
npm run lint:fix      # ESLint with auto-fix
npm run format        # Prettier formatting
npm run type-check    # TypeScript validation
npm run validate      # All checks: lint + type-check + test + build

Watch Mode

npm run watch -w packages/climate-schedule-card
npm run watch -w packages/schedule-card
npm run watch -w packages/status-card
npm run watch -w packages/config-panel

Pre-commit Hooks

Husky + lint-staged automatically run on commit:

  • ESLint with auto-fix on .ts files
  • Prettier formatting on .ts, .js, .json, .md files

Release & Deployment

All frontend packages are deployed to the integration's frontend/ directory. The integration registers them on startup.

Repository Architecture

homematicip-local-frontend (this repo)      ← Development & build

        │  npm run deploy:integration


homematicip_local/custom_components/homematicip_local/frontend/
├── homematic-config.js                     ← Config panel
├── homematicip-local-climate-schedule-card.js  ← Climate card
├── homematicip-local-schedule-card.js      ← Schedule card
└── homematicip-local-status-card.js        ← Status cards

Deployment Commands

CommandDescription
npm run deploy:integrationDeploy all integration-bundled packages
npm run deploy:climateDeploy climate schedule card
npm run deploy:scheduleDeploy schedule card
npm run deploy:config-panelDeploy config panel
npm run deploy:status-cardDeploy status cards
npm run deploy:allDeploy all packages
npm run release:climateFull release: validate, build, deploy, tag
npm run release:scheduleFull release for schedule card
npm run release:config-panelFull release for config panel
npm run release:status-cardFull release for status cards
npm run release:<pkg>:dryDry-run release (no changes)
npm run version:<pkg> -- <bump>Bump version (patch/minor/major)

Release Workflow

# 1. Bump version
npm run version:climate -- patch

# 2. Commit version bump
git add -A && git commit -m "Bump climate-schedule-card to 0.10.1"

# 3. Run full release (validate → build → deploy → tag)
npm run release:climate

# 4. Push monorepo tag
git push origin climate-v0.10.1

CI/CD Workflows

WorkflowTriggerPurpose
ci.ymlPush/PR to main/develLint, type-check, test, build
release.ymlTag climate-v*, schedule-v*, config-panel-v*, status-card-v*Build and create GitHub release with artifact

Project Structure

homematicip-local-frontend/
├── packages/
│   ├── schedule-core/              # Shared logic, types, adapters, i18n
│   ├── schedule-ui/                # Shared Lit components for schedule editing
│   ├── panel-api/                  # Shared WebSocket API client
│   ├── climate-schedule-card/      # Climate schedule Lovelace card
│   ├── schedule-card/              # Device schedule Lovelace card
│   ├── status-card/                # System health, device status, messages cards
│   └── config-panel/               # Integration config panel
├── scripts/
│   ├── deploy.sh                   # Deploy built artifacts to integration
│   └── release.sh                  # Full release workflow
├── docs/
│   └── architecture.md             # Architecture documentation
├── .github/workflows/
│   ├── ci.yml                      # CI pipeline
│   └── release.yml                 # Release pipeline
├── tsconfig.base.json              # Shared TypeScript config
├── eslint.config.mjs               # ESLint 9 flat config
├── .prettierrc                     # Prettier config
└── jest.config.js                  # Root Jest config

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

For issues and questions, please use the GitHub Issues page.