Custom UART Device

Lots of devices communicate using the UART protocol. If you want to integrate a device into ESPHome that uses this protocol you can pretty much use almost all Arduino-based code because ESPHome has a nice abstraction over the UART bus.

See the other custom component guides for how to register components and make them publish values.

#include "esphome.h"

class MyCustomComponent : public Component, public UARTDevice {
  MyCustomComponent(UARTComponent *parent) : UARTDevice(parent) {}

  void setup() override {
    // nothing to do here
  void loop() override {
    // Use Arduino API to read data, for example
    String line = readString();
    int i = parseInt();
    while (available()) {
      char c = read();
    // etc

And in YAML:

# Example configuration entry
    - my_custom_component.h

  id: uart_bus
  tx_pin: D0
  rx_pin: D1
  baud_rate: 9600

- lambda: |-
    auto my_custom = new MyCustomComponent(id(uart_bus));
    return {my_custom};

See Also