tomquist / esphome-b2500

5 stars 0 forks source link

WLAN-Verbindung bricht ab, kein Web-GUI #11

Open knickohr opened 2 weeks ago

knickohr commented 2 weeks ago

OK, da es hier bei mir um ein seltsames Problem geht das sich der ESP nur kurz mit dem WiFi verbindet, wie auch MQTT, mache ich einen neuen Issue auf. Es verbindet sich kurz nach dem Start, danach verstummt es bis zum nächsten (automatischen) Reboot Das Webinbterface kann nie aufgerufen werden, über MQTT und Serial sehe ich aber das Debug.

Device information

Configuration

{
  "name": "bc2500-1-ble-idf",
  "friendly_name": "B2500-1",
  "poll_interval_seconds": "15",
  "mqtt": {
    "topic": "b2500-1",
    "broker": "192.168.100.80",
    "port": 1883,
    "username": "mqttuser",
    "password": "***",
    "discovery": false
  },
  "wifi": {
    "ssid": "Odyssee2001",
    "password": "***"
  },
  "board": "esp32dev",
  "variant": "auto",
  "idf_platform_version": "",
  "enable_auto_restart": true,
  "auto_restart": {
    "restart_after_error_count": 8
  },
  "enable_cellquery": true,
  "enable_timer_query": false,
  "enable_cmd30": false,
  "enable_esp_temperature": false,
  "enable_powermeter": false,
  "enable_experimental_commands": false,
  "enable_hexdump": false,
  "enable_set_wifi": false,
  "set_wifi": {
    "ssid": "MyWifi",
    "password": "***"
  },
  "enable_set_mqtt": true,
  "powermeter": {
    "tx_pin": "GPIO6",
    "rx_pin": "GPIO7",
    "baud_rate": 9600,
    "stop_bits": 1
  },
  "enable_enforce_dod": false,
  "enable_powerzero": false,
  "powerzero": {
    "grid_power_topic": "tibber-esp/sensor/power/state",
    "limit_cmd_topic": "openDTU/XXXXXXXXXXXX/cmd/limit_persistent_relative",
    "limit_state_topic": "openDTU/XXXXXXXXXXXX/state/limit_relative"
  },
  "enable_manual_ip": false,
  "manual_ip": {
    "ip": "192.168.1.100",
    "gateway": "192.168.1.1",
    "subnet": "255.255.255.0",
    "dns": "192.168.1.1"
  },
  "enable_web_server": true,
  "web_server": {
    "port": 80,
    "js_include": "./v2/www.js"
  },
  "enable_ota": true,
  "ota": {
    "password": "***",
    "enable_unprotected_writes": false
  },
  "enable_fallback_hotspot": false,
  "fallback_hotspot": {
    "ssid": "ESPHome-b2500",
    "enable_captive_portal": true
  },
  "storages": [
    {
      "name": "1",
      "version": 1,
      "mac_address": "***"
    },
    {
      "name": "2",
      "version": 1,
      "mac_address": "***"
    }
  ],
  "flash_size": "4MB",
  "esp_temperature": {
    "variant": "internal"
  },
  "enable_dio_flash_mode": false
}

Hier mal ein etwas längeres Log : Log.txt

Interessant finde ich das MQTT immer wieder .../bluetooth/enabled OFF bringt.

Die Speicher sind während dem MQTT-Log in Reichweite, jedoch nicht beim seriellen Log am PC.

Vielleicht kann man was sehen.

tomquist commented 2 weeks ago

Kannst du mal versuchen den Webserver auszuschalten? Die ESP32-C3 sind ziemlich schwach auf der Brust. Ich habe das ganze auf einem Shelly PM Mini laufen, in dem der gleiche ESP32 verbaut ist und musste den Webserver abschalten, damit der nicht abstürzt.

knickohr commented 2 weeks ago

Finde ich jetzt spannend ! Mit der yaml von noone2k funzt es ja.

Aber OK, ich teste.

knickohr commented 2 weeks ago

Tatsächlich !!!

Log.txt

Ich teste es jetzt mal mit Verbindung zum Speicher.

knickohr commented 2 weeks ago

Alles fein. Frage mich halt was bei deiner Version anders ist als bei noone2k, außer das es „maschinell“ erstellt wird 🤔

tomquist commented 2 weeks ago

Habe da schon ein paar Anpassungen gegenüber dem von noone2k drin:

  1. In noone2k's script gibt es einige Werte, die nur über MQTT ausgegeben werden, für die es aber keinen entsprechenden Sensor in ESPHome gibt. Im Config-Generator wird alles als Entity angelegt (inklusive der Sensoren für die Zellspannung). Das verbessert die Kompatibilität mit ioBroker und HomeAssistant aber kann natürlich auch zu erhöhtem Speicherverbrauch führen. Eventuell hilft es auch "Enable Cellquery" auszuschalten um den Crash zu vermeiden.
  2. Die v2 Timer können alle vollständig gesteuert werden, nicht nur timer 3
  3. Der Mix aus 2 verschiedenen Speicher Versionen erhöht die Menge an code, der in den Speicher geladen werden muss
  4. Der Webserver liefert eine angepasste UI speziell für den Speicher aus. Sollte sich eigentlich nicht negativ auf den Speicherverbrauch auswirken, aber die UI ist ein bisschen größer

Wäre noch gut zu sehen, was genau über die serielle Schnittstelle ausgegeben wird, wenn der ESP crashed. Normalerweise sollte er einen Stacktrace ausgeben.

knickohr commented 2 weeks ago

Im Log im ersten Beitrag ist einer drin :

[09:49:38]abort() was called at PC 0x401b6daa on core 0
[09:49:38]
[09:49:38]
[09:49:38]Backtrace: 0x4008247e:0x3ffed460 0x40091495:0x3ffed480 0x4009707a:0x3ffed4a0 0x401b6daa:0x3ffed510 0x401b595b:0x3ffed530 0x401b58c2:0x3ffed550 0x400d529d:0x3ffed570 0x400d535a:0x3ffed590 0x400d5399:0x3ffed5c0 0x400fa1a1:0x3ffed5e0 0x400fab59:0x3ffed600 0x40123e7a:0x3ffed620 0x40123e17:0x3ffed640
WARNING Found stack trace! Trying to decode it
WARNING Decoded 0x4008247e: panic_abort at /home/ubuntu/.platformio/packages/framework-espidf/components/esp_system/panic.c:408
WARNING Decoded 0x40091495: esp_system_abort at /home/ubuntu/.platformio/packages/framework-espidf/components/esp_system/esp_system.c:137
WARNING Decoded 0x4009707a: abort at /home/ubuntu/.platformio/packages/framework-espidf/components/newlib/abort.c:46
WARNING Decoded 0x401b6daa: __wrap__Unwind_Resume_or_Rethrow
WARNING Decoded 0x401b595b: __cxa_throw at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/gcc/libstdc++-v3/libsupc++/eh_throw.cc:90
WARNING Decoded 0x401b58c2: operator new(unsigned int) at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/gcc/libstdc++-v3/libsupc++/new_op.cc:54
WARNING Decoded 0x400d529d: __gnu_cxx::new_allocator<esphome::esp32_ble::BLEEvent*>::allocate(unsigned int, void const*) at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/ext/new_allocator.h:111
 (inlined by) std::allocator_traits<std::allocator<esphome::esp32_ble::BLEEvent*> >::allocate(std::allocator<esphome::esp32_ble::BLEEvent*>&, unsigned int) at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/alloc_traits.h:436
 (inlined by) std::_Deque_base<esphome::esp32_ble::BLEEvent*, std::allocator<esphome::esp32_ble::BLEEvent*> >::_M_allocate_node() at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/stl_deque.h:603
 (inlined by) void std::deque<esphome::esp32_ble::BLEEvent*, std::allocator<esphome::esp32_ble::BLEEvent*> >::_M_push_back_aux<esphome::esp32_ble::BLEEvent* const&>(esphome::esp32_ble::BLEEvent* const&) at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/deque.tcc:488
WARNING Decoded 0x400d535a: std::deque<esphome::esp32_ble::BLEEvent*, std::allocator<esphome::esp32_ble::BLEEvent*> >::push_back(esphome::esp32_ble::BLEEvent* const&) at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/stl_deque.h:1562
 (inlined by) std::queue<esphome::esp32_ble::BLEEvent*, std::deque<esphome::esp32_ble::BLEEvent*, std::allocator<esphome::esp32_ble::BLEEvent*> > >::push(esphome::esp32_ble::BLEEvent* const&) at /home/ubuntu/.platformio/packages/toolchain-xtensa-esp32/xtensa-esp32-elf/include/c++/8.4.0/bits/stl_queue.h:252
 (inlined by) esphome::esp32_ble::Queue<esphome::esp32_ble::BLEEvent>::push(esphome::esp32_ble::BLEEvent*) at /home/ubuntu/hm2500pub/config/.esphome/build/bc2500-1-ble-idf/src/esphome/components/esp32_ble/queue.h:30
WARNING Decoded 0x400d5399: esphome::esp32_ble::ESP32BLE::gap_event_handler(esp_gap_ble_cb_event_t, esp_ble_gap_cb_param_t*) at /home/ubuntu/hm2500pub/config/.esphome/build/bc2500-1-ble-idf/src/esphome/components/esp32_ble/ble.cpp:319
WARNING Decoded 0x400fa1a1: btc_gap_ble_cb_to_app at /home/ubuntu/.platformio/packages/framework-espidf/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c:70
WARNING Decoded 0x400fab59: btc_gap_ble_adv_pkt_handler at /home/ubuntu/.platformio/packages/framework-espidf/components/bt/host/bluedroid/btc/profile/std/gap/btc_gap_ble.c:625
WARNING Decoded 0x40123e7a: osi_thread_generic_event_handler at /home/ubuntu/.platformio/packages/framework-espidf/components/bt/common/osi/thread.c:425
 (inlined by) osi_thread_generic_event_handler at /home/ubuntu/.platformio/packages/framework-espidf/components/bt/common/osi/thread.c:418
WARNING Decoded 0x40123e17: osi_thread_run at /home/ubuntu/.platformio/packages/framework-espidf/components/bt/common/osi/thread.c:165
BuFisch commented 2 weeks ago

Hi, ich habe das gleiche Problem mit dem Wlan Abbrüche, habe zwei unterschiedlichen ESP32 versucht (ESP-32 Dev Kit C V4). Meine Frage ist: welches ESP32 Board ist das beste für dieses Projekt? Ich finde dieses Projekt genial weil man sehr einfach eine Konfiguration erstellen kann, kleiner Wehrmutstropfen gibt es, man muß nach der Erstellung in ESPHome die Gänsefüßchen bei WiFi Passwort und SSID entfernen wenn man mit secrets.yaml arbeitet. Ich habe mich auch schon mit der yaml von noone2k versucht aber scheitere auch mit WiFi Abbrüche bzw. der ESP32 hängt sich auf. Ich habe von BE COOL den BC-B2500 v1 und die Erweiterung BC-P2500. Grüße Burkhard

tomquist commented 2 weeks ago

Ich habe mit diesem hier gute Erfahrungen gemacht: https://www.amazon.de/dp/B0C6KN35L2?psc=1&ref=ppx_yo2ov_dt_b_product_details

Das board ist etwas Leistungsfähiger und hat daher keine Probleme mit crashes. Zu beachten ist, dass mit diesem board der Haken bei "Enable DIO Flash Mode" gesetzt werden muss.

BuFisch commented 2 weeks ago

Danke, ist bestellt. Bei Board bleibt esp32dev? und Variant bleibt auto?

tomquist commented 2 weeks ago

Nein, da es ein ESP32-s3 ist, muss board auf esp32-s3-devkitc-1 gesetzt werden. Du kannst mal variant auf auto setzen und wenn das nicht geht, dann sollte variant auf esp32s3 gesetzt werden. Außerdem hat das Teil 16MB ram, du kannst also die flash size auf 16MB stellen (wobei das glaube ich nicht zwingend notwendig ist).

knickohr commented 2 weeks ago

Ohne jetzt sarkastisch zu klingen und irgendjemand schlecht zu machen : Muß das wirklich ein S3 N16R8 sein ?

Das ist ja schon ein gewaltiger Brummer !

Und ja, die generierte Version bootete in 2 Tagen öfters als die „alte“ noone2k-yaml über mehrere Wochen. Ich werde aber trotzdem mal ein S3 besorgen, möchte nur gerne einen mit externer Antenne in es nochmal versuchen. Momentan bin ich halt wieder zurück auf der alten.

tomquist commented 2 weeks ago

Ja, wie gesagt enthält das generierte Script einige Dinge, die es in der config von noone2k nicht gibt, von dem her ist das nicht 1:1 vergleichbar. Man muss auch dazu sagen, dass die die config so wie sie ist auch schon extrem groß ist und gleich 2 Komponenten nutzt, bei denen ESPHome offiziell warnt, dass sie sehr viel Speicher benötigen (BLE stack & webserver) von dem her ist es nicht verwunderlich, dass die kleineren Boards das nicht verkraften. Ist auch ein Kompromiss zwischen mehr features und 1,50€ mehr bezahlen für ein größeres Board.

Ich kann mal versuchen die cell voltages aus den entities wieder zu entfernen und stattdessen direkt in MQTT zu schreiben, evtl. zusammengefasst in ein JSON object. Würde mich auch mal interessieren, ob es hilft, die cell queries auszuschalten. Eventuell kann das mal jemand testen.

knickohr commented 2 weeks ago

Nicht falsch verstehen, es geht hier nicht um 1,50€ oder so.

Es hat mich halt erschreckt das die alte yaml mit Webserver und Cellquery stabiler rennt als die generierte Version wo ich bereits den Webserver abgeschaltet habe. Aber wie Du schon schreibst, es wird wohl an den Entities liegen.

Ich würde auch die anderen Speicherdaten in ein weiteres JSON schreiben 😉

azazul1980 commented 2 weeks ago

Ja bitte abändern mein Bord steigt doch öfters aus am tag

tomquist commented 2 weeks ago

Ich kann mir das anschauen, sobald ich eine Bestätigung habe, dass das Abschalten der cell-queries die Abstürze verhindert. Will erstmal nicht so viel Zeit investieren, wenn es am Ende das Problem nicht beseitigt.

azazul1980 commented 2 weeks ago

Sorry die Cellquery ist bei mir gar nicht aktiv. Ich habe nur die Timer Aktiviert und das OTA.

tomquist commented 2 weeks ago

@azazul1980 Ist bei dir der Webserver aktiv?

azazul1980 commented 2 weeks ago

Ne habe ich nicht IMG_6257

azazul1980 commented 2 weeks ago

IMG_6258

BuFisch commented 1 week ago

also mit dem empfohlenen Board läuft bei mir jetzt alles bestens, habe nach etwa 9 Stunden einen reboot des Speichers über WEB angeschubst und hat sich sofort wieder connected kein einen Abbruch oder Hänger

BuFisch commented 1 week ago

uptime