Custom UART Device ================== .. warning:: Custom components are deprecated, not recommended for new configurations and will be removed from ESPHome in a future release. Please look at creating a real ESPHome component and "importing" it into your configuration with :doc:`/components/external_components`. You can find some basic documentation on creating your own components at :ref:`contributing_to_esphome`. 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. .. code-block:: cpp #include "esphome.h" 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: .. code-block:: yaml # Example configuration entry esphome: 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}; See Also -------- - :ghedit:`Edit`