Custom UART Device

Lots of devices communicate using the UART protocol. If you want to integrate a device into esphomelib that uses this protocol you can pretty much use almost all Arduino-based code because esphomelib 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 "esphomelib.h"
using namespace esphomelib;

class MyCustomComponent : public Component, public UARTDevice {
 public:
  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
esphomeyaml:
  includes:
    - my_custom_component.h

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

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