Let a connector write, and publish strings bare
Two things stopped the engine commanding this house. ConnectorNode hardwired its node function to a no-op, so an input message reaching a connector was discarded and Art-Net's packet builder was unreachable; write() now carries the input ports, which is additive so the contract version holds. And the MQTT publisher JSON-encoded every payload, so "ON" went on the wire quoted and the devices on a shared broker, which speak bare values, ignored it. seed_house_control.py is the rig: a flow that drives the washing machine plug, a dimmer and a colour fixture over MQTT, carries the same two as DMX on an Art-Net node with transmit still off, and a dashboard to drive it by hand.
This commit is contained in:
+9
-3
@@ -73,9 +73,15 @@ external interfaces. See `docs/architecture/structure.canvas` → *Backend – M
|
||||
`connector-skeleton/`. The registry follows later
|
||||
- [x] First real connectors written against that contract from outside the engine:
|
||||
WF-RAC aircon, calendar, UniFi presence and Art-Net, in `connectors/`.
|
||||
Built by `make connectors` and installed into the image. Reading only for
|
||||
now — the aircon package cannot produce a command and Art-Net keeps its
|
||||
packets off the wire until `transmit` is switched on
|
||||
Built by `make connectors` and installed into the image. Three of the four
|
||||
read only; the aircon package still cannot produce a command
|
||||
- [x] The other direction of the contract: `ConnectorNode.write` receives the
|
||||
node's input ports, so a connector can command something rather than only
|
||||
read it. Additive, so `CONTRACT_VERSION` stays at 1 — before this the base
|
||||
class discarded every message reaching a connector, which made `artnet`'s
|
||||
packet builder unreachable. Art-Net now sends: a per-port `channels` map
|
||||
puts each input on its own DMX channel, `transmit` still gates the socket,
|
||||
and one node owns one universe because a frame carries all 512 levels
|
||||
- [x] Node lifecycle as a protocol (`start`/`stop`/`report_health` on `Node`),
|
||||
replacing the controller's per-type isinstance chains — the same hooks a
|
||||
connector implements, validated on the built-in nodes first
|
||||
|
||||
Reference in New Issue
Block a user