MQTT Topics

From Nottinghack Wiki
Revision as of 18:48, 30 May 2019 by Jon (talk | contribs)
Jump to navigation Jump to search

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:-

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