Git Product home page Git Product logo

esphome-stream-server's Introduction

Stream server for ESPHome

Custom component for ESPHome to expose a UART stream over WiFi or Ethernet. Provides a serial-to-wifi bridge as known from ESPLink or ser2net, using ESPHome.

This component creates a TCP server listening on port 6638 (by default), and relays all data between the connected clients and the serial port. It doesn't support any control sequences, telnet options or RFC 2217, just raw data.

Usage

Requires ESPHome v2022.3.0 or newer.

external_components:
  - source: github://oxan/esphome-stream-server

stream_server:

You can set the UART ID and port to be used under the stream_server component.

uart:
   id: uart_bus
   # add further configuration for the UART here

stream_server:
   uart_id: uart_bus
   port: 1234

Sensors

The server provides a binary sensor that signals whether there currently is a client connected:

binary_sensor:
  - platform: stream_server
    connected:
      name: Connected

It also provides a numeric sensor that indicates the number of connected clients:

sensor:
  - platform: stream_server
    connection_count:
      name: Number of connections

Advanced

It is possible to define multiple stream servers for multiple UARTs simultaneously:

uart:
  - id: uart1
    # ...
  - id: uart2
    # ...

stream_server:
  - uart_id: uart1
    port: 1234
  - uart_id: uart2
    port: 1235

The stream server has an internal buffer into which UART data is read before it is transmitted over TCP. The size of this buffer can be changed using the buffer_size option, and must be a power of two. Increasing the buffer size above the default of 128 bytes can help to achieve optimal throughput, and is especially helpful when using high baudrates. It can also be necessary to increase the rx_buffer_size option of the UART itself.

stream_server:
    buffer_size: 2048

esphome-stream-server's People

Contributors

bojanpotocnik avatar joshuaspence avatar oxan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esphome-stream-server's Issues

Idea: Use UARTStream instead of hardcoded UARTComponent

First of all thanks for writing this component. Some years ago I found an older version and I've been putting it to great use since.

While reading through the code, I couldn't help but notice the comments of "ESPHome doesn't know the Stream abstraction yet, so hardcode to use a UART for now."

Somewhere around the same time, I stumbled upon this from the Midea component:

https://www.esphome.io/api/appliance__base_8h_source.html

It implements a UARTStream class that takes the UARTcomponent and wraps the Stream class around it. Although it wouldn't change the functionality, it might be more in line with what you envisioned when you wrote this component.

serial errors after x minutes

I use the stream server on esphome to readout the dsmr meter and monitor my water usage with an inductive sensor.
The stream server is hooked up to the dsmr reader docker what I use for logging my electricity consumption

However since I updated to esphome 2023.2 I get many CRC errors on the dsmr communication
I'm not exactly sure if it is caused by the updated esphome or if by updating the firmware I also updated the stream-server

After some debugging I found that the first x minutes after a reflash/reboot the crc errors do not appear, after ~10 minutes they start to appear.

I also tried the update to esphome 2023.3 but this did not fix the problem

`api:
logger:
level: NONE
baud_rate: 0
ota:

external_components:
source: github://oxan/esphome-stream-server

uart:

  • rx_pin: RX
    baud_rate: 115200
    id: p1_bus
    rx_buffer_size: 1700

stream_server:
uart_id: p1_bus
port: 8088`

esphome 2021.10.0 breaks component

the stream-server component no longer builds in esphome 2021.10.0:

INFO Reading configuration /config/esphome/serial-over-ip.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing serial-over-ip (board: esp-wrover-kit; framework: arduino; platform: espressif32 @ 3.3.2)
--------------------------------------------------------------------------------
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif32 3.10006.210326 (1.0.6) 
 - tool-esptoolpy 1.30100.210531 (3.1.0) 
 - toolchain-xtensa32 2.50200.97 (5.2.0)
LDF Modes: Finder ~ off, Compatibility ~ soft
Dependency Graph
|-- <AsyncTCP-esphome> 1.2.2
|-- <WiFi> 1.0
|-- <FS> 1.0
|-- <Update> 1.0
|-- <ESPAsyncWebServer-esphome> 1.3.0
|   |-- <AsyncTCP-esphome> 1.2.2
|-- <ArduinoJson-esphomelib> 5.13.3
|-- <ESPmDNS> 1.0
Compiling /data/serial-over-ip/.pioenvs/serial-over-ip/src/esphome/components/stream_server/stream_server.cpp.o
In file included from /data/serial-over-ip/.piolibdeps/serial-over-ip/AsyncTCP-esphome/src/AsyncTCP.h:29:0,
                 from src/esphome/components/stream_server/stream_server.h:30,
                 from src/esphome/components/stream_server/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:74:3: error: #error "include FreeRTOS.h" must appear in source files before "include semphr.h"
  #error "include FreeRTOS.h" must appear in source files before "include semphr.h"
   ^
In file included from /data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:77:0,
                 from /data/serial-over-ip/.piolibdeps/serial-over-ip/AsyncTCP-esphome/src/AsyncTCP.h:29,
                 from src/esphome/components/stream_server/stream_server.h:30,
                 from src/esphome/components/stream_server/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:75:3: error: #error "include FreeRTOS.h" must appear in source files before "include queue.h"
  #error "include FreeRTOS.h" must appear in source files before "include queue.h"
   ^
Compiling /data/serial-over-ip/.pioenvs/serial-over-ip/src/main.cpp.o
Compiling /data/serial-over-ip/.pioenvs/serial-over-ip/src/stream_server.cpp.o
In file included from /data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:77:0,
                 from /data/serial-over-ip/.piolibdeps/serial-over-ip/AsyncTCP-esphome/src/AsyncTCP.h:29,
                 from src/esphome/components/stream_server/stream_server.h:30,
                 from src/esphome/components/stream_server/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:613:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:725:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:906:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGenericReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeek ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:917:1: error: 'UBaseType_t' does not name a type
 UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:930:1: error: 'UBaseType_t' does not name a type
 UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:940:43: error: expected initializer before 'PRIVILEGED_FUNCTION'
 void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
                                           ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1267:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1268:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1347:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1354:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1355:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1356:1: error: 'UBaseType_t' does not name a type
 UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1374:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueAltGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1375:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueAltGenericReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1390:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1391:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1392:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1393:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait );
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1400:62: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
                                                              ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1401:67: error: 'StaticQueue_t' has not been declared
 QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                                   ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1401:98: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                                                                  ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:52: error: 'UBaseType_t' does not name a type
 QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
                                                    ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:82: error: 'UBaseType_t' does not name a type
 QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
                                                                                  ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:111: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
                                                                                                               ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:58: error: 'UBaseType_t' does not name a type
 QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                          ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:88: error: 'UBaseType_t' does not name a type
 QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                                                        ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:116: error: 'StaticQueue_t' has not been declared
 QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                                                                                    ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:147: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
                                                                                                                                                   ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1404:56: error: expected initializer before 'PRIVILEGED_FUNCTION'
 void* xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
                                                        ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1410:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1411:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1548:41: error: 'UBaseType_t' does not name a type
 QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
                                         ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1548:74: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
                                                                          ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1572:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1591:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1627:79: error: 'TickType_t' does not name a type
 QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
                                                                               ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1627:105: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
                                                                                                         ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1632:81: error: expected initializer before 'PRIVILEGED_FUNCTION'
 QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
                                                                                 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1636:60: error: 'TickType_t' has not been declared
 void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
                                                            ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1636:86: error: expected initializer before 'PRIVILEGED_FUNCTION'
 void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
                                                                                      ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1637:1: error: 'BaseType_t' does not name a type
 BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1638:50: error: 'UBaseType_t' has not been declared
 void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;
                                                  ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1638:78: error: expected initializer before 'PRIVILEGED_FUNCTION'
 void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;
                                                                              ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1639:1: error: 'UBaseType_t' does not name a type
 UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
 ^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1640:53: error: expected initializer before 'PRIVILEGED_FUNCTION'
 uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
                                                     ^
In file included from src/esphome/components/stream_server/stream_server.cpp:17:0:
src/esphome/components/stream_server/stream_server.h: In member function 'void StreamServerComponent::set_uart_parent(esphome::uart::UARTComponent*)':
src/esphome/components/stream_server/stream_server.h:37:80: error: cannot convert 'esphome::uart::UARTComponent*' to 'Stream*' in assignment
     void set_uart_parent(esphome::uart::UARTComponent *parent) { this->stream_ = parent; }
                                                                                ^
src/esphome/components/stream_server/stream_server.cpp: In member function 'void StreamServerComponent::read()':
src/esphome/components/stream_server/stream_server.cpp:59:65: error: 'min' was not declared in this scope
         size_t read = this->stream_->readBytes(buf, min(len, 128));
                                                                 ^
src/esphome/components/stream_server/stream_server.cpp:59:65: note: suggested alternative:
In file included from /data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/algorithm:62:0,
                 from src/esphome/core/optional.h:19,
                 from src/esphome/core/component.h:7,
                 from src/esphome/components/stream_server/stream_server.h:19,
                 from src/esphome/components/stream_server/stream_server.cpp:17:
/data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_algo.h:3451:5: note:   'std::min'
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^
In file included from src/esphome/components/uart/uart.h:6:0,
                 from src/esphome/components/stream_server/stream_server.h:20,
                 from src/esphome/components/stream_server/stream_server.cpp:17:
src/esphome/components/stream_server/stream_server.cpp: In member function 'virtual void StreamServerComponent::dump_config()':
src/esphome/components/stream_server/stream_server.cpp:75:64: error: 'network_get_address' was not declared in this scope
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
                                                                ^
src/esphome/core/log.h:97:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^
src/esphome/components/stream_server/stream_server.cpp:75:5: note: in expansion of macro 'ESP_LOGCONFIG'
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
     ^
src/stream_server.cpp: In member function 'void StreamServerComponent::read()':
src/stream_server.cpp:60:65: error: 'min' was not declared in this scope
         size_t read = this->stream_->readBytes(buf, min(len, 128));
                                                                 ^
src/stream_server.cpp:60:65: note: suggested alternative:
In file included from /data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/algorithm:62:0,
                 from src/esphome/core/optional.h:19,
                 from src/esphome/core/component.h:7,
                 from src/stream_server.h:19,
                 from src/stream_server.cpp:18:
/data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_algo.h:3451:5: note:   'std::min'
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^
In file included from src/stream_server.cpp:20:0:
src/stream_server.cpp: In member function 'virtual void StreamServerComponent::dump_config()':
src/stream_server.cpp:76:64: error: 'network_get_address' was not declared in this scope
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
                                                                ^
src/esphome/core/log.h:97:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^
src/stream_server.cpp:76:5: note: in expansion of macro 'ESP_LOGCONFIG'
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
     ^
Archiving /data/serial-over-ip/.pioenvs/serial-over-ip/lib915/libESPmDNS.a
Compiling /data/serial-over-ip/.pioenvs/serial-over-ip/FrameworkArduino/FunctionalInterrupt.cpp.o
*** [/data/serial-over-ip/.pioenvs/serial-over-ip/src/esphome/components/stream_server/stream_server.cpp.o] Error 1
Compiling /data/serial-over-ip/.pioenvs/serial-over-ip/FrameworkArduino/HardwareSerial.cpp.o
*** [/data/serial-over-ip/.pioenvs/serial-over-ip/src/stream_server.cpp.o] Error 1
In file included from src/esphome.h:37:0,
                 from src/main.cpp:3:
src/esphome/components/stream_server/stream_server.h: In member function 'void StreamServerComponent::set_uart_parent(esphome::uart::UARTComponent*)':
src/esphome/components/stream_server/stream_server.h:37:80: error: cannot convert 'esphome::uart::UARTComponent*' to 'Stream*' in assignment
     void set_uart_parent(esphome::uart::UARTComponent *parent) { this->stream_ = parent; }
                                                                                ^
*** [/data/serial-over-ip/.pioenvs/serial-over-ip/src/main.cpp.o] Error 1
========================== [FAILED] Took 6.41 seconds ==========================

tube_zb_gw_cc2652p2 yaml build failed

ymal:
esphome:
name: tube_zb_gw_cc2652p2
platform: ESP32
board: esp-wrover-kit

external_components:

  • source: github://oxan/esphome-stream-server

build info:
INFO Reading configuration /config/esphome/tube-zb-gw-cc2652p2.yaml...
WARNING 'tube_zb_gw_cc2652p2': Using the '_' (underscore) character in the hostname is discouraged as it can cause problems with some DHCP and local name services. For more information, see https://esphome.io/guides/faq.html#why-shouldn-t-i-use-underscores-in-my-device-name
INFO Generating C++ source...
INFO Compiling app...
Processing tube_zb_gw_cc2652p2 (board: esp-wrover-kit; framework: arduino; platform: espressif32 @ 3.3.2)

HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
Dependency Graph
|-- 1.2.2
|-- 1.0
|-- 1.0
|-- 1.0
|-- 2.0.0
| |-- 1.2.2
|-- 5.13.3
|-- 1.0
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/api_connection.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/api_frame_helper.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/api_pb2.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/api_pb2_service.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/api_server.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/list_entities.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/proto.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/user_services.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/api/util.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/esp32/core.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/esp32/gpio_arduino.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/esp32/gpio_idf.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/esp32/preferences.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/ethernet/ethernet_component.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/gpio/switch/gpio_switch.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/json/json_util.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/logger/logger.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/md5/md5.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/mdns/mdns_component.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/mdns/mdns_esp32_arduino.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/mdns/mdns_esp8266.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/mdns/mdns_esp_idf.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/network/util.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/ota/ota_backend_arduino_esp32.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/ota/ota_backend_arduino_esp8266.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/ota/ota_backend_esp_idf.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/ota/ota_component.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/restart/restart_switch.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/script/script.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/socket/bsd_sockets_impl.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/socket/lwip_raw_tcp_impl.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/switch/automation.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/switch/switch.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/template/switch/template_switch.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/uart/uart.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/uart/uart_component.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/uart/uart_component_esp32_arduino.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/uart/uart_component_esp8266.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/uart/uart_component_esp_idf.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/web_server/web_server.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/application.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/color.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/component.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/controller.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/entity_base.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/helpers.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/log.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/scheduler.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/esphome/core/util.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/main.cpp.o
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/stream_server.cpp.o
In file included from /piolibs/AsyncTCP-esphome/src/AsyncTCP.h:29:0,
from src/stream_server.h:29,
from src/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:74:3: error: #error "include FreeRTOS.h" must appear in source files before "include semphr.h"
#error "include FreeRTOS.h" must appear in source files before "include semphr.h"
^
In file included from /data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:77:0,
from /piolibs/AsyncTCP-esphome/src/AsyncTCP.h:29,
from src/stream_server.h:29,
from src/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:75:3: error: #error "include FreeRTOS.h" must appear in source files before "include queue.h"
#error "include FreeRTOS.h" must appear in source files before "include queue.h"
^
Generating partitions /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/partitions.bin
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/lib528/AsyncTCP-esphome/AsyncTCP.cpp.o
In file included from /data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/semphr.h:77:0,
from /piolibs/AsyncTCP-esphome/src/AsyncTCP.h:29,
from src/stream_server.h:29,
from src/stream_server.cpp:17:
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:613:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:725:1: error: 'BaseType_t' does not name a type
BaseType_t xQueuePeekFromISR( QueueHandle_t xQueue, void * const pvBuffer ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:906:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGenericReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait, const BaseType_t xJustPeek ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:917:1: error: 'UBaseType_t' does not name a type
UBaseType_t uxQueueMessagesWaiting( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:930:1: error: 'UBaseType_t' does not name a type
UBaseType_t uxQueueSpacesAvailable( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:940:43: error: expected initializer before 'PRIVILEGED_FUNCTION'
void vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1267:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGenericSendFromISR( QueueHandle_t xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1268:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGiveFromISR( QueueHandle_t xQueue, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1347:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueReceiveFromISR( QueueHandle_t xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1354:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1355:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1356:1: error: 'UBaseType_t' does not name a type
UBaseType_t uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1374:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueAltGenericSend( QueueHandle_t xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, BaseType_t xCopyPosition );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1375:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueAltGenericReceive( QueueHandle_t xQueue, void * const pvBuffer, TickType_t xTicksToWait, BaseType_t xJustPeeking );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1390:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueCRSendFromISR( QueueHandle_t xQueue, const void *pvItemToQueue, BaseType_t xCoRoutinePreviouslyWoken );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1391:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueCRReceiveFromISR( QueueHandle_t xQueue, void *pvBuffer, BaseType_t *pxTaskWoken );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1392:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueCRSend( QueueHandle_t xQueue, const void *pvItemToQueue, TickType_t xTicksToWait );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1393:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueCRReceive( QueueHandle_t xQueue, void *pvBuffer, TickType_t xTicksToWait );
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1400:62: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueHandle_t xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1401:67: error: 'StaticQueue_t' has not been declared
QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1401:98: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueHandle_t xQueueCreateMutexStatic( const uint8_t ucQueueType, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:52: error: 'UBaseType_t' does not name a type
QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:82: error: 'UBaseType_t' does not name a type
QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1402:111: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueHandle_t xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:58: error: 'UBaseType_t' does not name a type
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/lib64d/WiFi/ETH.cpp.o
QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:88: error: 'UBaseType_t' does not name a type
QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:116: error: 'StaticQueue_t' has not been declared
QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t *pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1403:147: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueHandle_t xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount, StaticQueue_t pxStaticQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1404:56: error: expected initializer before 'PRIVILEGED_FUNCTION'
void
xQueueGetMutexHolder( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1410:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueTakeMutexRecursive( QueueHandle_t xMutex, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1411:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1548:41: error: 'UBaseType_t' does not name a type
QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1548:74: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueSetHandle_t xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1572:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1591:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1627:79: error: 'TickType_t' does not name a type
QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1627:105: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueSetMemberHandle_t xQueueSelectFromSet( QueueSetHandle_t xQueueSet, const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1632:81: error: expected initializer before 'PRIVILEGED_FUNCTION'
QueueSetMemberHandle_t xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1636:60: error: 'TickType_t' has not been declared
void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1636:86: error: expected initializer before 'PRIVILEGED_FUNCTION'
void vQueueWaitForMessageRestricted( QueueHandle_t xQueue, TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1637:1: error: 'BaseType_t' does not name a type
BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/lib64d/WiFi/WiFi.cpp.o
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1638:50: error: 'UBaseType_t' has not been declared
void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1638:78: error: expected initializer before 'PRIVILEGED_FUNCTION'
void vQueueSetQueueNumber( QueueHandle_t xQueue, UBaseType_t uxQueueNumber ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1639:1: error: 'UBaseType_t' does not name a type
UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
/data/cache/platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos/freertos/queue.h:1640:53: error: expected initializer before 'PRIVILEGED_FUNCTION'
uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
^
src/stream_server.cpp: In member function 'void StreamServerComponent::read()':
src/stream_server.cpp:59:65: error: 'min' was not declared in this scope
size_t read = this->stream_->readBytes(buf, min(len, 128));
^
src/stream_server.cpp:59:65: note: suggested alternative:
In file included from /data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/algorithm:62:0,
from src/esphome/core/optional.h:19,
from src/esphome/core/component.h:7,
from src/stream_server.h:19,
from src/stream_server.cpp:17:
/data/cache/platformio/packages/toolchain-xtensa32/xtensa-esp32-elf/include/c++/5.2.0/bits/stl_algo.h:3451:5: note: 'std::min'
min(initializer_list<_Tp> __l, Compare comp)
^
In file included from src/stream_server.cpp:19:0:
src/stream_server.cpp: In member function 'virtual void StreamServerComponent::dump_config()':
src/stream_server.cpp:75:64: error: 'network_get_address' was not declared in this scope
ESP_LOGCONFIG(TAG, " Address: %s:%u", network_get_address().c_str(), this->port
);
^
src/esphome/core/log.h:97:90: note: in definition of macro 'esph_log_config'
esp_log_printf
(ESPHOME_LOG_LEVEL_CONFIG, tag, LINE, ESPHOME_LOG_FORMAT(format), ##VA_ARGS)
^
src/stream_server.cpp:75:5: note: in expansion of macro 'ESP_LOGCONFIG'
ESP_LOGCONFIG(TAG, " Address: %s:%u", network_get_address().c_str(), this->port
);
^
Compiling /data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/lib64d/WiFi/WiFiAP.cpp.o
*** [/data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/stream_server.cpp.o] Error 1
/config/esphome/tube-zb-gw-cc2652p2.yaml: In lambda function:
/config/esphome/tube-zb-gw-cc2652p2.yaml:89:32: error: expected type-specifier before 'StreamServerComponent'
auto stream_server = new StreamServerComponent(id(uart_bus));
^
/config/esphome/tube-zb-gw-cc2652p2.yaml:90:28: error: could not convert '{stream_server}' from '' to 'std::vectoresphome::Component*'
return {stream_server};
^
*** [/data/tube_zb_gw_cc2652p2/.pioenvs/tube_zb_gw_cc2652p2/src/main.cpp.o] Error 1
========================== [FAILED] Took 8.61 seconds ==========================

Socket Version

Hello, any chance that the socket version will be finished? That would be very nice. Actual version doesn't start (but compile).

Christoph

Sensors show "unknown" until first connection

The connected binary sensor and connection count sensor both report a value of Unknown until the first client is connected. I would have expect the binary sensor to report False and the regular sensor to report a count of 0. This seems to happen because StreamServerComponent::publish_sensor is only called from StreamServerComponent::accept and StreamServerComponent::cleanup.

request for telnet support

Thanks @oxan , the project saves my day :)
I'm using this component to remote access another linux embedded device. It would be great if telnet option things can be supported.

I've searched on the github and found this: https://github.com/yasheena/telnetspy/blob/master/TelnetSpy.cpp
I have little c++ and telnet knowledges, is it hard to migrate to this project? If anything I can help, please let me know.
Thanks again, really appreciate it.

ESP32 UART2 Configuration

Hi

Thanks for taking the time to create a package for this.

I am moving from an Serial2Wifi Bridge as per
https://github.com/ParadoxAlarmInterface/pai/wiki/Connection-methods#serial-over-ip-esp32

I originally just used the https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino

But since i enjoy breaking thigs I'm trying to move onto ESPhome for this.

I cant really see why this wont work.

If i connect to the streaming port thou, i get some interesting data, from recollection, if i used to telnet to the other port, i used to get text data.

external_components:
  - source: github://oxan/esphome-stream-server
uart:
  id: uart_bus
  # add further configuration for the UART here
  baud_rate: 9600
  tx_pin: 17
  rx_pin: 16
  # tx2 and rx2
stream_server:
  uart_id: uart_bus
  # port: 1234

So my quesitons are as follows:

  1. can this do what i need?
  2. Is there a way to directly specify uart2 of is specifying the pins ok?

Component not found: stream_server.

Below minimal configuration file fails validation and build on my ESPHome instance:.

INFO Reading configuration /config/esphome/test123.yaml...
Failed config

stream_server: [source /config/esphome/test123.yaml:14]
  
  Component not found: stream_server.

test123.yaml:

---
substitutions:
  devicename: test123
  upper_devicename: "TEST123"

esphome:
  name: ${devicename}
  platform: ESP8266
  board: esp01_1m

external_components:
  - source: github://oxan/esphome-stream-server

stream_server:

I am using the following installation:

System Health

version core-2022.2.9
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.98
arch x86_64
timezone Europe/Amsterdam
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 7.4
update_channel stable
supervisor_version supervisor-2022.01.1
docker_version 20.10.9
disk_total 30.8 GB
disk_used 8.2 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons SSH & Web Terminal (10.0.2), Studio Code Server (4.1.0), Portainer (2.11.0-3), ESPHome (2022.2.5)
Lovelace
dashboards 1
resources 0
mode auto-gen

[Question] - Is Encryption Possible

Based on my understanding of this library data passed by the TCP server is in the clear. Is there a way to encrypt it? I believe there is a SSH library would there be a way to tunnel it over that? Thanks.

DSMR & Stream-server don't play nice together

I was running into a similar issue as #11. Is there already a fix or feasible workaround available for this issue?
Asking because we are slightly past the 6+ months 😉 mentioned there and maybe there is a workaround that I haven't found yet.

The use case is that I have a "SlimmeLezer" hooked up to my meter. I'd like this to do two things:

  • Send accurate L1/L2/L3 readings to my SmartEVSE (car charger) directly from the SlimmeLezer, for which I think I need the DSMR component in ESPHome. Sending the info is done with a HTTP API call, and I prefer to send it directly from the SlimmeLezer as this is the most stable route (less links in the chain to get broken). Accurate L1/L2/L3 info is needed for Load Balancing.
  • Send all P1 readings to my DSMR-Reader docker instance on a different host, to keep track of usage.
    Right now, when enabling dsmr and stream-server together, I get a lot of CRC errors. Enabling just one of the two, all is fine.

Using virtual-serial port with socat + stm32flash

Hello, I'm using the espHome to communicate with a device using the serial port, specially a STM32 device.
I'm able to listen the RX/TX with screen:

socat -v -d -d pty,raw,echo=0 tcp:192.168.2.105:1234
then
screen /dev/ttys005 115200
And it seems to work very nice here, I`m able read all the msgs, except sometimes it seems to lag a bit.

Now I'm tryng to use it with stm32flash:
sudo stm32flash -b 115200 /dev/ttys005
image

socat debug:
https://pastebin.com/baxDTWL2

Could someone give a tip if I can improve and make it work for this purpose?

YAML settings:

external_components:
  - source: github://oxan/esphome-stream-server

logger:
  baud_rate: 0
  
uart:
  id: uart_bus
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 115200
  rx_buffer_size: 4096
  
stream_server:
  uart_id: uart_bus
  port: 1234

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

reading output

I've connected my vBUS2TTY circuit (from the original project) to this via an ESPHOME connected board. Will start looking at the code, however when telnet'ing to the device I get the following.

(Is there a correct polarity for the vbus to be connected...I receive data on both but differing output)

fprowse-a01:Downloads fprowse$ telnet 192.168.0.141 1234
Trying 192.168.0.141...
Connected to 192.168.0.141.
Escape character is '^]'.
Q8"�s
��
ii��i�{B
v��
u
sQ�
s�
qQ8"{B �{B Q8"�s
��
ii��i�{B
v��
u
sQ�
s�
qQ8"{B �{B Q8"�s
��
ii��i�{B
v��
u
sQ�

Limit tcp listen

Hey!
Any thoughts on how it might be best for even superficial security for this?
ideally wrap the socket in client+server TLS but I suspect that might be a reach with the hardware ;)

Maybe a combination of limiting what IP source addresses connections will be listened to and maybe port knocking?

Issues with most recent version - re flashing cc2652 over network

So I've noticed that a newer ESPHome build using the most recent code here for the serial is not allowing successful flashes of the cc2652 over the network. I have tested this on several Olimex ESP32-PoE devices and have yet to get one to flash cleanly.

I re-flashed an older binary based on earlier code from the gist, and it completes the flash with no problem. Not sure if there is something from the update for ESPHome that is significant in the serial connection, but wanted to mention it here.

stream spits garbage when used with high rate uart 921600

Good day gentlemen,
I'm having a blocking issue with the latest ESPHome and latest version of the stream-server. All was working good and stable with my initial setup I did an year ago (spring of 2022). I upgraded the other day my HomeAssistant (2023.3.1) with latest ESPHome 2023.2.4 and the issue popped-up. Hence, I am attributing it to the version of ESPHome framework and the stream-server component.
My use case is: ADSB receiver decoding airplane positions and providing data as uart stream (one direction Tx only) at 921600 bps. The UART is hardwired to GPIO1 and 3 on ESP8266 (nodemcuv2) and oxan/esphome-stream-server serving the data as TCP stream. Then I have a client app READSB connecting to ESP over WiFi and taking the data for further processing. HomeAssistant has nothing to do with the stream-server, I just use ESPhome framework as a handy tool for programming the ESP.
The issue:
I observe a lot of garbage in the stream, which does not come from the ADSB receiver uart, but definitely comes from the esp8266 memory. The garbage is predominantly full of zeros but it has fragments of SSID list of nearby WiFi networks (heard by the ESP).
I suspect something's wrong with the buffer handling. The issue is directly related to the amount of data coming from the UART. When there is no data or small amount of data - everything is OK (clean TCP stream), but when the UART data is huge the garbage is very pronounced leading to impossibility to further processing. The other observation is that when I increase the UART rx_buffer_size from the default 256 to 512 or 1024 the TCP stream is almost full of garbage and when I decrease it to 64 it gets almost clean, but lots of incoming data gets dropped (so not usable either).
The other observation is: I reboot the ESP, connect to the TCP stream and the stream is clean. Then I disconnect and reconnect and the stream is immediately garbled.
Oxan, Joshua, Bojan, can you help me investigate the issue and diagnose it, please?
Here is my config:
ADSB.txt
And here is a capture of the TCP stream.
capture.txt
Lines 1-6 are normal ADSB messages.
Lines 7-18 are garbage.
Lines 19-22 are normal ADSB messages.

I am available to provide further information or give you access to my system for live investigation.
Thank you in advance,
Kiril

[Feature request] Reverse stream | net2ser

Is it possible to reverse the stream of data. 1 device exposing UART data to ethernet, which is what is already possible. And then another device reading UART data via ethernet and streaming it to a local UART output. This way bridges between UART-ethernet-UART could be build over ethernet / Wi-Fi

ESP32-C3 support

When trying to add stream server to an ESP32-C3, I got this error:

esphome clean esp32c3-basic.yaml
INFO Reading configuration esp32c3-basic.yaml...
Failed config

async_tcp: None
  {}

&&

esphome run esp32c3-basic.yaml  
INFO Reading configuration esp32c3-basic.yaml...
Failed config

async_tcp: None
  {}

The config I use:

esphome:
  name: esp32c3-basic
  comment: "esp32c3-basic"
  platformio_options:
    board_build.f_flash: 40000000L
    board_build.flash_mode: dio
    board_build.flash_size: 4MB

esp32:
  variant: ESP32C3
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf
    version: recommended

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:

wifi:
  ssid: "********"
  password: "********"

uart:
  id: uart_tcp
  rx_pin: GPIO20
  tx_pin: GPIO21
  baud_rate: 115200
  data_bits: 8
  parity: NONE
  stop_bits: 1

external_components:
  - source: github://oxan/esphome-stream-server

stream_server:
   uart_id: uart_tcp
   port: 23

Can not connect to zigbee2mqtt over wifi after changes from 2023

Hi, i'm using your component to connect a zigbee coordinator (cc2652p) with zigbee2mqtt over wifi using an esp8266 (esp01-s). After i upgraded to latest version it simpy not connect to zigbee2mqtt (its log don't say nothing useful to understand why).
Using the async-tcp branch it works well.
There is a known reason that i missed for this issue?

Bridging two UART ports?

Hello,

Is there a way to bridge 2 UART ports in the server, so what's received on one - is sent to the other, and vice versa?
The idea is to connect Paradox EVO192 Serial <-> ESP32 (to Paradox alarm interface for HA) <-> IP150

Can not connect to esphome over ethernet after changes from 22 march 2023

Hi, I'm using zigbee coordinator with ESP32 and Ethernet, like this one. Lately I upgraded esphome on the device, and esphome-stream-server was also upgraded. The changes from your commits from 22.03.2023 made me unable to connect to my esphome device. I could only ping it but couldn't connect to web_server on port 80 nor api on port 6053

WARNING Can't connect to ESPHome API for device-name.my.domain: Error connecting to ('192.168.1.10', 6053): [Errno 111] Connect call failed ('192.168.1.10', 6053)

This is my configuration:

substitutions:
  device_name: cc2652p01
  friendly_name: ${device_name} over LAN

esphome:
  name: ${device_name}
  comment: ${friendly_name}
  platform: ESP32
  board: esp-wrover-kit

web_server:
  port: 80

ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16

external_components:
  - source: github://oxan/esphome-stream-server

stream_server:
  uart_id: uart_bus

uart:
  id: uart_bus
  rx_pin: GPIO5
  tx_pin: GPIO17
  baud_rate: 115200

I forked your repository and created a tag at a commit 53a7260e0158f99f57763a7e41eb76afac309506 from 07.02.2023, then set up external_components.source pointing to my repository with reference to the tag I created and everything works perfectly:

external_components:
  - source: github://teklabania/[email protected]

Filter UART data?

Hello.
Sorry for my english.
Zigbee Gateway visits, also modbus - can you filter which data is transmitted and which is not?

Stream server not working on software uarts on ESP32

Hello, i posted issue in esphome issues tracker but i made more configurations to find more scenarios while stream server is not working. Currently i have configuration while sttream server is not working while is declared more than 3 uarts (including logger on uart) on ESP32. I think it was connected with software uart implementation on ESP32 but i'm don't know how to check if uart is currently software or hardware.
Can anyone confirm that stream server is not working on this config?

external_components:
  - source: github://oxan/esphome-stream-server

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

logger:
  level: very_verbose

stream_server:
  uart_id: uart_bus3
  port: 1234

uart:
  - id: uart_bus1
    rx_pin: GPIO13
    tx_pin: GPIO14
    baud_rate: 115200
  - id: uart_bus2
    rx_pin: GPIO15
    tx_pin: GPIO16
    baud_rate: 115200
  - id: uart_bus3
    rx_pin: GPIO4
    tx_pin: GPIO5
    baud_rate: 115200

Support for UART hardware flow control (serial data flow control)?

Does this stream server custom component have support for UART hardware flow control (serial data flow control)?

This feature has also been requested here -> esphome/feature-requests#1126

Some devices require flow control when communicating via UART. In this case, it will be useful to add the ability to configure flow control in the UART component. ESP8266 has a hardware implementation of flow control(RTS, CTS, DTR, DSR), which is enabled through the UARTCONF register.
This improvement will make it possible to use MAX485 for communication under the RS485 protocol.

PS: Example of MCU serial devices that can support hardware flow control with the correct firmware is Zigbee SMD modules. Ex:

https://github.com/tube0013/tube_gateways

https://www.tubeszb.com/shop/coordinators/2

zigpy/zigpy#584

zigpy/zigpy#743

Build fails using latest ESPHome: src/stream_server.cpp:59:65: error: 'min' was not declared in this scope

Current ESPHome (v2021.11.4) fails to build your streamserver component with the following error:

Compiling /data/p1/.pioenvs/p1/src/stream_server.cpp.o
src/stream_server.cpp: In member function 'void StreamServerComponent::read()':
src/stream_server.cpp:59:65: error: 'min' was not declared in this scope
         size_t read = this->stream_->readBytes(buf, min(len, 128));
                                                                 ^
src/stream_server.cpp:59:65: note: suggested alternative:
In file included from /data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/algorithm:62:0,
                 from src/esphome/core/optional.h:19,
                 from src/esphome/core/component.h:7,
                 from src/stream_server.h:19,
                 from src/stream_server.cpp:17:
/data/cache/platformio/packages/toolchain-xtensa/xtensa-lx106-elf/include/c++/4.8.2/bits/stl_algo.h:4226:5: note:   'std::min'
     min(initializer_list<_Tp> __l, _Compare __comp)
     ^
In file included from src/stream_server.cpp:19:0:
src/stream_server.cpp: In member function 'virtual void StreamServerComponent::dump_config()':
src/stream_server.cpp:75:64: error: 'network_get_address' was not declared in this scope
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
                                                                ^
src/esphome/core/log.h:97:90: note: in definition of macro 'esph_log_config'
   esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, ESPHOME_LOG_FORMAT(format), ##__VA_ARGS__)
                                                                                          ^
src/stream_server.cpp:75:5: note: in expansion of macro 'ESP_LOGCONFIG'
     ESP_LOGCONFIG(TAG, "  Address: %s:%u", network_get_address().c_str(), this->port_);
     ^
*** [/data/p1/.pioenvs/p1/src/stream_server.cpp.o] Error 1
========================= [FAILED] Took 19.15 seconds =========================

DSMR component breaks stream server

When i use the DSMR component of ESPhome, this serial stream server doesn't work anymore. Nothing is posted on port 8088 in this case. This is the used config:

external_components:
  - source: github://oxan/esphome-stream-server
  - source:
      type: git
      url: https://github.com/esphome/esphome
      ref: dev
    components: [ "dsmr" ]
    refresh: 60s

*SNIP*

# Custom uart settings for DSMR v2.2
uart:

  debug:
    direction: RX
    after:
      delimiter: "\r\n"
    sequence:
      - lambda: UARTDebug::log_string(direction, bytes);
         
  id: uart_bus
  rx_pin: GPIO3
  #tx_pin: D0
  baud_rate: 9600
  data_bits: 7
  parity: Even
  stop_bits: 1

stream_server:
   uart_id: uart_bus
   port: 8088

dsmr:
  crc_check: false

Without the DSMR component everything works great. Can we do anything to fix this? I would like to use them together.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.