Lighting Automation/Control Software

From Nottinghack Wiki
Jump to navigation Jump to search

First thing is to establish the command protocol to use with mqtt topics and payloads.

This is based around posible commands we want to issue.
There is a total of 11 rooms and 17 zones.
The Workshop, Stuido, and Comfy Area have multiple zones.
There will be times when we want to change all zones in these rooms, also time when we might want to act on multiple rooms.
An 'All Off' button for the workshop should include the electronics bench, an 'All off' for the Stuido should include the Comfy Area?
Master all off from the last man switch should be all but the hall

Switch panels should not care about current state and should just send 'toggle' state commands per zone, except for posible all off/on buttons
Special function scripts form holly may want to set certain states, these will not matter about current state but would be setiing a defined on/off.
Control box firmware will be responsible for sending out retained STATE messages after it has switched any zone, 0 (all) zones may/may-not have state,
The two big switch panels are using state to change LED's and any script on Holly can you state's as needed
By using retained state MQTT messages any new client or reconnecting client subscribing to nh/li/sate/# will be feed the state of all current zone's

Internally the control box firmware will have to track state of each zone it's in charge of.

Posible commands

  • ON
  • OFF
  • TOGGLE

Posible State

  • ON
  • OFF

Rooms And zones
if no zone listed use 1
Controller 1

  • Workshop
    • 0 (all)
    • 1 (wood working)
    • 2 (Cnc's)
    • 3 (metal working
    • 4 (bike)
  • Electronics
  • Textiles
  • Toilets

Controller 2

  • Kitchen
  • Blue
  • Storage
  • Box
  • Hall
  • Studio
    • 0 (all)
    • 1 (walk way)
    • 2 (middle)
    • 3 (far side)
  • Comfy
    • 0 (all)
    • 1 (walk way)
    • 2 (seating)
Topic Description Notes
nh/li/set/ROOM/ZONE Lighting Command ROOM(lowercase) is one of the pre defined rooms ZONE within a ROOM and payload is COMMAND(uppercase)
nh/li/state/ROOM/ZONE Lighting State Retained Topic! ROOM(lowercase) is one of the pre defined rooms ZONE within a ROOM and payload is Curent STATE(uppercase)


LLAP Protocol

MattrixMQTT automatically converts all LLAP messages in the Hackspace to MQTT
To keep thing simple I intend to use the LLAP Button firmware as detailed Here
As we are just looking for basic push button we can use TYP0 mode, this sends ayyBUTTONA-- or ayyBUTTONB-- on a debounced button press
MatrixMQTT needs updating to ACK messages so we don't get 5 at once, or adjust retires to 0.

Each XRF can be given its own DEVID, here is a map table of DEVID/button to zone's

DEVID Button Room/zone
N1 A Textiles/1
N1 B Not used
N2 A Toilet/1
N2 B Kitchen/1
N3 A Blue/1
N3 B Not Used
N4 A Storage/1
N4 B Box/1