MQTT Topics
This is the list of Wikipedia:MQTT Topics that are use by the various HackSpace Instrumentation projects.
All of these are available on holly, and most are available on JARVIS via an MQTT/mosquitto bridge.
All topics should be prefixed with "nh/"
STATUS
nh/status/req
All clients should subscribe to this topic and listen for the message "STATUS"
Clients should respond on nh/status/res with their name and status.
Three states
- Restart:
- Running:
- Terminated:
ie. "Running: MatrixMQTT"
Include the : and a space before the clients name,
Current list of clients
- MatrixMQTT
- Gatekeeper (arduino)
- nh-irccat
- nh-irc
- nh-matrix
- GateKeeper (process)
- nh-irc-misc
- nh-temperature
- WorkshopMQTT
- nh-vend
The status of all running clients is logged and reported here http://lspace.nottinghack.org.uk/instrumentation.php
Gatekeeper
Topic | Direction (G=Gatekeeper Arduino, H=Gatekeeper process on Holly, B=Doorbell) | Description | Notes |
---|---|---|---|
nh/gk/<door id>/Unlock | H > G | Shows message on LCD / unlocks door | Not available on Jarvis |
nh/gk/<door id>/DoorState | G > H | "Door Opened", "Door Opened by:" or "Door Closed" | |
nh/gk/entry_announce/known | H > (IRC, etc) | "Door Opened by: username (last seen xxx ago)" | Sent by Gatekeeper process on receiving "Door Opened by:" |
nh/gk/entry_announce/unknown | H > (IRC, etc) | "Door opened" | Sent by Gatekeeper process |
nh/gk/<door id>/Keypad | G > H | PIN entered | Not available on Jarvis |
nh/gk/<door id>/DoorButton | G > H | "OUTER", "INNER" or "REAR" for different doors | Message payload is unimportant |
nh/gk/DoorButton | H > (IRC/slack, etc) | Door bell button pushed | Message payload is the short name of the door (e.g. "INNER") |
nh/gk/bell/ComfyArea | H > B | Door bell in the comfy area | Payload is the number of rings (1-3) |
nh/gk/bell/Workshop | H > B | Door bell in the workshop | Payload is the number of rings (1-3) |
nh/gk/<door id>/RFID | G > H | Serial of RFID card presented, or "Unknown Card Type" | Not available on Jarvis |
nh/gk/LastManState | G > H | "First In" or "Last Out" | Knife switch by door. There is an intentional delay between the switch being thrown, and publishing to this topic |
MatrixMQTT
Topic | Description | Notes |
---|---|---|
nh/mb/tx | nh-matrix script transmits messages to be displayed | |
nh/mb/rx | confirmation of displayed message is returned to nh-matrix |
IRC Bot: nh-holly
Living in #nottinghack on freenode, nh-holly is our MQTT to IRC bridge
Topic | Description | Notes |
---|---|---|
nh/irc/tx | Sends to the default #nottinghack channel | |
nh/irc/tx/nottinghack | Sends to the #nottinghack channel | |
nh/irc/tx/pm/<nick> | Sends a pm to <nick> | |
nh/irc/rx/nottinghack/<nick> | Incoming message from irc #nottinghack channel | |
nh/irc/rx/pm/<nick> | Incoming pm from irc user <nick> |
Slack: nh-holly
Lives in various channels in the HSNOTTS team slack, nh-holly is our MQTT to slack bridge
Topic | Description | Notes |
---|---|---|
nh/slack/tx | Sends payload to #activity channel | |
nh/slack/tx/<channel> | Sends to #<channel> | Bot must be invited into channel first |
nh/slack/tx/pm/<nick> | Sends a direct message to <nick> | |
nh/slack/rx/<channel>/<nick> | Incoming message from #<channel> | |
nh/slack/rx/pm/<nick> | Incoming direct message from <nick> |
@Holly533MHz: nh-twitter
Twitter to MQTT bridge
Topic | Description | Notes |
---|---|---|
nh/twitter/tx | ||
nh/twitter/rx/dm/<screen_name | DM to @Holly533Mhz from <Screen_name> | |
nh/twitter/rx/mention/<screen_name> | mention of @Holly533Mhz by <screen_name> | |
nh/twitter/rx/hs | latest tweet from @HSNOTTS includes retweets | payload <screen_name>:<text> |
Temperature
Readings from DS18B20 1-Wire digital temperature sensors around the space are published at least every 2.5 minutes.
nh/temp
Message format as follows
address:temp
address | Hex string 16 long |
temp | Float 00.00 |
Light Level
Currently only one LDR connected to WorkshopMQTT
Topic | Description |
---|---|
nh/lightlevel/workshop | Light level in the Workshop. > ~800 = lights are on |
Tools RFID access control: Nhtools
Tools access control module. See Nhtools for a better description of these messages.
Topic | Description (A=Arduino, S=Server) | Notes |
---|---|---|
nh/tools/<tool name>/AUTH | A > S: RFID card presented | payload is RFID serial |
nh/tools/<tool name>/GRANT | S > A: RFID card belongs to a member who has been inducted on the tool - enable power | |
nh/tools/<tool name>/DENY | S > A: Sign on request denied | payload is the reason (e.g. not inducted) |
nh/tools/<tool name>/COMPLETE | A > S: Tool sign off | |
nh/tools/<tool name>/INDUCT | A > S: Request to induct member | payload is signed on RFID card + RFID of member to induct |
nh/tools/<tool name>/ISUC | S > A: Induction successful | |
nh/tools/<tool name>/IFAL | S > A: Induction failed (e.g. unknown card) | payload is failure reason |
nh/tools/<tool name>/RESET | A > S: Arduino has either just booted, or has reconnected | Payload is cause |
Tools bookings
This provides limited details of tool bookings made via HMS. When a booking is made from HMS, a push notification is received from google for the underlying google calendar, which results in a poll message being sent with the payload set to tool name that's been updated. The nh-tools process then downloads the ICAL formatted calendar from google, and publishes the now/next booking to the booking topic.
Topic | Description | Notes |
---|---|---|
nh/bookings/<tool name>/nownext | Now and next booking information for <tool name> | Payload is JSON encoded, see below. |
nh/bookings/poll | Request to poll google for updated calendar data, then publish to nownext topic |
Payload is tool name |
Example payload for nownext
message:
{
"now":{
"display_time":"now",
"display_name":"<member name1>"
},
"next":{
"display_time":"10:30",
"display_name":"<member name2>"
}
}
For the
nownext
message payload, bookings which start more that 20hrs in the future are ignored to remove ambiguity in the time displayed.
Network Devices
A count of the number of network devices currently connected (results of a minutely ARP scan).
Topic | Description |
---|---|
nh/addr/known | Number of known/fixed network devices (e.g. printers, VM's, etc). |
nh/addr/unknown | Number of unknown network devices (e.g. members laptops). |
XRF & LLAP
LLAP message format
12 Char's
aXXDDDDDDDDD
- a start character
- XX Device ID
- DDDDDDDDD message
more detail can be found here:-
- LLAP http://openmicros.org/index.php/articles/85-llap-lightweight-local-automation-protocol/112-llap
- LLAP device details http://openmicros.org/index.php/articles/87-llap-devices-commands-and-instructions
Payload for MQTT message is upto 9byte's, the message part of LLAP, padding is automatically added and striped.
aNOHELLO----
becomes
nh/xrf/?x/NO HELLO
Topic | Description | Notes |
---|---|---|
nh/xrf/tx/XX | Send out a LLAP message | XX is DEVID |
nh/xrf/rx/XX | LLAP message received | XX is DEVID |
Lighting Automation
For more details see Lighting Automation/Control Software
Topic | Description | Notes |
---|---|---|
nh/li/{controllerName}/{channel}/set | Lighting Command | For channels 00-23 only, Payload can be one of [ON, OFF, TOGGLE] |
nh/li/{controllerName}/{channel}/state | Lighting State | Retained Topic! Current state of the channel [ON, OFF] |
{channel}
00-23 represent the output channels
I0-I7 are the inputs
Set payload can be