> For the complete documentation index, see [llms.txt](https://robopipe.gitbook.io/doc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://robopipe.gitbook.io/doc/api/rest-api-reference/analog-i-o.md).

# Analog I/O

**Analog inputs** allow the PLC to read variable values from sensors, such as temperature, pressure, or flow, by converting physical measurements into electrical signals, typically in the form of *voltage* (e.g., 0-10V) or *current* (e.g., 4-20mA). Conversely, **analog outputs** enable the PLC to control devices like motors, valves, or actuators by sending continuous electrical signals to adjust their operation with precision. These I/O channels are crucial for processes that require more than simple on/off control, providing fine-tuned adjustments to optimize performance in dynamic environments. Analog I/O API provides interface for controlling all analog inputs and outputs on your controller.

## API Reference

## GET /controller/ai

> List All Analog Inputs

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ai":{"get":{"tags":["controller"],"summary":"List All Analog Inputs","operationId":"List_all_analog_inputs_controller_ai_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AnalogInput"},"type":"array","title":"Response List All Analog Inputs Controller Ai Get"}}}}}}}},"components":{"schemas":{"AnalogInput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogInputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogInputModeType"},"type":"object","title":"Modes"},"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes"],"title":"AnalogInput"},"AnalogInputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogInputMode"},"AnalogInputModeType":{"type":"string","enum":["Disabled","Voltage","Voltage2V5","Current","Resistance3W","Resistance2W"],"title":"AnalogInputModeType"}}}}
```

## GET /controller/ai/{circuit}

> Get Analog Input

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ai/{circuit}":{"get":{"tags":["controller"],"summary":"Get Analog Input","operationId":"Get_analog_input_controller_ai__circuit__get","parameters":[{"name":"circuit","in":"path","required":true,"schema":{"type":"string","title":"Circuit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogInput"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogInput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogInputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogInputModeType"},"type":"object","title":"Modes"},"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes"],"title":"AnalogInput"},"AnalogInputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogInputMode"},"AnalogInputModeType":{"type":"string","enum":["Disabled","Voltage","Voltage2V5","Current","Resistance3W","Resistance2W"],"title":"AnalogInputModeType"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## POST /controller/ai/{circuit}

> Set Analog Input

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ai/{circuit}":{"post":{"tags":["controller"],"summary":"Set Analog Input","operationId":"Set_analog_input_controller_ai__circuit__post","parameters":[{"name":"circuit","in":"path","required":true,"schema":{"type":"string","title":"Circuit"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogInputUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogInput"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogInputUpdate":{"properties":{"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","title":"AnalogInputUpdate"},"AnalogInputModeType":{"type":"string","enum":["Disabled","Voltage","Voltage2V5","Current","Resistance3W","Resistance2W"],"title":"AnalogInputModeType"},"AnalogInput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogInputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogInputModeType"},"type":"object","title":"Modes"},"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes"],"title":"AnalogInput"},"AnalogInputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogInputMode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## POST /controller/ai

> Set All Analog Inputs

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ai":{"post":{"tags":["controller"],"summary":"Set All Analog Inputs","operationId":"Set_all_analog_inputs_controller_ai_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogInputUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AnalogInput"},"type":"array","title":"Response Set All Analog Inputs Controller Ai Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogInputUpdate":{"properties":{"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","title":"AnalogInputUpdate"},"AnalogInputModeType":{"type":"string","enum":["Disabled","Voltage","Voltage2V5","Current","Resistance3W","Resistance2W"],"title":"AnalogInputModeType"},"AnalogInput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogInputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogInputModeType"},"type":"object","title":"Modes"},"mode":{"$ref":"#/components/schemas/AnalogInputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes"],"title":"AnalogInput"},"AnalogInputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogInputMode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## GET /controller/ao

> List All Analog Outputs

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ao":{"get":{"tags":["controller"],"summary":"List All Analog Outputs","operationId":"List_all_analog_outputs_controller_ao_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AnalogOutput"},"type":"array","title":"Response List All Analog Outputs Controller Ao Get"}}}}}}}},"components":{"schemas":{"AnalogOutput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogOutputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogOutputModeType"},"type":"object","title":"Modes"},"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes","value"],"title":"AnalogOutput"},"AnalogOutputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogOutputMode"},"AnalogOutputModeType":{"type":"string","enum":["Voltage","Current","Resistance"],"title":"AnalogOutputModeType"}}}}
```

## GET /controller/ao/{circuit}

> Get Analog Output

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ao/{circuit}":{"get":{"tags":["controller"],"summary":"Get Analog Output","operationId":"Get_analog_output_controller_ao__circuit__get","parameters":[{"name":"circuit","in":"path","required":true,"schema":{"type":"string","title":"Circuit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogOutput"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogOutput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogOutputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogOutputModeType"},"type":"object","title":"Modes"},"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes","value"],"title":"AnalogOutput"},"AnalogOutputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogOutputMode"},"AnalogOutputModeType":{"type":"string","enum":["Voltage","Current","Resistance"],"title":"AnalogOutputModeType"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## POST /controller/ao/{circuit}

> Set Analog Output

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ao/{circuit}":{"post":{"tags":["controller"],"summary":"Set Analog Output","operationId":"Set_analog_output_controller_ao__circuit__post","parameters":[{"name":"circuit","in":"path","required":true,"schema":{"type":"string","title":"Circuit"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogOutputUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogOutput"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogOutputUpdate":{"properties":{"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["value"],"title":"AnalogOutputUpdate"},"AnalogOutputModeType":{"type":"string","enum":["Voltage","Current","Resistance"],"title":"AnalogOutputModeType"},"AnalogOutput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogOutputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogOutputModeType"},"type":"object","title":"Modes"},"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes","value"],"title":"AnalogOutput"},"AnalogOutputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogOutputMode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## POST /controller/ao

> Set All Analog Outputs

```json
{"openapi":"3.1.0","info":{"title":"Robopipe API","version":"0.2.1.dev12"},"servers":[{"url":"http://localhost:8080","description":"Locally running server"}],"paths":{"/controller/ao":{"post":{"tags":["controller"],"summary":"Set All Analog Outputs","operationId":"Set_all_analog_outputs_controller_ao_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalogOutputUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/AnalogOutput"},"type":"array","title":"Response Set All Analog Outputs Controller Ao Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AnalogOutputUpdate":{"properties":{"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["value"],"title":"AnalogOutputUpdate"},"AnalogOutputModeType":{"type":"string","enum":["Voltage","Current","Resistance"],"title":"AnalogOutputModeType"},"AnalogOutput":{"properties":{"dev":{"type":"string","title":"Dev"},"circuit":{"type":"string","title":"Circuit"},"modes":{"additionalProperties":{"$ref":"#/components/schemas/AnalogOutputMode"},"propertyNames":{"$ref":"#/components/schemas/AnalogOutputModeType"},"type":"object","title":"Modes"},"value":{"type":"number","title":"Value"},"mode":{"$ref":"#/components/schemas/AnalogOutputModeType","default":"Voltage"}},"type":"object","required":["dev","circuit","modes","value"],"title":"AnalogOutput"},"AnalogOutputMode":{"properties":{"value":{"type":"integer","title":"Value"},"unit":{"type":"string","title":"Unit"},"range":{"prefixItems":[{"type":"integer"},{"type":"integer"}],"type":"array","maxItems":2,"minItems":2,"title":"Range"}},"type":"object","required":["value","unit","range"],"title":"AnalogOutputMode"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```
