Skip to content

v0.5.1

Latest

Choose a tag to compare

@3dg1luk43 3dg1luk43 released this 10 Jun 11:27
a5b9702

[0.5.1] – 2026-06-10

A feature + reliability release: a new cover widget (blinds / shades / garage doors, with tilt), a fix for the iOS MQTT client failing to connect to strict brokers, a data-freshness watchdog that recovers from a stuck backend, and a reworked dev/deploy workflow.

iOS App

New widget type

cover – Blinds, shades, RF shades, and garage doors (cover.* entities)

  • Controls adapt to the entity's supported_features by default: open/close are always shown; the stop button appears only when the cover supports it; a position slider appears for covers that report position; tilt buttons and a tilt slider appear when tilt is supported
  • Granular, orderable controls (cover_items): choose exactly which controls appear — open, close, stop, position, presets, tilt_open, tilt_close, tilt_slider — and their order (top→bottom in tall tiles, row sequence in wide tiles). The older coarse cover_controls (buttons/slider/presets/tilt) is still accepted and auto-expanded
  • Elastic layout: cover_layout (auto / horizontal / vertical) sets orientation. In vertical layout the position/tilt sliders render as upright sliders (full-height travel) beside a button column, so they stay usable in tall 1×N tiles
  • Tilt controls use drawn slat icons that take the button text color (render correctly on iOS 5.1, where the previous glyphs showed as empty squares, and stay visible on light tiles); the status readout is height-capped so controls aren't cramped
  • Position-preset buttons (position_presets, default 0 / 25 / 75 / 100) for one-tap positioning
  • Center label shows state (OPEN / CLOSED / OPENING / CLOSING) plus the current position percentage when available
  • protected: true requires a confirmation tap before open/close (recommended for garage doors); the stop button is never gated
  • Publishes open_cover / close_cover / stop_cover / set_cover_position and the tilt equivalents

MQTT connection reliability — fixed

  • Fixed a bug where the CONNECT packet could be silently truncated if the output stream was not yet writable the instant it opened, leaving strict brokers (e.g. mosquitto 2.x) waiting forever with no CONNACK (connect timeout). Outbound writes are now buffered and flushed as the socket accepts data
  • Added an MQTT 3.1 fallback option (Settings) for brokers/listeners pinned to the legacy protocol
  • Added Verbose MQTT log (Settings): logs the CONNECT summary (protocol, client-id, keepalive, credentials present, length) + a hex preview, byte counts, and a clearer timeout diagnostic
  • Keepalive is now configurable and the client-id is guaranteed non-empty/unique

Data-freshness watchdog

  • The app now tracks a backend heartbeat (and all inbound traffic) and forces a reconnect if data goes stale for ~90 s, recovering from a frozen-but-connected backend. Dormant unless the backend actually publishes heartbeats, so older integrations are unaffected

Home Assistant Integration

Cover support

  • Routes cover commands to the matching cover.* services (open_cover, close_cover, stop_cover, set_cover_position, and tilt variants)
  • Auto-injects attr_base for cover widgets; current_position, current_tilt_position, and supported_features are mirrored automatically

Freshness heartbeat

  • Publishes a retained per-device heartbeat to mqttdash/dev/<device_id>/heartbeat ({"ts":<unix>,"seq":<n>}) every ~30 s

Profile Editor

  • Added the Cover widget type: live canvas visualization (elastic, matching the iOS layout) plus a config panel to pick individual controls and reorder them (↑/↓), choose layout direction, edit position presets, and toggle protected

MQTT topics

  • New retained topic mqttdash/dev/<device_id>/heartbeat (HA → iPad), payload {"ts":<unix>,"seq":<n>}
  • Cover commands flow over mqttdash/cmd/cover.<object>; cover state/attributes mirror under mqttdash/statestream/cover/<object>/… (including current_position, current_tilt_position, supported_features)