I have successfully installed a multi-variable serial.sensor using /dev/ttyUSB0 with the following YAML:
# KCS Arduino Weather Sensor
sensor:
- platform: serial
serial_port: /dev/ttyUSB0
baudrate: 115200
- platform: template
sensors:
my_temperature_sensor:
friendly_name: WTemperature
unit_of_measurement: "°C"
value_template: "{{ states('sensor.serial_sensor').split(',')[1] | float }}"
my_humidity:
friendly_name: WHumidity
unit_of_measurement: "%"
value_template: "{{ states('sensor.serial_sensor').split(',')[3] | float }}"
my_pressure:
friendly_name: WBarometer
unit_of_measurement: "mBar"
value_template: "{{ states('sensor.serial_sensor').split(',')[2] | float }}"
my_pir:
friendly_name: Motion1
unit_of_measurement: " "
value_template: "{{ states('sensor.serial_sensor').split(',')[4] | int }}"
my_irmotehb:
friendly_name: IR Mote Heart Beat
unit_of_measurement: " "
value_template: "{{ states('sensor.serial_sensor').split(',')[6] | float }}"
I have a second USB port ready to accept a slew of other variables from a PLC.
I have not been able to determine the syntax for defining the second value template. THe following YAML attempts to define the second sensor, and the config.yaml confirms fine, but after restarting HA no new entities are discernable:
# SLC PLC data
sensor:
- platform: serial
serial_port: /dev/ttyUSB1
baudrate: 115200
- platform: template
sensors:
first_floor_temp:
friendly_name: FirstFloorTemp
unit_of_measurement: "°F"
value_template: "{{ states('sensor.serial_sensor').split(',')[1] | int }}"
How does one differentiate between multiple serial sensors?
Thanks.
Solved.
If you stare long enough at the SERIAL// doc, you begin to see the options that aren’t ever used in examples. Using the name: attribute allows me to use something other than the default “sensor.serial_sensor” id that is provided when you do not specify a name.
Thus, naming the two serial platforms provides the differentiation I was looking for:
# KCS Arduino Weather Sensor
sensor:
- platform: serial
serial_port: /dev/ttyUSB1
baudrate: 115200
name: "DuinoIRXmtrMote1"
- platform: template
sensors:
my_temperature_sensor:
friendly_name: WTemperature
unit_of_measurement: "°C"
value_template: "{{ states('sensor.DuinoIRXmtrMote1').split(',')[1] | float }}"
my_humidity:
friendly_name: WHumidity
unit_of_measurement: "%"
value_template: "{{ states('sensor.DuinoIRXmtrMote1').split(',')[3] | float }}"
my_pressure:
friendly_name: WBarometer
unit_of_measurement: "mBar"
value_template: "{{ states('sensor.DuinoIRXmtrMote1').split(',')[2] | float }}"
my_pir:
friendly_name: Motion1
unit_of_measurement: " "
value_template: "{{ states('sensor.DuinoIRXmtrMote1').split(',')[4] | int }}"
my_irmotehb:
friendly_name: IR Mote Heart Beat
unit_of_measurement: " "
value_template: "{{ states('sensor.DuinoIRXmtrMote1').split(',')[6] | float }}"
# SLC Data
- platform: serial
serial_port: /dev/ttyUSB0
baudrate: 115200
name: "slcdata"
- platform: template
sensors:
first_floor_temp:
friendly_name: FirstFloorTemp
unit_of_measurement: "°F"
value_template: "{{ states('sensor.slcdata').split(',')[3] | int }}"