ESPHome
2026.11.0-dev
Loading...
Searching...
No Matches
esphome
components
uart_tcp
uart_tcp.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
esphome/components/binary_sensor/binary_sensor.h
"
4
#ifdef USE_SENSOR
5
#include "
esphome/components/sensor/sensor.h
"
6
#endif
7
#include "
esphome/components/socket/tcp_client_link.h
"
8
#ifdef USE_SOCKET_TCP_LISTENER
9
#include "
esphome/components/socket/tcp_listener.h
"
10
#endif
11
#include "
esphome/components/uart/uart.h
"
12
#include "
esphome/core/component.h
"
13
14
#include <cstdint>
15
#include <memory>
16
17
namespace
esphome::uart_tcp
{
18
20
class
UartTcp
final :
public
Component
,
public
uart::UARTDevice
{
21
public
:
22
void
set_host
(
const
char
*host) { this->
link_
.
set_host
(host); }
23
void
set_port
(uint16_t port) { this->
link_
.
set_port
(port); }
24
void
set_reconnect_interval
(
uint32_t
ms) { this->
link_
.
set_reconnect_interval
(ms); }
25
void
set_connected_sensor
(
binary_sensor::BinarySensor
*sensor) { this->
connected_sensor_
= sensor; }
26
#ifdef USE_SENSOR
27
void
set_disconnects_sensor
(
sensor::Sensor
*sensor) { this->
disconnects_sensor_
= sensor; }
28
#endif
29
#ifdef USE_SOCKET_TCP_LISTENER
30
void
set_server
(
bool
server) { this->
server_
= server; }
31
#ifdef USE_SOCKET_IPV4_ALLOW
32
void
set_allow
(
const
socket::Ipv4AllowEntry
*entries,
size_t
count
) { this->
listener_
.
set_allow
(entries,
count
); }
33
#endif
34
#endif
35
36
void
setup
()
override
;
37
void
loop
()
override
;
38
void
dump_config
()
override
;
39
void
on_shutdown
()
override
;
40
float
get_setup_priority
()
const override
{
return
setup_priority::AFTER_WIFI
; }
41
42
protected
:
43
void
sync_link_
();
44
void
read_socket_
();
45
void
read_uart_
();
46
void
discard_uart_
();
47
48
static
constexpr
size_t
READ_CHUNK
= 128;
49
// Scratch size for dropping stale UART bytes on connect.
50
static
constexpr
size_t
DISCARD_CHUNK
= 32;
51
52
socket::TcpClientLink
link_
;
53
#ifdef USE_SOCKET_TCP_LISTENER
54
socket::TcpListener
listener_
;
55
#endif
56
binary_sensor::BinarySensor
*
connected_sensor_
{
nullptr
};
57
// Loop start time of the last socket-to-UART write; sizes the next paced write.
58
uint32_t
last_write_ms_
{0};
59
#ifdef USE_SENSOR
60
sensor::Sensor
*
disconnects_sensor_
{
nullptr
};
61
uint32_t
disconnects_
{0};
62
#endif
63
bool
server_
{
false
};
64
// The link state loop() saw last; edges clear the buffer and publish the sensor.
65
bool
link_was_up_
{
false
};
66
// A read stopped before EAGAIN. ready() stays false until new data arrives.
67
bool
rx_pending_
{
false
};
68
};
69
70
}
// namespace esphome::uart_tcp
binary_sensor.h
esphome::Component
Definition
component.h:147
esphome::binary_sensor::BinarySensor
Base class for all binary_sensor-type classes.
Definition
binary_sensor.h:33
esphome::sensor::Sensor
Base-class for all sensors.
Definition
sensor.h:47
esphome::socket::TcpClientLink
A reconnecting TCP stream driven from loop().
Definition
tcp_client_link.h:22
esphome::socket::TcpClientLink::set_reconnect_interval
void set_reconnect_interval(uint32_t ms)
Definition
tcp_client_link.h:26
esphome::socket::TcpClientLink::set_port
void set_port(uint16_t port)
Definition
tcp_client_link.h:25
esphome::socket::TcpClientLink::set_host
void set_host(const char *host)
Definition
tcp_client_link.h:24
esphome::socket::TcpListener
The server side of a bridged TCP link: owns the listen socket and the allow list, accepts one peer at...
Definition
tcp_listener.h:21
esphome::socket::TcpListener::set_allow
void set_allow(const Ipv4AllowEntry *entries, size_t count)
Definition
tcp_listener.h:24
esphome::uart::UARTDevice
Definition
uart.h:12
esphome::uart_tcp::UartTcp
Copies raw bytes between one hardware UART and one TCP socket.
Definition
uart_tcp.h:20
esphome::uart_tcp::UartTcp::DISCARD_CHUNK
static constexpr size_t DISCARD_CHUNK
Definition
uart_tcp.h:50
esphome::uart_tcp::UartTcp::link_was_up_
bool link_was_up_
Definition
uart_tcp.h:65
esphome::uart_tcp::UartTcp::link_
socket::TcpClientLink link_
Definition
uart_tcp.h:52
esphome::uart_tcp::UartTcp::loop
void loop() override
Definition
uart_tcp.cpp:115
esphome::uart_tcp::UartTcp::set_reconnect_interval
void set_reconnect_interval(uint32_t ms)
Definition
uart_tcp.h:24
esphome::uart_tcp::UartTcp::set_disconnects_sensor
void set_disconnects_sensor(sensor::Sensor *sensor)
Definition
uart_tcp.h:27
esphome::uart_tcp::UartTcp::disconnects_sensor_
sensor::Sensor * disconnects_sensor_
Definition
uart_tcp.h:60
esphome::uart_tcp::UartTcp::on_shutdown
void on_shutdown() override
Definition
uart_tcp.cpp:46
esphome::uart_tcp::UartTcp::READ_CHUNK
static constexpr size_t READ_CHUNK
Definition
uart_tcp.h:48
esphome::uart_tcp::UartTcp::listener_
socket::TcpListener listener_
Definition
uart_tcp.h:54
esphome::uart_tcp::UartTcp::read_socket_
void read_socket_()
Definition
uart_tcp.cpp:72
esphome::uart_tcp::UartTcp::set_host
void set_host(const char *host)
Definition
uart_tcp.h:22
esphome::uart_tcp::UartTcp::connected_sensor_
binary_sensor::BinarySensor * connected_sensor_
Definition
uart_tcp.h:56
esphome::uart_tcp::UartTcp::set_server
void set_server(bool server)
Definition
uart_tcp.h:30
esphome::uart_tcp::UartTcp::disconnects_
uint32_t disconnects_
Definition
uart_tcp.h:61
esphome::uart_tcp::UartTcp::set_allow
void set_allow(const socket::Ipv4AllowEntry *entries, size_t count)
Definition
uart_tcp.h:32
esphome::uart_tcp::UartTcp::set_connected_sensor
void set_connected_sensor(binary_sensor::BinarySensor *sensor)
Definition
uart_tcp.h:25
esphome::uart_tcp::UartTcp::read_uart_
void read_uart_()
Definition
uart_tcp.cpp:108
esphome::uart_tcp::UartTcp::dump_config
void dump_config() override
Definition
uart_tcp.cpp:29
esphome::uart_tcp::UartTcp::set_port
void set_port(uint16_t port)
Definition
uart_tcp.h:23
esphome::uart_tcp::UartTcp::discard_uart_
void discard_uart_()
Definition
uart_tcp.cpp:95
esphome::uart_tcp::UartTcp::rx_pending_
bool rx_pending_
Definition
uart_tcp.h:67
esphome::uart_tcp::UartTcp::last_write_ms_
uint32_t last_write_ms_
Definition
uart_tcp.h:58
esphome::uart_tcp::UartTcp::server_
bool server_
Definition
uart_tcp.h:63
esphome::uart_tcp::UartTcp::sync_link_
void sync_link_()
Definition
uart_tcp.cpp:53
esphome::uart_tcp::UartTcp::get_setup_priority
float get_setup_priority() const override
Definition
uart_tcp.h:40
esphome::uart_tcp::UartTcp::setup
void setup() override
Definition
uart_tcp.cpp:14
component.h
count
unsigned count
Definition
gif.cpp:51
esphome::setup_priority::AFTER_WIFI
constexpr float AFTER_WIFI
For components that should be initialized after WiFi is connected.
Definition
component.h:55
esphome::uart_tcp
Definition
uart_tcp.cpp:10
uint32_t
static void uint32_t
Definition
crash_handler.cpp:153
sensor.h
esphome::socket::Ipv4AllowEntry
One allowed IPv4 network, network byte order, host bits cleared.
Definition
ipv4_allow.h:14
tcp_client_link.h
tcp_listener.h
uart.h
Generated by
1.12.0