-
Notifications
You must be signed in to change notification settings - Fork 4
Serial API
- JSON wrapped commands
| 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 |
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]}
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.
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.
This is API that is used for the purpose of routine maintenance, service, and fault diagnostic.
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.