esphome-docs/custom/uart.rst

67 lines
1.6 KiB
ReStructuredText

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`