TCP
The TCP integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more] allows the integration of some services for which a specific Home Assistant integration does not exist. If the service communicates over a TCP socket with a simple request/reply mechanism then the chances are that this integration will allow integration with it.
There is currently support for the following device types within Home Assistant:
Sensor
To enable the TCP integrationIntegrations connect and integrate Home Assistant with your devices, services, and more. [Learn more], add the following lines to your configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file.
After changing the configuration.yaml
The configuration.yaml file is the main configuration file for Home Assistant. It lists the integrations to be loaded and their specific configurations. In some cases, the configuration needs to be edited manually directly in the configuration.yaml file. Most integrations can be configured in the UI. [Learn more] file, restart Home Assistant to apply the changes. The integration is now shown on the integrations page under Settings > Devices & services. Its entities are listed on the integration card itself and on the Entities tab.
# Example configuration.yaml entry
sensor:
- platform: tcp
host: IP_ADDRESS
port: PORT
payload: PAYLOAD
Configuration Variables
How long in seconds to wait for a response from the service before giving up and disconnecting.
Defines a template to extract the value. By default it’s assumed that the entire response is the value.
The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default.
Examples
In this section you find some real-life examples of how to use this sensor.
EBUSd
The EBUSd
$ echo "r WaterPressure" | nc 10.0.0.127 8888
0.903;ok
You will notice that the output from the service is not just a single value (it contains “;ok” as well). To grab the value we’re interested in, we can use a Jinja2 template. The response received is injected into the template as the value
variable. To use this value within Home Assistant, use the following configuration:
sensor:
# Example configuration.yaml entry
- platform: tcp
name: Central Heating Pressure
host: 10.0.0.127
port: 8888
timeout: 5
payload: "r WaterPressure\n"
value_template: "{{ value.split(';')[0] }}"
unit_of_measurement: Bar
hddtemp
The tool hddtemp
collects the temperature of your hard disks.
$ hddtemp
/dev/sda: SAMSUNG MZMTE256HMHP-000L1: 39°C
With hddtemp -d
you can run the tool in TCP/IP daemon mode on port 7634 which enables you to get the data across the network.
$ telnet localhost 7634
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
|/dev/sda|SAMSUNG MZMTE256HMHP-000L1|38|C|Connection closed by foreign host.
The entry for the configuration.yaml
file for a hddtemp
sensor could look like the example below.
sensor:
# Example configuration.yaml entry
- platform: tcp
name: HDD temperature
host: 127.0.0.1
port: 7634
timeout: 5
payload: "\n"
value_template: "{{ value.split('|')[3] }}"
unit_of_measurement: "°C"
Binary sensor
The TCP Binary Sensor is a type of TCP Sensor which is either “off” or “on”. In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a value_on
value to represent what is returned when the device is turned on.
To enable this sensor, add the following lines to your configuration.yaml
:
# Example configuration.yaml entry
binary_sensor:
- platform: tcp
host: IP_ADDRESS
port: PORT
payload: PAYLOAD
value_on: 1
Configuration Variables
The name you’d like to give the sensor in Home Assistant.
Defines a template to extract the value.
entire response is the value
The size of the receive buffer in bytes. Set this to a larger value if you expect to receive a response larger than the default.
How long in seconds to wait for a response from the service before giving up and disconnecting.