home-assistant.io/source/_components/sensor.serial.markdown
2018-10-03 12:42:57 +02:00

2.6 KiB

layout title description date sidebar comments sharing footer logo ha_category ha_release ha_iot_class
page Serial Sensor Instructions on how to integrate data from serial connected sensors into Home Assistant. 2017-10-13 07:00 true false true true home-assistant.png Sensor 0.56 Local Polling

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 %} serial_port: description: Local serial port where the sensor is connected and access is granted. required: true type: string name: description: Friendly name to use for the frontend. Default to "Serial sensor". required: false type: string baudrate: description: Baudrate of the serial port. required: false default: 9600 Bps type: integer value_template: description: "Defines a template to extract a value from the serial line." required: false type: template {% endconfiguration %}

{% linkable_title value_template for Template sensor %}

{% linkable_title TMP36 %}

{% raw %}

"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}"

{% endraw %}

{% linkable_title Examples %}

{% linkable_title 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;
}

{% linkable_title Digispark USB Development Board %}

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