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.