mqtt.py
Standalone MQTT adapter for the HA=1 staging agent.
Overview
Standalone MQTT adapter for the HA=1 staging agent.
The parser and serial session do not import this module. MQTT remains an agent transport, with the current discovery and state topics kept stable.
depends on config.py models.py · used by __init__.py agent.py
API
Cclass MqttError(RuntimeError)
An MQTT error that intentionally omits broker and secret values.
MqttPublisher.__init__, MqttPublisher._publish, MqttPublisher.close, MqttPublisher.start, _default_client_factory, resolve_passwordCclass MqttClient(Protocol)
The small paho client surface needed by the standalone adapter.
Fdiscovery_payloads(node: str, model: str=DEFAULT_MODEL) -> list[tuple[str, dict[str, object]]]
Return the legacy MQTT Discovery contract for one configured device.
MqttPublisher._announceFresolve_password(config: MqttConfig, environment: Optional[dict[str, str]]=None) -> str
Resolve exactly one configured password reference without logging its value.
MqttPublisher.start · calls MqttErrorF_expanded_path(value: str) -> str
Return a user-facing configured path without requiring an absolute home path.
MqttPublisher.startF_default_client_factory() -> MqttClient
Create and return a paho-mqtt Client instance; raise MqttError if the paho-mqtt package is not installed.
MqttErrorCclass MqttPublisher
Publish discovery, availability, distance, and access observations.
FMqttPublisher.__init__(self, config: MqttConfig, node: str, *, client_factory: Callable[[], MqttClient]=_default_client_factory, environment: Optional[dict[str, str]]=None) -> None
Initialize an MqttPublisher with a configuration, node name, and optional client factory and environment variables; validate that TLS or explicit insecure opt-in is set, that certificate and key are both present or both absent, and that authentication is configured (username, certificate, or anonymous opt-in).
MqttErrorFMqttPublisher.status_topic(self) -> str
Return the MQTT topic path for status messages scoped to this node.
FMqttPublisher.start(self) -> None
Connect securely, then announce retained discovery and availability.
MqttClient.connect, MqttClient.disconnect, MqttClient.loop_start, MqttClient.loop_stop, MqttClient.reconnect_delay_set, MqttClient.tls_insecure_set, MqttClient.tls_set, MqttClient.username_pw_setFMqttPublisher.publish_distance(self, reading: DistanceReading) -> None
Publish a fresh distance sample without retaining it.
MqttPublisher._publishFMqttPublisher.publish_access(self, event: AccessEvent) -> None
Publish a credential-independent access event without retaining it.
MqttPublisher._publishFMqttPublisher._announce(self) -> None
Publish retained discovery and online availability once per connection.
MqttPublisher._on_connect · calls MqttClient.publish, discovery_payloadsFMqttPublisher._on_connect(self, client: MqttClient, _userdata: object, _flags: object, reason_code: object, *_: object) -> None
Re-announce retained discovery after paho reconnects in its loop thread.
MqttPublisher._announceFMqttPublisher._on_disconnect(self, client: MqttClient, *_: object) -> None
Allow the next successful connection to refresh retained state.
FMqttPublisher.close(self) -> None
Publish offline availability before stopping the broker loop.
MqttClient.disconnect, MqttClient.loop_stop, MqttClient.publish, MqttErrorUndocumented (11)
MqttClient.username_pw_set, MqttClient.tls_set, MqttClient.tls_insecure_set, MqttClient.will_set, MqttClient.connect, MqttClient.loop_start, MqttClient.reconnect_delay_set, MqttClient.loop_stop, MqttClient.disconnect, MqttClient.publish, MqttPublisher._publish