ADS


The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between Beckhoff automation devices running TwinCAT and other devices implementing this interface.

There is currently support for the following device types within Home Assistant:

Configuration

To enable ADS, add the following lines to your configuration.yaml file:

# Example configuration.yaml entry
ads:
  device: '127.0.0.1.1.1'
  port: 801

Configuration Variables

device

(string)(Required)The AMS NetId that identifies the device.

port

(integer)(Required)The port that runs the AMS server on the device, typically this would be 801 or 851.

ip_address

(string)(Optional)The IP address of the ADS device, if not set the first 4 bytes of the device id will be used.

Service

The ADS component will register the service write_by_name allowing you to write a value to a variable on your ADS device.

{
    "adsvar": ".myvariable",
    "adstype": "int",
    "value": 123
}

Service parameters:

  • adsvar: Name of the variable on the ADS device. To access global variables on TwinCAT2 use a prepending dot .myvariable, for TwinCAT3 use GBL.myvariable.
  • adstype: Specify the type of the variable. Use one of the following: int, byte, uint, bool
  • value: The value that will be written in the variable.

Binary Sensor

The ads binary sensor platform can be used to monitor a boolean value on your ADS device.

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml file:

# Example configuration.yaml entry
binary_sensor:
  - platform: ads
    adsvar: .boolean1

Configuration Variables

adsvar

(string)(Required)The name of the variable which you want to access on the ADS device.

name

(string)(Optional)An identifier for the light in the frontend.

device_class

(string)(Optional)The type/class of the sensor to set the icon in the frontend.

Light

The ads light platform allows you to control your connecte ADS lights.

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml file:

# Example configuration.yaml entry
light:
  - platform: ads
    adsvar: GVL.enable_light
    adsvar_brightness: GVL.brightness

Configuration Variables

adsvar

(string)(Required)The name of the boolean variable that switches the light on

adsvar_brightness

(integer)(Optional)The name of the variable that controls the brightness, use an unsigned integer on the PLC side

name

(string)(Optional)An identifier for the Light in the frontend

Sensor

The ads sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type INT, UINT, BYTE, DINT or UDINT.

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml file:

# Example configuration.yaml entry
sensor:
  - platform: ads
    adsvar: GVL.temperature
    unit_of_measurement: '°C'
    adstype: integer

Configuration Variables

adsvar

(string)(Required)The name of the variable which you want to access.

adstype

(string)(Optional)The datatype of the ADS variable, possible values are int, uint, byte, dint, udint.

Default value: int

name

(string)(Optional)An identifier for the sensor.

factor

(integer)(Optional)A factor that divides the stored value before displaying in Home Assistant.

Default value: 1

The factor can be used to implement fixed decimals. E.g., set factor to 100 if you want to display a fixed decimal value with two decimals. A variable value of 123 will be displayed as 1.23.

Switch

The ads switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name.

To use your ADS device, you first have to set up your ADS hub and then add the following to your configuration.yaml file:

# Example configuration.yaml entry
switch:
  - platform: ads
    adsvar: .global_bool

Configuration Variables

adsvar

(string)(Required)The name of the variable which you want to access on the ADS device.

name

(string)(Optional)An identifier for the switch in the frontend.