Skip to content

Serial API

Frozen edited this page Jun 24, 2022 · 13 revisions

Communication Data Schema

API

  • JSON wrapped commands
<style type="text/css"></style>
System Controller Command Command Type Sampling Frequency (Hz) Data Unit Data Type Min Max Default Data Resoultion Valid Data Set Multi Channel Temperature Controller JSON
Incubator System command_acknowledge RESPONSE NA command_name NA string NA NA NA NA NA { "command_acknowledge":{ "command_name": "command_xyz", "command_status": "OK" }}
          command_status NA integer 0 1 0 NA OK=0, FAULT=1  
  Temperature set_temperature REQUEST NA target temperature C float 25 40 37 0.01 NA { "target_temperature":37.2 }
    current_temperature RESPONSE 2 current temperature C float 25 40 37 0.01 NA { "current_temperature":37.2}
    get_temperature REQUEST NA NA NA NA NA NA NA NA NA { "get_temperature":""}
    set_temperature_calibration REQUEST NA TBD 1             NA { "set_temperature_calibration":[123,123,123]}
          TBD 2             NA  
          TBD N             NA  
    current_temperature_calibration RESPONSE NA TBD 1             NA { "current_temperature_calibration":[123,123,123]}
          TBD 2             NA  
          TBD N             NA  
    get_temperature_calibration REQUEST NA NA NA NA NA NA NA NA NA { "get_temperature_calibration":[]}
    current_temperature_controller_state RESPONSE 2 controller state NA Integer 0 NA NA NA CONTROLLER_IDLE=0, CONTROLLER_RUNNING=1, CONTROLLER_FAULT=2 { "current_temperature_controller_state":"CONTROLLER_IDLE"}
    get_temperature_controller_state REQUEST NA NA NA NA NA NA NA NA NA { "get_temperature_controller_state":""}
    set_temperature_pid REQUEST NA P NA float       0.01 NA { "set_temperature_pid":[p,i,d]}
          I NA float       0.01 NA  
          D NA float       0.01 NA  
    get_temperature_pid REQUEST NA NA NA NA NA NA NA NA NA { "get_temperature_pid":""}
    current_temperature_pid RESPONSE NA P NA float       0.01 NA { "current_temperature_pid":[p,i,d]}
          I NA float       0.01 NA  
          D NA float       0.01 NA  
  CO2 set_co2 REQUEST NA target co2 Pa float 0 10000 1000 0.01 NA { "set_co2":1000}
    current_co2 RESPONSE 2 current co2 Pa float 0 10000 1000 0.01 NA { "current_co2":1000}
    get_co2 REQUEST NA NA NA NA NA NA NA NA NA { "get_co2": ""}
    set_co2_calibration REQUEST NA TBD 1             NA { "set_co2_calibration":[123,123,123]}
          TBD 2             NA  
          TBD N             NA  
    current_co2_calibration RESPONSE NA TBD 1             NA { "current_co2_calibration":[123,123,123]}
          TBD 2             NA  
          TBD N             NA  
    get_co2_calibration REQUEST NA NA NA NA NA NA NA NA NA { "get_co2_calibration":""}
    current_co2_controller_status RESPONSE 2 controller state NA Integer 0 NA NA NA CONTROLLER_IDLE=0, CONTROLLER_RUNNING=1, CONTROLLER_FAULT=2 { "current_co2_controller_status":"CONTROLLER_IDLE"}
    get_co2_controller_status REQUEST NA NA NA NA NA NA NA NA NA { "get_co2_controller_status":""}
    set_co2_pid REQUEST NA P NA float       0.01 NA { "set_co2_pid":[p,i,d]}
          I NA float       0.01 NA  
          D NA float       0.01 NA  
    get_co2_pid REQUEST NA NA NA NA NA NA NA NA NA { "get_co2_pid":""}
    current_co2_pid RESPONSE NA P NA float       0.01 NA { "current_co2_pid":[p,i,d]}
          I NA float       0.01 NA  
          D NA float       0.01 NA  
  Humidity set_humidity REQUEST NA target humidity % float 90 100 95 0.01 NA { "set_humidity": 95}
    current_humidity RESPONSE 2 current humidity % float 90 100 95 0.01 NA { "current_humidity": 95 }
    get_humidity REQUEST NA NA NA NA NA NA NA NA NA { "get_humidity":""}
    set_humidity_calibration REQUEST NA TBD 1             NA { "set_humidity_calibration": [TBD1,TBD2,N]}
          TBD 2             NA  
          TBD N             NA  
    current_humidity_calibration RESPONSE NA TBD 1             NA { "current_humidity_calibration": [TBD1,TBD2,N] }
          TBD 2             NA  
          TBD N             NA  
    get_humidity_calibration REQUEST NA NA NA NA NA NA NA NA NA { "get_humidity_calibration":""}
    current_humidity_controller_status RESPONSE 2 controller state NA Integer 0 NA NA NA CONTROLLER_IDLE=0, CONTROLLER_RUNNING=1, CONTROLLER_FAULT=2 { "current_humidity_controller_status":"CONTROLLER_IDLE" }
    get_humidity_controller_status REQUEST NA NA NA NA NA NA NA NA NA { "get_humidity_controller_status":"" }
    set_humidity_pid REQUEST NA P NA float       0.01 NA { "set_humidity_pid": [p,i,d]}
          I NA float       0.01 NA  
          D NA float       0.01 NA  
    get_humidity_pid REQUEST NA NA NA NA NA NA NA NA NA { "get_humidity_pid":""}
    current_humidity_pid RESPONSE NA P NA float       0.01 NA { "current_humidity_pid": [p,i,d] }
          I NA float       0.01 NA  
          D NA float       0.01 NA  

JSON wrapped commands

Commands must conform to general JSON format, however, there are certain limitations. For example, wrapped JSON is not allowed.
The general format of the commands:
{"command_name":arg1} - for single argument command
{"command_name":[arg1, arg2,... argN]} - for multi argument command
In this format "command_name" is what identifies the command meaning, and arg1 through argN are associated arguments.
For example to set target temperature to 37 Celcius for channel 2:
{"temperature":[37.0, 2]}

Application API

This is API that is used for the purpose of executing application functions and retrieving data pertaining to the status of the processes initiated by the application. For example, setting target temperature for the incubator and monitoring current temperature of the incubator.

Machine telemetry API

This is API that is used for the purpose of monitoring machine health and performance and detecting errors and warnings. For example, monitoring noise on the temperature sensor lines, incoming and internally generated supply voltage, and total current consumption of the machine.

Diagnostic API

This is API that is used for the purpose of routine maintenance, service, and fault diagnostic.

Developer API

This is API that will not be documented anywhere other than source code and should only be present in debug builds of the firmware. This API is created by developers for developers. It should be considered extremely dangerous and can lead to serious damage to the machine and personnel. If you somehow obtain commands from developer API, DO NOT try sending them. Chances are they will not be recognised; but if by some freak chance they are recognised and executed you are risking serious damage to yourself and the machine. These commands will be logged internally and we will find out about it, so your warranty will be void.

Clone this wiki locally