Serial Sensor


The serial sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With ser2net and socat would it also work for sensors connected to a remote system.

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

To setup a serial sensor to your installation, add the following to your configuration.yaml file:

# Example configuration.yaml entry
sensor:
  - platform: serial
    serial_port: /dev/ttyACM0

Configuration Variables

serial_port

(string)(Required)Local serial port where the sensor is connected and access is granted.

name

(string)(Optional)Friendly name to use for the frontend. Default to “Serial sensor”.

baudrate

(int)(Optional)Baudrate of the serial port.

Default value: 9600 Bps

value_template

(template)(Optional)Defines a template to extract a value from the serial line.

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.

#include <ArduinoJson.h>

void setup() {
  Serial.begin(115200);
}

void loop() {
  StaticJsonBuffer<100> jsonBuffer;
  JsonObject& json = prepareResponse(jsonBuffer);
  json.printTo(Serial);
  Serial.println();
  delay(2000);
}

JsonObject& prepareResponse(JsonBuffer& jsonBuffer) {
  JsonObject& root = jsonBuffer.createObject();
  root["temperature"] = analogRead(A0);
  root["humidity"] = analogRead(A1);
  return root;
}

Digispark USB Development Board

This blog post describes the setup with a Digispark USB Development Board.