planktoscope/docs/mqtt_messages.md
2020-11-25 17:01:14 +01:00

3.4 KiB

Details about used MQTT messages

Topic lists

Topic details

actuator

actuator/pump

Control the movement of the pump. The message is a JSON object:

{
  "action": "move",
  "direction": "FORWARD",
  "volume": 10,
  "flowrate": 1
}

This messages make the pump move 10mL forward at 1mL/min.

Another supported message is:

{
  "action": "stop"
}
  • Receive only

actuator/focus

Control of the focus stage. The message is a JSON object, speed is optional:

{
  "action": "move",
  "direction": "UP",
  "distance": 0.26,
  "speed": 1
}

This message makes the stage move up by 10mm.

Another supported message is:

{
  "action": "stop"
}
  • Receive only

imager/image

This topic controls the camera and capture. The message allowed is a JSON message:

{
  "action": "image",
  "pump_direction": "FORWARD",
  "volume": 1,
  "nb_frame": 200
}

Volume is in mL.

This topic can also receive a config update message:

{
  "action": "config",
  "config": {...}
}

A camera settings message can also be received here. The fields iso and shutter_speed are optionals:

{
  "action": "settings",
  "iso": 100,
  "shutter_speed": 40
}
  • Receive only

segmenter/segment

This topic controls the segmentation process. The message is a JSON object:

{
  "action": "segment"
}

action can also be stop.

  • Receive only

status

This high-level topic is used to send information to the Node-Red process. There is no publication or receive at this level.

status/pump

State of the pump. It's a JSON object with:

{
  "status": "Started",
  "duration": 25
}

Duration is a best guess estimate. It should not be used to control the other events. If you want to wait for a movement to finish, the best thing to do is to wait for the message Done.

Status can be Started, Ready, Done, Interrupted, Error, Dead.

  • Publish only

status/focus

State of the focus stage. It's a JSON object with:

{
  "status": "Started",
  "duration": 25
}

Duration is a best guess estimate. It should not be used to control the other events. If you want to wait for a movement to finish, the best thing to do is to wait for the message Done.

Status is one of Started, Ready, Done, Interrupted, Error, Dead.

  • Publish only

status/imager

State of the imager. It's a JSON object with:

{
  "status": "Started",
  "time_left": 25
}

Status is one of Started, Ready, Completed or 12_11_15_0.1.jpg has been imaged.

  • Publish only

status/segmenter

Status of the segmentation. It's a JSON object with:

{
  "status": "Started",
}

status is one of Started, Done, Interrupted, Busy, Ready or Dead.

  • Publish only

status/segmenter/object_id

{
  "object_id": "13449"
}

status/segmenter/metric