MQTT Topics: Difference between revisions
Line 37: | Line 37: | ||
|- | |- | ||
! Topic | ! Topic | ||
! Description | ! Direction (G=Gatekeeper Arduino, H=Gatekeeper process on Holly, B=Doorbell) | ||
! Description | |||
! Notes | ! Notes | ||
|- | |- | ||
| nh/gk/<door id>/Unlock || Shows message on LCD / unlocks door || Not available on Jarvis | | nh/gk/<door id>/Unlock || H > G || Shows message on LCD / unlocks door || Not available on Jarvis | ||
|- | |- | ||
| nh/gk/<door id>/DoorState || "Door Opened", "Door Opened by:" or "Door Closed" || | | nh/gk/<door id>/DoorState || G > H || "Door Opened", "Door Opened by:" or "Door Closed" || | ||
|- | |- | ||
| nh/gk/entry_announce/known || "Door Opened by: ''username'' (last seen ''xxx'' ago)" || Sent by Gatekeeper process on receiving "Door Opened by:" | | 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 || "Door opened" || Sent by Gatekeeper process | | nh/gk/entry_announce/unknown || H > (IRC, etc) || "Door opened" || Sent by Gatekeeper process | ||
|- | |- | ||
| nh/gk/<door id>/Keypad || PIN entered || Not available on Jarvis | | nh/gk/<door id>/Keypad || G > H || PIN entered || Not available on Jarvis | ||
|- | |- | ||
| nh/gk/<door id>/DoorButton || "OUTER", "INNER" or "REAR" for different doors || Message payload is unimportant | | nh/gk/<door id>/DoorButton || G > H || "OUTER", "INNER" or "REAR" for different doors || Message payload is unimportant | ||
|- | |- | ||
| nh/gk/DoorButton || Door bell button pushed || Message payload is the short name of the door (e.g. "INNER") | | 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 || Door bell in the comfy area || Payload is the number of rings (1-3) | | nh/gk/bell/ComfyArea || H > B || Door bell in the comfy area || Payload is the number of rings (1-3) | ||
|- | |- | ||
| nh/gk/bell/Workshop || Door bell in the workshop || 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 || Serial of RFID card presented, or "Unknown Card Type" || Not available on Jarvis | | nh/gk/<door id>/RFID || G > H || Serial of RFID card presented, or "Unknown Card Type" || Not available on Jarvis | ||
|- | |- | ||
| nh/gk/LastManState || "First In" or "Last Out" || Knife switch by door. There is an intentional delay between the switch being thrown, and publishing to this topic | | 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 | ||
|- | |- | ||
|} | |} |
Revision as of 22:31, 7 November 2015
This is the list of 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/addr_graphs/status.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> |
@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 Note messages on nh/li/state/# should be set to retained. So new clients subscribing can retrieve the current state with out polling.
Topic | Description | Notes |
---|---|---|
nh/li/set/ROOM/ZONE | Lighting Command | ROOM is one of the pre defined rooms ZONE within a ROOM and payload is COMMAND |
nh/li/state/ROOM/ZONE | Lighting State | Retained Topic! ROOM is one of the pre defined rooms ZONE within a ROOM and payload is Curent STATE |