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, shutter_speed, white_balance_gain, white_balance and image_gain are optionals:

{
  "action": "settings",
  "settings":{
    "iso": 100,
    "shutter_speed": 40,
    "white_balance_gain": {"red": 100, "blue": 100},
    "white_balance": "auto",
    "image_gain": {"analog": 100, "digital": 100}
  }
}
  • Receive only

segmenter/segment

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

{
  "action": "segment",
  "path": "/path/to/segment",
  "settings": {
    "force": False,
    "recursive": True,
    "ecotaxa": True,
    "keep": True
  }
}

action can also be stop. The action element is the only element required. If no path is supplied, the whole images repository is segmented recursively (this is very long!).

force is going to overcome the presence of the file done that is here to prevent for resegmenting a folder already segmented.

recursive will force parsing all folders below path.

ecotaxa activates the export of an ecotaxa compatible archive.

keep allows to remove or keep the roi (when you do an ecotaxa export, no effects otherwise, the roi are kept).

  • 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

{
  "name": "01_13_28_232066_0",
  "metadata": {
      "label": 0, "width": 29, "height": 80, ....
}