• Du musst dich registrieren, bevor du Beiträge verfassen kannst. Klicke auf Jetzt registrieren!, um den Registrierungsprozess zu starten. Registrierte User surfen werbefrei, können Suchen durchführen und sehen die volle Darstellung des Forums mit vielen anderen Unterforen!!!

Otto Wilde G32 | Smarthome

Ich vermute du meinst damit:

Ist ja aber der gleiche Fall, dass diese Board-Konfiguration nicht für alle S3 gleichermaßen gilt. Es muss halt nachgesehen werden, was verbaut wurde.
Der Chip auf dem Foto von ich-grill-dann-mal ist exakt der gleiche wie auf meinem Board! Dann geht auch die von mir angegebene Konfiguration!
Ich glaube, wir machen das unnötig kompliziert.
Gerät über USB anschließen. Neues Gerät installieren. Reset ausführen. Dann geht nach 1 Minute der Accesspoint an. Wifi Credentials für das eigene 2.4GHz Netzwerk eingeben. Wenn ESPhome ONLINE anzeigt, meinen Code einfügen. Dann sollte es laufen oder zumindest in den Logs Gründe für die Nichtfunktion anzeigen.
Gruß, Jörg.
 
Also ich habe jetzt mal einige Änderungen gemacht, aber das Display hat ein Rad ab, ich bekomme nachher noch ein Baugleiches und werde es damit nochmal versuchen. Wie ich schon gestern gesagt hatte ist es mit einem D1 Board ein Kinderspiel, neues Gerät und flashen, dann Rebbot und das D1 Board geht sofort Online. Mein Display hingegen öffnet nicht mal den AP geschweige wählt er sich in mein WLAN ein, was der D1 sofort macht.
Ich habe es eben gerade nochmals versucht, leider ohne Erfolg.
Das große A bringt mir nachher ein neues Display vorbei, denke damit geht es sofort.
Ich Berichte!!
D1 Board.jpg


Mit dem Board kein Problem, ist halt kein Display dran... ;-)
Aber ganz herzlichen Dank an Euch für die nette Hilfe!!
 
Also, ich habe jetzt ein anderes Display erhalten, mit demselben Prozessor drin. Das Display lässt sich in ESPHome nicht einbinden. Ich habe es nochmals mit dem D1Mini ESP32 und einem D1-Entwicklerboard ESP8266 versucht, beide als neues Gerät in ESPHome angelegt. Beide sind sofort nach dem Neustart in ESPHome online, beide Geräte sind sofort mit meinem WLAN verbunden. Das Display hingegen macht nach dem Flashen weder einen Hotspot auf noch verbindet es sich mit meinem WLAN. Außerdem baut es im Sekundentakt die USB-Verbindung auf und beendet sie sofort wieder. Beide Displays verhalten sich identisch.

Laut Datenblatt ist dieser Prozessor kompatibel mit dem ESP32-S3.

Kurz gesagt, ich weiß nicht, wie ihr das gemacht habt, aber ich komme ja nicht mal dazu, die YAML-Datei zu bearbeiten, da das Display in ESPHome nicht online geht.

Ich glaube, ich gebe auf, zumindest für heute.
 
Also, ich habe jetzt ein anderes Display erhalten, mit demselben Prozessor drin. Das Display lässt sich in ESPHome nicht einbinden. Ich habe es nochmals mit dem D1Mini ESP32 und einem D1-Entwicklerboard ESP8266 versucht, beide als neues Gerät in ESPHome angelegt. Beide sind sofort nach dem Neustart in ESPHome online, beide Geräte sind sofort mit meinem WLAN verbunden. Das Display hingegen macht nach dem Flashen weder einen Hotspot auf noch verbindet es sich mit meinem WLAN. Außerdem baut es im Sekundentakt die USB-Verbindung auf und beendet sie sofort wieder. Beide Displays verhalten sich identisch.

Laut Datenblatt ist dieser Prozessor kompatibel mit dem ESP32-S3.

Kurz gesagt, ich weiß nicht, wie ihr das gemacht habt, aber ich komme ja nicht mal dazu, die YAML-Datei zu bearbeiten, da das Display in ESPHome nicht online geht.

Ich glaube, ich gebe auf, zumindest für heute.
Wenn der Zustand so bleibt, kann ich Dir nur anbieten, das Ding für 2,90€ zu mir zu schicken und ich versuche es dann mal. Bin vermutlich ab 10.07. wieder zu Haus. Bitte PN.
Das mit dem USB an und aus (pling, pling, pling, ...) hatte ich auch schon mal. Kann mich aber nicht mehr erinnern, wie das zu beseitigen war oder wie überhaupt ich in den Zustand gekommen bin ...
Ansonsten ist ESPHome ja, wie Du auch für die D1 Boards schreibst, beinahe 'idiotensicher'.

PS: der Prozessor ist nicht kompatibel zum ESP32, das ist ein ESP32-S3. Der wird nur von verschiedenen Firmen auf die uns allen bekannten Platinen gesetzt.
 
Wenn der Zustand so bleibt, kann ich Dir nur anbieten, das Ding für 2,90€ zu mir zu schicken und ich versuche es dann mal. Bin vermutlich ab 10.07. wieder zu Haus. Bitte PN.
Das mit dem USB an und aus (pling, pling, pling, ...) hatte ich auch schon mal. Kann mich aber nicht mehr erinnern, wie das zu beseitigen war oder wie überhaupt ich in den Zustand gekommen bin ...
Ansonsten ist ESPHome ja, wie Du auch für die D1 Boards schreibst, beinahe 'idiotensicher'.

PS: der Prozessor ist nicht kompatibel zum ESP32, das ist ein ESP32-S3. Der wird nur von verschiedenen Firmen auf die uns allen bekannten Platinen gesetzt.
Ja Sorry, da hab ich mich einfach falsch Ausgedrückt, der ist Baugleich mit dem ESP32S3 wollte ich sagen,

so nun bin ich einen Schritt weiter, das Display geht nun Online und ich kann auch die Bearbeitete YAML auf das Display per Wireless senden, aber....
es kommen nach ein paar Sekunden lauter Fehlercodes.
Da bin ich absolut raus. Ich weiß nicht was die SW von mir möchte.
Ich stell das mal Online:

Code:
INFO ESPHome 2025.6.1
INFO Reading configuration /config/esphome/g32-display.yaml...
INFO Generating C++ source...
INFO Updating https://github.com/espressif/esp-protocols.git@mdns-v1.8.2
INFO Compiling app...
Processing g32-display (board: esp32-s3-devkitc-1; framework: espidf; platform: https://github.com/pioarduino/platform-espressif32/releases/download/53.03.13/platform-espressif32.zip)
--------------------------------------------------------------------------------
HARDWARE: ESP32S3 240MHz, 320KB RAM, 8MB Flash
 - framework-espidf @ 3.50302.0 (5.3.2)
 - tool-cmake @ 3.30.2
 - tool-esptoolpy @ 4.8.6
 - tool-mklittlefs @ 3.2.0
 - tool-ninja @ 1.7.1
 - tool-riscv32-esp-elf-gdb @ 14.2.0+20240403
 - tool-xtensa-esp-elf-gdb @ 14.2.0+20240403
 - toolchain-esp32ulp @ 2.35.0-20220830
 - toolchain-riscv32-esp @ 13.2.0+20240530
 - toolchain-xtensa-esp-elf @ 13.2.0+20240530
Reading CMake configuration...
Dependency Graph
|-- noise-c @ 0.1.6
|-- lvgl @ 8.4.0
Compiling .pioenvs/g32-display/src/main.cpp.o
In file included from src/esphome/components/adc/adc_sensor.h:9,
                 from src/esphome.h:3,
                 from src/main.cpp:3:
/data/cache/platformio/packages/framework-espidf/components/esp_adc/deprecated/include/esp_adc_cal.h:17:2: warning: #warning "legacy adc calibration driver is deprecated, please migrate to use esp_adc/adc_cali.h and esp_adc/adc_cali_scheme.h" [-Wcpp]
   17 | #warning "legacy adc calibration driver is deprecated, please migrate to use esp_adc/adc_cali.h and esp_adc/adc_cali_scheme.h"
      |  ^~~~~~~
In file included from src/esphome/components/adc/adc_sensor.h:10:
/data/cache/platformio/packages/framework-espidf/components/driver/deprecated/driver/adc.h:19:2: warning: #warning "legacy adc driver is deprecated, please migrate to use esp_adc/adc_oneshot.h and esp_adc/adc_continuous.h for oneshot mode and continuous mode drivers respectively" [-Wcpp]
   19 | #warning "legacy adc driver is deprecated, please migrate to use esp_adc/adc_oneshot.h and esp_adc/adc_continuous.h for oneshot mode and continuous mode drivers respectively"
      |  ^~~~~~~
Compiling .pioenvs/g32-display/esp_hw_support/port/esp_clk_tree_common.c.o
Compiling .pioenvs/g32-display/esp_hw_support/dma/esp_dma_utils.c.o
Compiling .pioenvs/g32-display/esp_hw_support/dma/gdma_link.c.o
Compiling .pioenvs/g32-display/esp_hw_support/spi_share_hw_ctrl.c.o
Compiling .pioenvs/g32-display/esp_hw_support/spi_bus_lock.c.o
Compiling .pioenvs/g32-display/esp_hw_support/adc_share_hw_ctrl.c.o
Compiling .pioenvs/g32-display/esp_hw_support/dma/gdma.c.o
Compiling .pioenvs/g32-display/esp_hw_support/deprecated/gdma_legacy.c.o
Compiling .pioenvs/g32-display/esp_hw_support/dma/esp_async_memcpy.c.o
Compiling .pioenvs/g32-display/esp_hw_support/dma/async_memcpy_gdma.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/systimer.c.o
Compiling .pioenvs/g32-display/esp_hw_support/esp_hmac.c.o
Compiling .pioenvs/g32-display/esp_hw_support/esp_ds.c.o
Compiling .pioenvs/g32-display/esp_hw_support/mspi_timing_tuning.c.o
Compiling .pioenvs/g32-display/esp_hw_support/mspi_timing_by_mspi_delay.c.o
Compiling .pioenvs/g32-display/esp_hw_support/sleep_wake_stub.c.o
Compiling .pioenvs/g32-display/esp_hw_support/esp_clock_output.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/rtc_clk.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/rtc_clk_init.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/rtc_init.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/rtc_sleep.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/rtc_time.c.o
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/chip_info.c.o
/config/esphome/g32-display.yaml: In lambda function:
/config/esphome/g32-display.yaml:811:72: error: expected ';' before '}' token
  811 |             if(x >= 100) {return ("Alarm:d=4,o=5,b=165:a#,8p,a#,8p,a#,8p,a#")};
      |                                                                        ^
      |                                                                        ;
/config/esphome/g32-display.yaml: In function 'void setup()':
/config/esphome/g32-display.yaml:812:8: error: expected ')' before 'else'
  812 |             } else {
      |        ^   
      |        )
/config/esphome/g32-display.yaml:813:35: note: to match this '('
  813 |             {return ("")};
      |                                   ^
/config/esphome/g32-display.yaml: At global scope:
/config/esphome/g32-display.yaml:815:4: error: expected unqualified-id before ')' token
  815 |
      |    ^
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/esp_crypto_lock.c.o
/config/esphome/g32-display.yaml:816:3: error: 'automation_id_12' does not name a type
  816 |   - platform: ble_client
      |   ^~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:816:112: error: expected unqualified-id before ')' token
  816 |   - platform: ble_client
      |                                                                                                                ^
/config/esphome/g32-display.yaml:817:3: error: 'meater_t1' does not name a type
  817 |     ble_client_id: meater
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:817:144: error: expected unqualified-id before ')' token
  817 |     ble_client_id: meater
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:818:3: error: 'meater_t1' does not name a type
  818 |     type: characteristic
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/sar_periph_ctrl.c.o
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:818:141: error: expected unqualified-id before ')' token
  818 |     type: characteristic
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:819:3: error: 'meater_t1' does not name a type
  819 |     name: "Meater T2"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:792:4: error: expected unqualified-id before ')' token
  792 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:793:3: error: 'meater_t1' does not name a type
  793 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:794:3: error: 'meater_t1' does not name a type
  794 |           id: meater1_label
      |   ^       ~
/config/esphome/g32-display.yaml:795:3: error: 'App' does not name a type
  795 |           hidden: false
      |   ^ 
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/mspi_timing_config.c.o
/config/esphome/g32-display.yaml:796:3: error: 'meater' does not name a type
  796 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:797:3: error: 'meater_t1' does not name a type
  797 |             if(x == 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:836:3: error: 'meater_t2' does not name a type
  836 |           hidden: false
      |   ^       ~
/config/esphome/g32-display.yaml:837:3: error: 'App' does not name a type
  837 |           text: !lambda |-
      |   ^ 
/config/esphome/g32-display.yaml:838:3: error: 'meater_t2' does not name a type
Compiling .pioenvs/g32-display/esp_hw_support/port/esp32s3/esp_memprot.c.o
  838 |             if(x >= 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:839:3: error: 'meater_t2' does not name a type
  839 |             } else {
      |   ^       
Compiling .pioenvs/g32-display/esp_hw_support/port/esp_memprot_conv.c.o
/config/esphome/g32-display.yaml:840:3: error: 'meater_t2' does not name a type
  840 |             return (to_string(static_cast<int>(x))).c_str();
      |   ^       
/config/esphome/g32-display.yaml:841:3: error: 'meater_t2' does not name a type
  841 |             };
      |   ^       
/config/esphome/g32-display.yaml:842:3: error: 'meater_t2' does not name a type
  842 |       - lvgl.arc.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:843:3: error: 'meater_t2' does not name a type
  843 |           id: meater2_arc
      |   ^       ~
/config/esphome/g32-display.yaml:844:3: error: 'meater_t2' does not name a type
  844 |           value: !lambda |-
      |   ^       ~
/config/esphome/g32-display.yaml:845:3: error: 'sensor_sensorstatetrigger_id_2' does not name a type
  845 |             if(x >= 1500) {return (0);
      |   ^         ~~~~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/esp_hw_support/lowpower/cpu_retention/port/esp32s3/sleep_cpu.c.o
/config/esphome/g32-display.yaml:846:3: error: 'automation_id_13' does not name a type
  846 |             } else {
      |   ^         ~~~~~~
/config/esphome/g32-display.yaml:847:3: error: 'lvgl_objupdateaction_id_24' does not name a type
  847 |             return (x);
      |   ^         ~~~~~~~~~~~     
/config/esphome/g32-display.yaml:845:4: error: expected unqualified-id before ')' token
  845 |             if(x >= 1500) {return (0);
      |    ^
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_common.c.o
/config/esphome/g32-display.yaml:846:3: error: 'lvgl_objupdateaction_id_25' does not name a type
  846 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:852:4: error: expected unqualified-id before ')' token
  852 |     name: "BT Signalstärke"
      |    ^
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_panel_io.c.o
/config/esphome/g32-display.yaml:853:3: error: 'automation_id_13' does not name a type
  853 |   - platform: wifi_signal
      |   ^~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:853:89: error: expected unqualified-id before ')' token
  853 |   - platform: wifi_signal
      |                                                                                         ^
/config/esphome/g32-display.yaml:854:3: error: 'meater_t2' does not name a type
  854 |     name: "WiFi Signal ESP G32"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:854:144: error: expected unqualified-id before ')' token
  854 |     name: "WiFi Signal ESP G32"
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:855:3: error: 'meater_t2' does not name a type
  855 |     update_interval: 10s
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:855:141: error: expected unqualified-id before ')' token
  855 |     update_interval: 10s
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:856:3: error: 'meater_t2' does not name a type
  856 |   - platform: internal_temperature
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:833:4: error: expected unqualified-id before ')' token
  833 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:834:3: error: 'meater_t2' does not name a type
  834 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:835:3: error: 'meater_t2' does not name a type
  835 |           id: meater2_label
      |   ^       ~
/config/esphome/g32-display.yaml:836:3: error: 'App' does not name a type
  836 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:837:3: error: 'meater' does not name a type
  837 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:838:3: error: 'meater_t2' does not name a type
  838 |             if(x >= 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:851:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  851 |     mac_address: ${g32_mac_address}
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:852:3: error: 'App' does not name a type
  852 |     name: "BT Signalstärke"
      |   ^ ~
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_panel_nt35510.c.o
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_panel_ssd1306.c.o
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_panel_st7789.c.o
/config/esphome/g32-display.yaml:853:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  853 |   - platform: wifi_signal
      |   ^~~~~~~~~~~~~~~~~~~~~~~ 
/config/esphome/g32-display.yaml:854:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  854 |     name: "WiFi Signal ESP G32"
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:855:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  855 |     update_interval: 10s
      |   ^ ~~~~~~~~~~~~~~~~~~~~   
/config/esphome/g32-display.yaml:856:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  856 |   - platform: internal_temperature
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:857:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  857 |     name: "CPU Temperatur ESP G32"
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:858:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  858 |     update_interval: 10s
      |   ^ ~~~~~~~~~~~~~~~~~~~~   
/config/esphome/g32-display.yaml:859:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  859 |
      |   ^                       
Compiling .pioenvs/g32-display/esp_lcd/src/esp_lcd_panel_ops.c.o
/config/esphome/g32-display.yaml:860:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  860 |   - platform: ble_client
      |   ^~~~~~~~~~~~~~~~~~~~~~   
/config/esphome/g32-display.yaml:861:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  861 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~~~~~~~~~~~~~~~ 
Compiling .pioenvs/g32-display/esp_lcd/i2c/esp_lcd_panel_io_i2c_v1.c.o
/config/esphome/g32-display.yaml:862:3: error: 'App' does not name a type
  862 |     type: characteristic
      |   ^ ~
Compiling .pioenvs/g32-display/esp_lcd/i2c/esp_lcd_panel_io_i2c_v2.c.o
/config/esphome/g32-display.yaml:875:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  875 |           hidden: false
      |   ^       ~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:876:3: error: 'App' does not name a type
  876 |           text: !lambda |-
      |   ^ 
Compiling .pioenvs/g32-display/esp_lcd/spi/esp_lcd_panel_io_spi.c.o
/config/esphome/g32-display.yaml:877:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  877 |             if(x >= 1500) {return ("---");
      |   ^         ~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:878:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  878 |             } else {
      |   ^         ~~~~~~~~             
/config/esphome/g32-display.yaml:879:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  879 |             return (to_string(static_cast<int>(x))).c_str();
      |   ^         ~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:880:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  880 |             };
      |   ^         ~~                   
Compiling .pioenvs/g32-display/esp_lcd/i80/esp_lcd_panel_io_i80.c.o
/config/esphome/g32-display.yaml:881:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  881 |       - lvgl.arc.update:
      |   ^   ~~~~~~~~~~~~~~~~~~         
Compiling .pioenvs/g32-display/esp_lcd/rgb/esp_lcd_panel_rgb.c.o
/config/esphome/g32-display.yaml:882:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  882 |           id: zone1_arc
      |   ^       ~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:883:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  883 |           value: !lambda |-
      |   ^       ~~~~~~~~~~~~~~~~~     
Archiving .pioenvs/g32-display/esp-idf/esp_hw_support/libesp_hw_support.a
/config/esphome/g32-display.yaml:884:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  884 |             if(x >= 1500) {return (0);
      |   ^         ~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:885:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  885 |             } else {
      |   ^         ~~~~~~~~             
/config/esphome/g32-display.yaml:886:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  886 |             return (x);
      |   ^         ~~~~~~~~~~~         
/config/esphome/g32-display.yaml:887:3: error: 'wifi_signal_wifisignalsensor_id' does not name a type
  887 |             };
      |   ^         ~~                   
/config/esphome/g32-display.yaml:888:3: error: 'App' does not name a type
  888 |
      |   ^ 
Compiling .pioenvs/g32-display/esp_local_ctrl/src/esp_local_ctrl.c.o
/config/esphome/g32-display.yaml:901:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
Compiling .pioenvs/g32-display/esp_local_ctrl/src/esp_local_ctrl_handler.c.o
  901 |     on_value:
      |   ^ ~~~~~~~~~                                     
/config/esphome/g32-display.yaml:902:3: error: 'App' does not name a type
  902 |       - lvgl.label.update:
      |   ^ 
/config/esphome/g32-display.yaml:903:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  903 |           id: zone2_label
      |   ^       ~~~~~~~~~~~~~~~                         
/config/esphome/g32-display.yaml:904:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  904 |           hidden: false
      |   ^       ~~~~~~~~~~~~~                           
/config/esphome/g32-display.yaml:905:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  905 |           text: !lambda |-
      |   ^       ~~~~~~~~~~~~~~~~                         
/config/esphome/g32-display.yaml:906:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  906 |             if(x >= 1500) {return ("---");
      |   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
Compiling .pioenvs/g32-display/esp_local_ctrl/proto-c/esp_local_ctrl.pb-c.c.o
Compiling .pioenvs/g32-display/esp_local_ctrl/src/esp_local_ctrl_transport_ble.c.o
/config/esphome/g32-display.yaml:907:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  907 |             } else {
      |   ^         ~~~~~~~~                               
Compiling .pioenvs/g32-display/esp_local_ctrl/src/esp_local_ctrl_transport_httpd.c.o
/config/esphome/g32-display.yaml:908:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  908 |             return (to_string(static_cast<int>(x))).c_str();
      |   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:909:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  909 |             };
      |   ^         ~~                                     
/config/esphome/g32-display.yaml:910:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  910 |       - lvgl.arc.update:
      |   ^   ~~~~~~~~~~~~~~~~~~                           
Compiling .pioenvs/g32-display/esp_mm/esp_mmu_map.c.o
Compiling .pioenvs/g32-display/esp_mm/port/esp32s3/ext_mem_layout.c.o
/config/esphome/g32-display.yaml:911:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  911 |           id: zone2_arc
      |   ^       ~~~~~~~~~~~~~                           
Archiving .pioenvs/g32-display/esp-idf/esp_local_ctrl/libesp_local_ctrl.a
/config/esphome/g32-display.yaml:912:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  912 |           value: !lambda |-
      |   ^       ~~~~~~~~~~~~~~~~~                       
Compiling .pioenvs/g32-display/esp_mm/esp_cache.c.o
Compiling .pioenvs/g32-display/esp_mm/heap_align_hw.c.o
/config/esphome/g32-display.yaml:913:3: error: 'internal_temperature_internaltemperaturesensor_id' does not name a type
  913 |             if(x >= 1500) {return (0);
      |   ^         ~~~~~~~~~~~~~~~~~~~~~~~~~~             
/config/esphome/g32-display.yaml:914:3: error: 'App' does not name a type
  914 |             } else {
      |   ^ 
/config/esphome/g32-display.yaml:949:3: error: 'g32_T_1' does not name a type
  949 |     type: characteristic
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:950:3: error: 'App' does not name a type
  950 |     name: "G32 Zone 4"
      |   ^ ~
/config/esphome/g32-display.yaml:951:3: error: 'g32_T_1' does not name a type
  951 |     id: g32_T_4
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:952:3: error: 'g32_T_1' does not name a type
  952 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:953:3: error: 'g32_T_1' does not name a type
  953 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:954:3: error: 'g32_T_1' does not name a type
  954 |     device_class: "temperature"
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:955:3: error: 'g32_T_1' does not name a type
  955 |     unit_of_measurement: "°C"
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:956:3: error: 'g32_T_1' does not name a type
  956 |     update_interval: 3002s
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:957:3: error: 'g32_T_1' does not name a type
  957 |     lambda: |-
      |   ^ ~~~~~
Compiling .pioenvs/g32-display/esp_netif/esp_netif_handlers.c.o
/config/esphome/g32-display.yaml:958:3: error: 'sensor_sensorstatetrigger_id_3' does not name a type
  958 |       return (x[12]*10.0+x[13]/10.0);
      |   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:959:3: error: 'automation_id_14' does not name a type
  959 |     on_value:
      |   ^ ~~~~~~~~~     
/config/esphome/g32-display.yaml:960:3: error: 'lvgl_objupdateaction_id_26' does not name a type
  960 |       - lvgl.label.update:
      |   ^   ~~~~~~~~~~~~~~~~~~~~ 
/config/esphome/g32-display.yaml:884:4: error: expected unqualified-id before ')' token
  884 |             if(x >= 1500) {return (0);
      |    ^
Compiling .pioenvs/g32-display/esp_netif/esp_netif_objects.c.o
Archiving .pioenvs/g32-display/esp-idf/esp_lcd/libesp_lcd.a
/config/esphome/g32-display.yaml:885:3: error: 'lvgl_objupdateaction_id_27' does not name a type
  885 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:891:4: error: expected unqualified-id before ')' token
  891 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:892:3: error: 'automation_id_14' does not name a type
  892 |     name: "G32 Zone 2"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:892:89: error: expected unqualified-id before ')' token
  892 |     name: "G32 Zone 2"
      |                                                                                         ^
Compiling .pioenvs/g32-display/esp_netif/esp_netif_defaults.c.o
/config/esphome/g32-display.yaml:893:3: error: 'g32_T_1' does not name a type
  893 |     id: g32_T_2
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:893:142: error: expected unqualified-id before ')' token
  893 |     id: g32_T_2
      |                                                                                                                                              ^
/config/esphome/g32-display.yaml:894:3: error: 'g32_T_1' does not name a type
  894 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:894:139: error: expected unqualified-id before ')' token
  894 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                           ^
/config/esphome/g32-display.yaml:895:3: error: 'g32_T_1' does not name a type
  895 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:872:4: error: expected unqualified-id before ')' token
  872 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:873:3: error: 'g32_T_1' does not name a type
  873 |       - lvgl.label.update:
      |   ^   ~~~
/config/esphome/g32-display.yaml:874:3: error: 'g32_T_1' does not name a type
  874 |           id: zone1_label
      |   ^     
/config/esphome/g32-display.yaml:875:3: error: 'App' does not name a type
  875 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:876:3: error: 'ow_g32' does not name a type
  876 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:877:3: error: 'g32_T_1' does not name a type
  877 |             if(x >= 1500) {return ("---");
      |   ^     
/config/esphome/g32-display.yaml:912:3: error: 'g32_T_2' does not name a type
  912 |           value: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:913:3: error: 'App' does not name a type
  913 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:914:3: error: 'g32_T_2' does not name a type
  914 |             } else {
      |   ^     
/config/esphome/g32-display.yaml:915:3: error: 'g32_T_2' does not name a type
  915 |             return (x);
      |   ^     
/config/esphome/g32-display.yaml:916:3: error: 'g32_T_2' does not name a type
  916 |             };
      |   ^     
/config/esphome/g32-display.yaml:917:3: error: 'g32_T_2' does not name a type
  917 |
      |   ^     
Compiling .pioenvs/g32-display/esp_netif/lwip/esp_netif_lwip.c.o
/config/esphome/g32-display.yaml:918:3: error: 'g32_T_2' does not name a type
  918 |   - platform: ble_client
      |   ^~~~~~~
/config/esphome/g32-display.yaml:919:3: error: 'g32_T_2' does not name a type
  919 |     ble_client_id: ow_g32
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:920:3: error: 'g32_T_2' does not name a type
  920 |     type: characteristic
      |   ^ ~~~~~
Compiling .pioenvs/g32-display/esp_netif/lwip/esp_netif_sntp.c.o
Archiving .pioenvs/g32-display/esp-idf/esp_mm/libesp_mm.a
Compiling .pioenvs/g32-display/esp_netif/lwip/esp_netif_lwip_defaults.c.o
/config/esphome/g32-display.yaml:921:3: error: 'sensor_sensorstatetrigger_id_4' does not name a type
  921 |     name: "G32 Zone 3"
      |   ^ ~~~~~~~~~~~~~~~~~~         
Compiling .pioenvs/g32-display/esp_netif/lwip/netif/wlanif.c.o
/config/esphome/g32-display.yaml:922:3: error: 'automation_id_15' does not name a type
  922 |     id: g32_T_3
      |   ^ ~~~~~~~~~~~   
/config/esphome/g32-display.yaml:923:3: error: 'lvgl_objupdateaction_id_28' does not name a type
  923 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:913:4: error: expected unqualified-id before ')' token
  913 |             if(x >= 1500) {return (0);
      |    ^
/config/esphome/g32-display.yaml:914:3: error: 'lvgl_objupdateaction_id_29' does not name a type
  914 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:920:4: error: expected unqualified-id before ')' token
  920 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:921:3: error: 'automation_id_15' does not name a type
  921 |     name: "G32 Zone 3"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:921:89: error: expected unqualified-id before ')' token
  921 |     name: "G32 Zone 3"
      |                                                                                         ^
Compiling .pioenvs/g32-display/esp_netif/lwip/netif/ethernetif.c.o
/config/esphome/g32-display.yaml:922:3: error: 'g32_T_2' does not name a type
  922 |     id: g32_T_3
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:922:142: error: expected unqualified-id before ')' token
  922 |     id: g32_T_3
      |                                                                                                                                              ^
/config/esphome/g32-display.yaml:923:3: error: 'g32_T_2' does not name a type
  923 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:923:139: error: expected unqualified-id before ')' token
  923 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                           ^
/config/esphome/g32-display.yaml:924:3: error: 'g32_T_2' does not name a type
  924 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:901:4: error: expected unqualified-id before ')' token
  901 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:902:3: error: 'g32_T_2' does not name a type
  902 |       - lvgl.label.update:
      |   ^   ~~~
/config/esphome/g32-display.yaml:903:3: error: 'g32_T_2' does not name a type
  903 |           id: zone2_label
      |   ^     
/config/esphome/g32-display.yaml:904:3: error: 'App' does not name a type
  904 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:905:3: error: 'ow_g32' does not name a type
  905 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:906:3: error: 'g32_T_2' does not name a type
  906 |             if(x >= 1500) {return ("---");
      |   ^     
/config/esphome/g32-display.yaml:941:3: error: 'g32_T_3' does not name a type
  941 |           value: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:942:3: error: 'App' does not name a type
  942 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:943:3: error: 'g32_T_3' does not name a type
  943 |             } else {
      |   ^     
/config/esphome/g32-display.yaml:944:3: error: 'g32_T_3' does not name a type
  944 |             return (x);
      |   ^     
/config/esphome/g32-display.yaml:945:3: error: 'g32_T_3' does not name a type
  945 |             };
      |   ^     
Compiling .pioenvs/g32-display/esp_netif/lwip/netif/esp_pbuf_ref.c.o
/config/esphome/g32-display.yaml:946:3: error: 'g32_T_3' does not name a type
  946 |
      |   ^     
/config/esphome/g32-display.yaml:947:3: error: 'g32_T_3' does not name a type
  947 |   - platform: ble_client
      |   ^~~~~~~
/config/esphome/g32-display.yaml:948:3: error: 'g32_T_3' does not name a type
  948 |     ble_client_id: ow_g32
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:949:3: error: 'g32_T_3' does not name a type
  949 |     type: characteristic
      |   ^ ~~~~~
Compiling .pioenvs/g32-display/esp_partition/partition.c.o
/config/esphome/g32-display.yaml:950:3: error: 'sensor_sensorstatetrigger_id_5' does not name a type
  950 |     name: "G32 Zone 4"
      |   ^ ~~~~~~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:951:3: error: 'automation_id_16' does not name a type
  951 |     id: g32_T_4
      |   ^ ~~~~~~~~~~~   
Compiling .pioenvs/g32-display/esp_partition/partition_target.c.o
/config/esphome/g32-display.yaml:952:3: error: 'lvgl_objupdateaction_id_30' does not name a type
  952 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:942:4: error: expected unqualified-id before ')' token
  942 |             if(x >= 1500) {return (0);
      |    ^
/config/esphome/g32-display.yaml:943:3: error: 'lvgl_objupdateaction_id_31' does not name a type
  943 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:949:4: error: expected unqualified-id before ')' token
  949 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:950:3: error: 'automation_id_16' does not name a type
  950 |     name: "G32 Zone 4"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:950:89: error: expected unqualified-id before ')' token
  950 |     name: "G32 Zone 4"
      |                                                                                         ^
/config/esphome/g32-display.yaml:951:3: error: 'g32_T_3' does not name a type
  951 |     id: g32_T_4
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:951:142: error: expected unqualified-id before ')' token
  951 |     id: g32_T_4
      |                                                                                                                                              ^
/config/esphome/g32-display.yaml:952:3: error: 'g32_T_3' does not name a type
  952 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:952:139: error: expected unqualified-id before ')' token
  952 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                           ^
Compiling .pioenvs/g32-display/esp_phy/src/phy_override.c.o
/config/esphome/g32-display.yaml:953:3: error: 'g32_T_3' does not name a type
  953 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:930:4: error: expected unqualified-id before ')' token
  930 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:931:3: error: 'g32_T_3' does not name a type
  931 |       - lvgl.label.update:
      |   ^   ~~~
/config/esphome/g32-display.yaml:932:3: error: 'g32_T_3' does not name a type
  932 |           id: zone3_label
      |   ^     
/config/esphome/g32-display.yaml:933:3: error: 'App' does not name a type
  933 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:934:3: error: 'ow_g32' does not name a type
  934 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:935:3: error: 'g32_T_3' does not name a type
  935 |             if(x >= 1500) {return ("---");
      |   ^     
/config/esphome/g32-display.yaml:970:3: error: 'g32_T_4' does not name a type
  970 |           value: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:971:3: error: 'App' does not name a type
  971 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:972:3: error: 'g32_T_4' does not name a type
  972 |             } else {
      |   ^     
/config/esphome/g32-display.yaml:973:3: error: 'g32_T_4' does not name a type
  973 |             return (x);
      |   ^     
/config/esphome/g32-display.yaml:974:3: error: 'g32_T_4' does not name a type
  974 |             };
      |   ^     
/config/esphome/g32-display.yaml:975:3: error: 'g32_T_4' does not name a type
  975 |
      |   ^     
/config/esphome/g32-display.yaml:976:3: error: 'g32_T_4' does not name a type
  976 |   - platform: ble_client
      |   ^~~~~~~
Compiling .pioenvs/g32-display/esp_phy/src/lib_printf.c.o
/config/esphome/g32-display.yaml:977:3: error: 'g32_T_4' does not name a type
  977 |     ble_client_id: ow_g32
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:978:3: error: 'g32_T_4' does not name a type
  978 |     type: characteristic
      |   ^ ~~~~~
Archiving .pioenvs/g32-display/esp-idf/esp_partition/libesp_partition.a
Compiling .pioenvs/g32-display/esp_phy/src/phy_common.c.o
/config/esphome/g32-display.yaml:979:3: error: 'sensor_sensorstatetrigger_id_6' does not name a type
  979 |     name: "G32 Sensor 1"
      |   ^ ~~~~~~~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:980:3: error: 'automation_id_17' does not name a type
  980 |     id: g32_Ext_1
      |   ^ ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:981:3: error: 'lvgl_objupdateaction_id_32' does not name a type
  981 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:971:4: error: expected unqualified-id before ')' token
  971 |             if(x >= 1500) {return (0);
      |    ^
Compiling .pioenvs/g32-display/esp_phy/src/phy_init.c.o
Compiling .pioenvs/g32-display/esp_phy/esp32s3/phy_init_data.c.o
/config/esphome/g32-display.yaml:972:3: error: 'lvgl_objupdateaction_id_33' does not name a type
  972 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:978:4: error: expected unqualified-id before ')' token
  978 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:979:3: error: 'automation_id_17' does not name a type
  979 |     name: "G32 Sensor 1"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:979:89: error: expected unqualified-id before ')' token
  979 |     name: "G32 Sensor 1"
      |                                                                                         ^
/config/esphome/g32-display.yaml:980:3: error: 'g32_T_4' does not name a type
  980 |     id: g32_Ext_1
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:980:142: error: expected unqualified-id before ')' token
  980 |     id: g32_Ext_1
      |                                                                                                                                              ^
/config/esphome/g32-display.yaml:981:3: error: 'g32_T_4' does not name a type
  981 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:981:139: error: expected unqualified-id before ')' token
  981 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                           ^
/config/esphome/g32-display.yaml:982:3: error: 'g32_T_4' does not name a type
  982 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:959:4: error: expected unqualified-id before ')' token
  959 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:960:3: error: 'g32_T_4' does not name a type
  960 |       - lvgl.label.update:
      |   ^   ~~~
/config/esphome/g32-display.yaml:961:3: error: 'g32_T_4' does not name a type
  961 |           id: zone4_label
      |   ^     
/config/esphome/g32-display.yaml:962:3: error: 'App' does not name a type
  962 |           hidden: false
      |   ^ 
Compiling .pioenvs/g32-display/esp_phy/src/btbb_init.c.o
/config/esphome/g32-display.yaml:963:3: error: 'ow_g32' does not name a type
  963 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:964:3: error: 'g32_T_4' does not name a type
  964 |             if(x >= 1500) {return ("---");
      |   ^     
/config/esphome/g32-display.yaml:999:3: error: 'g32_Ext_1' does not name a type
  999 |           value: !lambda |-
      |   ^       ~
/config/esphome/g32-display.yaml:1000:3: error: 'App' does not name a type
 1000 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:1001:3: error: 'g32_Ext_1' does not name a type
 1001 |             } else {
      |   ^       
/config/esphome/g32-display.yaml:1002:3: error: 'g32_Ext_1' does not name a type
 1002 |             return (x);
      |   ^       
/config/esphome/g32-display.yaml:1003:3: error: 'g32_Ext_1' does not name a type
 1003 |             };
      |   ^       
/config/esphome/g32-display.yaml:1004:3: error: 'g32_Ext_1' does not name a type
 1004 |
      |   ^       
/config/esphome/g32-display.yaml:1005:3: error: 'g32_Ext_1' does not name a type
 1005 |   - platform: ble_client
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:1006:3: error: 'g32_Ext_1' does not name a type
 1006 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1007:3: error: 'g32_Ext_1' does not name a type
 1007 |     type: characteristic
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_pm/pm_locks.c.o
/config/esphome/g32-display.yaml:1008:3: error: 'sensor_sensorstatetrigger_id_7' does not name a type
 1008 |     name: "G32 Sensor 2"
      |   ^ ~~~~~~~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:1009:3: error: 'automation_id_18' does not name a type
 1009 |     id: g32_Ext_2
      |   ^ ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1010:3: error: 'lvgl_objupdateaction_id_34' does not name a type
 1010 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1000:4: error: expected unqualified-id before ')' token
 1000 |             if(x >= 1500) {return (0);
      |    ^
Compiling .pioenvs/g32-display/esp_pm/pm_trace.c.o
/config/esphome/g32-display.yaml:1001:3: error: 'lvgl_objupdateaction_id_35' does not name a type
 1001 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:1007:4: error: expected unqualified-id before ')' token
 1007 |     type: characteristic
      |    ^
Archiving .pioenvs/g32-display/esp-idf/esp_netif/libesp_netif.a
/config/esphome/g32-display.yaml:1008:3: error: 'automation_id_18' does not name a type
 1008 |     name: "G32 Sensor 2"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1008:89: error: expected unqualified-id before ')' token
 1008 |     name: "G32 Sensor 2"
      |                                                                                         ^
/config/esphome/g32-display.yaml:1009:3: error: 'g32_Ext_1' does not name a type
 1009 |     id: g32_Ext_2
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1009:144: error: expected unqualified-id before ')' token
 1009 |     id: g32_Ext_2
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1010:3: error: 'g32_Ext_1' does not name a type
 1010 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1010:141: error: expected unqualified-id before ')' token
 1010 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1011:3: error: 'g32_Ext_1' does not name a type
 1011 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:988:4: error: expected unqualified-id before ')' token
  988 |     on_value:
      |    ^
Compiling .pioenvs/g32-display/esp_pm/pm_impl.c.o
/config/esphome/g32-display.yaml:989:3: error: 'g32_Ext_1' does not name a type
  989 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:990:3: error: 'g32_Ext_1' does not name a type
  990 |           id: sensor1_label
      |   ^       ~
Archiving .pioenvs/g32-display/esp-idf/esp_phy/libesp_phy.a
/config/esphome/g32-display.yaml:991:3: error: 'App' does not name a type
  991 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:992:3: error: 'ow_g32' does not name a type
  992 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:993:3: error: 'g32_Ext_1' does not name a type
  993 |             if(x >= 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:1028:3: error: 'g32_Ext_2' does not name a type
 1028 |           value: !lambda |-
      |   ^       ~
/config/esphome/g32-display.yaml:1029:3: error: 'App' does not name a type
 1029 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:1030:3: error: 'g32_Ext_2' does not name a type
 1030 |             } else {
      |   ^       
/config/esphome/g32-display.yaml:1031:3: error: 'g32_Ext_2' does not name a type
 1031 |             return (x);
      |   ^       
/config/esphome/g32-display.yaml:1032:3: error: 'g32_Ext_2' does not name a type
 1032 |             };
      |   ^       
/config/esphome/g32-display.yaml:1033:3: error: 'g32_Ext_2' does not name a type
 1033 |
      |   ^       
/config/esphome/g32-display.yaml:1034:3: error: 'g32_Ext_2' does not name a type
 1034 |   - platform: ble_client
      |   ^~~~~~~~~
Compiling .pioenvs/g32-display/esp_psram/esp_psram.c.o
/config/esphome/g32-display.yaml:1035:3: error: 'g32_Ext_2' does not name a type
 1035 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1036:3: error: 'g32_Ext_2' does not name a type
 1036 |     type: characteristic
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_psram/mmu_psram_flash.c.o
Compiling .pioenvs/g32-display/esp_psram/esp32s3/esp_psram_impl_octal.c.o
/config/esphome/g32-display.yaml:1037:3: error: 'sensor_sensorstatetrigger_id_8' does not name a type
 1037 |     name: "G32 Sensor 3"
      |   ^ ~~~~~~~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:1038:3: error: 'automation_id_19' does not name a type
 1038 |     id: g32_Ext_3
      |   ^ ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1039:3: error: 'lvgl_objupdateaction_id_36' does not name a type
 1039 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1029:4: error: expected unqualified-id before ')' token
 1029 |             if(x >= 1500) {return (0);
      |    ^
/config/esphome/g32-display.yaml:1030:3: error: 'lvgl_objupdateaction_id_37' does not name a type
 1030 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:1036:4: error: expected unqualified-id before ')' token
 1036 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:1037:3: error: 'automation_id_19' does not name a type
 1037 |     name: "G32 Sensor 3"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1037:89: error: expected unqualified-id before ')' token
 1037 |     name: "G32 Sensor 3"
      |                                                                                         ^
/config/esphome/g32-display.yaml:1038:3: error: 'g32_Ext_2' does not name a type
 1038 |     id: g32_Ext_3
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1038:144: error: expected unqualified-id before ')' token
 1038 |     id: g32_Ext_3
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1039:3: error: 'g32_Ext_2' does not name a type
 1039 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1039:141: error: expected unqualified-id before ')' token
 1039 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                             ^
Archiving .pioenvs/g32-display/esp-idf/esp_pm/libesp_pm.a
/config/esphome/g32-display.yaml:1040:3: error: 'g32_Ext_2' does not name a type
 1040 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1017:4: error: expected unqualified-id before ')' token
 1017 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:1018:3: error: 'g32_Ext_2' does not name a type
 1018 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1019:3: error: 'g32_Ext_2' does not name a type
 1019 |           id: sensor2_label
      |   ^       ~
/config/esphome/g32-display.yaml:1020:3: error: 'App' does not name a type
 1020 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:1021:3: error: 'ow_g32' does not name a type
 1021 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:1022:3: error: 'g32_Ext_2' does not name a type
 1022 |             if(x >= 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:1058:3: error: 'g32_Ext_3' does not name a type
 1058 |           value: !lambda |-
      |   ^       ~
/config/esphome/g32-display.yaml:1059:3: error: 'App' does not name a type
 1059 |             if(x >= 1500) {return (0);
      |   ^ 
/config/esphome/g32-display.yaml:1060:3: error: 'g32_Ext_3' does not name a type
 1060 |             } else {
      |   ^       
Compiling .pioenvs/g32-display/esp_ringbuf/ringbuf.c.o
/config/esphome/g32-display.yaml:1061:3: error: 'g32_Ext_3' does not name a type
 1061 |             return (x);
      |   ^       
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_crc.c.o
/config/esphome/g32-display.yaml:1062:3: error: 'g32_Ext_3' does not name a type
 1062 |             };
      |   ^       
/config/esphome/g32-display.yaml:1063:3: error: 'g32_Ext_3' does not name a type
 1063 |
      |   ^       
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_sys.c.o
/config/esphome/g32-display.yaml:1064:3: error: 'g32_Ext_3' does not name a type
 1064 |   - platform: ble_client
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:1065:3: error: 'g32_Ext_3' does not name a type
 1065 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1066:3: error: 'g32_Ext_3' does not name a type
 1066 |     type: characteristic
      |   ^ ~~~~~~~
Archiving .pioenvs/g32-display/esp-idf/esp_psram/libesp_psram.a
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_uart.c.o
/config/esphome/g32-display.yaml:1067:3: error: 'sensor_sensorstatetrigger_id_9' does not name a type
 1067 |     name: "G32 Sensor 4"
      |   ^ ~~~~~~~~~~~~~~~~~~~~       
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_spiflash.c.o
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_efuse.c.o
/config/esphome/g32-display.yaml:1068:3: error: 'automation_id_20' does not name a type
 1068 |     id: g32_Ext_4
      |   ^ ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1104:3: error: 'g32_Ext_4' does not name a type
 1104 |     lambda: |-
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1105:3: error: 'App' does not name a type
 1105 |       return (x[22]*256+x[23]);
      |   ^ 
/config/esphome/g32-display.yaml:1106:3: error: 'g32_Ext_4' does not name a type
 1106 |     on_value:
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1107:3: error: 'g32_Ext_4' does not name a type
 1107 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1108:3: error: 'g32_Ext_4' does not name a type
 1108 |           id: gas_weight_label
      |   ^       ~
/config/esphome/g32-display.yaml:1109:3: error: 'g32_Ext_4' does not name a type
 1109 |           hidden: false
      |   ^       ~
/config/esphome/g32-display.yaml:1110:3: error: 'g32_Ext_4' does not name a type
 1110 |           text: !lambda |-
      |   ^       ~
/config/esphome/g32-display.yaml:1111:3: error: 'g32_Ext_4' does not name a type
 1111 |             if(x >= 20000) {return ("---");
      |   ^       
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_longjmp.S.o
/config/esphome/g32-display.yaml:1112:3: error: 'g32_Ext_4' does not name a type
 1112 |             } else {
      |   ^       
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_systimer.c.o
/config/esphome/g32-display.yaml:1113:3: error: 'sensor_sensorstatetrigger_id_10' does not name a type
 1113 |             return (to_string(static_cast<int>(x)) + " g").c_str();
      |   ^         ~~~~~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_wdt.c.o
/config/esphome/g32-display.yaml:1114:3: error: 'automation_id_21' does not name a type
 1114 |             };
      |   ^         ~~   
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_cache_esp32s2_esp32s3.c.o
/config/esphome/g32-display.yaml:1144:3: error: 'g32_Gas_g' does not name a type
 1144 |             };
      |   ^       
/config/esphome/g32-display.yaml:1145:3: error: 'App' does not name a type
 1145 |
      |   ^ 
/config/esphome/g32-display.yaml:1146:3: error: 'g32_Gas_g' does not name a type
 1146 |   - platform: ble_client
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:1147:3: error: 'g32_Gas_g' does not name a type
 1147 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_rom/patches/esp_rom_cache_writeback_esp32s3.S.o
/config/esphome/g32-display.yaml:1148:3: error: 'g32_Gas_g' does not name a type
 1148 |     type: characteristic
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1149:3: error: 'g32_Gas_g' does not name a type
 1149 |     name: "G32 Haube"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1150:3: error: 'g32_Gas_g' does not name a type
 1150 |     id: g32_Haube
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1151:3: error: 'g32_Gas_g' does not name a type
 1151 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1152:3: error: 'g32_Gas_g' does not name a type
 1152 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1153:3: error: 'g32_Gas_g' does not name a type
 1153 |     update_interval: 3008s
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_system/esp_err.c.o
/config/esphome/g32-display.yaml:1154:3: error: 'sensor_sensorstatetrigger_id_11' does not name a type
 1154 |     lambda: |-
      |   ^ ~~~~~~~~~~                   
Compiling .pioenvs/g32-display/esp_system/crosscore_int.c.o
Archiving .pioenvs/g32-display/esp-idf/esp_rom/libesp_rom.a
/config/esphome/g32-display.yaml:1155:3: error: 'automation_id_22' does not name a type
 1155 |       return (x[24]);
      |   ^   ~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1156:3: error: 'lvgl_objupdateaction_id_42' does not name a type
 1156 |
      |   ^                         
/config/esphome/g32-display.yaml:1118:4: error: expected unqualified-id before ')' token
 1118 |     type: characteristic
      |    ^
Compiling .pioenvs/g32-display/esp_system/esp_ipc.c.o
Compiling .pioenvs/g32-display/esp_system/freertos_hooks.c.o
/config/esphome/g32-display.yaml:1119:3: error: 'automation_id_22' does not name a type
 1119 |     name: "G32 Gasbuddy Füllstand in %"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1119:60: error: expected unqualified-id before ')' token
 1119 |     name: "G32 Gasbuddy Füllstand in %"
      |                                                            ^
/config/esphome/g32-display.yaml:1120:3: error: 'g32_Gas_g' does not name a type
 1120 |     state_class: measurement
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1120:144: error: expected unqualified-id before ')' token
 1120 |     state_class: measurement
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1121:3: error: 'g32_Gas_g' does not name a type
 1121 |     unit_of_measurement: "%"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1121:141: error: expected unqualified-id before ')' token
 1121 |     unit_of_measurement: "%"
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1122:3: error: 'g32_Gas_g' does not name a type
 1122 |     id: g32_Gas
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1106:4: error: expected unqualified-id before ')' token
 1106 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:1107:3: error: 'g32_Gas_g' does not name a type
 1107 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1108:3: error: 'g32_Gas_g' does not name a type
 1108 |           id: gas_weight_label
      |   ^       ~
/config/esphome/g32-display.yaml:1109:3: error: 'App' does not name a type
 1109 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:1110:3: error: 'ow_g32' does not name a type
 1110 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:1111:3: error: 'g32_Gas_g' does not name a type
 1111 |             if(x >= 20000) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:1148:3: error: 'g32_Gas' does not name a type
 1148 |     type: characteristic
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1149:3: error: 'App' does not name a type
 1149 |     name: "G32 Haube"
      |   ^ ~
/config/esphome/g32-display.yaml:1150:3: error: 'g32_Gas' does not name a type
 1150 |     id: g32_Haube
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1151:3: error: 'g32_Gas' does not name a type
 1151 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1152:3: error: 'g32_Gas' does not name a type
 1152 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1153:3: error: 'g32_Gas' does not name a type
 1153 |     update_interval: 3008s
      |   ^ ~~~~~
Compiling .pioenvs/g32-display/esp_system/int_wdt.c.o
/config/esphome/g32-display.yaml:1154:3: error: 'g32_Gas' does not name a type
 1154 |     lambda: |-
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1155:3: error: 'g32_Gas' does not name a type
 1155 |       return (x[24]);
      |   ^   ~~~
/config/esphome/g32-display.yaml:1156:3: error: 'g32_Gas' does not name a type
 1156 |
      |   ^     
Compiling .pioenvs/g32-display/esp_system/panic.c.o
/config/esphome/g32-display.yaml:1157:3: error: 'sensor_sensorstatetrigger_id_12' does not name a type
 1157 |   - platform: ble_client
      |   ^~~~~~~~~~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:1158:3: error: 'automation_id_23' does not name a type
 1158 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/esp_system/esp_system.c.o
/config/esphome/g32-display.yaml:1159:3: error: 'lvgl_objupdateaction_id_43' does not name a type
 1159 |     type: characteristic
      |   ^ ~~~~~~~~~~~~~~~~~~~~   
/config/esphome/g32-display.yaml:1140:4: error: expected unqualified-id before ')' token
 1140 |           value: !lambda |-
      |    ^
/config/esphome/g32-display.yaml:1141:3: error: 'lvgl_objupdateaction_id_44' does not name a type
 1141 |             if(x > 100) {return (0);
      |   ^         ~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1148:4: error: expected unqualified-id before ')' token
 1148 |     type: characteristic
      |    ^
Archiving .pioenvs/g32-display/esp-idf/esp_ringbuf/libesp_ringbuf.a
Compiling .pioenvs/g32-display/esp_system/startup.c.o
/config/esphome/g32-display.yaml:1149:3: error: 'automation_id_23' does not name a type
 1149 |     name: "G32 Haube"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1149:89: error: expected unqualified-id before ')' token
 1149 |     name: "G32 Haube"
      |                                                                                         ^
/config/esphome/g32-display.yaml:1150:3: error: 'g32_Gas' does not name a type
 1150 |     id: g32_Haube
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1150:142: error: expected unqualified-id before ')' token
 1150 |     id: g32_Haube
      |                                                                                                                                              ^
/config/esphome/g32-display.yaml:1151:3: error: 'g32_Gas' does not name a type
 1151 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1151:139: error: expected unqualified-id before ')' token
 1151 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                           ^
/config/esphome/g32-display.yaml:1152:3: error: 'g32_Gas' does not name a type
 1152 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~
/config/esphome/g32-display.yaml:1128:4: error: expected unqualified-id before ')' token
 1128 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:1129:3: error: 'g32_Gas' does not name a type
 1129 |       - lvgl.label.update:
      |   ^   ~~~
/config/esphome/g32-display.yaml:1130:3: error: 'g32_Gas' does not name a type
 1130 |           id: gas_percent_label
      |   ^     
/config/esphome/g32-display.yaml:1131:3: error: 'App' does not name a type
 1131 |           hidden: false
      |   ^ 
/config/esphome/g32-display.yaml:1132:3: error: 'ow_g32' does not name a type
 1132 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:1133:3: error: 'g32_Gas' does not name a type
 1133 |             if(x > 100) {return ("---");
      |   ^     
/config/esphome/g32-display.yaml:1149:3: error: 'g32_Haube' does not name a type
 1149 |     name: "G32 Haube"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1150:3: error: 'App' does not name a type
 1150 |     id: g32_Haube
      |   ^ ~
/config/esphome/g32-display.yaml:1151:3: error: 'g32_Haube' does not name a type
 1151 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_system/startup_funcs.c.o
/config/esphome/g32-display.yaml:1152:3: error: 'g32_Haube' does not name a type
 1152 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1153:3: error: 'g32_Haube' does not name a type
 1153 |     update_interval: 3008s
      |   ^ ~~~~~~~
Compiling .pioenvs/g32-display/esp_system/system_time.c.o
/config/esphome/g32-display.yaml:1154:3: error: 'g32_Haube' does not name a type
 1154 |     lambda: |-
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1155:3: error: 'g32_Haube' does not name a type
 1155 |       return (x[24]);
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1156:3: error: 'g32_Haube' does not name a type
 1156 |
      |   ^       
/config/esphome/g32-display.yaml:1156:144: error: expected unqualified-id before ')' token
 1156 |
      |                                                                                                                                                ^
Compiling .pioenvs/g32-display/esp_system/stack_check.c.o
/config/esphome/g32-display.yaml:1157:3: error: 'g32_Haube' does not name a type
 1157 |   - platform: ble_client
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:1157:141: error: expected unqualified-id before ')' token
 1157 |   - platform: ble_client
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1158:3: error: 'g32_Haube' does not name a type
 1158 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1156:4: error: expected unqualified-id before ')' token
 1156 |
      |    ^
/config/esphome/g32-display.yaml:1157:3: error: 'g32_Haube' does not name a type
 1157 |   - platform: ble_client
      |   ^~~~~~~~~
Compiling .pioenvs/g32-display/esp_system/ubsan.c.o
/config/esphome/g32-display.yaml:1158:3: error: 'g32_Haube' does not name a type
 1158 |     ble_client_id: ow_g32
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1159:3: error: 'App' does not name a type
 1159 |     type: characteristic
      |   ^ ~
/config/esphome/g32-display.yaml:1160:3: error: 'ow_g32' does not name a type
 1160 |     name: "G32 Licht"
      |   ^ ~~~~
/config/esphome/g32-display.yaml:1161:3: error: 'g32_Haube' does not name a type
 1161 |     id: g32_Licht
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1177:3: error: 'g32_Licht' does not name a type
 1177 |      if (id(g32_Licht).state == 1) {
      |   ^  ~~~~~~
/config/esphome/g32-display.yaml:1178:3: error: 'App' does not name a type
 1178 |      // G32 Haubenlicht ist AN.
      |   ^ 
/config/esphome/g32-display.yaml:1179:3: error: 'g32_Licht' does not name a type
 1179 |      return true;
      |   ^  ~~~~~~
/config/esphome/g32-display.yaml:1180:3: error: 'g32_Licht' does not name a type
 1180 |      } else {
      |   ^  ~~~~~~
Compiling .pioenvs/g32-display/esp_system/xt_wdt.c.o
/config/esphome/g32-display.yaml:1181:3: error: 'g32_Licht' does not name a type
 1181 |      // G32 Haubenlicht ist AUS.
      |   ^  ~~~~~~
/config/esphome/g32-display.yaml:1182:3: error: 'g32_Licht' does not name a type
 1182 |      return false;
      |   ^  ~~~~~~
Compiling .pioenvs/g32-display/esp_system/task_wdt/task_wdt.c.o
/config/esphome/g32-display.yaml:1183:3: error: 'g32_Licht' does not name a type
 1183 |      }
      |   ^  ~     
/config/esphome/g32-display.yaml:1184:3: error: 'g32_Licht' does not name a type
 1184 |
      |   ^       
/config/esphome/g32-display.yaml:1184:144: error: expected unqualified-id before ')' token
 1184 |
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1185:3: error: 'g32_Licht' does not name a type
 1185 |   - platform: template
      |   ^~~~~~~~~
/config/esphome/g32-display.yaml:1185:141: error: expected unqualified-id before ')' token
 1185 |   - platform: template
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1186:3: error: 'g32_Licht' does not name a type
 1186 |     name: "G32 Haube"
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1167:4: error: expected unqualified-id before ')' token
 1167 |
      |    ^
/config/esphome/g32-display.yaml:1168:3: error: 'g32_Licht' does not name a type
 1168 |
      |   ^       
/config/esphome/g32-display.yaml:1169:3: error: 'g32_Licht' does not name a type
 1169 | binary_sensor:
      |   ^~~~~~~~~
Compiling .pioenvs/g32-display/esp_system/task_wdt/task_wdt_impl_timergroup.c.o
/config/esphome/g32-display.yaml:1170:3: error: 'App' does not name a type
 1170 |   - platform: status
      |   ^~~
/config/esphome/g32-display.yaml:1171:3: error: 'ow_g32' does not name a type
 1171 |     name: "Status ESP G32"
      |   ^ ~~~~
/config/esphome/g32-display.yaml:1172:3: error: 'g32_Licht' does not name a type
 1172 |
      |   ^       
/config/esphome/g32-display.yaml:1180:3: error: 'status_statusbinarysensor_id' does not name a type
 1180 |      } else {
      |   ^  ~~~~~~~~                 
/config/esphome/g32-display.yaml:1181:3: error: 'App' does not name a type
 1181 |      // G32 Haubenlicht ist AUS.
      |   ^ 
Compiling .pioenvs/g32-display/esp_system/port/cpu_start.c.o
/config/esphome/g32-display.yaml:1182:3: error: 'status_statusbinarysensor_id' does not name a type
 1182 |      return false;
      |   ^  ~~~~~~~~~~~~~           
Compiling .pioenvs/g32-display/esp_system/port/panic_handler.c.o
/config/esphome/g32-display.yaml:1183:3: error: 'status_statusbinarysensor_id' does not name a type
 1183 |      }
      |   ^  ~                       
/config/esphome/g32-display.yaml:1184:3: error: 'status_statusbinarysensor_id' does not name a type
 1184 |
      |   ^                           
/config/esphome/g32-display.yaml:1185:3: error: 'status_statusbinarysensor_id' does not name a type
 1185 |   - platform: template
      |   ^~~~~~~~~~~~~~~~~~~~       
Compiling .pioenvs/g32-display/esp_system/port/esp_system_chip.c.o
/config/esphome/g32-display.yaml:1186:3: error: 'status_statusbinarysensor_id' does not name a type
 1186 |     name: "G32 Haube"
      |   ^ ~~~~~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:1187:3: error: 'status_statusbinarysensor_id' does not name a type
 1187 |     device_class: "door"
      |   ^ ~~~~~~~~~~~~~~~~~~~~     
/config/esphome/g32-display.yaml:1188:3: error: 'App' does not name a type
 1188 |     icon: "mdi:door"
      |   ^ ~
Compiling .pioenvs/g32-display/esp_system/port/image_process.c.o
Compiling .pioenvs/g32-display/esp_system/port/brownout.c.o
/config/esphome/g32-display.yaml:1203:3: error: 'template__templatebinarysensor_id' does not name a type
/config/esphome/g32-display.yaml:1204:3: error: 'App' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/esp_ipc_isr.c.o
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/esp_ipc_isr_port.c.o
/config/esphome/g32-display.yaml:1205:3: error: 'template__templatebinarysensor_id' does not name a type
/config/esphome/g32-display.yaml:1206:3: error: 'template__templatebinarysensor_id' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/esp_ipc_isr_handler.S.o
/config/esphome/g32-display.yaml:1207:3: error: 'template__templatebinarysensor_id' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/esp_ipc_isr_routines.S.o
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/panic_arch.c.o
/config/esphome/g32-display.yaml:1208:3: error: 'template__templatebinarysensor_id' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/panic_handler_asm.S.o
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/expression_with_stack.c.o
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/expression_with_stack_asm.S.o
/config/esphome/g32-display.yaml:1209:3: error: 'template__templatebinarysensor_id' does not name a type
/config/esphome/g32-display.yaml:1210:3: error: 'App' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/debug_helpers.c.o
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/debug_helpers_asm.S.o
/config/esphome/g32-display.yaml:1211:3: error: 'template__templatebinarysensor_id' does not name a type
/config/esphome/g32-display.yaml:1184:4: error: expected unqualified-id before ')' token
 1184 |
      |    ^
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/debug_stubs.c.o
/config/esphome/g32-display.yaml:1201:3: error: 'template__templatebinarysensor_id_2' does not name a type
/config/esphome/g32-display.yaml:1202:3: error: 'App' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/arch/xtensa/trax.c.o
/config/esphome/g32-display.yaml:1203:3: error: 'template__templatebinarysensor_id_2' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/highint_hdl.S.o
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/clk.c.o
/config/esphome/g32-display.yaml:1204:3: error: 'template__templatebinarysensor_id_2' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/reset_reason.c.o
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/system_internal.c.o
/config/esphome/g32-display.yaml:1205:3: error: 'template__templatebinarysensor_id_2' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/cache_err_int.c.o
/config/esphome/g32-display.yaml:1206:3: error: 'template__templatebinarysensor_id_2' does not name a type
Compiling .pioenvs/g32-display/esp_system/port/soc/esp32s3/apb_backup_dma.c.o
/config/esphome/g32-display.yaml:1207:3: error: 'template__templatebinarysensor_id_2' does not name a type
/config/esphome/g32-display.yaml:1208:3: error: 'template__templatebinarysensor_id_2' does not name a type
/config/esphome/g32-display.yaml:1209:3: error: 'App' does not name a type
Compiling .pioenvs/g32-display/esp_timer/src/esp_timer.c.o
Compiling .pioenvs/g32-display/esp_timer/src/esp_timer_init.c.o
/config/esphome/g32-display.yaml:1210:3: error: 'template__templatebinarysensor_id_2' does not name a type
/config/esphome/g32-display.yaml:1198:4: error: expected unqualified-id before ')' token
Compiling .pioenvs/g32-display/esp_timer/src/ets_timer_legacy.c.o
/config/esphome/g32-display.yaml:1218:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
/config/esphome/g32-display.yaml:1219:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
/config/esphome/g32-display.yaml:1220:3: error: 'App' does not name a type
/config/esphome/g32-display.yaml:1227:3: error: 'esp32_ble_esp32ble_id' does not name a type
/config/esphome/g32-display.yaml:1228:3: error: 'esp32_ble_esp32ble_id' does not name a type
/config/esphome/g32-display.yaml:1229:3: error: 'esp32_ble_esp32ble_id' does not name a type
Archiving .pioenvs/g32-display/esp-idf/esp_system/libesp_system.a
Compiling .pioenvs/g32-display/esp_timer/src/system_time.c.o
/config/esphome/g32-display.yaml:1230:3: error: 'esp32_ble_esp32ble_id' does not name a type
Compiling .pioenvs/g32-display/esp_timer/src/esp_timer_impl_common.c.o
/config/esphome/g32-display.yaml:1231:3: error: 'esp32_ble_esp32ble_id' does not name a type
/config/esphome/g32-display.yaml:1232:3: error: 'App' does not name a type
/config/esphome/g32-display.yaml:1233:3: error: 'lvgl_objupdateaction_id' does not name a type
/config/esphome/g32-display.yaml:90:4: error: expected unqualified-id before ')' token
   90 |       - rtttl.play: 'Pling1:d=16,o=6,b=140:d6,32p,e6'
      |    ^
Compiling .pioenvs/g32-display/esp_timer/src/esp_timer_impl_systimer.c.o
/config/esphome/g32-display.yaml:91:3: error: 'rtttl_playaction_id' does not name a type
   91 |       - globals.set:
      |   ^   ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:92:3: error: 'rtttl_playaction_id' does not name a type
   92 |           id: wifi_connected
      |   ^       ~~~~~~~~~~~
/config/esphome/g32-display.yaml:93:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
   93 |           value: 'true'
      |   ^       ~~~~~~~~~~~~~               
Compiling .pioenvs/g32-display/esp_vfs_console/vfs_console.c.o
/config/esphome/g32-display.yaml:94:3: error: 'ow_g32' does not name a type
   94 |   on_disconnect:
      |   ^~~~~~
/config/esphome/g32-display.yaml:95:3: error: 'ow_g32' does not name a type
   95 |     then:
      |   ^ ~~~~
Compiling .pioenvs/g32-display/esp_wifi/src/lib_printf.c.o
/config/esphome/g32-display.yaml:96:3: error: 'ble_client_bleclientconnecttrigger_id' does not name a type
   96 |       - lvgl.widget.hide: wifi_connect_label
      |   ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:97:3: error: 'automation_id_3' does not name a type
   97 |       - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |   ^   ~~~~~~~~~~~
Compiling .pioenvs/g32-display/esp_wifi/src/mesh_event.c.o
/config/esphome/g32-display.yaml:98:3: error: 'lvgl_objupdateaction_id_3' does not name a type
   98 |       - globals.set:
      |   ^   ~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:128:4: error: expected unqualified-id before ')' token
  128 |         - rtttl.play: 'Pling2:d=16,o=6,b=140:e6,32p,d6'
      |    ^
/config/esphome/g32-display.yaml:129:3: error: 'rtttl_playaction_id_3' does not name a type
  129 |         - globals.set:
      |   ^     ~~~~~~~~~~~~~~
Archiving .pioenvs/g32-display/esp-idf/esp_timer/libesp_timer.a
Compiling .pioenvs/g32-display/esp_wifi/src/smartconfig.c.o
/config/esphome/g32-display.yaml:130:3: error: 'rtttl_playaction_id_3' does not name a type
  130 |             id: g32_connected
      |   ^         ~~~~~~~~~~~
Compiling .pioenvs/g32-display/esp_wifi/src/wifi_init.c.o
/config/esphome/g32-display.yaml:131:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  131 |             value: 'true'
      |   ^         ~~~~~~~~~~~~~             
/config/esphome/g32-display.yaml:132:3: error: 'meater' does not name a type
  132 |     on_disconnect:
      |   ^ ~~~~
/config/esphome/g32-display.yaml:133:3: error: 'meater' does not name a type
  133 |       then:
      |   ^   ~~
Archiving .pioenvs/g32-display/esp-idf/esp_vfs_console/libesp_vfs_console.a
Compiling .pioenvs/g32-display/esp_wifi/src/wifi_default.c.o
Compiling .pioenvs/g32-display/esp_wifi/src/wifi_netif.c.o
/config/esphome/g32-display.yaml:134:3: error: 'ble_client_bleclientconnecttrigger_id_2' does not name a type
  134 |         - lvgl.widget.hide: g32_connect_label
      |   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:135:3: error: 'automation_id_5' does not name a type
  135 |         - lvgl.widget.hide: [zone1_label, zone2_label, zone3_label, zone4_label]
      |   ^     ~~~~~~~~~
/config/esphome/g32-display.yaml:136:3: error: 'lvgl_objupdateaction_id_8' does not name a type
Compiling .pioenvs/g32-display/esp_wifi/src/wifi_default_ap.c.o
  136 |         - lvgl.widget.hide: [sensor1_label, sensor2_label, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:148:4: error: expected unqualified-id before ')' token
  148 |         - lvgl.widget.show: [meater1_arc, meater2_arc]
      |    ^
/config/esphome/g32-display.yaml:149:3: error: 'lvgl_objupdateaction_id_9' does not name a type
  149 | #        - lvgl.widget.show: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:149:4: error: expected unqualified-id before ')' token
  149 | #        - lvgl.widget.show: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |    ^
/config/esphome/g32-display.yaml:150:3: error: 'lvgl_objupdateaction_id_10' does not name a type
  150 |         - lvgl.widget.hide: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:151:4: error: expected unqualified-id before ')' token
  151 |         - lvgl.widget.hide: [sensor3_text, sensor4_text]
      |    ^
/config/esphome/g32-display.yaml:152:3: error: 'lvgl_objupdateaction_id_11' does not name a type
  152 |         - lvgl.widget.show: meater_text
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:149:4: error: expected unqualified-id before ')' token
  149 | #        - lvgl.widget.show: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |    ^
Compiling .pioenvs/g32-display/esp_wifi/esp32s3/esp_adapter.c.o
/config/esphome/g32-display.yaml:150:3: error: 'lvgl_objupdateaction_id_12' does not name a type
  150 |         - lvgl.widget.hide: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:148:4: error: expected unqualified-id before ')' token
  148 |         - lvgl.widget.show: [meater1_arc, meater2_arc]
      |    ^
Compiling .pioenvs/g32-display/esp_wifi/src/smartconfig_ack.c.o
/config/esphome/g32-display.yaml:149:3: error: 'output_turnoffaction_id' does not name a type
  149 | #        - lvgl.widget.show: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |   ^~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:150:3: error: 'rtttl_playaction_id_5' does not name a type
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_init.c.o
  150 |         - lvgl.widget.hide: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:151:3: error: 'rtttl_playaction_id_5' does not name a type
  151 |         - lvgl.widget.hide: [sensor3_text, sensor4_text]
      |   ^     ~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:152:3: error: 'lvgl_lvglcondition_id' does not name a type
  152 |         - lvgl.widget.show: meater_text
      |   ^     ~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:153:3: error: 'ifaction_id' does not name a type
  153 |         - output.turn_off: helper_low
      |   ^     ~~~~~
/config/esphome/g32-display.yaml:154:3: error: 'lambdaaction_id_2' does not name a type
  154 |         - rtttl.play: 'Pling3:d=16,o=6,b=140:d6,32p,e6,32p,d6'
      |   ^     ~~~~~~~~~~~
/config/esphome/g32-display.yaml:156:4: error: expected unqualified-id before ')' token
  156 |         - globals.set:
      |    ^
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_common.c.o
/config/esphome/g32-display.yaml:157:3: error: 'lvgl_lvglaction_id' does not name a type
  157 |             id: meater_connected
      |   ^         ~~~~~~~~
/config/esphome/g32-display.yaml:232:4: error: expected unqualified-id before ')' token
  232 |             - lvgl.resume:
      |    ^
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_flash.c.o
/config/esphome/g32-display.yaml:233:3: error: 'lvgl_lvglaction_id' does not name a type
  233 |             - lvgl.widget.redraw:
      |   ^         ~~~~~~~~
/config/esphome/g32-display.yaml:234:3: error: 'lvgl_objupdateaction_id_19' does not name a type
  234 |             - light.turn_on: backlight
      |   ^         ~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:232:4: error: expected unqualified-id before ')' token
  232 |             - lvgl.resume:
      |    ^
/config/esphome/g32-display.yaml:233:3: error: 'light_lightcontrolaction_id' does not name a type
  233 |             - lvgl.widget.redraw:
      |   ^         ~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_uart.c.o
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_elf.c.o
/config/esphome/g32-display.yaml:234:3: error: 'light_lightcontrolaction_id' does not name a type
  234 |             - light.turn_on: backlight
      |   ^         ~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:235:3: error: 'ifaction_id' does not name a type
  235 |
      |   ^         
/config/esphome/g32-display.yaml:235:121: error: expected unqualified-id before ')' token
  235 |
      |                                                                                                                         ^
Archiving .pioenvs/g32-display/esp-idf/esp_wifi/libesp_wifi.a
/config/esphome/g32-display.yaml:236:3: error: 'automation_id_8' does not name a type
  236 | #-------------------------------------------
      |   ^~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:236:45: error: expected unqualified-id before ')' token
  236 | #-------------------------------------------
      |                                             ^
/config/esphome/g32-display.yaml:237:3: error: 'my_touch' does not name a type
  237 | # Internal outputs
      |   ^~~~~~~~
/config/esphome/g32-display.yaml:238:3: error: 'my_touch' does not name a type
  238 | #-------------------------------------------
      |   ^~~~~~~~
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_binary.c.o
/config/esphome/g32-display.yaml:239:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_sha.c.o
  239 | output:
      |   ^~~~~                               
Compiling .pioenvs/g32-display/espcoredump/src/core_dump_crc.c.o
/config/esphome/g32-display.yaml:240:3: error: 'ble_rssi_blerssisensor_id' does not name a type
  240 |   - id: gpio_backlight_pwm
      |   ^~~~~~~~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/espcoredump/src/port/xtensa/core_dump_port.c.o
/config/esphome/g32-display.yaml:241:3: error: 'esp32_ble_esp32ble_id' does not name a type
  241 |     platform: ledc
      |   ^ ~~~~~~~~~~~~~~     
/config/esphome/g32-display.yaml:242:3: error: 'esp32_ble_esp32ble_id' does not name a type
  242 |     pin: 1
      |   ^ ~~~~~~             
Compiling .pioenvs/g32-display/fatfs/diskio/diskio.c.o
Compiling .pioenvs/g32-display/fatfs/diskio/diskio_rawflash.c.o
/config/esphome/g32-display.yaml:243:3: error: 'esp32_ble_esp32ble_id' does not name a type
  243 |
      |   ^                   
Compiling .pioenvs/g32-display/fatfs/diskio/diskio_wl.c.o
Archiving .pioenvs/g32-display/esp-idf/espcoredump/libespcoredump.a
/config/esphome/g32-display.yaml:244:3: error: 'esp32_ble_esp32ble_id' does not name a type
  244 |   - id: helper_low
      |   ^~~~~~~~~~~~~~~~     
Compiling .pioenvs/g32-display/fatfs/src/ff.c.o
/config/esphome/g32-display.yaml:245:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  245 |     platform: ledc
      |   ^ ~~~~~~~~~~~~~~                   
/config/esphome/g32-display.yaml:246:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  246 |     pin: 14
      |   ^ ~~~~~~~                           
/config/esphome/g32-display.yaml:247:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  247 |
      |   ^                                   
Compiling .pioenvs/g32-display/fatfs/src/ffunicode.c.o
Compiling .pioenvs/g32-display/fatfs/port/freertos/ffsystem.c.o
/config/esphome/g32-display.yaml:248:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  248 |   - platform: ledc
      |   ^~~~~~~~~~~~~~~~                   
Compiling .pioenvs/g32-display/fatfs/diskio/diskio_sdmmc.c.o
/config/esphome/g32-display.yaml:249:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  249 |     pin: 9
      |   ^ ~~~~~~                           
/config/esphome/g32-display.yaml:250:3: error: 'esp32_ble_tracker_esp32bletracker_id' does not name a type
  250 |     id: rtttl_out
      |   ^ ~~~~~~~~~~~~~                     
/config/esphome/g32-display.yaml:256:3: error: 'wifi_connected' does not name a type
  256 |   - id: backlight
      |   ^~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:257:3: error: 'wifi_connected' does not name a type
  257 |     name: Backlight
      |   ^ ~~~~~~~~~~~~
/config/esphome/g32-display.yaml:258:3: error: 'App' does not name a type
  258 |     platform: monochromatic
      |   ^ ~
Compiling .pioenvs/g32-display/fatfs/vfs/vfs_fat.c.o
/config/esphome/g32-display.yaml:264:3: error: 'g32_connected' does not name a type
  264 | #-------------------------------------------
      |   ^~~~~~~~~~~~~
Compiling .pioenvs/g32-display/fatfs/vfs/vfs_fat_sdmmc.c.o
/config/esphome/g32-display.yaml:265:3: error: 'g32_connected' does not name a type
  265 | rtttl:
      |   ^~~~         
/config/esphome/g32-display.yaml:266:3: error: 'App' does not name a type
  266 |   id: my_rtttl
      |   ^~~
/config/esphome/g32-display.yaml:272:3: error: 'meater_connected' does not name a type
  272 |     type: bool
      |   ^ ~~~~~~~~~~   
/config/esphome/g32-display.yaml:273:3: error: 'meater_connected' does not name a type
  273 |     initial_value: 'false'
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:274:3: error: 'App' does not name a type
  274 |   - id: g32_connected
      |   ^~~
Compiling .pioenvs/g32-display/fatfs/vfs/vfs_fat_spiflash.c.o
/config/esphome/g32-display.yaml:275:3: error: 'lvgl_objupdateaction_id_38' does not name a type
  275 |     type: bool
      |   ^ ~~~~~~~~~~             
/config/esphome/g32-display.yaml:1059:4: error: expected unqualified-id before ')' token
 1059 |             if(x >= 1500) {return (0);
      |    ^
/config/esphome/g32-display.yaml:1060:3: error: 'lvgl_objupdateaction_id_39' does not name a type
 1060 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:1066:4: error: expected unqualified-id before ')' token
 1066 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:1067:3: error: 'automation_id_20' does not name a type
 1067 |     name: "G32 Sensor 4"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1067:89: error: expected unqualified-id before ')' token
 1067 |     name: "G32 Sensor 4"
      |                                                                                         ^
/config/esphome/g32-display.yaml:1068:3: error: 'g32_Ext_3' does not name a type
 1068 |     id: g32_Ext_4
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1068:144: error: expected unqualified-id before ')' token
 1068 |     id: g32_Ext_4
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1069:3: error: 'g32_Ext_3' does not name a type
 1069 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1069:141: error: expected unqualified-id before ')' token
 1069 |     service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1070:3: error: 'g32_Ext_3' does not name a type
 1070 |     characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1046:4: error: expected unqualified-id before ')' token
 1046 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:1047:3: error: 'g32_Ext_3' does not name a type
 1047 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1048:3: error: 'g32_Ext_3' does not name a type
 1048 |           id: sensor3_label
      |   ^       ~
/config/esphome/g32-display.yaml:1049:3: error: 'App' does not name a type
 1049 |           hidden: !lambda return id(meater_connected) == true;
      |   ^ 
/config/esphome/g32-display.yaml:1050:3: error: 'ow_g32' does not name a type
 1050 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:1051:3: error: 'g32_Ext_3' does not name a type
 1051 |             if(x >= 1500) {
      |   ^       
/config/esphome/g32-display.yaml:1052:3: error: 'lvgl_objupdateaction_id_40' does not name a type
 1052 |             return ("---");
      |   ^         ~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1088:4: error: expected unqualified-id before ')' token
 1088 |             if(x >= 1500) {return (0);
      |    ^
/config/esphome/g32-display.yaml:1089:3: error: 'lvgl_objupdateaction_id_41' does not name a type
 1089 |             } else {
      |   ^         ~~~~~~~~       
/config/esphome/g32-display.yaml:1095:4: error: expected unqualified-id before ')' token
 1095 |     type: characteristic
      |    ^
/config/esphome/g32-display.yaml:1096:3: error: 'automation_id_21' does not name a type
 1096 |     name: "G32 Gasbuddy Füllstand in g"
      |   ^ ~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1096:88: error: expected unqualified-id before ')' token
 1096 |     name: "G32 Gasbuddy Füllstand in g"
      |                                                                                        ^
/config/esphome/g32-display.yaml:1097:3: error: 'g32_Ext_4' does not name a type
 1097 |     id: g32_Gas_g
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1097:144: error: expected unqualified-id before ')' token
 1097 |     id: g32_Gas_g
      |                                                                                                                                                ^
/config/esphome/g32-display.yaml:1098:3: error: 'g32_Ext_4' does not name a type
 1098 |     device_class: weight
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1098:141: error: expected unqualified-id before ')' token
 1098 |     device_class: weight
      |                                                                                                                                             ^
/config/esphome/g32-display.yaml:1099:3: error: 'g32_Ext_4' does not name a type
 1099 |     state_class: measurement
      |   ^ ~~~~~~~
/config/esphome/g32-display.yaml:1076:4: error: expected unqualified-id before ')' token
 1076 |     on_value:
      |    ^
/config/esphome/g32-display.yaml:1077:3: error: 'g32_Ext_4' does not name a type
 1077 |       - lvgl.label.update:
      |   ^   ~~~~~
/config/esphome/g32-display.yaml:1078:3: error: 'g32_Ext_4' does not name a type
 1078 |           id: sensor4_label
      |   ^       ~
/config/esphome/g32-display.yaml:1079:3: error: 'App' does not name a type
 1079 |           hidden: !lambda return id(meater_connected) == true;
      |   ^ 
/config/esphome/g32-display.yaml:1080:3: error: 'ow_g32' does not name a type
 1080 |           text: !lambda |-
      |   ^     
/config/esphome/g32-display.yaml:1081:3: error: 'g32_Ext_4' does not name a type
 1081 |             if(x >= 1500) {return ("---");
      |   ^       
/config/esphome/g32-display.yaml:1082:3: error: 'globals_globalvarsetaction_id' does not name a type
 1082 |             } else {
      |   ^         ~~~~~~~~           
Compiling .pioenvs/g32-display/freertos/heap_idf.c.o
/config/esphome/g32-display.yaml:1083:3: error: 'globals_globalvarsetaction_id' does not name a type
 1083 |             return (to_string(static_cast<int>(x))).c_str();
      |   ^         ~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:1084:3: error: 'automation_id' does not name a type
 1084 |             };
      |   ^         ~~
/config/esphome/g32-display.yaml:1084:107: error: expected unqualified-id before ')' token
 1084 |             };
      |                                                                                                           ^
/config/esphome/g32-display.yaml:1085:3: error: 'automation_id_2' does not name a type
 1085 |       - lvgl.arc.update:
      |   ^   ~~~~~~~~~~~
/config/esphome/g32-display.yaml:1086:3: error: 'lvgl_objupdateaction_id_2' does not name a type
 1086 |           id: sensor4_arc
      |   ^       ~~~~~~~~~~~~~~~ 
/config/esphome/g32-display.yaml:97:4: error: expected unqualified-id before ')' token
   97 |       - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |    ^
/config/esphome/g32-display.yaml:98:3: error: 'rtttl_playaction_id_2' does not name a type
   98 |       - globals.set:
      |   ^   ~~~~~~~~~~~~~~   
Compiling .pioenvs/g32-display/freertos/app_startup.c.o
Compiling .pioenvs/g32-display/freertos/port_common.c.o
/config/esphome/g32-display.yaml:99:3: error: 'rtttl_playaction_id_2' does not name a type
   99 |           id: wifi_connected
      |   ^       ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:100:3: error: 'globals_globalvarsetaction_id_2' does not name a type
  100 |           value: 'false'
      |   ^       ~~~~~~~~~~~~~~         
/config/esphome/g32-display.yaml:101:3: error: 'globals_globalvarsetaction_id_2' does not name a type
  101 |
      |   ^                             
/config/esphome/g32-display.yaml:102:3: error: 'automation_id_2' does not name a type
  102 | # Enable fallback hotspot (captive portal) in case wifi connection fails
      |   ^~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:102:115: error: expected unqualified-id before ')' token
  102 | # Enable fallback hotspot (captive portal) in case wifi connection fails
      |                                                                                                                   ^
Compiling .pioenvs/g32-display/freertos/port_systick.c.o
/config/esphome/g32-display.yaml:103:3: error: 'globals_globalvarsetaction_id_3' does not name a type
  103 |   ap:
      |   ^~~                           
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/list.c.o
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/queue.c.o
/config/esphome/g32-display.yaml:104:3: error: 'globals_globalvarsetaction_id_3' does not name a type
  104 |     ssid: ${ap_ssid}
      |   ^ ~~~~~~~~~~~~~~~~             
/config/esphome/g32-display.yaml:105:3: error: 'automation_id_3' does not name a type
  105 |     password: ${ap_password}
      |   ^ ~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:105:115: error: expected unqualified-id before ')' token
  105 |     password: ${ap_password}
      |                                                                                                                   ^
/config/esphome/g32-display.yaml:106:3: error: 'ble_client_bleclientdisconnecttrigger_id' does not name a type
  106 |
      |   ^                                       
/config/esphome/g32-display.yaml:107:3: error: 'automation_id_4' does not name a type
  107 | #esp32_ble_tracker:
      |   ^~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/tasks.c.o
/config/esphome/g32-display.yaml:108:3: error: 'lvgl_objupdateaction_id_4' does not name a type
  108 | #  on_ble_advertise:
      |   ^~~~~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:135:4: error: expected unqualified-id before ')' token
  135 |         - lvgl.widget.hide: [zone1_label, zone2_label, zone3_label, zone4_label]
      |    ^
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/timers.c.o
/config/esphome/g32-display.yaml:136:3: error: 'lvgl_objupdateaction_id_5' does not name a type
  136 |         - lvgl.widget.hide: [sensor1_label, sensor2_label, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:138:4: error: expected unqualified-id before ')' token
  138 |         - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |    ^
/config/esphome/g32-display.yaml:139:3: error: 'lvgl_objupdateaction_id_6' does not name a type
  139 |         - globals.set:
      |   ^     ~~~~~~~~~~~~~~     
/config/esphome/g32-display.yaml:138:4: error: expected unqualified-id before ')' token
  138 |         - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |    ^
/config/esphome/g32-display.yaml:139:3: error: 'lvgl_objupdateaction_id_7' does not name a type
  139 |         - globals.set:
      |   ^     ~~~~~~~~~~~~~~     
/config/esphome/g32-display.yaml:137:4: error: expected unqualified-id before ')' token
  137 |         - lvgl.widget.hide: [gas_percent_label, gas_weight_label, gas_percent_bar]
      |    ^
/config/esphome/g32-display.yaml:138:3: error: 'rtttl_playaction_id_4' does not name a type
  138 |         - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |   ^     ~~~~~~~~~~~~~~~
Archiving .pioenvs/g32-display/esp-idf/fatfs/libfatfs.a
/config/esphome/g32-display.yaml:139:3: error: 'rtttl_playaction_id_4' does not name a type
  139 |         - globals.set:
      |   ^     ~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/event_groups.c.o
/config/esphome/g32-display.yaml:140:3: error: 'globals_globalvarsetaction_id_4' does not name a type
  140 |             id: g32_connected
      |   ^         ~~~~~~~~~~~~~~~~~   
/config/esphome/g32-display.yaml:141:3: error: 'globals_globalvarsetaction_id_4' does not name a type
  141 |             value: 'false'
      |   ^         ~~~~~~~~~~~~~~       
/config/esphome/g32-display.yaml:142:3: error: 'automation_id_4' does not name a type
  142 |
      |   ^             
/config/esphome/g32-display.yaml:142:196: error: expected unqualified-id before ')' token
  142 |
      |                                                                                                                                                                                                    ^
/config/esphome/g32-display.yaml:143:3: error: 'globals_globalvarsetaction_id_5' does not name a type
  143 |   - mac_address: ${mt_mac_address}
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/stream_buffer.c.o
/config/esphome/g32-display.yaml:144:3: error: 'globals_globalvarsetaction_id_5' does not name a type
  144 |     id: meater
      |   ^ ~~~~~~~~~~                   
/config/esphome/g32-display.yaml:145:3: error: 'automation_id_5' does not name a type
  145 |     on_connect:
      |   ^ ~~~~~~~~~~~ 
/config/esphome/g32-display.yaml:145:251: error: expected unqualified-id before ')' token
  145 |     on_connect:
      |                                                                                                                                                                                                                                                           ^
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/portable/xtensa/port.c.o
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/portable/xtensa/portasm.S.o
/config/esphome/g32-display.yaml:146:3: error: 'ble_client_bleclientdisconnecttrigger_id_2' does not name a type
  146 |       then:
      |   ^   ~~~~~                                 
/config/esphome/g32-display.yaml:147:3: error: 'automation_id_6' does not name a type
  147 |         - lvgl.widget.show: meater_connect_label
      |   ^     ~~~~~~~~~
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/portable/xtensa/xtensa_init.c.o
/config/esphome/g32-display.yaml:148:3: error: 'lvgl_objupdateaction_id_13' does not name a type
  148 |         - lvgl.widget.show: [meater1_arc, meater2_arc]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:162:4: error: expected unqualified-id before ')' token
  162 |         - lvgl.widget.hide: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |    ^
/config/esphome/g32-display.yaml:163:3: error: 'lvgl_objupdateaction_id_14' does not name a type
  163 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:165:4: error: expected unqualified-id before ')' token
  165 |         - lvgl.widget.show: [sensor3_text, sensor4_text]
      |    ^
Compiling .pioenvs/g32-display/freertos/FreeRTOS-Kernel/portable/xtensa/xtensa_overlay_os_hook.c.o
/config/esphome/g32-display.yaml:166:3: error: 'lvgl_objupdateaction_id_15' does not name a type
  166 |         - lvgl.widget.hide: meater_text
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:163:4: error: expected unqualified-id before ')' token
  163 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc]
      |    ^
/config/esphome/g32-display.yaml:164:3: error: 'lvgl_objupdateaction_id_16' does not name a type
  164 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:165:4: error: expected unqualified-id before ')' token
  165 |         - lvgl.widget.show: [sensor3_text, sensor4_text]
      |    ^
/config/esphome/g32-display.yaml:166:3: error: 'lvgl_objupdateaction_id_17' does not name a type
  166 |         - lvgl.widget.hide: meater_text
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:163:4: error: expected unqualified-id before ')' token
  163 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc]
      |    ^
Compiling .pioenvs/g32-display/freertos/esp_additions/freertos_compatibility.c.o
/config/esphome/g32-display.yaml:164:3: error: 'lvgl_objupdateaction_id_18' does not name a type
  164 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:162:4: error: expected unqualified-id before ')' token
  162 |         - lvgl.widget.hide: [meater1_arc, meater2_arc, meater1_label, meater2_label]
      |    ^
Compiling .pioenvs/g32-display/freertos/esp_additions/idf_additions.c.o
/config/esphome/g32-display.yaml:163:3: error: 'rtttl_playaction_id_6' does not name a type
  163 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc]
      |   ^     ~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:164:3: error: 'rtttl_playaction_id_6' does not name a type
  164 |         - lvgl.widget.show: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
      |   ^     ~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/hal/hal_utils.c.o
/config/esphome/g32-display.yaml:165:3: error: 'globals_globalvarsetaction_id_6' does not name a type
  165 |         - lvgl.widget.show: [sensor3_text, sensor4_text]
      |   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~
Compiling .pioenvs/g32-display/hal/mpu_hal.c.o
/config/esphome/g32-display.yaml:166:3: error: 'globals_globalvarsetaction_id_6' does not name a type
  166 |         - lvgl.widget.hide: meater_text
      |   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~
/config/esphome/g32-display.yaml:167:3: error: 'automation_id_6' does not name a type
  167 |         - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |   ^     ~~~~~~~~~
/config/esphome/g32-display.yaml:167:256: error: expected unqualified-id before ')' token
  167 |         - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      |                                                                                                                                                                                                                                                                ^
/config/esphome/g32-display.yaml:169:3: error: 'App' does not name a type
  169 |             id: meater_connected
      |   ^ 
/config/esphome/g32-display.yaml:170:1: error: expected declaration before '}' token
  170 |             value: 'false'
      | ^
Compiling .pioenvs/g32-display/hal/efuse_hal.c.o
Compiling .pioenvs/g32-display/hal/esp32s3/efuse_hal.c.o
Compiling .pioenvs/g32-display/hal/mmu_hal.c.o
Compiling .pioenvs/g32-display/hal/cache_hal.c.o
Compiling .pioenvs/g32-display/hal/color_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_flash_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_flash_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/spi_flash_encrypt_hal_iram.c.o
Archiving .pioenvs/g32-display/esp-idf/freertos/libfreertos.a
Compiling .pioenvs/g32-display/hal/esp32s3/clk_tree_hal.c.o
Compiling .pioenvs/g32-display/hal/systimer_hal.c.o
Compiling .pioenvs/g32-display/hal/uart_hal.c.o
Compiling .pioenvs/g32-display/hal/uart_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/gpio_hal.c.o
Compiling .pioenvs/g32-display/hal/rtc_io_hal.c.o
Compiling .pioenvs/g32-display/hal/timer_hal.c.o
Compiling .pioenvs/g32-display/hal/ledc_hal.c.o
Compiling .pioenvs/g32-display/hal/ledc_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/i2c_hal.c.o
Compiling .pioenvs/g32-display/hal/i2c_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/rmt_hal.c.o
Compiling .pioenvs/g32-display/hal/pcnt_hal.c.o
Compiling .pioenvs/g32-display/hal/mcpwm_hal.c.o
Compiling .pioenvs/g32-display/hal/twai_hal.c.o
Compiling .pioenvs/g32-display/hal/twai_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/gdma_hal_top.c.o
Compiling .pioenvs/g32-display/hal/gdma_hal_ahb_v1.c.o
Compiling .pioenvs/g32-display/hal/i2s_hal.c.o
Compiling .pioenvs/g32-display/hal/sdm_hal.c.o
Compiling .pioenvs/g32-display/hal/sdmmc_hal.c.o
Compiling .pioenvs/g32-display/hal/adc_hal_common.c.o
Compiling .pioenvs/g32-display/hal/adc_oneshot_hal.c.o
Compiling .pioenvs/g32-display/hal/adc_hal.c.o
Compiling .pioenvs/g32-display/hal/lcd_hal.c.o
Compiling .pioenvs/g32-display/hal/mpi_hal.c.o
Compiling .pioenvs/g32-display/hal/sha_hal.c.o
Compiling .pioenvs/g32-display/hal/aes_hal.c.o
Compiling .pioenvs/g32-display/hal/brownout_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/spi_slave_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_slave_hal_iram.c.o
Compiling .pioenvs/g32-display/hal/spi_slave_hd_hal.c.o
Compiling .pioenvs/g32-display/hal/spi_flash_hal_gpspi.c.o
Compiling .pioenvs/g32-display/hal/hmac_hal.c.o
Compiling .pioenvs/g32-display/hal/ds_hal.c.o
Compiling .pioenvs/g32-display/hal/usb_serial_jtag_hal.c.o
Compiling .pioenvs/g32-display/hal/usb_dwc_hal.c.o
Compiling .pioenvs/g32-display/hal/usb_wrap_hal.c.o
Compiling .pioenvs/g32-display/hal/esp32s3/touch_sensor_hal.c.o
Compiling .pioenvs/g32-display/hal/touch_sensor_hal.c.o
*** [.pioenvs/g32-display/src/main.cpp.o] Error 1
========================== [FAILED] Took 7.84 seconds ==========================

Falls jemand von euch da eine Idee hat, nur her damit...

Danke bis dahin.

Und ja was habe ich heute anders gemacht? Da bin ich mir nicht mehr ganz sicher:

Ich habe ein neues Gerät im ESPHome angelegt, Verbunden über USB, COM17, danach die Datei zum Flashen erzeugt und

die Frage welche Datei ich erzeugen möchte mit der Oberen Variante ausgewählt: Da kam dann diese Datei heraus: g32-display.factory.bin
das hatte ich zwar auch schon gestern und vor zwei tagen gemacht, aber da hatte es nicht funktioniert.

Auf jeden Fall scheint diese Datei: g32-display.ota.bin nicht zu funktionieren.

Egal, einen Schritt weiter, jetzt muss ich nur noch die YAML auf das Display bekommen,


Auch hier füge ich mal die umgebaute YAML ein, finde den Fehler.... :-)

Code:
substitutions:
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# bitte nur in diesen nächsten Zeilen Änderungen vornehmen                    #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Name des ESPHome Geräts (kann frei gewählt werden, keine Sonderzeichen) 
  name: g32-display
  device_description: "Grillbuddy"
# Bluetooth MAC des G32 (z.B. zu finden mit der App nrf_Connect)
# oder zum Auslesen unten den 'esp32_ble_tracker:' entkommentieren 
  g32_mac_address: 94:E6:86:a1:b2:c3
# Bluetooth MAC des Meater (z.B. zu finden mit der App nrf_Connect)
# oder zum Auslesen unten den 'esp32_ble_tracker:' entkommentieren 
  mt_mac_address: B8:1F:5E:d4:e5:f6
  # Credentials des eigenen Wifi Netzwerks   
  wifi_ssid: !secret wifi_ssid
  wifi_password: !secret wifi_password

# hier die Daten aus dem neu erstellten ESPHome Gerät einfügen. Beispiel:
# Enable Home Assistant API
# api:
#   encryption:
#     key: "h3MlfISnks9FN9uQXuFO2nzMD7E3aebZOHG0ep2STbA="

# ota:
#   - platform: esphome
#     password: "23d5ae64cca984e0819d4cb00eb33451

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

# Enable fallback hotspot (captive portal) in case wifi connection fails
#  ap:
#    ssid: "G32-Display Fallback Hotspot"
#    password: "kme4Wa2CEDrl"
  api_encryption_key: h3MlfISnks9FN9uQXuFO2nzMD7E3aebZOHG0ep2STbA=
  ota_password: c05ab13b41271c2fbebce07f563b3bda
  ap_ssid: G32-Display
  ap_password: rZSBUpRgl7XS

captive_portal:

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# ab hier bitte nur Änderungen vornehmen, wenn man weiß, was man tut und will #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
esphome:
  name: ${name}
  platformio_options:
    upload_speed: 921600
    board_build.flash_mode: dio
    board_build.f_flash: 80000000L
    board_build.f_cpu: 240000000L

esp32:
  board: esp32-s3-devkitc-1
  flash_size: 16MB
  framework:
    type: esp-idf
    sdkconfig_options:
      CONFIG_ESP32S3_DEFAULT_CPU_FREQ_240: "y"
      CONFIG_ESP32S3_DATA_CACHE_64KB: "y"
      CONFIG_ESP32S3_DATA_CACHE_LINE_64B: "y"
      CONFIG_SPIRAM_FETCH_INSTRUCTIONS: y
      CONFIG_SPIRAM_RODATA: y

psram:
  mode: octal
  speed: 80MHz # 120mhz is not supported and falls back to 40mhz

# Enable logging
logger:
  baud_rate: 921600

# Enable Home Assistant API
api:
  encryption:
    key: ${api_encryption_key}

ota:
  - platform: esphome
    password: ${ota_password}

wifi:
  ssid: ${wifi_ssid}
  password: ${wifi_password}
  fast_connect: True
  on_connect:
    then:
      - lvgl.widget.show: wifi_connect_label
      - rtttl.play: 'Pling1:d=16,o=6,b=140:d6,32p,e6'
      - globals.set:
          id: wifi_connected
          value: 'true'
  on_disconnect:
    then:
      - lvgl.widget.hide: wifi_connect_label
      - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
      - globals.set:
          id: wifi_connected
          value: 'false'

# Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: ${ap_ssid}
    password: ${ap_password}

#esp32_ble_tracker:
#  on_ble_advertise:
#    then:
#      - lambda: |-
#          if (x.get_name().rfind("OWG-G32C", 0) == 0) {
#            ESP_LOGI("ble_adv", "G32 gefunden");
#            ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
#            ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
#          }
#          if (x.get_name().rfind("MEATER+", 0) == 0) {
#            ESP_LOGI("ble_adv", "Meater+ gefunden");
#            ESP_LOGI("ble_adv", "  Name: %s", x.get_name().c_str());
#            ESP_LOGI("ble_adv", "  MAC address: %s", x.address_str().c_str());
#          }

ble_client:
  - mac_address: ${g32_mac_address}
    id: ow_g32
    on_connect:
      then:
        - lvgl.widget.show: g32_connect_label
        - rtttl.play: 'Pling2:d=16,o=6,b=140:e6,32p,d6'
        - globals.set:
            id: g32_connected
            value: 'true'
    on_disconnect:
      then:
        - lvgl.widget.hide: g32_connect_label
        - lvgl.widget.hide: [zone1_label, zone2_label, zone3_label, zone4_label]
        - lvgl.widget.hide: [sensor1_label, sensor2_label, sensor3_label, sensor4_label]
        - lvgl.widget.hide: [gas_percent_label, gas_weight_label, gas_percent_bar]
        - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
        - globals.set:
            id: g32_connected
            value: 'false'

  - mac_address: ${mt_mac_address}
    id: meater
    on_connect:
      then:
        - lvgl.widget.show: meater_connect_label
        - lvgl.widget.show: [meater1_arc, meater2_arc]
#        - lvgl.widget.show: [meater1_arc, meater2_arc, meater1_label, meater2_label]
        - lvgl.widget.hide: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
        - lvgl.widget.hide: [sensor3_text, sensor4_text]
        - lvgl.widget.show: meater_text
        - output.turn_off: helper_low
        - rtttl.play: 'Pling3:d=16,o=6,b=140:d6,32p,e6,32p,d6'
#        - rtttl.play: 'star_wars:d=16,o=5,b=100:4e,4e,4e,8c,p,g,4e,8c,p,g,4e,4p,4b,4b,4b,8c6,p,g,4d#,8c,p,g,4e,8p'
        - globals.set:
            id: meater_connected
            value: 'true'
    on_disconnect:
      then:
        - lvgl.widget.hide: meater_connect_label
        - lvgl.widget.hide: [meater1_arc, meater2_arc, meater1_label, meater2_label]
        - lvgl.widget.show: [sensor3_arc, sensor4_arc]
        - lvgl.widget.show: [sensor3_arc, sensor4_arc, sensor3_label, sensor4_label]
        - lvgl.widget.show: [sensor3_text, sensor4_text]
        - lvgl.widget.hide: meater_text
        - rtttl.play: 'siren:d=8,o=5,b=100:d,e,d,e,d,e,d,e'
        - globals.set:
            id: meater_connected
            value: 'false'

#-------------------------------------------
# Display qspi
#-------------------------------------------
spi:
  id: display_qspi
  type: quad
  clk_pin: 47
  data_pins: [21, 48, 40, 39]

display:
  - platform: qspi_dbi
    model: axs15231
    data_rate: 40MHz
    id: my_display
    spi_id: display_qspi
    dimensions:
      height: 480
      width: 320
    cs_pin:
      number: 45
      ignore_strapping_warning: true
#    rotation: 0  #  0 for portrait
    rotation: 90 # 90 for landscape
    auto_clear_enabled: false

#-------------------------------------------
# Touchscreen gt911 i2c
#-------------------------------------------
i2c:
  sda: 4
  scl: 8
  id: touchscreen_bus

touchscreen:
  - platform: axs15231
    id: my_touch
    display: my_display
    i2c_id: touchscreen_bus
    calibration:
      x_min: 14
      x_max: 461
      y_min: 12
      y_max: 310
    transform:
      swap_xy: true
      mirror_x: false
      mirror_y: true
    on_touch:
      - lambda: |-
          ESP_LOGI("cal", "x=%d, y=%d, x_raw=%d, y_raw=%0d",
            touch.x,
            touch.y,
            touch.x_raw,
            touch.y_raw
          );
    on_release:
      - if:
          condition: lvgl.is_paused
          then:
            - logger.log: "Display is resuming"
            - lvgl.resume:
            - lvgl.widget.redraw:
            - light.turn_on: backlight         

#-------------------------------------------
# Internal outputs
#-------------------------------------------
output:
  - id: gpio_backlight_pwm
    platform: ledc
    pin: 1

  - id: helper_low
    platform: ledc
    pin: 14

  - platform: ledc
    pin: 9
    id: rtttl_out

#-------------------------------------------
# Internal lights
#-------------------------------------------
light:
  - id: backlight
    name: Backlight
    platform: monochromatic
    output: gpio_backlight_pwm
    restore_mode: ALWAYS_ON

#-------------------------------------------
# Internal RTTTL speaker
#-------------------------------------------
rtttl:
  id: my_rtttl
  output: rtttl_out
  gain: 0.8

globals:
  - id: wifi_connected
    type: bool
    initial_value: 'false'
  - id: g32_connected
    type: bool
    initial_value: 'false'
  - id: meater_connected
    type: bool
    initial_value: 'false'

number:
  - platform: template
    name: Screen timeout
    optimistic: true
    id: display_timeout
    unit_of_measurement: "s"
    initial_value: 300
    restore_value: true
    min_value: 0 # 0 means 'no timeout'
    max_value: 3600
    step: 5
    mode: box

lvgl:
  #full_refresh: true # not needed any longer
  draw_rounding: 8 # necessary for the axs15231 display controller
  displays: my_display
  touchscreens: my_touch
  bg_color: 0
  border_width: 0
  outline_width: 0
  theme:
    label:
      text_color: 0xFFFFFF
      bg_color: 0
      bg_opa: TRANSP
      width: 120
      text_align: center
    bar:
      radius: 5
      indicator:
        radius: 5
        arc_color: red
    arc:
      radius: 5
      arc_color: 0x333333
      indicator:
        radius: 5
  style_definitions:
    - id: main_font_style
      text_font: MONTSERRAT_18
    - id: big_font_style
      text_font: MONTSERRAT_26
    - id: zone_arc_style
      width: 100
      height: 120       
    - id: sensor_arc_style
      width: 100
      height: 120       
  on_idle:
    timeout: !lambda "return(id(display_timeout).state * 1000);"
    then:
    - if:
        condition:
        - lambda: "return id(display_timeout).state > 0;"
        then:
          - logger.log: "Display is idle"
          - light.turn_off: backlight
          - lvgl.pause:
  pages:
    - id: main_page
      widgets:
# fixed objects (will not change during runtime)
        - label:
            x: 0
            y: 4 # distance down from top
            styles: main_font_style
            text: 'T 1'

        - label:
            x: 120
            y: 4 # distance down from top
            styles: main_font_style
            text: 'T 2'

        - label:
            x: 240
            y: 4 # distance down from top
            styles: main_font_style
            text: 'T 3'

        - label:
            x: 360
            y: 4 # distance down from top
            styles: main_font_style
            text: 'T 4'

        - label:
            x: 0
            y: 150 # distance down from top
            styles: main_font_style
            text: 'Sensor 1'

        - label:
            x: 120
            y: 150 # distance down from top
            styles: main_font_style
            text: 'Sensor 2'

        - label:
            id: sensor3_text
            x: 240
            y: 150 # distance down from top
            styles: main_font_style
            text: 'Sensor 3'

        - label:
            id: sensor4_text
            x: 360
            y: 150 # distance down from top
            styles: main_font_style
            text: 'Sensor 4'

        - label:
            id: meater_text
            x: 240
            y: 150 # distance down from top
            styles: main_font_style
            width: 240
            text: 'KT   Meater   GT'
            hidden: true

        - label:
            x: 0
            y: 104 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 120
            y: 104 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 240
            y: 104 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 360
            y: 104 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 0
            y:  250 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 120
            y: 250 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 240
            y: 250 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 360
            y: 250 # distance down from top
            styles: main_font_style
            text: '°C'

        - label:
            x: 24
            y: 294 # distance down from top
            styles: main_font_style
            text_align: LEFT
            text: 'Gas:'

# variable objects (may change at runtime)
        - label:
            id: wifi_connect_label
            x: 0
            y: 4
            styles: main_font_style
            text_color: 0x00ff00
            text_align: LEFT
            width: 20
            text: "\uF1EB"
            hidden: true

        - label:
            id: battery_empty_label
            x: 220
            y: 4
            styles: main_font_style
            text_color: 0xff0000
            text_align: CENTER
            width: 40
            text: "\uF243"
            hidden: true

        - label:
            id: g32_connect_label
            x: 459
            y: 4
            styles: main_font_style
            text_color: 0x00ff00
            text_align: LEFT
            width: 20
            text: "\uF293"
            hidden: true

        - label:
            id: meater_connect_label
            x: 350
            y: 180
            styles: main_font_style
            text_color: 0x00ff00
            text_align: CENTER
            width: 20
            text: "\uF293"
            hidden: true

        - label:
            id: gas_percent_label
            x: 260
            y: 294 # distance down from top
            styles: main_font_style
            text: '-- %'
            hidden: true

        - label:
            id: gas_weight_label
            x: 360
            y: 294 # distance down from top
            styles: main_font_style
            text: '--- g'
            hidden: true

        - label:
            id: zone1_label
            x: 0
            y: 64 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: zone2_label
            x: 120
            y: 64 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: zone3_label
            x: 240
            y: 64 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: zone4_label
            x: 360
            y: 64 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: sensor1_label
            x: 0
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: sensor2_label
            x: 120
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: sensor3_label
            x: 240
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: sensor4_label
            x: 360
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: meater1_label
            x: 240
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - label:
            id: meater2_label
            x: 360
            y: 210 # distance down from top
            styles: big_font_style
            text: '---'
            hidden: true

        - bar:
            id: gas_percent_bar
            x: 80
            y: 299
            height: 12
            width: 200
            radius: 5
            min_value: 1
            max_value: 100
            bg_color: 0xffffff
            indicator:
              bg_color: 0x00ff00
            value: 0
            hidden: true

        - arc:
            id: zone1_arc
            x: 10
            y: 30
            min_value: 1
            max_value: 500
            indicator:
              arc_color: 0xff0000
            styles: zone_arc_style 
            value: 0

        - arc:
            id: zone2_arc
            x: 130
            y: 30
            min_value: 1
            max_value: 500
            indicator:
              arc_color: 0xff0000
            styles: zone_arc_style 
            value: 0

        - arc:
            id: zone3_arc
            x: 250
            y: 30
            min_value: 1
            max_value: 500
            indicator:
              arc_color: 0xff0000
            styles: zone_arc_style 
            value: 0

        - arc:
            id: zone4_arc
            x: 370
            y: 30
            min_value: 1
            max_value: 500
            indicator:
              arc_color: 0xff0000
            styles: zone_arc_style 
            value: 0

        - arc:
            id: sensor1_arc
            x: 10
            y: 176
            min_value: 1
            max_value: 300
            indicator:
              arc_color: 0xffff00
            styles: sensor_arc_style 
            value: 0

        - arc:
            id: sensor2_arc
            x: 130
            y: 176
            min_value: 1
            max_value: 300
            indicator:
              arc_color: 0xff0000
            styles: sensor_arc_style 
            value: 0

        - arc:
            id: sensor3_arc
            x: 250
            y: 176
            min_value: 1
            max_value: 300
            indicator:
              arc_color: 0xffff00
            styles: sensor_arc_style 
            value: 0

        - arc:
            id: sensor4_arc
            x: 370
            y: 176
            min_value: 1
            max_value: 300
            indicator:
              arc_color: 0xffff00
            styles: sensor_arc_style 
            value: 0

        - arc:
            id: meater1_arc
            x: 250
            y: 176
            min_value: 1
            max_value: 100
            indicator:
              arc_color: 0xffff00
            styles: sensor_arc_style 
            value: 0
            hidden: true

        - arc:
            id: meater2_arc
            x: 370
            y: 176
            min_value: 1
            max_value: 275
            indicator:
              arc_color: 0xff0000
            styles: sensor_arc_style 
            value: 0
            hidden: true

sensor:
#  - platform: adc
#    pin: 5
#    name: "Battery Voltage"
#    unit_of_measurement: "V"
#    state_class: measurement
#    attenuation: 12db
#    accuracy_decimals: 2
#    samples: 16
#    filters:
#      - multiply: 1.72
#      - sliding_window_moving_average:
#          window_size: 15
  - platform: adc
    pin: 5
    name: "Battery SOC"
    unit_of_measurement: "%"
    state_class: measurement
    device_class: battery
    attenuation: 12db
    accuracy_decimals: 0
    samples: 16
    filters:
      - multiply: 1.72
      - sliding_window_moving_average:
          window_size: 15
      - calibrate_linear:
          method: exact
          datapoints:
            - 3.00 ->   0.0
            - 3.36 ->   5.0
            - 3.41 ->  10.0
            - 3.48 ->  20.0
            - 3.52 ->  30.0
            - 3.56 ->  40.0
            - 3.61 ->  50.0
            - 3.70 ->  60.0
            - 3.79 ->  70.0
            - 3.89 ->  80.0
            - 4.00 ->  90.0
            - 4.05 -> 100.0
      - clamp:
          min_value: 0.0
          max_value: 100.0
    update_interval: 4s
    on_value_range:
      - below: 20.0
        then:
          - lvgl.widget.show: battery_empty_label
      - above: 20.0
        then:
          - lvgl.widget.hide: battery_empty_label

  - platform: ble_client
    ble_client_id: meater
    type: characteristic
    name: "Meater T1"
    id: meater_t1
    service_uuid: 'a75cc7fc-c956-488f-ac2a-2dbc08b63a04'
    characteristic_uuid: '7edda774-045e-4bbf-909b-45d1991a2876'
    device_class: "temperature"
    unit_of_measurement: "°C"
    accuracy_decimals: 1
    update_interval: 10s
    lambda: |-
      return ((x[0]+x[1]*256.0)/16.0);
    on_value:
      - lvgl.label.update:
          id: meater1_label
          hidden: false
          text: !lambda |-
            if(x == 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: meater1_arc
          value: !lambda |-
            if(x == 1500) {return (0);
            } else {
            return (x);
            };     
      - rtttl.play:
          id: my_rtttl
          rtttl: !lambda |-
            if(x >= 100) {return ("Alarm:d=4,o=5,b=165:a#,8p,a#,8p,a#,8p,a#")};           
            } else {
            {return ("")};
            };     

  - platform: ble_client
    ble_client_id: meater
    type: characteristic
    name: "Meater T2"
    id: meater_t2
    service_uuid: 'a75cc7fc-c956-488f-ac2a-2dbc08b63a04'
    characteristic_uuid: '7edda774-045e-4bbf-909b-45d1991a2876'
    device_class: "temperature"
    unit_of_measurement: "°C"
    accuracy_decimals: 0
    update_interval: 10s
    lambda: |-
      if ((x[2]+x[3]*256.0) >= 33) {
        return (((x[0]+x[1]*256.0)/16.0)+(((x[2]+x[3]*256.0)-33.0)/2.5));
      } else {
        return (1500);
      };
    on_value:
      - lvgl.label.update:
          id: meater2_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: meater2_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_rssi
    mac_address: ${g32_mac_address}
    name: "BT Signalstärke"
  - platform: wifi_signal
    name: "WiFi Signal ESP G32"
    update_interval: 10s
  - platform: internal_temperature 
    name: "CPU Temperatur ESP G32"
    update_interval: 10s

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Zone 1"
    id: g32_T_1
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 10s
    lambda: |-
      return (x[6]*10.0+x[7]/10.0);
    on_value:
      - lvgl.label.update:
          id: zone1_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: zone1_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Zone 2"
    id: g32_T_2
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3000s
    lambda: |-
      return (x[8]*10.0+x[9]/10.0);
    on_value:
      - lvgl.label.update:
          id: zone2_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: zone2_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Zone 3"
    id: g32_T_3
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3001s
    lambda: |-
      return (x[10]*10.0+x[11]/10.0);
    on_value:
      - lvgl.label.update:
          id: zone3_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: zone3_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Zone 4"
    id: g32_T_4
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3002s
    lambda: |-
      return (x[12]*10.0+x[13]/10.0);
    on_value:
      - lvgl.label.update:
          id: zone4_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: zone4_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Sensor 1"
    id: g32_Ext_1
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3003s
    lambda: |-
      return (x[14]*100.0+x[15])/10;
    on_value:
      - lvgl.label.update:
          id: sensor1_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: sensor1_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Sensor 2"
    id: g32_Ext_2
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3003s
    lambda: |-
      return (x[16]*100.0+x[17])/10;
    on_value:
      - lvgl.label.update:
          id: sensor2_label
          hidden: false
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: sensor2_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Sensor 3"
    id: g32_Ext_3
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3004s
    lambda: |-
      return (x[18]*100.0+x[19])/10;
    on_value:
      - lvgl.label.update:
          id: sensor3_label
          hidden: !lambda return id(meater_connected) == true;
          text: !lambda |-
            if(x >= 1500) {
            return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: sensor3_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Sensor 4"
    id: g32_Ext_4
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    device_class: "temperature"
    unit_of_measurement: "°C"
    update_interval: 3005s
    lambda: |-
      return (x[20]*100.0+x[21])/10;
    on_value:
      - lvgl.label.update:
          id: sensor4_label
          hidden: !lambda return id(meater_connected) == true;
          text: !lambda |-
            if(x >= 1500) {return ("---");
            } else {
            return (to_string(static_cast<int>(x))).c_str();
            };     
      - lvgl.arc.update:
          id: sensor4_arc
          value: !lambda |-
            if(x >= 1500) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Gasbuddy Füllstand in g"
    id: g32_Gas_g
    device_class: weight
    state_class: measurement
    unit_of_measurement: g
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    update_interval: 3006s
    lambda: |-
      return (x[22]*256+x[23]);
    on_value:
      - lvgl.label.update:
          id: gas_weight_label
          hidden: false
          text: !lambda |-
            if(x >= 20000) {return ("---");
            } else {
            return (to_string(static_cast<int>(x)) + " g").c_str();     
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Gasbuddy Füllstand in %"
    state_class: measurement
    unit_of_measurement: "%"
    id: g32_Gas
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    update_interval: 3007s
    lambda: |-
      return (x[31]);
    on_value:
      - lvgl.label.update:
          id: gas_percent_label
          hidden: false
          text: !lambda |-
            if(x > 100) {return ("---");
            } else {
            return (to_string(static_cast<int>(x)) + " %").c_str();     
            };
      - lvgl.bar.update:
          id: gas_percent_bar
          hidden: false
          value: !lambda |-
            if(x > 100) {return (0);
            } else {
            return (x);
            };     

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Haube"
    id: g32_Haube
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    update_interval: 3008s
    lambda: |-
      return (x[24]);

  - platform: ble_client
    ble_client_id: ow_g32
    type: characteristic
    name: "G32 Licht"
    id: g32_Licht
    service_uuid: 'dc0f41ea-b6ae-46a8-a19e-1a3bf4342bcb'
    characteristic_uuid: 'dc0f41e2-b6ae-46a8-a19e-1a3bf4342bcb'
    update_interval: 3009s
    lambda: |-
      return (x[25]);


binary_sensor:
  - platform: status
    name: "Status ESP G32"

  - platform: template
    name: "G32 Licht"
    icon: "mdi:light-flood-down"
    lambda: |-
     if (id(g32_Licht).state == 1) {
     // G32 Haubenlicht ist AN.
     return true;
     } else {
     // G32 Haubenlicht ist AUS.
     return false;
     }

  - platform: template
    name: "G32 Haube"
    device_class: "door"
    icon: "mdi:door"
    lambda: |-
     if (id(g32_Haube).state == 1) {
     // G32 Haube ist offen.
     return true;
     } else {
     // G32 Haube ist geschlossen.

     return false;
     }


Die MAC vom G32 und vom Meater bekomme ich erst in ein paar Tagen, aber das sollte ja nicht das Problem sein, ODER?

Naja wie dem auch sei, ich bin mal gespannt wie das weiter geht...

Grüße
 
Also, das sieht doch schon viel besser aus.
Die warnings mit dem adc sind egal, liegen an den libraries.
Die Fehlermeldungen kann ich hier am Handy nicht so einfach nachvollziehen, aber sind eventuell Einrückungen nicht korrekt? Hast Du hinten im Kode irgendetwas editiert oder 'falsch' kopiert?

Die MACs von G32 und Meater bekommst Du automatisch angezeigt, wenn Du den Absatz 'esp32_ble_tracker:' entkommentierst (die # entfernst).

Dein Vorgehen beim Programmieren verstehe ich nicht ganz. Du wählst dort eine Datei zum Programmieren aus? Das geht doch alles ganz automatisch!?!
- Gerät am USB anschließen
- neues Gerät erstellen, ESPHome fragt, ob es am USB angeschlossen ist
- Du wählst das Gerät aus, dann wird automatisch der Basiskode installiert ...

Zumindest mache ich das so.

Gruß, Jörg.

PS: lösch bitte im Kode mal die Zeilen (nach Zeile ~807) mit dem - rtttl.play: bzw. kommentier sie aus wie gezeigt:

YAML:
            if(x == 1500) {return (0);
            } else {
            return (x);
            };
#      - rtttl.play:
#          id: my_rtttl
#          rtttl: !lambda |-
#            if(x >= 100) {return ("Alarm:d=4,o=5,b=165:a#,8p,a#,8p,a#,8p,a#")};
#            } else {
#            {return ("")};
#            };

  - platform: ble_client
    ble_client_id: meater

Dann wird korrekt kompiliert und der Code sollte eigentlich laufen. Keine Ahnung, was ich da für einen Fehler eingebaut habe (Hektik vor dem Urlaub 🙄, Github ist noch Neuland für mich). Finde ich nach dem Urlaub heraus ... sorry für die Umstände.


PS: es war eine schließende geschweifte Klammer zuviel, habe ich wahrscheinlich aus Dummheit manuell eingefügt (mein Code lief ja). Also, korrigierter Code ist auf Github!
YAML:
            if(x >= 100) {return ("Alarm:d=4,o=5,b=165:a#,8p,a#,8p,a#,8p,a#");
 
Hallo Zusammen,
Ich hab nach langjährigem Lesen mich Mal endlich selber angemeldet. Grüße!

Nachdem ich bisher gute Erfahrungen mit der BLE Integration und esphome mit ESP32 gemacht habe, hab ich mich am Wochenende drangesetzt und Dank der guten Arbeit von @floh86 und anderen eine custom Integration fertig, die nach E-Mail und Passwort Eingabe dann alle aktiven Grills im Account als devices samt entities hinzufügt. Also das, was wir alle immer haben wollen:)
Hab dann noch ein inkplate6 als e-paper Display dazu gebaut....
Ich stelle den Code gerne zur Verfügung via GitHub, aber erst Mal braucht es ein paar Betatester. Home Assistant und Zugriff auf das custom components Verzeichnis musst du haben.

Hier ein paar Impressionen. Die Sensornamen sind noch anpassungsfähig:)

An Floh: Ich kann leider noch keine PN hier schicken, braucht es 15 Beiträge zu, aber Du findest sicher einen Weg, ich würde mich gerne mit dir austauschen.

Grüße

Chris
 

Anhänge

  • PXL_20250615_193754232~2.jpg
    PXL_20250615_193754232~2.jpg
    338,2 KB · Aufrufe: 90
  • Screenshot_20250629-233352~2.png
    Screenshot_20250629-233352~2.png
    117,5 KB · Aufrufe: 101
  • Screenshot_20250629-233411~2.png
    Screenshot_20250629-233411~2.png
    96,7 KB · Aufrufe: 93
Hallo Zusammen,
Ich hab nach langjährigem Lesen mich Mal endlich selber angemeldet. Grüße!

Nachdem ich bisher gute Erfahrungen mit der BLE Integration und esphome mit ESP32 gemacht habe, hab ich mich am Wochenende drangesetzt und Dank der guten Arbeit von @floh86 und anderen eine custom Integration fertig, die nach E-Mail und Passwort Eingabe dann alle aktiven Grills im Account als devices samt entities hinzufügt. Also das, was wir alle immer haben wollen:)
Hab dann noch ein inkplate6 als e-paper Display dazu gebaut....
Ich stelle den Code gerne zur Verfügung via GitHub, aber erst Mal braucht es ein paar Betatester. Home Assistant und Zugriff auf das custom components Verzeichnis musst du haben.

Hier ein paar Impressionen. Die Sensornamen sind noch anpassungsfähig:)

An Floh: Ich kann leider noch keine PN hier schicken, braucht es 15 Beiträge zu, aber Du findest sicher einen Weg, ich würde mich gerne mit dir austauschen.

Grüße

Chris
Hallo Chris,
macht es eventuell Sinn, unsere beiden Ansätze zu verheiraten? Oder Teile des Codes auszutauschen? Man muss ja nicht das Rad doppelt erfinden.
Mein Code ist bereits auf Github.

Gruß, Jörg.

PS: eine Custom Integration in HA ist natürlich eine ganz andere Sache als mein (ESPHome-) Ansatz. Aber Du benutzt ja auch einen ESP32 als Bluetooth-Proxie? Noch schöner wäre ja eine HA Integration, die ein sowieso vorhandenes Bluetooth Gerät (im Raspi, Mini-PC oder wo auch immer) verwendet. Dann könnte man sich extra Hardware komplett ersparen. Aber das ist wohl nicht so trivial, oder?
 
Hallo Jörg,
ich kannte dein Display noch nicht - ich hab den EPaper Ansatz gewählt, da low Energy und Super lesbar draußen.
Die BlueTooth Integration mit deinem Display, oder auch die ESPHoe Bluetooth Client Integation finde ich auch super - ich wollte aber unbedingt eine Anbdinung haben, die mir die Daten direkt in den HomeAssistant packt - und dazu muss der Grill nur WLAN haben, nicht in der Bluettoth Reichweite sein.
Mit meiner neuen Integration könntest Du dein Display direkt auf die Daten in HA zugreifen lassen - und brauchst die Bluetooth Anbindung nicht mehr. Ein Vorteil ist, dass ich auch schon die Timer entsclüsselt habe, die kommen in den Paketen vom Grill nämlich mit der verbleibenden Zeit mit, also kann man das in HA nutzen, um die Timer IN HA Synchron mit den Timern im Grill zu halten etc...
Zusammenfassung: Ich hab die API von Otto Wilde genutzt, um eine HACS Integration zu erstellen, die nur mit Email und Passwort von OW auskommt und dir die ganzen Sensoren bereit stellt. Pro Grill :)

Grüße
Chris
 
Oh wow, klingt super spannend! Ich teste gerne, muss nur einen BT Proxy in Reichweite bringen. Und das, wo ich gerade Jörgs Display nachgebaut habe... :D Leider darf ich dir aber auch keine PNs schicken...
 
Hallo Jörg,
ich kannte dein Display noch nicht - ich hab den EPaper Ansatz gewählt, da low Energy und Super lesbar draußen.
Die BlueTooth Integration mit deinem Display, oder auch die ESPHoe Bluetooth Client Integation finde ich auch super - ich wollte aber unbedingt eine Anbdinung haben, die mir die Daten direkt in den HomeAssistant packt - und dazu muss der Grill nur WLAN haben, nicht in der Bluettoth Reichweite sein.
Mit meiner neuen Integration könntest Du dein Display direkt auf die Daten in HA zugreifen lassen - und brauchst die Bluetooth Anbindung nicht mehr. Ein Vorteil ist, dass ich auch schon die Timer entsclüsselt habe, die kommen in den Paketen vom Grill nämlich mit der verbleibenden Zeit mit, also kann man das in HA nutzen, um die Timer IN HA Synchron mit den Timern im Grill zu halten etc...
Zusammenfassung: Ich hab die API von Otto Wilde genutzt, um eine HACS Integration zu erstellen, die nur mit Email und Passwort von OW auskommt und dir die ganzen Sensoren bereit stellt. Pro Grill :)

Grüße
Chris
Danke für die Erklärung!
Also genau 'anders herum' wie ich das gemacht habe:
- Bei mir steht das Display am G32 im Vordergrund, welches sich per BT mit dem G32 verbindet und die Daten nebenbei auch (per Wlan) zum Home Assistant schickt. Das ist auch für Leute ohne HA interessant, quasi als Grill-Buddy Ersatz
- bei Dir werden als Hauptzweck die Daten über Wlan aus dem G32 ausgelesen und im HA angezeigt. Das Display greift dann wiederum die Daten aus dem HA auf und stellt sie dar. Leute mit HA benötigen also keine extra Hardware, können aber bei Bedarf ein Display nutzen.
Sehr interessant!
Das mit den Timern (in der App?) ist auch interessant, kenne und nutze ich nicht. Überhaupt soll mein Display irgendwann mal für mich die App ersetzen. Ich kann nicht gleichzeitig zwei Apps (G32 und Meater) am Grill benutzen und möchte das Handy gar nicht anfassen müssen. Mein nächstes Ziel ist das Anmelden einer neuen Gasflasche am G32. Dann eventuell Temperatur-Grenzwerte setzen und überwachen (für Meater und G32). Timer hatte ich nicht auf dem Schirm, ginge natürlich auch.
Aktueller Gasverbrauch und voraussichtliche Reichweite stehen noch auf der Liste, muss man aber extrem filtern.

Gruß, Jörg
 
Ich hab die API von Otto Wilde genutzt, um eine HACS Integration zu erstellen, die nur mit Email und Passwort von OW auskommt
Ist die API irgendwo frei verfügbar und dokumentiert? Und greifst Du dann auf den OW Server zu? Oder benötigt man Email und Passwort auch für den direkten Zugriff auf den G32?
 
Danke Jörg, Du hast es sehr genau beschrieben.
Es stand zwar schon das Display im Vordergrund, aber so kann man einfach ein Dashboard bauen und das auf einem Tablet im Browser daneben hängen.

Doe API ist nicht dokumentiert, man nutzt die Otto Wilde Server für den Login, aber dann ist die Verbindung konstant offen, der Server von OWG leitet jedes Paket vom Grill mit 53 Byte einfach an den listener, also Homeassistant, durch. Wenn die Verbindung unterbrochen wird, versucht die Integration wider von vorne anzufangen.
Damit bestimmt der Grill die Aktualisierungsfrequenz der Sensoren, offenbar schickt er immer dann ein neues Paket, wenn sich Daten ändern, daher hat man hier nicht die Problematik mit Update Interval wie bei ESP.

Ich sammel Mal Interessenten für den Betatest, am besten bei mir per PN Bescheid sagen - und dann probieren wir Mal ein.

Es geht dabei um meine custom Integration für die Anbindung von OWG G32 an Home Assistant via WLAN / OWG Cloud API - nicht per Bluetooth und man braucht kein extra Hardware. Nur den Grill mit Account, kein Abo.


Grüße

Chris
 
Für mich persönlich ist der Ansatz von @JBecker passender, da ich nicht von Homeassistent abhängig sein möchte und das Display am Grill oder in der Nähe haben möchte.

Der Ansatz von @zaubii ist aber ebenso nachvollziehbar und super spannend für jeden, der HA nutzt. Wenn man HA sowieso betreibt, ist das eine echt komfortable Lösung. Besser gefällt mir daran, dass man nicht vom BT abhängig ist, das die Reichweite doch stark einschränkt.

Vielleicht können sich die Projekte ja gegenseitig befruchten, was die Funktionalitäten angeht 👍🏼
 
Oh wow, klingt super spannend! Ich teste gerne, muss nur einen BT Proxy in Reichweite bringen. Und das, wo ich gerade Jörgs Display nachgebaut habe... :D Leider darf ich dir aber auch keine PNs schicken...
Hi Floh,

Du und andere am Betatest der Home Assistant Otto Wilde G32 Integration ohne Bluetooth Interessierten können sich am einfachsten an betatest at meinUsername.de wenden, den weiteren Austausch dann gerne wieder hier.

Grüße
Chris
 
Für mich persönlich ist der Ansatz von @JBecker passender, da ich nicht von Homeassistent abhängig sein möchte und das Display am Grill oder in der Nähe haben möchte.

Der Ansatz von @zaubii ist aber ebenso nachvollziehbar und super spannend für jeden, der HA nutzt. Wenn man HA sowieso betreibt, ist das eine echt komfortable Lösung. Besser gefällt mir daran, dass man nicht vom BT abhängig ist, das die Reichweite doch stark einschränkt.

Vielleicht können sich die Projekte ja gegenseitig befruchten, was die Funktionalitäten angeht 👍🏼
Eine richtige Home Assistant (custom) Integration ist auch in meinen Augen eindeutig der Königsweg! Darauf habe(n) ich (wir) ja schon lange gewartet.
Wenn das mal richtig funktioniert, dann kann/werde ich auch bei 'meinem' Display eine Version dafür bereitstellen. Ich muss dann nur die Abfragen der Daten über Bluetooth durch den Zugriff auf die Home Assistant Entitäten ersetzen, eine sehr übersichtliche Fleißaufgabe.
Die bisherige (direkt per BT auslesen) Variante werde ich natürlich parallel weiter entwickeln. Wie schon beschrieben gibt es ja bei beiden Varianten Vor- und Nachteile.
Bin sehr gespannt und würde mich bei Bedarf auch sehr gerne am Betatest beteiligen.
 
Hallo Zusammen,
eine Sache baue ich noch ein, bevor da jemand testen kann. Aktuell ist es so, eben die TCP Verbindung abbricht, weil der Grill z.b. ausgeschaltet wird, dann wartet die Integration 60 Sekunden und macht einen neuen Login, versucht den Grill zu connected mit dem neuen token, ist imner noch aus, wartet 60 Sekunden.

Das ist ne Menge unnötiger Traffic auf die Otto wilde Server, wenn die Integration Mal bei ein paar Leuten läuft.

Daher baue ich das so um, dass der Grill es nur in größer werden Intervallen erneut versucht und nach 30 Minuten die Verbindung auf "getrennt" stellt. Man kann das dann manuell wider starten, wenn der Grill an ist. Bei einen Neustart von HA wird dann ebenfalls wieder die 30 Minuten geprüft bis die Verbindung auf offline gestellt wird.

Das ist eine Einschränkung, die wir dann in Kauf nehmen müssen - wenn der Grill eingeschalteten ist, einmalig auf "Connection enabled" on schalten und dann ist alles stabil und sauber. Könntet ihr damit leben? Also klar, eben ihr den Grill dann immer eingeschaltet lasst und tagelanng die Daten kommen, dann ist das nicht anders als das, was die App von OWG auch macht, wenn du sie auf dem Handy offen lässt....

Diese Änderung mit dem disconnect und manuellen connect der Integration über die Oberfläche also einen Schalter in Homeassistant als entity, die muss noch fertig werden dann geht's los. Das kommt in den nächsten Tagen.

Gruß

Chris
 
Hallo Zusammen,
eine Sache baue ich noch ein, bevor da jemand testen kann. Aktuell ist es so, eben die TCP Verbindung abbricht, weil der Grill z.b. ausgeschaltet wird, dann wartet die Integration 60 Sekunden und macht einen neuen Login, versucht den Grill zu connected mit dem neuen token, ist imner noch aus, wartet 60 Sekunden.

Das ist ne Menge unnötiger Traffic auf die Otto wilde Server, wenn die Integration Mal bei ein paar Leuten läuft.

Daher baue ich das so um, dass der Grill es nur in größer werden Intervallen erneut versucht und nach 30 Minuten die Verbindung auf "getrennt" stellt. Man kann das dann manuell wider starten, wenn der Grill an ist. Bei einen Neustart von HA wird dann ebenfalls wieder die 30 Minuten geprüft bis die Verbindung auf offline gestellt wird.

Das ist eine Einschränkung, die wir dann in Kauf nehmen müssen - wenn der Grill eingeschalteten ist, einmalig auf "Connection enabled" on schalten und dann ist alles stabil und sauber. Könntet ihr damit leben? Also klar, eben ihr den Grill dann immer eingeschaltet lasst und tagelanng die Daten kommen, dann ist das nicht anders als das, was die App von OWG auch macht, wenn du sie auf dem Handy offen lässt....

Diese Änderung mit dem disconnect und manuellen connect der Integration über die Oberfläche also einen Schalter in Homeassistant als entity, die muss noch fertig werden dann geht's los. Das kommt in den nächsten Tagen.

Gruß

Chris
Sehr gut! Das ist Ressourcen sparend und bei der Nutzung mMn vollkommen akzeptabel!
 
Moin liebe Grillsportfreunde und G32 sowie HA Besitzer mit dem Wunsch ohne Bluetooth den Grill ins SMARTHOME zu integrieren,

Ich hab da Mal übers Wochenende etwas zusammengeklöppelt, hier die Beschreibung:
Verbinde deinen Otto Wilde G32 Smart Grill mit Home Assistant. Diese Custom Integration ermöglicht es dir, alle Temperaturzonen, Fleischthermometer, den Gasfüllstand und den Status der Firebox deines Grills direkt in deiner Home Assistant Instanz zu überwachen.

Die Integration nutzt einen hybriden Ansatz, der die offizielle Otto Wilde Cloud API zur Authentifizierung und eine direkte TCP-Socket-Verbindung für Echtzeit-Datenstreaming vom Grill kombiniert.

Funktionen der Integration:
  • Echtzeit-Sensordaten: Erhalte Live-Updates von deinem Grill über eine lokale Push-Verbindung.
  • 8 Temperatursensoren:
  • Vier Heizzonen (Zone 1 - Zone 4).
  • Vier externe Fleischthermometer (Probe 1 - Probe 4).
  • Gas-Management: Überwache das verbleibende Gas in deiner Flasche nach Gewicht (Gramm) und in Prozent.
  • Status-Indikatoren: Sieh sofort, ob die Firebox geöffnet ist, das Licht an ist oder der Gasfüllstand niedrig ist.
  • Multi-Grill-Unterstützung: Entdeckt und konfiguriert automatisch alle Grills, die mit deinem Otto-Wilde-Konto verknüpft sind.
  • Intelligente Verbindungssteuerung:
  • Ein dedizierter Schalter ermöglicht es dir, die TCP-Verbindung für jeden Grill manuell zu (de-)aktivieren.
  • Automatischer Backoff: Wenn der Grill offline geht, versucht die Integration, sich in zunehmenden Intervallen wieder zu verbinden, um die Serverlast zu reduzieren.
  • Automatischer Timeout: Wenn der Grill länger als 30 Minuten offline bleibt, wird die Verbindung automatisch deaktiviert, um endlose Wiederholungsversuche zu vermeiden. Du musst sie dann manuell wieder aktivieren.
  • Erweiterte Diagnose: Bietet detaillierte Sensoren zur Überwachung des internen Zustands und der Kommunikationsversuche der Integration.
  • Einfache Konfiguration: Richte alles über die Benutzeroberfläche von Home Assistant ein.

Entities / Sensoren / Schalter:
Entity ID Schema

Temperature:
sensor.[grill_nickname]_zone_1
sensor.[grill_nickname]_zone_2
sensor.[grill_nickname]_zone_3
sensor.[grill_nickname]_zone_4
sensor.[grill_nickname]_probe_1
sensor.[grill_nickname]_probe_2
sensor.[grill_nickname]_probe_3
sensor.[grill_nickname]_probe_4

Gas:
sensor.[grill_nickname]_gas_weight
sensor.[grill_nickname]_gas_level
sensor.[grill_nickname]_gas_installed
sensor.[grill_nickname]_gas_changed
sensor.[grill_nickname]_gas_consumed

Sensoren:
binary_sensor.[grill_nickname]_firebox_open
binary_sensor.[grill_nickname]_light_on
binary_sensor.[grill_nickname]_gas_low

Schalter:
switch.[grill_nickname]_connection_enabled

Diagnose Sensoren:
sensor.[grill_nickname]_raw_hex_dump
sensor.[grill_nickname]_api_login_calls
sensor.[grill_nickname]_api_grills_calls
sensor.[grill_nickname]_tcp_connection_attempts
sensor.[grill_nickname]_tcp_reconnect_counter
sensor.[grill_nickname]_next_connection_attempt


Interesse am vorab Beta-Test? Schreib mir eine Nachricht im Board hier oder E-Mail an betatest at mein-Username punkt de - alles weitere an Feedback dazu gerne hier, ist ja für alle interessant.

Voraussetzung: Home Assistant mit HACS - Zugriff auf den custom_components Ordner, einen G32 Grill sichtbar in der OWG App via WLAN.

Beste Grüße und Danke an alle, die hier links oder Code oder Infos geteilt haben, ohne euch wäre das nichts geworden.

Chris
 
Zurück
Oben Unten