Serial
The serial
sensor integration集成将 Home Assistant 与您的设备、服务等连接和集成。 [Learn more] is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With ser2net
socat
To check what kind of data is arriving at your serial port, use a command-line tool like minicom
or picocom
on Linux, on a macOS you can use screen
or on Windows putty
.
sudo minicom -D /dev/ttyACM0
Configuration
To setup a serial sensor to your installation, add the following to your configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] file.
在更改了configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件后,重启 Home Assistant 以应用更改。 该集成现在显示在集成页面的 设置 > 设备与服务 下。其实体在集成卡片上以及实体标签上列出。
# Example configuration.yaml entry
sensor:
- platform: serial
serial_port: /dev/ttyACM0
Configuration Variables
Number of data bits. Possible values: 5=FIVEBITS
, 6=SIXBITS
, 7=SEVENBITS
, 8=EIGHTBITS
.
Enable parity checking. Possible values: N=PARITY_NONE
, E=PARITY_EVEN
, O=PARITY_ODD
, M=PARITY_MARK
, S=PARITY_SPACE
.
Number of stop bits. Possible values: 1=STOPBITS_ONE
, 1.5=STOPBITS_ONE_POINT_FIVE
, 2=STOPBITS_TWO
.
value_template for Template sensor
TMP36
"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}"
Examples
Arduino
For controllers of the Arduino family, a possible sketch to read the temperature and the humidity could look like the sample below.The returned data is in JSON format and can be split into the individual sensor values using a template.
#include <ArduinoJson.h>
void setup() {
Serial.begin(115200);
}
void loop() {
StaticJsonDocument<100> jsonBuffer;
jsonBuffer["temperature"] = analogRead(A0);
jsonBuffer["humidity"] = analogRead(A1);
serializeJson(jsonBuffer, Serial);
Serial.println();
delay(1000);
}
Devices returning multiple sensors as a text string
For devices that return multiple sensors as a concatenated string of values with a delimiter, (i.e., the returned string is not JSON formatted) you can make several template sensors, all using the same serial response. For example, a stream from the Sparkfun USB Weather Board
$,24.1,50,12.9,1029.83,0.0,0.00,*
$,24.3,51,12.8,1029.76,0.0,0.00,*
To parse this into individual sensors, split using the comma delimiter and then create a template sensor for each item of interest.
# Example configuration.yaml entry
sensor:
- platform: serial
serial_port: /dev/ttyUSB0
baudrate: 9600
template:
sensor:
- name: Temperature
unit_of_measurement: "°C"
state: "{{ states('sensor.serial_sensor').split(',')[1] | float(default=0) }}"
- name: Humidity
unit_of_measurement: "%"
state: "{{ states('sensor.serial_sensor').split(',')[2] | float(default=0) }}"
- name: Barometer
unit_of_measurement: "mbar"
state: "{{ states('sensor.serial_sensor').split(',')[4] | float(default=0) }}"
Digispark USB Development Board
This blog post describes the setup with a Digispark USB Development Board.