Skip to content

Homie 5 compliance: convention-compliant base layer, eBus policy above it #91

Open

Description

@dcj

Goal: python-sdk's base Homie layer (ebus_sdk.homie: Device, Node, Property, Controller) is compliant with the Homie 5 convention on the wire and in its base semantics. eBus and SDK policy that goes beyond the convention lives in clearly labeled higher-level methods, documented as such.

An audit of homie.py against the convention (2026-10-08, every finding independently verified) found about 35 distinct issues. Most are base-layer defects visible to any Homie 5 controller, not deliberate extensions. The phases below group them; each phase issue lists its items with convention citations.

Policies for this work:

  • Invalid producer input (ids, missing required $format, null description fields): warn in the next release, raise in the minor release after it.
  • $description version: a content hash (an integer below 2^53, SHA-256 of the description excluding version). The convention requires a new version whenever the document changes and allows non-sequential values (convention.md:215). An unchanged description keeps its version across reconnects.
  • Effective state: the base Controller implements the convention's table (only a lost root overrides a child, convention.md:262-267). The wider cascade that span-hass and esp32-sdk rely on stays available under its current name, documented as an availability rule beyond Homie, and is proposed to the eBus specification.

Phases:

Related: electrification-bus/ebus-mqtt-client#24, exposing the MQTT retain flag to subscribers, needed by Phase 1.

Line numbers refer to homieiot/convention@7edc221.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions