Supported Outputs
Built-In Outputs (System)
On/Off: MQTT Publish Multi
- Manufacturer: AoT
- Interfaces: IP
- Output Types: On/Off
- Libraries: paho-mqtt
- Dependencies: paho-mqtt
- Additional URL: Link
Publish "on"/"off" payloads to a control topic for multiple channels, and subscribe to a status topic to reflect each channel's actual operating state. All channels share the same broker connection and the two topics. Each channel sends its own control payload and matches its own status payload values. Increase the channel count and save to add channels.
| Number of Channels | Integer - Default Value: 1 | Number of channels. Save to add or remove channel rows. |
| Hostname | Text - Default Value: localhost | The hostname of the MQTT server |
| Port | Integer - Default Value: 1883 | The port of the MQTT server |
| Control Topic | Text - Default Value: paho/test/control | The MQTT topic used to publish on/off commands (control direction). |
| Status Topic | Text - Default Value: paho/test/status | The MQTT topic to subscribe to for confirming each channel's operating state. Leave blank to disable status feedback. |
| Keep Alive | Integer - Default Value: 60 | The keepalive timeout value for the client. Set to 0 to disable. |
| Client ID | Text - Default Value: client_RbSviPNZ | Unique client ID for connecting to the MQTT server |
| Use Login | Boolean | Send login credentials |
| Username | Text - Default Value: user | Username for connecting to the server |
| Password | Text | Password for connecting to the server. Leave blank to disable. |
| Use TLS | Boolean | Encrypt the connection with TLS (broker port is usually 8883). Required when the broker is reachable over the internet. |
| TLS CA Certificate | Text | Path to the CA certificate file that signed the broker certificate. Leave blank to use the system CA store (for brokers with a publicly-trusted certificate, e.g. Let's Encrypt). |
| Use Websockets | Boolean | Use websockets to connect to the server. |
| Command Timeout (seconds) | Text - Default Value: 5 | How long to optimistically hold the commanded state while awaiting the device (0 = immediate). For wireless/remote devices set the expected response delay; wired devices can leave this at 0. |
| Channel Options |
| Channel Name | Text | A friendly name shown in the UI for this channel. |
| On Payload (Control) | Text - Default Value: on | The payload published to the Control Topic to turn this channel ON. |
| Off Payload (Control) | Text - Default Value: off | The payload published to the Control Topic to turn this channel OFF. |
| On Payload (Status) | Text | When this exact value is received on the Status Topic, the channel is marked ON. Leave blank to disable ON detection for this channel. |
| Off Payload (Status) | Text | When this exact value is received on the Status Topic, the channel is marked OFF. Leave blank to disable OFF detection for this channel. |
| Startup State | Select | Set the channel state when AoT starts |
| Shutdown State | Select | Set the channel state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the channel switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: MQTT Publish
- Manufacturer: AoT
- Interfaces: IP
- Output Types: On/Off
- Libraries: paho-mqtt
- Dependencies: paho-mqtt
- Additional URL: Link
Publish "on" or "off" (or any other strings of your choosing) to an MQTT server.
| Channel Options |
| Hostname | Text - Default Value: localhost | The hostname of the MQTT server |
| Port | Integer - Default Value: 1883 | The port of the MQTT server |
| Topic | Text - Default Value: paho/test/single | The topic to publish with |
| Keep Alive | Integer - Default Value: 60 | The keepalive timeout value for the client. Set to 0 to disable. |
| Client ID | Text - Default Value: client_Esv0WiAR | Unique client ID for connecting to the MQTT server |
| On Payload | Text - Default Value: on | The payload to send when turned on |
| Off Payload | Text - Default Value: off | The payload to send when turned off |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Use Login | Boolean | Send login credentials |
| Username | Text - Default Value: user | Username for connecting to the server |
| Password | Text | Password for connecting to the server. Leave blank to disable. |
| Use TLS | Boolean | Encrypt the connection with TLS (broker port is usually 8883). Required when the broker is reachable over the internet. |
| TLS CA Certificate | Text | Path to the CA certificate file that signed the broker certificate. Leave blank to use the system CA store (for brokers with a publicly-trusted certificate, e.g. Let's Encrypt). |
| Use Websockets | Boolean | Use websockets to connect to the server. |
PWM: MQTT Publish
- Manufacturer: AoT
- Output Types: PWM
- Libraries: paho-mqtt
- Dependencies: paho-mqtt
- Additional URL: Link
Publish a PWM value to an MQTT server.
| Channel Options |
| Hostname | Text - Default Value: localhost | The hostname of the MQTT server |
| Port | Integer - Default Value: 1883 | The port of the MQTT server |
| Topic | Text - Default Value: paho/test/single | The topic to publish with |
| Keep Alive | Integer - Default Value: 60 | The keepalive timeout value for the client. Set to 0 to disable. |
| Client ID | Text - Default Value: client_ZWOEseLh | Unique client ID for connecting to the MQTT server |
| Use Login | Boolean | Send login credentials |
| Username | Text - Default Value: user | Username for connecting to the server |
| Password | Text | Password for connecting to the server. |
| Use TLS | Boolean | Encrypt the connection with TLS (broker port is usually 8883). Required when the broker is reachable over the internet. |
| TLS CA Certificate | Text | Path to the CA certificate file that signed the broker certificate. Leave blank to use the system CA store (for brokers with a publicly-trusted certificate, e.g. Let's Encrypt). |
| Use Websockets | Boolean | Use websockets to connect to the server. |
| Round Integer | Select(Options: [No Rounding | Round Nearest Whole | Round Up | Round Down] (Default in bold) | Round the payload value to an integer. |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Set the Duty Cycle. |
| Duty Cycle | Decimal | The duty cycle to set |
| Set Duty Cycle | Button | |
Value: Actuator Paired (Shared Bus)
- Manufacturer: AoT
- Output Types: Value
Time-based opening control (0–100%) for a vent, curtain or valve whose Open and Close relays are SHARED with other actuators, each picked by its own selector relay — so a 6-channel relay board drives four windows. Add one of these outputs per actuator, give them the same Open/Close channels, and they schedule against each other automatically. Selector contacts are only ever switched while the shared bus is de-energized. Use "Actuator Paired" instead when the actuator has its own dedicated Open/Close relays.
| Channel Options |
| Actuator Kind | Select(Options: [Side Vent | Roof Vent | Thermal Curtain | Shade Curtain | Ball Valve] (Default in bold) | Type of actuator being controlled. |
| Output: Selector | Select Channel (Output_Channels) | on/off Output channel that connects the shared bus to THIS actuator. It is switched on before the bus starts and off after the bus stops, never under load. Leave empty only if this actuator has the bus to itself. |
| Output: Open (shared bus) | Select Channel (Output_Channels) | on/off Output channel connected to the OPEN relay. Every actuator naming the same Open and Close channels shares one bus and is scheduled against the others. |
| Output: Close (shared bus) | Select Channel (Output_Channels) | on/off Output channel connected to the CLOSE relay. Every actuator naming the same Open and Close channels shares one bus and is scheduled against the others. |
| Travel Time Open (s) | Decimal | Seconds to travel from fully closed (0%) to fully open (100%). If unset, the close travel time is used as a fallback. Use the Calibration buttons below to measure automatically. |
| Travel Time Close (s) | Decimal | Seconds to travel from fully open (100%) to fully closed (0%). If unset, the open travel time is used as a fallback. |
| Limit Switch Fitted | Boolean - Default Value: True | Enable when this actuator has limit switches at both ends. An end-stop target (0%, 100%) may then be driven longer than its calculated travel time, letting several actuators reach their end stop in a single bus run — an emergency close of every window finishes in one run instead of one per window. Disable when there is no limit switch, or the motor would stall. |
| Allow Parallel Driving | Boolean - Default Value: True | Let this actuator move at the same time as others on the same bus, when they are driving the same relay. Enable only if the bus and its supply can carry all of those motors at once. Opposite directions are never run together regardless of this setting. If any actuator on a bus disables this, the whole bus moves one actuator at a time. |
| Batch Window (s) | Decimal - Default Value: 2.0 | Commands arriving within this window are planned together, so a control cycle that targets every actuator on the bus becomes one batch instead of a queue of separate moves. |
| Selector Settle Time (s) | Decimal - Default Value: 0.5 | Dwell between a selector relay changing and the shared bus being energized (and again after the bus stops, before the selector is released), so the contacts never switch under load. |
| Relay Confirm Timeout (s) | Decimal - Default Value: 15.0 | How long to wait for a selector or bus relay to report its new state before giving up on this actuator. Wired relays confirm immediately; radio-linked relays confirm when the device acknowledges. The bus is never energized against an unconfirmed selector. |
| Reverse Pause (s) | Decimal - Default Value: 5.0 | Dwell inserted when the shared bus changes direction (open↔close) to protect the motors. Both bus relays stay off for this long before the new direction starts. |
| Force Relays Off At Startup | Boolean - Default Value: True | After the daemon starts, switch off any selector or bus relay still reporting on — a restart during travel would otherwise leave a motor running. Only relays actually reporting on are commanded, so toggle-protocol outputs are not phantom-activated. |
| Open Start Position (%) | Decimal | Reference only (informational). Motor position (%) at which the mechanism visually begins to open. The command value is used as the motor position directly and is NOT rescaled by this field. |
| Full Open Position (%) | Decimal - Default Value: 100.0 | Reference only (informational). Motor position (%) regarded as fully open. The command value is NOT capped by this field. A command of 0% moves to the physical end stop regardless (emergency fully-closed). |
| Min Move Step (%) | Decimal - Default Value: 5.0 | Motor lifespan protection for automatic environment control. The motor moves only when the target differs from the last sent position by at least this much, and commands snap to this grid (e.g. 5% → 0, 5, 10 …). Set to 0 to disable — every minor fluctuation then drives the motor. |
| Last Position (%) | Decimal | Last known position. Updated automatically on each move so the value survives daemon restarts. Edit manually only if you know the actual position. |
| Last Target (%) | Decimal - Default Value: -1.0 | Last manually commanded target position. -1 means not set. Saved on each manual set command so the target survives daemon restarts. |
| Min Command Interval (s) | Decimal - Default Value: 1.0 | Reject any new target arriving within this many seconds of the previous one. Prevents queued-up motor whiplash from rapid button presses. Stop is always accepted regardless of this interval. |
| Invert Direction | Boolean | Swap the Open and Close relays in software. Enable when 0% physically deploys the actuator and 100% pulls it back. An inverted actuator is never driven in parallel with a non-inverted one, because they energize opposite relays. |
| Calibration Direction | Select(Options: [Open | Close] (Default in bold) | Click Start → actuator moves → click Stop when fully open or closed → elapsed time is saved to Travel Time Open or Travel Time Close. |
| Commands |
| ▶ Start Calibration | Button | |
| ■ Stop & Save | Button | |
Value: Actuator Paired
- Manufacturer: AoT
- Output Types: Value
Time-based opening control (0–100%) for vents, curtains, and ball valves. Connects an Open relay and a Close relay to a single percentage command.
| Channel Options |
| Actuator Kind | Select(Options: [Side Vent | Roof Vent | Thermal Curtain | Shade Curtain | Ball Valve] (Default in bold) | Type of actuator being controlled. |
| Output: Open | Select Channel (Output_Channels) | on/off Output channel connected to the OPEN relay. |
| Output: Close | Select Channel (Output_Channels) | on/off Output channel connected to the CLOSE relay. |
| Travel Time Open (s) | Decimal | Seconds to travel from fully closed (0%) to fully open (100%). If unset, the close travel time is used as a fallback. Use the Calibration buttons below to measure automatically. |
| Travel Time Close (s) | Decimal | Seconds to travel from fully open (100%) to fully closed (0%). If unset, the open travel time is used as a fallback. |
| Open Start Position (%) | Decimal | Reference only (informational). Motor position (%) at which the mechanism visually begins to open. The command value is used as the motor position directly and is NOT rescaled by this field — a command of 22% maps directly to motor position 22. |
| Full Open Position (%) | Decimal - Default Value: 100.0 | Reference only (informational). Motor position (%) regarded as fully open. The command value is used as the motor position directly and is NOT capped by this field. A command of 0% always moves to the physical end-stop (emergency fully-closed). |
| Min Move Step (%) | Decimal - Default Value: 5.0 | Motor lifespan protection for automatic environment control. The motor moves only when the target differs from the last sent position by at least this much, and commands snap to this grid (e.g. 5% → 0, 5, 10 …). This absorbs the small per-cycle fluctuations of the PI controller so the motor is not driven every cycle. Set to 0 to disable — every minor fluctuation then drives the motor (legacy behavior). |
| Last Position (%) | Decimal | Last known position. Updated automatically on each move so the value survives daemon restarts. Edit manually only if you know the actual position. |
| Last Target (%) | Decimal - Default Value: -1.0 | Last manually commanded target position. -1 means not set. Saved on each manual set command so the target survives daemon restarts. |
| Min Command Interval (s) | Decimal - Default Value: 1.0 | Reject any new Open/Close command that arrives within this many seconds of the previous one. Prevents queued-up motor whiplash from rapid button presses. Stop is always accepted regardless of this interval. |
| Reverse Pause (s) | Decimal - Default Value: 5.0 | Dwell time inserted when reversing direction (open↔close) to protect the motor. Both relays stay OFF for this many seconds before the new direction starts. |
| Invert Direction | Boolean | Swap Open and Close relays in software. Enable when 0% physically deploys the actuator and 100% pulls it back (e.g. thermal curtain wired with Close = deploy). |
| Calibration Direction | Select(Options: [Open | Close] (Default in bold) | Click Start → actuator moves → click Stop when fully open or closed → elapsed time is saved to Travel Time Open or Travel Time Close. |
| Commands |
| ▶ Start Calibration | Button | |
| ■ Stop & Save | Button | |
Value: MQTT Publish
- Manufacturer: AoT
- Output Types: Value
- Libraries: paho-mqtt
- Dependencies: paho-mqtt
- Additional URL: Link
Publish a value to an MQTT server.
| Channel Options |
| Hostname | Text - Default Value: localhost | The hostname of the MQTT server |
| Port | Integer - Default Value: 1883 | The port of the MQTT server |
| Topic | Text - Default Value: paho/test/single | The topic to publish with |
| Keep Alive | Integer - Default Value: 60 | The keepalive timeout value for the client. Set to 0 to disable. |
| Client ID | Text - Default Value: client_agLWyW9y | Unique client ID for connecting to the MQTT server |
| Off Value | Integer | The value to send when an Off command is given |
| Use Login | Boolean | Send login credentials |
| Username | Text - Default Value: user | Username for connecting to the server |
| Password | Text | Password for connecting to the server. |
| Use TLS | Boolean | Encrypt the connection with TLS (broker port is usually 8883). Required when the broker is reachable over the internet. |
| TLS CA Certificate | Text | Path to the CA certificate file that signed the broker certificate. Leave blank to use the system CA store (for brokers with a publicly-trusted certificate, e.g. Let's Encrypt). |
| Use Websockets | Boolean | Use websockets to connect to the server. |
Built-In Outputs (Devices)
Digital Potentiometer: DS3502
The DS3502 can generate a 0 - 10k Ohm resistance with 7-bit precision. This equates to 128 possible steps. A value, in Ohms, is passed to this output controller and the step value is calculated and passed to the device. Select whether to round up or down to the nearest step.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Round Step | Select(Options: [Up | Down] (Default in bold) | Round direction to the nearest step value |
Digital-to-Analog Converter: MCP4728
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| VREF (volts) | Decimal - Default Value: 4.096 | Set the VREF voltage |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| VREF | Select(Options: [Internal | VDD] (Default in bold) | Select the channel VREF |
| Gain | Select(Options: [1X | 2X] (Default in bold) | Select the channel Gain |
| Start State | Select(Options: [Previously-Saved State | Specified Value] (Default in bold) | Select the channel start state |
| Start Value (volts) | Decimal | If Specified Value is selected, set the start state value |
| Shutdown State | Select(Options: [Previously-Saved Value | Specified Value] (Default in bold) | Select the channel shutdown state |
| Shutdown Value (volts) | Decimal | If Specified Value is selected, set the shutdown state value |
Motor: Stepper Motor, Bipolar (Generic) (Pi <= 4)
This is a generic module for bipolar stepper motor drivers such as the DRV8825, A4988, and others. The value passed to the output is the number of steps. A positive value turns clockwise and a negative value turns counter-clockwise.
| Channel Options |
| If the Direction or Enable pins are not used, make sure you pull the appropriate pins on your driver high or low to set the proper direction and enable the stepper motor to be energized. Note: For Enable Mode, always having the motor energized will use more energy and produce more heat. |
| Step Pin | Integer | The Step pin of the controller (BCM numbering) |
| Full Step Delay | Decimal - Default Value: 0.005 | The Full Step Delay of the controller |
| Direction Pin | Integer | The Direction pin of the controller (BCM numbering). Set to None to disable. |
| Enable Pin | Integer | The Enable pin of the controller (BCM numbering). Set to None to disable. |
| Enable Mode | Select(Options: [Only When Turning | Always] (Default in bold) | Choose when to pull the enable pin high to energize the motor. |
| Enable at Shutdown | Select(Options: [Enable | Disable] (Default in bold) | Choose whether the enable pin in pulled high (Enable) or low (Disable) when AoT shuts down. |
| If using a Step Resolution other than Full, and all three Mode Pins are set, they will be set high (1) or how (0) according to the values in parentheses to the right of the selected Step Resolution, e.g. (Mode Pin 1, Mode Pin 2, Mode Pin 3). |
| Step Resolution | Select(Options: [Full (modes 0, 0, 0) | Half (modes 1, 0, 0) | 1/4 (modes 0, 1, 0) | 1/8 (modes 1, 1, 0) | 1/16 (modes 0, 0, 1) | 1/32 (modes 1, 0, 1)] (Default in bold) | The Step Resolution of the controller |
| Mode Pin 1 | Integer | The Mode Pin 1 of the controller (BCM numbering). Set to None to disable. |
| Mode Pin 2 | Integer | The Mode Pin 2 of the controller (BCM numbering). Set to None to disable. |
| Mode Pin 3 | Integer | The Mode Pin 3 of the controller (BCM numbering). Set to None to disable. |
Motor: ULN2003 Stepper Motor, Unipolar (Pi <= 4)
- Manufacturer: STMicroelectronics
- Interfaces: GPIO
- Output Types: Value
- Libraries: RPi.GPIO, rpimotorlib
- Dependencies: RPi.GPIO, rpimotorlib
- Manufacturer URL: Link
- Datasheet URLs: Link 1, Link 2
This is a module for the ULN2003 driver.
| Channel Options |
| Notes about connecting the ULN2003... |
| Pin IN1 | Integer - Default Value: 18 | The pin (BCM numbering) connected to IN1 of the ULN2003 |
| Pin IN2 | Integer - Default Value: 23 | The pin (BCM numbering) connected to IN2 of the ULN2003 |
| Pin IN3 | Integer - Default Value: 24 | The pin (BCM numbering) connected to IN3 of the ULN2003 |
| Pin IN4 | Integer - Default Value: 25 | The pin (BCM numbering) connected to IN4 of the ULN2003 |
| Step Delay | Decimal - Default Value: 0.001 | The Step Delay of the controller |
| Notes about step resolution... |
| Step Resolution | Select(Options: [Full | Half | Wave] (Default in bold) | The Step Resolution of the controller |
On/Off (Virtual Multi-Channel)
- Output Types: On/Off
- Libraries: Internal
A virtual output device for testing. States are stored in memory and have no effect on hardware.
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Current (Amps) | Decimal | The current draw of the virtual device |
On/Off (Virtual Single-Channel)
- Output Types: On/Off
- Libraries: Internal
A single-channel virtual output device for testing. State is stored in memory and has no effect on hardware.
| Channel Options |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Current (Amps) | Decimal | The current draw of the virtual device |
On/Off: 52pi EP-0099 4channel Relay (4-Channel board)
- Manufacturer: 52Pi
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
Controls the 4 channel multichannel relay board.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the relay when aot starts |
| Shutdown State | Select | Set the state of the relay when aot shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: ChirpStack gRPC
- Interfaces: API
- Output Types: On/Off
- Libraries: requests, paho-mqtt, grpcio (optional)
- Dependencies: paho-mqtt
Sends on/off downlink commands via ChirpStack REST/gRPC API. Attempts gRPC first; falls back to REST (/api/devices//queue) if grpcio/chirpstack-api is not installed or unreachable.
| ChirpStack gRPC Server | Text - Default Value: 127.0.0.1:8080 | Host:port format (e.g., 127.0.0.1:8080) or http(s)://host:port |
| API Key | Text | Enter the JWT token value (without Bearer prefix) |
| DevEUI | Text | 16-digit hexadecimal DevEUI (separators allowed) |
| FPort | Integer - Default Value: 15 | LoRaWAN FPort on which the command is received |
| Confirmed | Boolean | Send command as confirmed (await acknowledgment) |
| Payload Format | Select(Options: [Hex Bytes | JSON Object (UTF-8 encoded)] (Default in bold) | Select the payload encoding format |
| On Payload | Text - Default Value: 000000 | e.g., 010110 (Hex) or JSON string |
| Off Payload | Text - Default Value: 000000 | e.g., 010210 (Hex) or JSON string |
| Enable Debug Logging | Boolean | Log connection/enqueue/confirmation notices (INFO/WARNING) for this device. Errors are always logged. Leave off in production. |
| Command Timeout (seconds) | Text - Default Value: 8 | How long to optimistically hold the commanded state while awaiting the device (0 = immediate). For wireless/remote devices set the expected response delay; wired devices can leave this at 0. |
| Channel Options |
| Startup State | Select | State to apply when AoT starts |
| Shutdown State | Select | State to apply when AoT shuts down |
| Force Command | Boolean | Always send command regardless of current state |
| Trigger Functions at Startup | Boolean | Execute trigger function when output switches at startup |
On/Off: Ecowitt Local HTTP
- Interfaces: IP
- Output Types: On/Off
- Libraries: requests
- Dependencies: requests
Enter the Ecowitt hub IP, sub-device ID, and model (WFC01/02=1, WFC02 new firmware=3, AC1100=2) to control On/Off via the local HTTP API.
| Ecowitt Device IP | Text | Local IP address of the Ecowitt hub (e.g., 192.168.1.100) |
| Ecowitt Sub-device ID | Text | ID of WFC01/WFC02/AC1100 (e.g., 11044) |
| Ecowitt Device Model | Select(Options: [WFC01 | WFC02 | AC1100] (Default in bold) | 1=WFC01/most WFC02, 3=some WFC02 (new firmware), 2=AC1100 |
| Valve Open % | Integer - Default Value: 100 | When turning on, open valve to this percent (0-100) |
| State Query Period (Seconds) | Integer - Default Value: 60 | How often to query the state of the output |
| Channel Options |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
On/Off: Grove Multichannel Relay (4- or 8-Channel board)
- Manufacturer: Grove
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 4 or 8 channel Grove multichannel relay board.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the relay when AoT starts |
| Shutdown State | Select | Set the state of the relay when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa HS300 6-Outlet WiFi Power Strip (old library, deprecated)
- Manufacturer: TP-Link
- Interfaces: IP
- Output Types: On/Off
- Dependencies: python-kasa
- Manufacturer URL: Link
This output controls the 6 outlets of the Kasa HS300 Smart WiFi Power Strip. This module uses an outdated python library and is deprecated. Do not use it. You will break the current Kasa modules if you do not delete this deprecated Output.
| Host | Text - Default Value: 192.168.0.50 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 60 | The period between checking if connected and output states. |
| Channel Options |
| Name | Text - Default Value: Outlet Name | A name to distinguish this from others |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa HS300 6-Outlet WiFi Power Strip
This output controls the 6 outlets of the Kasa HS300 Smart WiFi Power Strip. This is a variant that uses the latest python-kasa library. Note: if you see errors in the daemon log about the server starting, try changing the Asyncio RPC Port to another port.
| Host | Text - Default Value: 0.0.0.0 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 300 | The period between checking if connected and output states. 0 disables. |
| Asyncio RPC Port | Integer - Default Value: 18053 | The port to start the asyncio RPC server. Must be unique from other Kasa Outputs. |
| Channel Options |
| Name | Text - Default Value: Outlet Name | A name to distinguish this from others |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa KP303 3-Outlet WiFi Power Strip (old library, deprecated)
- Manufacturer: TP-Link
- Interfaces: IP
- Output Types: On/Off
- Dependencies: python-kasa
- Manufacturer URL: Link
This output controls the 3 outlets of the Kasa KP303 Smart WiFi Power Strip. This module uses an outdated python library and is deprecated. Do not use it. You will break the current Kasa modules if you do not delete this deprecated Output.
| Host | Text - Default Value: 192.168.0.50 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 60 | The period between checking if connected and output states. |
| Channel Options |
| Name | Text - Default Value: Outlet Name | A name to distinguish this from others |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa KP303 3-Outlet WiFi Power Strip
This output controls the 3 outlets of the Kasa KP303 Smart WiFi Power Strip. This is a variant that uses the latest python-kasa library. Note: if you see errors in the daemon log about the server starting, try changing the Asyncio RPC Port to another port.
| Host | Text - Default Value: 0.0.0.0 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 300 | The period between checking if connected and output states. 0 disables. |
| Asyncio RPC Port | Integer - Default Value: 18199 | The port to start the asyncio RPC server. Must be unique from other Kasa Outputs. |
| Channel Options |
| Name | Text - Default Value: Outlet Name | A name to distinguish this from others |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa WiFi Power Plug
This output controls Kasa WiFi Power Plugs, including the KP105, KP115, KP125, KP401, HS100, HS103, HS105, HS107, and HS110. Note: if you see errors in the daemon log about the server starting, try changing the Asyncio RPC Port to another port.
| Host | Text - Default Value: 0.0.0.0 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 300 | The period between checking if connected and output states. 0 disables. |
| Asyncio RPC Port | Integer - Default Value: 18338 | The port to start the asyncio RPC server. Must be unique from other Kasa Outputs. |
| Command Timeout (seconds) | Text - Default Value: 5 | How long to optimistically hold the commanded state while awaiting the device (0 = immediate). For wireless/remote devices set the expected response delay; wired devices can leave this at 0. |
| Channel Options |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Kasa WiFi RGB Light Bulb
This output controls the the Kasa WiFi Light Bulbs, including the KL125, KL130, and KL135. Note: if you see errors in the daemon log about the server starting, try changing the Asyncio RPC Port to another port.
| Host | Text - Default Value: 0.0.0.0 | Host or IP address |
| Status Update (Seconds) | Text - Default Value: 300 | The period between checking if connected and output states. 0 disables. |
| Asyncio RPC Port | Integer - Default Value: 18871 | The port to start the asyncio RPC server. Must be unique from other Kasa Outputs. |
| Channel Options |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Transition (Milliseconds) | Integer - Default Value: 0 | The hsv transition period |
| Brightness (Percent) | Integer | The brightness to set, in percent (0 - 100) |
| Set | Button | |
| Transition (Milliseconds) | Integer - Default Value: 0 | The hsv transition period |
| Hue (Degree) | Integer | The hue to set, in degrees (0 - 360) |
| Set | Button | |
| Transition (Milliseconds) | Integer - Default Value: 0 | The hsv transition period |
| Saturation (Percent) | Integer | The saturation to set, in percent (0 - 100) |
| Set | Button | |
| Transition (Milliseconds) | Integer - Default Value: 0 | The hsv transition period |
| Color Temperature (Kelvin) | Integer | The color temperature to set, in degrees Kelvin |
| Set | Button | |
| Transition (Milliseconds) | Integer - Default Value: 0 | The hsv transition period |
| HSV | Text - Default Value: 220, 20, 45 | The hue, saturation, brightness to set, e.g. "200, 20, 50" |
| Set | Button | |
| Transition (Milliseconds) | Integer - Default Value: 1000 | The transition period |
| On | Button | |
| Transition (Milliseconds) | Integer - Default Value: 1000 | The transition period |
| Off | Button | |
On/Off: MCP23017 16-Channel I/O Expander
Controls the 16 channels of the MCP23017.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Modbus TCP Coil (PLC)
- Manufacturer: Modbus
- Interfaces: IP
- Output Types: On/Off
- Libraries: pymodbus
- Dependencies: pymodbus
Switch coils on a Modbus TCP device (PLC, relay board, gateway). Each channel is one coil address. After every command the coil is read back to confirm it actually changed, and a mismatch is reported as a failure. Inputs and Outputs pointing at the same host and port share one connection automatically. Note that a readback confirms the PLC register, not that the relay or wiring moved. Modbus has no authentication or encryption — keep the device on an isolated network.
| Number of Channels | Integer - Default Value: 1 | Number of coils to control. Save to add or remove channel rows. |
| Host | Text | IP address or hostname of the Modbus TCP device |
| Port | Integer - Default Value: 502 | TCP port of the Modbus TCP device (standard: 502) |
| Unit ID | Integer - Default Value: 1 | Modbus unit/slave ID of the device. Usually 1 for a device addressed directly, or the slave address behind a serial gateway |
| Timeout (seconds) | Decimal - Default Value: 1.0 | How long to wait for a response. One request takes at most timeout x (retries + 1), and a command sends two requests |
| Retries | Integer - Default Value: 1 | Retries per request before it is treated as failed. Keep this low: a high value multiplies how long an unreachable device blocks a command |
| Command Timeout (seconds) | Text - Default Value: 5 | How long to optimistically hold the commanded state while awaiting the device (0 = immediate). For wireless/remote devices set the expected response delay; wired devices can leave this at 0. |
| Channel Options |
| Channel Name | Text | A friendly name shown in the UI for this channel. |
| Coil Address | Integer | Zero-based coil address to switch. Vendor documentation often lists one-based addresses (e.g. 00001 for coil 0), so verify against the register map |
| Startup State | Select(Options: [Do Nothing | Off | On] (Default in bold) | Set the channel state when AoT starts. "Do Nothing" leaves the coil as the PLC has it and simply reads it back |
| Shutdown State | Select(Options: [Do Nothing | Off | On] (Default in bold) | Set the channel state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the channel switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Neopixel (WS2812) RGB Strip with Raspberry Pi
Control the LEDs of a neopixel light strip. USE WITH CAUTION: This library uses the Hardware-PWM0 bus. Only GPIO pins 12 or 18 will work. If you use one of these pins for a NeoPixel strip, you can not use the other for Hardware-PWM control of another output or there will be conflicts that can cause the AoT Daemon to crash and the Pi to become unresponsive. If you need to control another PWM output like a servo, fan, or dimmable grow lights, you will need to use the Software-PWM by setting the Output PWM: Raspberry Pi GPIO and set the "Library" field to "Any Pin, <=40kHz". If you select the "Hardware Pin, <=30MHz" option, it will cause conflicts. This output is best used with Actions to control individual LED color and brightness.
| Data Pin | Integer - Default Value: 18 | Enter the GPIO Pin connected to your device data wire (BCM numbering). |
| Number of LEDs | Integer - Default Value: 1 | How many LEDs in the string? |
| On Mode | Select(Options: [Single Color | Rainbow] (Default in bold) | The color mode when turned on |
| Single Color | Text - Default Value: 30, 30, 30 | The Color when turning on in Single Color Mode, RGB format (red, green, blue), 0 - 255 each. |
| Rainbow Speed (Seconds) | Decimal - Default Value: 0.01 | The speed to change colors in Rainbow Mode |
| Rainbow Brightness | Integer - Default Value: 20 | The maximum brightness of LEDs in Rainbow Mode (1 - 255) |
| Rainbow Mode | Select(Options: [All LEDs change at once | One LED Changes at a time] (Default in bold) | How the rainbow is displayed |
| Channel Options |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Commands |
| LED Position | Integer | Which LED in the strip to change |
| RGB Color | Text - Default Value: 10, 0, 0 | The color (e.g 10, 0, 0) |
| Set | Button | |
On/Off: PCF8574 8-Channel I/O Expander
- Manufacturer: Texas Instruments
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 8 channels of the PCF8574.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: PCF8575 16-Channel I/O Expander
- Manufacturer: Texas Instruments
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 16 channels of the PCF8575.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Python Code
- Interfaces: Python
- Output Types: On/Off
- Dependencies: pylint
Python 3 code will be executed when this output is turned on or off.
| Analyze Python Code with Pylint | Boolean - Default Value: True | Analyze your Python code with pylint when saving |
| Channel Options |
| On Command | Python code to execute when the output is instructed to turn on |
| Off Command | Python code to execute when the output is instructed to turn off |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Raspberry Pi GPIO (Pi 5)
- Interfaces: GPIO
- Output Types: On/Off
- Libraries: pinctrl
The specified GPIO pin will be set HIGH (3.3 volts) or LOW (0 volts) when turned on or off, depending on the On State option.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Raspberry Pi GPIO (Pi <= 4)
- Interfaces: GPIO
- Output Types: On/Off
- Libraries: RPi.GPIO
- Dependencies: RPi.GPIO
The specified GPIO pin will be set HIGH (3.3 volts) or LOW (0 volts) when turned on or off, depending on the On State option.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Sequent Microsystems 8-Relay HAT for Raspberry Pi
- Manufacturer: Sequent Microsystems
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 8 relays of the 8-relay HAT made by Sequent Microsystems. 8 of these boards can be used simultaneously, allowing 64 relays to be controlled.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Board Stack Number | Select | Select the board stack number when multiple boards are used |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Shell Script
- Output Types: On/Off
- Libraries: subprocess.Popen
Commands will be executed in the Linux shell by the specified user when this output is turned on or off.
| Channel Options |
| On Command | Text - Default Value: /home/pi/script_on_off.sh on | Command to execute when the output is instructed to turn on |
| Off Command | Text - Default Value: /home/pi/script_on_off.sh off | Command to execute when the output is instructed to turn off |
| User | Text - Default Value: aot | The user to execute the command |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Sparkfun Relay Board (4 Relays)
Controls the 4 relays of the relay module.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: Wireless 315/433 MHz (Pi <= 4)
- Interfaces: GPIO
- Output Types: On/Off
- Libraries: rpi-rf
- Dependencies: RPi.GPIO, rpi_rf
This output uses a 315 or 433 MHz transmitter to turn wireless power outlets on or off. Run /opt/AoT/aot/devices/wireless_rpi_rf.py with a receiver to discover the codes produced from your remote.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| On Command | Text - Default Value: 22559 | Command to execute when the output is instructed to turn on |
| Off Command | Text - Default Value: 22558 | Command to execute when the output is instructed to turn off |
| Protocol | Select(Options: [1 | 2 | 3 | 4 | 5] (Default in bold) | |
| Pulse Length | Integer - Default Value: 189 | |
| Startup State | Select | Set the state when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Force Command | Boolean | Always send the command, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
On/Off: XL9535 16-Channel I/O Expander
- Manufacturer: Texas Instruments
- Interfaces: I2C
- Output Types: On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 16 channels of the XL9535.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state of the GPIO when AoT starts |
| Shutdown State | Select | Set the state of the GPIO when AoT shuts down |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
| Current (Amps) | Decimal | The current draw of the device being controlled |
PWM: PCA9685 16-Channel LED Controller
- Manufacturer: NXP Semiconductors
- Interfaces: I2C
- Output Types: PWM
- Libraries: adafruit-pca9685
- Dependencies: adafruit-pca9685
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
The PCA9685 can output a PWM signal to 16 channels at a frequency between 40 and 1600 Hz.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Frequency (Hertz) | Integer - Default Value: 1600 | The Herts to output the PWM signal (40 - 1600) |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Current (Amps) | Decimal | The current draw of the device being controlled |
PWM: Python 3 Code
- Interfaces: Python
- Output Types: PWM
- Dependencies: pylint
Python 3 code will be executed when this output is turned on or off. The "duty_cycle" object is a float value that represents the duty cycle that has been set.
| Analyze Python Code with Pylint | Boolean - Default Value: True | Analyze your Python code with pylint when saving |
| Channel Options |
| Python 3 Code | Python code to execute to set the PWM duty cycle (%) |
| User | Text - Default Value: aot | The user to execute the command |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Set the Duty Cycle. |
| Duty Cycle | Decimal | The duty cycle to set |
| Set Duty Cycle | Button | |
PWM: Raspberry Pi GPIO (Pi <= 4)
- Interfaces: GPIO
- Output Types: PWM
- Libraries: RPi.GPIO
- Dependencies: RPi.GPIO
A software implementation of PWM using the RPi.GPIO library.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Frequency (Hertz) | Integer - Default Value: 1000 | The Hertz to output the PWM signal |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Set the Duty Cycle. |
| Duty Cycle | Decimal | The duty cycle to set |
| Set Duty Cycle | Button | |
PWM: Raspberry Pi GPIO (Pi <= 4)
- Interfaces: GPIO
- Output Types: PWM
- Libraries: pigpio
- Dependencies: pigpio, pigpio
See the PWM section of the manual for PWM information and determining which pins may be used for each library option.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Library | Select(Options: [Any Pin, <= 40 kHz | Hardware Pin, <= 30 MHz] (Default in bold) | Which method to produce the PWM signal (hardware pins can produce higher frequencies) |
| Frequency (Hertz) | Integer - Default Value: 22000 | The Herts to output the PWM signal (0 - 70,000) |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Set the Duty Cycle. |
| Duty Cycle | Decimal | The duty cycle to set |
| Set Duty Cycle | Button | |
PWM: Shell Script
- Interfaces: Shell
- Output Types: PWM
- Libraries: subprocess.Popen
Commands will be executed in the Linux shell by the specified user when the duty cycle is set for this output. The string "((duty_cycle))" in the command will be replaced with the duty cycle being set prior to execution.
| Channel Options |
| Bash Command | Text - Default Value: /home/pi/script_pwm.sh ((duty_cycle)) | Command to execute to set the PWM duty cycle (%) |
| User | Text - Default Value: aot | The user to execute the command |
| Startup State | Select | Set the state when AoT starts |
| Startup Value | Decimal | The value when AoT starts |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Value | Decimal | The value when AoT shuts down |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Current (Amps) | Decimal | The current draw of the device being controlled |
Peristaltic Pump: Atlas Scientific
- Manufacturer: Atlas Scientific
- Interfaces: I2C, UART, FTDI
- Output Types: Volume, On/Off
- Dependencies: pylibftdi
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Atlas Scientific peristaltic pumps can be set to dispense at their maximum rate or a rate can be specified. Their minimum flow rate is 0.5 ml/min and their maximum is 105 ml/min.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| FTDI Device | Text | The FTDI device connected to the input/output/etc. |
| UART Device | Text | The UART device location (e.g. /dev/ttyUSB1) |
| Channel Options |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Current (Amps) | Decimal | The current draw of the device being controlled |
| Commands |
| Calibration: a calibration can be performed to increase the accuracy of the pump. It's a good idea to clear the calibration before calibrating. First, remove all air from the line by pumping the fluid you would like to calibrate to through the pump hose. Next, press Dispense Amount and the pump will be instructed to dispense 10 ml (unless you changed the default value). Measure how much fluid was actually dispensed, enter this value in the Actual Volume Dispensed (ml) field, and press Calibrate to Dispensed Amount. Now any further pump volumes dispensed should be accurate. |
| Clear Calibration | Button | |
| Volume to Dispense (ml) | Decimal - Default Value: 10.0 | The volume (ml) that is instructed to be dispensed |
| Dispense Amount | Button | |
| Actual Volume Dispensed (ml) | Decimal - Default Value: 10.0 | The actual volume (ml) that was dispensed |
| Calibrate to Dispensed Amount | Button | |
| The I2C address can be changed. Enter a new address in the 0xYY format (e.g. 0x22, 0x50), then press Set I2C Address. Remember to deactivate and change the I2C address option after setting the new address. |
| New I2C Address | Text - Default Value: 0x67 | The new I2C to set the device to |
| Set I2C Address | Button | |
Peristaltic Pump: Grove I2C Motor Driver (Board v1.3)
- Manufacturer: Grove
- Interfaces: I2C
- Output Types: Volume, On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
Controls the Grove I2C Motor Driver Board (v1.3). Both motors will turn at the same time. This output can also dispense volumes of fluid if the motors are attached to peristaltic pumps.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Motor Speed (0 - 100) | Integer - Default Value: 100 | The motor output that determines the speed |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Fastest Rate (ml/min) | Decimal - Default Value: 100.0 | The fastest rate that the pump can dispense (ml/min) |
Peristaltic Pump: Grove I2C Motor Driver (TB6612FNG, Board v1.0)
- Manufacturer: Grove
- Interfaces: I2C
- Output Types: Volume, On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
Controls the Grove I2C Motor Driver Board (v1.3). Both motors will turn at the same time. This output can also dispense volumes of fluid if the motors are attached to peristaltic pumps.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Motor Speed (0 - 255) | Integer - Default Value: 255 | The motor output that determines the speed |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Fastest Rate (ml/min) | Decimal - Default Value: 100.0 | The fastest rate that the pump can dispense (ml/min) |
| Minimum On (Seconds) | Decimal - Default Value: 1.0 | The minimum duration the pump turns on for every 60 second period (only used for Specify Flow Rate mode). |
| Commands |
| New I2C Address | Text - Default Value: 0x14 | The new I2C to set the sensor to |
| Set I2C Address | Button | |
Peristaltic Pump: L298N DC Motor Controller (Pi 5)
- Manufacturer: STMicroelectronics
- Interfaces: GPIO
- Output Types: Volume, On/Off
- Libraries: pinctrl
- Additional URL: Link
The L298N can control 2 DC motors, and direction. If these motors control peristaltic pumps, set the Flow Rate and the output can can be instructed to dispense volumes accurately in addition to being turned on for durations.
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Input Pin 1 | Integer | The Input Pin 1 of the controller (BCM numbering) |
| Input Pin 2 | Integer | The Input Pin 2 of the controller (BCM numbering) |
| Use Enable Pin | Boolean - Default Value: True | Enable the use of the Enable Pin |
| Enable Pin | Integer | The Enable pin of the controller (BCM numbering) |
| Direction | Select(Options: [Forward | Backward] (Default in bold) | The direction to turn the motor |
| Volume Rate (ml/min) | Decimal - Default Value: 150.0 | If a pump, the measured flow rate (ml/min) at the set Duty Cycle |
Peristaltic Pump: L298N DC Motor Controller (Pi <= 4)
- Manufacturer: STMicroelectronics
- Interfaces: GPIO
- Output Types: Volume, On/Off
- Libraries: RPi.GPIO
- Dependencies: RPi.GPIO
- Additional URL: Link
The L298N can control 2 DC motors, both speed and direction. If these motors control peristaltic pumps, set the Flow Rate and the output can can be instructed to dispense volumes accurately in addition to being turned on for durations.
| Channel Options |
| Name | Text | A name to distinguish this from others |
| Input Pin 1 | Integer | The Input Pin 1 of the controller (BCM numbering) |
| Input Pin 2 | Integer | The Input Pin 2 of the controller (BCM numbering) |
| Use Enable Pin | Boolean - Default Value: True | Enable the use of the Enable Pin |
| Enable Pin | Integer | The Enable pin of the controller (BCM numbering) |
| Enable Pin Duty Cycle | Integer - Default Value: 50 | The duty cycle to apply to the Enable Pin (percent, 1 - 100) |
| Direction | Select(Options: [Forward | Backward] (Default in bold) | The direction to turn the motor |
| Volume Rate (ml/min) | Decimal - Default Value: 150.0 | If a pump, the measured flow rate (ml/min) at the set Duty Cycle |
Peristaltic Pump: MCP23017 16-Channel I/O Expander
Controls the 16 channels of the MCP23017 with a relay and peristaltic pump connected to each channel.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| Name | Text | A name to distinguish this from others |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the output channel that corresponds to the pump being on |
| Fastest Rate (ml/min) | Decimal - Default Value: 150.0 | The fastest rate that the pump can dispense (ml/min) |
| Minimum On (Seconds) | Decimal - Default Value: 1.0 | The minimum duration the pump should be turned on for every 60 second period |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Current (Amps) | Decimal | The current draw of the device being controlled |
Peristaltic Pump: PCF8574 8-Channel I/O Expander
- Manufacturer: Texas Instruments
- Interfaces: I2C
- Output Types: Volume, On/Off
- Libraries: smbus2
- Dependencies: smbus2
- Manufacturer URL: Link
- Datasheet URL: Link
- Product URL: Link
Controls the 8 channels of the PCF8574 with a relay and peristaltic pump connected to each channel.
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Channel Options |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the output channel that corresponds to the pump being on |
| Fastest Rate (ml/min) | Decimal - Default Value: 150.0 | The fastest rate that the pump can dispense (ml/min) |
| Minimum On (Seconds) | Decimal - Default Value: 1.0 | The minimum duration the pump should be turned on for every 60 second period |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Current (Amps) | Decimal | The current draw of the device being controlled |
Peristaltic Pump: Raspberry Pi GPIO (Pi <= 4)
- Interfaces: GPIO
- Output Types: Volume, On/Off
- Libraries: RPi.GPIO
- Dependencies: RPi.GPIO
This output turns a GPIO pin HIGH and LOW to control power to a generic peristaltic pump. The peristaltic pump can then be turned on for a duration or, after determining the pump's maximum flow rate, instructed to dispense a specific volume at the maximum rate or at a specified rate.
| Channel Options |
| Pin: GPIO (BCM) | Integer | The pin to control the state of |
| On State | Select(Options: [HIGH | LOW] (Default in bold) | The state of the GPIO that corresponds to an On state |
| Fastest Rate (ml/min) | Decimal - Default Value: 150.0 | The fastest rate that the pump can dispense (ml/min) |
| Minimum On (Seconds) | Decimal - Default Value: 1.0 | The minimum duration the pump should be turned on for every 60 second period |
| Flow Rate Method | Select(Options: [Fastest Flow Rate | Specify Flow Rate] (Default in bold) | The flow rate to use when pumping a volume |
| Desired Flow Rate (ml/min) | Decimal - Default Value: 10.0 | Desired flow rate in ml/minute when Specify Flow Rate set |
| Current (Amps) | Decimal | The current draw of the device being controlled |
Remote AoT Output: On/Off
- Interfaces: API
- Output Types: On/Off
- Libraries: requests
- Dependencies: requests
This Output allows remote control of another AoT On/Off Output over a network using the API.
| Remote AoT Host | Text | The host or IP address of the remote AoT (a port may be included, e.g. 192.168.0.9:8084) |
| Remote AoT API Key | Text | The API key of the remote AoT, exactly as shown on that server |
| Protocol | Select(Options: [HTTPS | HTTP] (Default in bold) | Use HTTPS unless the remote AoT is only reachable over plain HTTP on a trusted network |
| Verify TLS Certificate | Boolean - Default Value: True | Verify the remote server certificate. Turn this off only for a self-signed certificate on a trusted network — while off, the API key can be read by a man in the middle |
| State Query Period (Seconds) | Integer - Default Value: 120 | How often to query the state of the output |
| Request Timeout (Seconds) | Integer - Default Value: 60 | HTTP read timeout for ON/OFF commands. Must be longer than the slowest command on the remote host (e.g. if the remote command has time.sleep(15), set this to at least 20). |
| Command Timeout (seconds) | Text - Default Value: 5 | How long to optimistically hold the commanded state while awaiting the device (0 = immediate). For wireless/remote devices set the expected response delay; wired devices can leave this at 0. |
| Channel Options |
| Remote AoT Output | The Remote AoT Output to control |
| Startup State | Select(Options: [Do Nothing | Off | On] (Default in bold) | Set the state when AoT starts |
| Shutdown State | Select(Options: [Do Nothing | Off | On] (Default in bold) | Set the state when AoT shuts down |
| Force Command | Boolean | Always send the command if instructed, regardless of the current state |
| Trigger Functions at Startup | Boolean | Whether to trigger functions when the output switches at startup |
Remote AoT Output: PWM
- Interfaces: API
- Output Types: PWM
- Libraries: requests
- Dependencies: requests
This Output allows remote control of another AoT PWM Output over a network using the API.
| Remote AoT Host | Text | The host or IP address of the remote AoT (a port may be included, e.g. 192.168.0.9:8084) |
| Remote AoT API Key | Text | The API key of the remote AoT, exactly as shown on that server |
| Protocol | Select(Options: [HTTPS | HTTP] (Default in bold) | Use HTTPS unless the remote AoT is only reachable over plain HTTP on a trusted network |
| Verify TLS Certificate | Boolean - Default Value: True | Verify the remote server certificate. Turn this off only for a self-signed certificate on a trusted network — while off, the API key can be read by a man in the middle |
| Request Timeout (Seconds) | Integer - Default Value: 60 | HTTP read timeout for duty cycle commands. Must be longer than the slowest command on the remote host |
| State Query Period (Seconds) | Integer - Default Value: 120 | How often to query the state of the output |
| Channel Options |
| Remote AoT Output | The Remote AoT Output to control |
| Startup State | Select | Set the state when AoT starts |
| Start Duty Cycle | Decimal | The duty cycle to set at startup, if enabled |
| Shutdown State | Select | Set the state when AoT shuts down |
| Shutdown Duty Cycle | Decimal | The duty cycle to set at shutdown, if enabled |
| Invert Signal | Boolean | Invert the PWM signal |
| Invert Stored Signal | Boolean | Invert the value that is saved to the measurement database |
| Commands |
| Set the Duty Cycle. |
| Duty Cycle | Decimal | The duty cycle to set |
| Set Duty Cycle | Button | |
Spacer
A spacer to organize Outputs.
| Color | Text - Default Value: #000000 | The color of the name text |
Value: GP8XXX (8413, 8403) 2-Channel DAC: 0-10 VDC
Output 0 to 10 VDC signal. GP8403: 12bit DAC Dual Channel I2C to 0-5V/0-10V | GP8413: 15bit DAC Dual Channel I2C to 0-10V
| I2C Address | Text | The address of the I2C device. |
| I2C Bus | Integer | The Bus the I2C device is connected. |
| Device | Select(Options: [GP8403 12-bit | GP8413 15-bit] (Default in bold) | Select your GP8XXX device |
| Channel Options |
| Start State | Select(Options: [Previously-Saved State | Specified Value] (Default in bold) | Select the channel start state |
| Start Value (volts) | Decimal | If Specified Value is selected, set the start state value |
| Shutdown State | Select(Options: [Previously-Saved Value | Specified Value] (Default in bold) | Select the channel shutdown state |
| Shutdown Value (volts) | Decimal | If Specified Value is selected, set the shutdown state value |
| Off Value (volts) | Decimal | If Specified Value to apply when turned off |