SEC-Touch Component: Custom Component for Sec-Touch Ventilation Central Controller Systems

Hi, I updated the ESP with the latest code but still I don’t seem to get any data from the SEV. This is what the (wireless) logs tell me:

INFO Successfully connected to sec-touch @ 192.168.178.185 in 0.005s
INFO Successful handshake with sec-touch @ 192.168.178.185 in 0.117s
[16:24:16][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:18][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:20][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:22][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:24][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:26][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:28][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:30][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:32][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:34][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:36][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:38][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:40][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:44][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:46][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:48][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:50][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:52][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:54][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:24:59][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:25:01][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:25:02][I][safe_mode:041]: Boot seems successful; resetting boot loop counter
[16:25:03][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[16:25:05][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup

That logs means that the SEC is not returning any data at all.

Since you were trying a wrong version before I would maybe recommend to change the TX ↔ RX cables. If that does not work, then maybe your device SEC has a disabled UART. That I can not know :frowning_face:

I also handled the random reboot, you can safely enable debug logs now.
I am using the component for a couple of weeks now to automate the night “full ventilation” when I am away from home and until now it worked as expected without any crashes.

At least there we could see if the device is sending the heartbeat or something.

:scream: is there any way to verify that? I used a powermeter (Multimeter) to measure TX ↔ GND / RX ↔ GND of the SEC interface and there was some „movement“ at least. Don’t know if that’s any indication that UART is enabled.

I would assume the manufacturer not to turn that port off since they themselves are selling some kind of overpriced WLAN dongle to plug in there in order to make this thing “smart” which otherwise also would not work

AFAIK the SEC does not send data unless you ask for it specifically. So this could also be noise BUT could also be the heartbeat.

this is true!

So lets check the possible issues I could think of:

  1. You were using the default RX/TX pins on the board, those are also used for the UART Logging (see docs) but you have disable it with baud_rate: 0 in the logger as I remember. Did you tried with the 16 and 17 PINs and changed the configuration?

  2. The Cable could be inverted. Changing RX to TX would be enough.

  3. The GND pin of the board is faulty? I had once a problem in a random board where a PIN was marked as GND but it was not that (this can be check with the multimeter and check the continuity between the GND pin and others GND Pins and also with the shield of the chip in the board itself).

  4. The Jumper cables are not doing correct contact with the SEC-Touch or are faulty.

I am inclined to believe the cable connection is the problem. I got my connector as gift from the man that did the first pure C++ version. I will try to find out which exact model it is.

Hi again,

thank you for your advice - but unfortunately it is just not working for me :sob:

Here’s what I tried:

  • I restarted the SEC
  • updated ESP Home
  • used two different NodeMCU boards
  • tried all possible combinations with the pins and the jumper cables RX0/TX0/D16/D17/RXD/TXD/G16/G17
  • tried different jumper cables and measured their output with the multimeter to factor out connection issues
  • I am using these “Klemmenblock Stecker” I ordered from Amazon (DE) a while ago which fit the SEC perfectly

Here’s my YAML - just to make sure:

esphome:
  name: esphome-web-014144
  friendly_name: AZ Wroom 32
  min_version: 2025.5.0
  name_add_mac_suffix: false

esp32:
  board: esp32dev
  framework:
    type: esp-idf

# Enable Home Assistant API
api:
  encryption:
    key: "TOP-SECRET"

ota:
  - platform: esphome
    password: "TOP-SECRET"

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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Sec-Touch Fallback Hotspot"
    password: "TOP-SECRET"

captive_portal:

logger:
  level: DEBUG


################################ SEC-Touch ################################


# I am using a fork of your repo just to be in control of accidental changes - it is synced and up to date 😉
external_components:
  - source:
      type: git
      url: https://github.com/LorenzKahl/esphome-components
      ref: main

web_server:
  port: 80
  local: true
  log: false
  version: 3
  sorting_groups:
    - id: group_1
      name: Fan Group 1
      sorting_weight: -100
    - id: group_2
      name: Fan Group 2
      sorting_weight: -99
    - id: group_3
      name: Fan Group 3
      sorting_weight: -98
    - id: group_4
      name: Fan Group 4
      sorting_weight: -97
    - id: group_5
      name: Fan Group 5
      sorting_weight: -96
    - id: group_6
      name: Fan Group 6
      sorting_weight: -95
    - id: group_settings
      name: Configuration
      sorting_weight: -94
  
uart:
  id: sec_touch_uart
  tx_pin: 
    number: GPIO17
  rx_pin:
    number: GPIO16
  baud_rate: 28800

sec_touch:
  uart_id: sec_touch_uart
  update_interval: 5s # 5s is the default

fan:
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 1
    name: "Fan 1"
    web_server:
      sorting_group_id: group_1
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 2
    name: "Fan 2"
    web_server:
      sorting_group_id: group_2
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 3
    name: "Fan 3"
    web_server:
      sorting_group_id: group_3
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 4
    name: "Fan 4"
    web_server:
      sorting_group_id: group_4
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 5
    name: "Fan 5"
    web_server:
      sorting_group_id: group_5
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 6
    name: "Fan 6"
    web_server:
      sorting_group_id: group_6


button:
  - platform: sec_touch
    program_text_update:
      name: "Program Labels Update"
      icon: "mdi:book-refresh"
  - platform: restart
    name: "Restart"
    
text_sensor:
  - platform: sec_touch
    fan_number: 1
    label_text:
      name: "Label Fan 1"
      web_server:
        sorting_group_id: group_1
    mode_text:
      name: "Mode Fan 1"
      web_server:
        sorting_group_id: group_1
  - platform: sec_touch
    fan_number: 2
    label_text:
      name: "Label Fan 2"
      web_server:
        sorting_group_id: group_2
    mode_text:
      name: "Mode Fan 2"
      web_server:
        sorting_group_id: group_2
  - platform: sec_touch
    fan_number: 3
    label_text:
      name: "Label Fan 3"
      web_server:
        sorting_group_id: group_3
    mode_text:
      name: "Mode Fan 3"
      web_server:
        sorting_group_id: group_3
  - platform: sec_touch
    fan_number: 4
    label_text:
      name: "Label Fan 4"
      web_server:
        sorting_group_id: group_4
    mode_text:
      name: "Mode Fan 4"
      web_server:
        sorting_group_id: group_4
  - platform: sec_touch
    fan_number: 5
    label_text:
      name: "Label Fan 5"
      web_server:
        sorting_group_id: group_5
    mode_text:
      name: "Mode Fan 5"
      web_server:
        sorting_group_id: group_5
  - platform: sec_touch
    fan_number: 6
    label_text:
      name: "Label Fan 6"
      web_server:
        sorting_group_id: group_6
    mode_text:
      name: "Mode Fan 6"
      web_server:
        sorting_group_id: group_6

With the presumably correct wiring:

  • ESP32 G17 ↔ RX SEC
  • ESP32 G16 ↔ TX SEC
    …here’s what I get from the logs - right after I switch on Fan 6 using the web UI:
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][fan:021]: 'Fan 6' - Setting:
[17:56:26][D][fan:024]:   State: ON
[17:56:26][D][fan:030]:   Speed: 11
[17:56:26][D][SecTouchFan:107]: Control called
[17:56:26][D][SecTouchFan:121]: New state to 1
[17:56:26][D][SecTouchFan:126]: Setting speed to 11
[17:56:26][I][SecTouchFan:149]: [Update for 178] - [] speed: 11
[17:56:26][D][sec-touch:242]: add_set_task
[17:56:26][I][SecTouchFan:153]: Publishing state of FAN
[17:56:26][D][fan:120]: 'Fan 6' - Sending state:
[17:56:26][D][fan:121]:   State: ON
[17:56:26][D][fan:123]:   Speed: 11
[17:56:26][D][text_sensor:064]: 'Mode Fan 6': Sending state 'Unknown'
[17:56:26][W][component:257]: Component web_server took a long time for an operation (54 ms).
[17:56:26][W][component:258]: Components should block for at most 30 ms.
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[17:56:26][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA

When I flip the wiring

  • ESP32 G16 ↔ RX SEC
  • ESP32 G17 ↔ TX SEC
    …interestingly I get this instead:
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 0?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 13)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][fan:021]: 'Fan 6' - Setting:
[18:04:34][D][fan:024]:   State: OFF
[18:04:34][D][SecTouchFan:107]: Control called
[18:04:34][D][SecTouchFan:121]: New state to 0
[18:04:34][I][SecTouchFan:149]: [Update for 178] - [] speed: 0
[18:04:34][D][sec-touch:242]: add_set_task
[18:04:34][I][SecTouchFan:153]: Publishing state of FAN
[18:04:34][D][fan:120]: 'Fan 6' - Sending state:
[18:04:34][D][fan:121]:   State: OFF
[18:04:34][D][fan:123]:   Speed: 0
[18:04:34][D][text_sensor:064]: 'Mode Fan 6': Sending state 'Off'
[18:04:34][W][component:257]: Component web_server took a long time for an operation (55 ms).
[18:04:34][W][component:258]: Components should block for at most 30 ms.
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 14)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 0?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 14)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 14)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 224?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 14)
[18:04:34][D][sec-touch:083]: [loop]  Discarding noise byte (or maybe a Heartbeat with 28?)
[18:04:34][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 14)

I really don’t know what else I can do and pretty much feel like giving it up - on the other hand, I really REALLY want this to work. I also want to have a sleep mode, a cooking mode, an away mode and most of all a barbecue mode :blush:

If there’s anything more that I could do please let me know. Is there anybody beside you know of having gotten this to work?

Cheers, Lorenz

I do not know anyone else using this directly to be honest. My neighbor (who does not have HA) tested the original pure c++ lib. Maybe you could tested it to discard UART Problems?

Your config.yml looks correct. The first log, like the logs before, show that the component sends the request and it is waiting for response and it never comes.

The second one looks more promising as the UART input got something but it could also be noise due wrong connection. There should be no need for you to do anything from the web ui since at the start the component asks the SEC-Touch for the status of all the existent fans. And then it update that on each update loop (5s)

One thing that we have different is that I do not have a Fan 6 pair. It should not really change anything but could you maybe just try with one single Fan in your config.yml? just let the logs run and see if it always times out after each update loop. Maybe the 6 Fan ID is not an 178 and that is the reason why it does not work.

Sadly I am too far away from your location (from github) otherwise I would come to test gladly :smile:

Update: The crashing problems are completely resolved.

The basic functionality is working as expected.

Beside that, turning on a fan now will go to speed 1 if no other speed was set before (instead of go to automatic)

Each patch. has a tag in the github repo, so you can just ping one of them if you want it keep it on some specific version.

Added Example of Buttons with decluttering card into the repo:

Maybe it’s way too late or maybe it’s in over even remotely close to the ax delivery boards issue; but I use those for quite some time now, in over a dozen projects. By reading their e-books you can Maybe I misunderstood what they meant by the find out lots of things about everything they

And: “Also, the Bluetooth Radio has support for the following communication

interface protocols:

● UART HCI interface, up to 4 Mbps

● SDIO / SPI HCI interface

● I2C interface

● PCM / I2S audio interface”

So hopefully this will help configuring things in case someone might be needing some extra information.

Updated for compatibility with ESPHOME 2025.11.0

Hi @distante,
thanks for sharing your work so far — this is a really impressive project and exactly the kind of integration I love seeing in the Home Assistant ecosystem. I also very much appreciate the focus on local control and avoiding the vendor cloud-brick.

I have a question regarding summer ventilation mode without heat recovery (Wärmerückgewinnung). I’m fairly sure this feature is not currently integrated, but I was wondering whether, from a technical point of view, this mode is generally accessible via the interface you’re using and therefore could be integrated in principle.

My use case would be switching behavior based on time and temperatures: during the day I’d like to run the normal mode to benefit from heat recovery (effectively keeping the house cooler by recovering the “cold” indoors), and during the night switch to summer ventilation (no heat recovery) to pull in cooler outside air directly. That kind of day/night automation would be very easy to set up in Home Assistant using indoor and outdoor temperature sensors.

This would be an alternative to the storm ventilation mode, which already bypasses heat recovery but is simply too loud for a nightly use case.

Any ideas or info worth sharing?

It should be possible, the problem is find out which command code is send by the original screen controller so it can be reproduced.

So I guess I have some kind of different problem then you guys had before. So far I didn’t had any bad logs.

I tried to integrate the whole thing in HA:

But unfortunately nothing happened with my fans. Everything remained silent.

I bought the board you’ve linked in your GitHub and for the wiring I used “normal” Arduino breakout cables “Steckbrückenkabel”

Here is the code I’ve used:

esphome:
  name: esp32
  friendly_name: luefter

external_components:
  - source:
      type: git
      url: https://github.com/distante/esphome-components
      ref: main

esp32:
  board: nodemcu-32s

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "xxxx+xxxxxx+xxxxxxxxxxxxx="

ota:
  - platform: esphome
    password: "xxxxxxxxxxxxx"

wifi:
  networks:
    #- ssid: !secret wifi_ssid_oben
    #  password: !secret wifi_password_oben
    - ssid: !secret wifi_ssid_unten
      password: !secret wifi_password_unten

  ap:
    ssid: "Fallback Hotspot"
    password: "xxxxxxxxxx"

captive_portal:


web_server:
  port: 80
  local: true
  log: false
  version: 3
  sorting_groups:
    - id: group_1
      name: Fan Group 1
      sorting_weight: -100
    - id: group_2
      name: Fan Group 2
      sorting_weight: -99
    - id: group_3
      name: Fan Group 3
      sorting_weight: -98
    - id: group_4
      name: Fan Group 4
      sorting_weight: -97
    - id: group_5
      name: Fan Group 5
      sorting_weight: -96
    - id: group_6
      name: Fan Group 6
      sorting_weight: -95
    - id: group_settings
      name: Configuration
      sorting_weight: -94
  
uart:
  id: sec_touch_uart
  tx_pin: 
    number: GPIO17
  rx_pin:
    number: GPIO16
  baud_rate: 28800

sec_touch:
  uart_id: sec_touch_uart
  update_interval: 5s # 5s is the default

fan:
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 1
    name: "Fan 1"
    web_server:
      sorting_group_id: group_1
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 2
    name: "Fan 2"
    web_server:
      sorting_group_id: group_2
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 3
    name: "Fan 3"
    web_server:
      sorting_group_id: group_3
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 4
    name: "Fan 4"
    web_server:
      sorting_group_id: group_4
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 5
    name: "Fan 5"
    web_server:
      sorting_group_id: group_5
  - platform: sec_touch
    icon: "mdi:fan"
    fan_number: 6
    name: "Fan 6"
    web_server:
      sorting_group_id: group_6


button:
  - platform: sec_touch
    program_text_update:
      name: "Program Labels Update"
      icon: "mdi:book-refresh"
  - platform: restart
    name: "Restart"
    
text_sensor:
  - platform: sec_touch
    fan_number: 1
    label_text:
      name: "Label Fan 1"
      web_server:
        sorting_group_id: group_1
    mode_text:
      name: "Mode Fan 1"
      web_server:
        sorting_group_id: group_1
  - platform: sec_touch
    fan_number: 2
    label_text:
      name: "Label Fan 2"
      web_server:
        sorting_group_id: group_2
    mode_text:
      name: "Mode Fan 2"
      web_server:
        sorting_group_id: group_2
  - platform: sec_touch
    fan_number: 3
    label_text:
      name: "Label Fan 3"
      web_server:
        sorting_group_id: group_3
    mode_text:
      name: "Mode Fan 3"
      web_server:
        sorting_group_id: group_3
  - platform: sec_touch
    fan_number: 4
    label_text:
      name: "Label Fan 4"
      web_server:
        sorting_group_id: group_4
    mode_text:
      name: "Mode Fan 4"
      web_server:
        sorting_group_id: group_4
  - platform: sec_touch
    fan_number: 5
    label_text:
      name: "Label Fan 5"
      web_server:
        sorting_group_id: group_5
    mode_text:
      name: "Mode Fan 5"
      web_server:
        sorting_group_id: group_5
  - platform: sec_touch
    fan_number: 6
    label_text:
      name: "Label Fan 6"
      web_server:
        sorting_group_id: group_6
    mode_text:
      name: "Mode Fan 6"
      web_server:
        sorting_group_id: group_6

I will post the logs next weekend. But maybe you’ve any clue what I messed up?

I had some days blocked due a Wasserschaden problem I had and could not risk letting my fans not working while updating the ESP board.

I got another person in github who had some logs where the SEC device did not respond at all.

I will check this weekend if something is not working as expected with the latest versions of ESPHome. At least for your logs, looks like you got some connections.

There is also the possibility that newer version of the hardware have another codes.

So I was able to do a new build with the latest version and everything is working :confused:

I had an idea.

Can you please just keep one fan on your configuration and enable the verbose logs for the sec-touch and fans but keep the others in WARN level?

If the ids are different, maybe we can spot them so.

Something like this:

logger:
  level: VERBOSE
  logs:
    sec-touch-uart: VERBOSE
    sec-touch: VERBOSE
    fan: VERBOSE
    esp-idf: WARN
    wifi: WARN
    wifi_esp32: WARN
    api: WARN
    api.service: WARN
    ota: WARN
    web_server: WARN
    web_server_base: WARN
    # uart: WARN
    # uart_esp32: WARN
    scheduler: WARN
    sensor: WARN
    text_sensor: WARN
    button: WARN
    debug: WARN
    esp32_ble_tracker: WARN
    bluetooth_proxy: WARN
    component: WARN
Blockquote
INFO ESPHome 2026.3.3
INFO Reading configuration /config/esphome/esp32.yaml...
WARNING 💡 NOTICE: This device does not have a framework specified.

Starting with ESPHome 2026.1.0, the default framework for ESP32 is ESP-IDF.
(We've been warning about this change since ESPHome 2025.8.0)

Why we made this change:
  ✨ Smaller firmware binaries
  ⚡ Faster compile times
  🚀 Better performance and newer features
  🔧 More actively maintained by ESPHome

To continue using Arduino, add this to your YAML under 'esp32:':
    framework:
      type: arduino

To silence this message with ESP-IDF, explicitly set:
    framework:
      type: esp-idf

Migration guide: https://esphome.io/guides/esp32_arduino_to_idf/
INFO Starting log output from esp32.local using esphome API
INFO Successfully resolved esp32.local in 10.073s
INFO Successfully connected to esp32 @ 192.168.178.96 in 0.010s
INFO Successful handshake with esp32 @ 192.168.178.96 in 0.111s
[10:42:46.949][I][app:231]: ESPHome version 2026.3.1 compiled on 2026-04-01 19:59:57 +0200
[10:42:46.949][I][app:238]: ESP32 Chip: ESP32 rev3.1, 2 core(s)
[10:42:46.949][W][app:247]: Set minimum_chip_revision: "3.1" to reduce binary size
[10:42:46.949][C][logger:229]: Logger:
[10:42:46.949][C][logger:229]:   Max Level: DEBUG
[10:42:46.949][C][logger:229]:   Initial Level: DEBUG
[10:42:46.954][C][logger:236]:   Log Baud Rate: 115200
[10:42:46.954][C][logger:236]:   Hardware UART: UART0
[10:42:46.954][C][logger:246]:   Task Log Buffer Size: 768 bytes
[10:42:46.967][C][uart.idf:247]: UART Bus 1:
[10:42:46.967][C][uart.idf:152]:   TX Pin: GPIO17
[10:42:46.972][C][uart.idf:152]:   RX Pin: GPIO16
[10:42:46.972][C][uart.idf:252]:   RX Buffer Size: 256
[10:42:46.972][C][uart.idf:252]:   RX Full Threshold: 27
[10:42:46.972][C][uart.idf:252]:   RX Timeout: 2
[10:42:46.972][C][uart.idf:261]:   Baud Rate: 28800 baud
[10:42:46.972][C][uart.idf:261]:   Data Bits: 8
[10:42:46.972][C][uart.idf:261]:   Parity: NONE
[10:42:46.972][C][uart.idf:261]:   Stop bits: 1
[10:42:46.972][C][uart.idf:261]:   Wake on data RX: ENABLED
[10:42:46.978][C][SecTouchFan:248]: Level ID: 173, Label ID: 78, Current Fan Level: 4
[10:42:46.996][C][SecTouchFan:248]: Level ID: 174, Label ID: 79, Current Fan Level: 5
[10:42:47.018][C][SecTouchFan:248]: Level ID: 175, Label ID: 80, Current Fan Level: 4
[10:42:47.018][C][SecTouchFan:248]: Level ID: 176, Label ID: 81, Current Fan Level: 3
[10:42:47.018][C][SecTouchFan:248]: Level ID: 177, Label ID: 82, Current Fan Level: 0
[10:42:47.036][C][SecTouchFan:248]: Level ID: 178, Label ID: 83, Current Fan Level: 0
[10:42:47.049][C][restart.button:014]: Restart Button 'Restart'
[10:42:47.049][C][restart.button:228]:   Icon: 'mdi:restart'
[10:42:47.049][C][captive_portal:134]: Captive Portal:
[10:42:47.061][C][wifi:1510]: WiFi:
[10:42:47.061][C][wifi:1510]:   Local MAC: B0:CB:D8:8B:13:E4
[10:42:47.061][C][wifi:1510]:   Connected: YES
[10:42:47.061][C][wifi:1221]:   IP Address: XXXXXXXXX
[10:42:47.061][C][wifi:1232]:   SSID: 'XXXXXXXS'[redacted]
[10:42:47.061][C][wifi:1232]:   BSSID: BXXXXXX[redacted]
[10:42:47.061][C][wifi:1232]:   Hostname: 'esp32'
[10:42:47.061][C][wifi:1232]:   Signal strength: -48 dB ▂▄▆█
[10:42:47.061][C][wifi:1232]:   Channel: 6
[10:42:47.061][C][wifi:1232]:   Subnet: 255.255.255.0
[10:42:47.061][C][wifi:1232]:   Gateway: XXXXXX
[10:42:47.061][C][wifi:1232]:   DNS1: 192.168.178.66
[10:42:47.061][C][wifi:1232]:   DNS2: 0.0.0.0
[10:42:47.066][C][web_server:434]: Web Server:
[10:42:47.066][C][web_server:434]:   Address: esp32.local:80
[10:42:47.081][C][esphome.ota:071]: Over-The-Air updates:
[10:42:47.081][C][esphome.ota:071]:   Address: esp32.local:3232
[10:42:47.081][C][esphome.ota:071]:   Version: 2
[10:42:47.106][C][esphome.ota:078]:   Password configured
[10:42:47.106][C][safe_mode:026]: Safe Mode:
[10:42:47.106][C][safe_mode:026]:   Successful after: 60s
[10:42:47.106][C][safe_mode:026]:   Invoke after: 10 attempts
[10:42:47.106][C][safe_mode:026]:   Duration: 300s
[10:42:47.106][C][safe_mode:043]:   Bootloader rollback: support unknown
[10:42:47.113][C][web_server.ota:238]: Web Server OTA
[10:42:47.129][C][api:237]: Server:
[10:42:47.129][C][api:237]:   Address: esp32.local:6053
[10:42:47.129][C][api:237]:   Listen backlog: 4
[10:42:47.129][C][api:237]:   Max connections: 8
[10:42:47.130][C][api:244]:   Noise encryption: YES
[10:42:47.130][D][sec-touch:046]: SEC-Touch update
[10:42:47.134][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[10:42:47.134][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[10:42:47.135][D][sec-touch:070]: [loop] No Data available, processing task queue
[10:42:47.145][D][sec-touch:168]: Processing one task of 6 -  type: GET_DATA
[10:42:47.157][D][sec-touch-uart:250]: send_get_message
[10:42:47.164][D][sec-touch-uart:259]:   buffer 32800	173	54142
[10:42:47.165][C][mdns:194]: mDNS:
[10:42:47.165][C][mdns:194]:   Hostname: esp32
[10:42:47.165][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.177][C][sec-touch:027]: SEC-Touch:
[10:42:47.196][C][sec-touch:028]:   total_register_fans: 6
[10:42:47.196][C][sec-touch:032]:   - Recursive Updated Property ID: 173
[10:42:47.196][C][sec-touch:032]:   - Recursive Updated Property ID: 174
[10:42:47.207][C][sec-touch:032]:   - Recursive Updated Property ID: 175
[10:42:47.213][C][sec-touch:032]:   - Recursive Updated Property ID: 176
[10:42:47.213][C][sec-touch:032]:   - Recursive Updated Property ID: 177
[10:42:47.213][C][sec-touch:032]:   - Recursive Updated Property ID: 178
[10:42:47.230][C][sec-touch:035]:   - Manual Update Property ID: 78
[10:42:47.233][C][sec-touch:035]:   - Manual Update Property ID: 79
[10:42:47.233][C][sec-touch:035]:   - Manual Update Property ID: 80
[10:42:47.234][C][sec-touch:035]:   - Manual Update Property ID: 81
[10:42:47.247][C][sec-touch:035]:   - Manual Update Property ID: 82
[10:42:47.265][C][sec-touch:035]:   - Manual Update Property ID: 83
[10:42:47.265][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.265][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.282][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.312][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.313][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.313][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.321][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.344][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.344][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.344][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.361][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.377][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.377][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.377][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.398][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.415][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.415][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.415][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.441][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.456][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.456][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.456][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.475][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.491][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.491][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.491][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.511][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.530][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.530][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.530][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.545][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.571][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.572][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.572][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.591][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.602][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.602][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.602][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.623][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.642][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.642][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.643][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.660][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.675][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.675][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.675][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.698][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.714][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.714][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.714][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.731][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.752][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.753][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.753][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.769][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.788][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.788][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.788][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.806][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.824][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.824][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.824][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.844][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.864][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.864][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.864][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.881][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.901][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.901][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.901][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.917][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.937][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.937][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.937][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.954][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.979][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.979][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.979][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:47.996][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.014][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.015][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.015][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.029][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.050][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.051][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.051][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.069][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.084][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.084][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.084][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.105][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.122][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.122][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.122][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.142][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.160][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.160][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.160][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.179][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.199][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.200][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.200][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.218][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.236][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.236][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.236][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.254][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.269][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.269][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.270][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.293][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.307][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.307][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.307][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.326][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.350][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.350][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.351][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.365][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.387][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.387][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.387][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.403][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.421][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.421][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.422][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.440][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.453][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.453][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.453][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.475][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.491][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.491][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.492][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.509][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.527][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.527][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.527][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.545][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.564][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.564][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.564][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.586][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.600][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.600][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.600][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.625][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.637][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.637][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.638][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.656][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.675][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.676][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.676][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.698][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.712][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.712][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.712][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.733][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.754][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.754][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.755][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.766][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.787][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.787][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.787][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.808][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.827][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.827][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.828][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.843][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.862][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.862][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.862][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.879][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.897][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.897][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.897][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.916][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.936][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.936][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.936][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.954][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.971][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.971][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.972][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:48.994][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.011][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.012][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.012][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.028][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.047][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.047][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.047][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.064][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.081][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.081][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.081][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.102][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.120][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.120][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.120][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.142][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.166][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[10:42:49.166][W][sec-touch:061]: [watchdog] Task of type GET_DATA timed out, forcing cleanup
[10:42:49.166][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[10:42:49.166][D][sec-touch:070]: [loop] No Data available, processing task queue
[10:42:49.167][D][sec-touch:168]: Processing one task of 5 -  type: GET_DATA
[10:42:49.167][D][sec-touch-uart:250]: send_get_message
[10:42:49.167][D][sec-touch-uart:259]:   buffer 32800	174	19177

Ok one change to the previous Logs. I pulled the GRD cable out. so just RX and TX are connected to the SEC

INFO ESPHome 2026.3.3
INFO Reading configuration /config/esphome/esp32.yaml...
WARNING 💡 NOTICE: This device does not have a framework specified.

Starting with ESPHome 2026.1.0, the default framework for ESP32 is ESP-IDF.
(We've been warning about this change since ESPHome 2025.8.0)

Why we made this change:
  ✨ Smaller firmware binaries
  ⚡ Faster compile times
  🚀 Better performance and newer features
  🔧 More actively maintained by ESPHome

To continue using Arduino, add this to your YAML under 'esp32:':
    framework:
      type: arduino

To silence this message with ESP-IDF, explicitly set:
    framework:
      type: esp-idf

Migration guide: https://esphome.io/guides/esp32_arduino_to_idf/
INFO Starting log output from 192.168.178.96 using esphome API
INFO Successfully resolved esp32 @ 192.168.178.96 in 0.000s
INFO Successfully connected to esp32 @ 192.168.178.96 in 0.122s
INFO Successful handshake with esp32 @ 192.168.178.96 in 0.091s
[11:18:16.238][I][app:231]: ESPHome version 2026.3.1 compiled on 2026-04-01 19:59:57 +0200
[11:18:16.239][I][app:238]: ESP32 Chip: ESP32 rev3.1, 2 core(s)
[11:18:16.239][W][app:247]: Set minimum_chip_revision: "3.1" to reduce binary size
[11:18:16.239][C][logger:229]: Logger:
[11:18:16.239][C][logger:229]:   Max Level: DEBUG
[11:18:16.239][C][logger:229]:   Initial Level: DEBUG
[11:18:16.246][C][logger:236]:   Log Baud Rate: 115200
[11:18:16.246][C][logger:236]:   Hardware UART: UART0
[11:18:16.246][C][logger:246]:   Task Log Buffer Size: 768 bytes
[11:18:16.260][C][uart.idf:247]: UART Bus 1:
[11:18:16.260][C][uart.idf:152]:   TX Pin: GPIO17
[11:18:16.266][C][uart.idf:152]:   RX Pin: GPIO16
[11:18:16.267][C][uart.idf:252]:   RX Buffer Size: 256
[11:18:16.267][C][uart.idf:252]:   RX Full Threshold: 27
[11:18:16.267][C][uart.idf:252]:   RX Timeout: 2
[11:18:16.267][C][uart.idf:261]:   Baud Rate: 28800 baud
[11:18:16.267][C][uart.idf:261]:   Data Bits: 8
[11:18:16.267][C][uart.idf:261]:   Parity: NONE
[11:18:16.267][C][uart.idf:261]:   Stop bits: 1
[11:18:16.267][C][uart.idf:261]:   Wake on data RX: ENABLED
[11:18:16.274][C][SecTouchFan:248]: Level ID: 173, Label ID: 78, Current Fan Level: 1
[11:18:16.291][C][SecTouchFan:248]: Level ID: 174, Label ID: 79, Current Fan Level: 4
[11:18:16.309][C][SecTouchFan:248]: Level ID: 175, Label ID: 80, Current Fan Level: 6
[11:18:16.309][C][SecTouchFan:248]: Level ID: 176, Label ID: 81, Current Fan Level: 5
[11:18:16.309][C][SecTouchFan:248]: Level ID: 177, Label ID: 82, Current Fan Level: 0
[11:18:16.329][C][SecTouchFan:248]: Level ID: 178, Label ID: 83, Current Fan Level: 0
[11:18:16.350][C][restart.button:014]: Restart Button 'Restart'
[11:18:16.350][C][restart.button:228]:   Icon: 'mdi:restart'
[11:18:16.350][C][captive_portal:134]: Captive Portal:
[11:18:16.355][C][wifi:1510]: WiFi:
[11:18:16.355][C][wifi:1510]:   Local MAC: B0:CB:D8:8B:13:E4
[11:18:16.355][C][wifi:1510]:   Connected: YES
[11:18:16.355][C][wifi:1221]:   IP Address: XXXXXXXXX
[11:18:16.355][C][wifi:1232]:   SSID: 'XXXXXXX'[redacted]
[11:18:16.355][C][wifi:1232]:   BSSID: XXXXXX[redacted]
[11:18:16.355][C][wifi:1232]:   Hostname: 'esp32'
[11:18:16.355][C][wifi:1232]:   Signal strength: -51 dB ▂▄▆█
[11:18:16.355][C][wifi:1232]:   Channel: 6
[11:18:16.355][C][wifi:1232]:   Subnet: 255.255.255.0
[11:18:16.355][C][wifi:1232]:   Gateway: XXXXXXXX
[11:18:16.355][C][wifi:1232]:   DNS1: XXXXXXXX
[11:18:16.355][C][wifi:1232]:   DNS2: 0.0.0.0
[11:18:16.364][C][web_server:434]: Web Server:
[11:18:16.364][C][web_server:434]:   Address: esp32.local:80
[11:18:16.384][C][esphome.ota:071]: Over-The-Air updates:
[11:18:16.384][C][esphome.ota:071]:   Address: esp32.local:3232
[11:18:16.384][C][esphome.ota:071]:   Version: 2
[11:18:16.400][C][esphome.ota:078]:   Password configured
[11:18:16.401][C][safe_mode:026]: Safe Mode:
[11:18:16.401][C][safe_mode:026]:   Successful after: 60s
[11:18:16.401][C][safe_mode:026]:   Invoke after: 10 attempts
[11:18:16.401][C][safe_mode:026]:   Duration: 300s
[11:18:16.401][C][safe_mode:043]:   Bootloader rollback: support unknown
[11:18:16.410][C][web_server.ota:238]: Web Server OTA
[11:18:16.420][C][api:237]: Server:
[11:18:16.420][C][api:237]:   Address: esp32.local:6053
[11:18:16.420][C][api:237]:   Listen backlog: 4
[11:18:16.420][C][api:237]:   Max connections: 8
[11:18:16.420][C][api:244]:   Noise encryption: YES
[11:18:16.420][C][mdns:194]: mDNS:
[11:18:16.420][C][mdns:194]:   Hostname: esp32
[11:18:16.441][C][sec-touch:027]: SEC-Touch:
[11:18:16.446][C][sec-touch:028]:   total_register_fans: 6
[11:18:16.446][C][sec-touch:032]:   - Recursive Updated Property ID: 173
[11:18:16.446][C][sec-touch:032]:   - Recursive Updated Property ID: 174
[11:18:16.454][C][sec-touch:032]:   - Recursive Updated Property ID: 175
[11:18:16.455][C][sec-touch:032]:   - Recursive Updated Property ID: 176
[11:18:16.467][C][sec-touch:032]:   - Recursive Updated Property ID: 177
[11:18:16.467][C][sec-touch:032]:   - Recursive Updated Property ID: 178
[11:18:16.478][C][sec-touch:035]:   - Manual Update Property ID: 78
[11:18:16.479][C][sec-touch:035]:   - Manual Update Property ID: 79
[11:18:16.479][C][sec-touch:035]:   - Manual Update Property ID: 80
[11:18:16.479][C][sec-touch:035]:   - Manual Update Property ID: 81
[11:18:16.486][C][sec-touch:035]:   - Manual Update Property ID: 82
[11:18:16.533][C][sec-touch:035]:   - Manual Update Property ID: 83
[11:18:16.628][D][sec-touch:046]: SEC-Touch update
[11:18:16.637][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:16.637][D][sec-touch:168]: Processing one task of 6 -  type: GET_DATA
[11:18:16.637][D][sec-touch-uart:250]: send_get_message
[11:18:16.637][D][sec-touch-uart:259]:   buffer 32800	173	54142
[11:18:16.637][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[11:18:16.646][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 5)
[11:18:16.647][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:16.647][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:16.654][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:16.659][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:16.674][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:16.677][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:16.677][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:16.680][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:16.688][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:16.697][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:16.702][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:16.709][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:16.719][D][sec-touch-uart:189]: store_data_to_incoming_message 53
[11:18:16.720][D][sec-touch-uart:189]: store_data_to_incoming_message 52
[11:18:16.720][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:16.728][D][sec-touch-uart:189]: store_data_to_incoming_message 52
[11:18:16.734][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:16.740][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:16.748][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:16.751][D][sec-touch:282]:   [process_data] buffer: 32800	173	54142
[11:18:16.758][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:16.768][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[11:18:16.769][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:16.778][D][sec-touch:168]: Processing one task of 5 -  type: GET_DATA
[11:18:16.792][D][sec-touch-uart:250]: send_get_message
[11:18:16.792][D][sec-touch-uart:259]:   buffer 32800	174	19177
[11:18:16.793][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[11:18:16.802][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 4)
[11:18:16.808][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:16.820][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:16.830][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:16.833][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:16.841][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:16.845][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:16.851][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:16.861][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:16.865][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:16.865][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:16.871][D][sec-touch-uart:189]: store_data_to_incoming_message 52
[11:18:16.881][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:16.886][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:16.894][D][sec-touch-uart:189]: store_data_to_incoming_message 57
[11:18:16.897][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:16.902][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:16.912][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:16.916][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:16.923][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:16.933][D][sec-touch:282]:   [process_data] buffer: 32800	174	19177
[11:18:16.952][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:16.956][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[11:18:16.957][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:16.962][D][sec-touch:168]: Processing one task of 4 -  type: GET_DATA
[11:18:16.967][D][sec-touch-uart:250]: send_get_message
[11:18:16.974][D][sec-touch-uart:259]:   buffer 32800	175	31192
[11:18:16.976][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[11:18:16.987][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 3)
[11:18:16.994][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:16.999][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:17.005][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.015][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.019][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.019][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.038][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.046][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.046][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.052][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.053][D][sec-touch-uart:189]: store_data_to_incoming_message 53
[11:18:17.058][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.065][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.069][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.075][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.078][D][sec-touch-uart:189]: store_data_to_incoming_message 57
[11:18:17.084][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.098][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:17.098][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:17.107][D][sec-touch:282]:   [process_data] buffer: 32800	175	31192
[11:18:17.115][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:17.118][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[11:18:17.126][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:17.140][D][sec-touch:168]: Processing one task of 3 -  type: GET_DATA
[11:18:17.151][D][sec-touch-uart:250]: send_get_message
[11:18:17.152][D][sec-touch-uart:259]:   buffer 32800	176	11403
[11:18:17.152][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[11:18:17.157][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 2)
[11:18:17.167][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:17.172][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:17.177][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.188][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.202][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.202][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.203][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.209][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.218][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.224][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.229][D][sec-touch-uart:189]: store_data_to_incoming_message 54
[11:18:17.240][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.245][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.252][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.261][D][sec-touch-uart:189]: store_data_to_incoming_message 52
[11:18:17.265][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.265][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.271][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:17.271][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:17.279][D][sec-touch:282]:   [process_data] buffer: 32800	176	11403
[11:18:17.289][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:17.301][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[11:18:17.302][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:17.311][D][sec-touch:168]: Processing one task of 2 -  type: GET_DATA
[11:18:17.323][D][sec-touch-uart:250]: send_get_message
[11:18:17.342][D][sec-touch-uart:259]:   buffer 32800	177	8122
[11:18:17.347][D][sec-touch:065]: [loop] We are waiting for the response after a task of type GET_DATA
[11:18:17.354][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 1)
[11:18:17.354][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:17.354][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:17.362][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.375][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.384][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.386][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.386][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.392][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.403][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.404][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.405][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.414][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.420][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.425][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.426][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.433][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.447][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:17.459][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:17.459][D][sec-touch:282]:   [process_data] buffer: 32800	177	8122
[11:18:17.463][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:17.474][D][sec-touch:364]: cleanup_after_task_complete called, failed: true
[11:18:17.480][D][sec-touch:070]: [loop] No Data available, processing task queue
[11:18:17.488][D][sec-touch:168]: Processing one task of 1 -  type: GET_DATA
[11:18:17.495][D][sec-touch-uart:250]: send_get_message
[11:18:17.506][D][sec-touch-uart:259]:   buffer 32800	178	3972
[11:18:17.509][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 0)
[11:18:17.510][D][sec-touch:095]:   Received STX 2. Starting to store Message
[11:18:17.514][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[11:18:17.520][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.525][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.546][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.557][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.558][D][sec-touch-uart:189]: store_data_to_incoming_message 48
[11:18:17.558][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.559][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[11:18:17.568][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.576][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[11:18:17.577][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[11:18:17.578][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[11:18:17.589][D][sec-touch-uart:189]: store_data_to_incoming_message 57
[11:18:17.593][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[11:18:17.611][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[11:18:17.611][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[11:18:17.618][D][sec-touch:105]:   Received ETX 10, processing message
[11:18:17.623][D][sec-touch:282]:   [process_data] buffer: 32800	178	3972
[11:18:17.623][E][sec-touch-uart:340]:   [process_data] Not enough TABs in message. Task Failed
[11:18:17.629][D][sec-touch:364]: cleanup_after_task_complete called, failed: true

Unfortunately I messed up :smiley:

So first off all TX/RX were switched.

[17:14:07.189][D][sec-touch:364]: cleanup_after_task_complete called, failed: false
[17:14:07.189][D][sec-touch:075]: [loop] Data available (Current buffer size: 0, Task queue size: 0)
[17:14:07.189][D][sec-touch:095]:   Received STX 2. Starting to store Message
[17:14:07.198][D][sec-touch-uart:189]: store_data_to_incoming_message 2
[17:14:07.203][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[17:14:07.203][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[17:14:07.210][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[17:14:07.213][D][sec-touch-uart:189]: store_data_to_incoming_message 49
[17:14:07.224][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[17:14:07.246][D][sec-touch-uart:189]: store_data_to_incoming_message 56
[17:14:07.246][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[17:14:07.246][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[17:14:07.255][D][sec-touch-uart:189]: store_data_to_incoming_message 53
[17:14:07.255][D][sec-touch-uart:189]: store_data_to_incoming_message 53
[17:14:07.255][D][sec-touch-uart:189]: store_data_to_incoming_message 9
[17:14:07.264][D][sec-touch-uart:189]: store_data_to_incoming_message 51
[17:14:07.272][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[17:14:07.276][D][sec-touch-uart:189]: store_data_to_incoming_message 54
[17:14:07.276][D][sec-touch-uart:189]: store_data_to_incoming_message 50
[17:14:07.291][D][sec-touch-uart:189]: store_data_to_incoming_message 55
[17:14:07.303][D][sec-touch-uart:189]: store_data_to_incoming_message 10
[17:14:07.304][D][sec-touch:105]:   Received ETX 10, processing message
[17:14:07.314][D][sec-touch:282]:   [process_data] buffer: 32	178	255	32627
[17:14:07.314][D][sec-touch:351]:   [process_data] command_id: 32, property_id: 178, value: 255, crc: 32627
[17:14:07.325][D][SecTouchFan:015]: New Real Speed from device for property_id 178 (speed 255)
[17:14:07.335][D][SecTouchFan:033]: No update needed for fan with property_id 178 (state 0) (speed 255)(preset Normal)
[17:14:07.340][D][sec-touch:278]: SendMessageAck sended

Now everything’s works fine.