# 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"}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://robopipe.gitbook.io/doc/api/rest-api-reference/analog-i-o.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
