Webradio führt teilweise zu einem freeze

Hallo zusammen,

ich hab seit kurzem das Problem, dass das Starten von Webstreams sehr häufig dazu führt, dass der ESP einfach nichts mehr macht, bzw. fast nichts, die LED’s drehen lustig weiter, aber z.B. der Sleep Button tut nicht mehr, Karten werden nicht erkannt, per WLAN verbinden geht nicht usw. Die Probleme sind erst mit der refactoring firmware aufgetreten, aber kann nicht sagen ob das ein Zusammenhang hat.

In der Konfiguration hab ich:

#define MDNS_ENABLE 
#define NEOPIXEL_ENABLE 
#define LANGUAGE 1  
#define PLAY_MONO_SPEAKER 
#define SHUTDOWN_IF_SD_BOOT_FAILS 
#define PLAY_LAST_RFID_AFTER_REBOOT 
#define BLUETOOTH_ENABLE 

Das ist die Ausgabe wenn es hängt:

rst:0x5 (DEEPSLEEP_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
Maximale Inaktivitätszeit wurde aus NVS geladen: 30
Initiale LED-Helligkeit wurde aus NVS geladen: 30
LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2

  _____   ____    ____            _                 
 | ____| / ___|  |  _ \   _   _  (_)  _ __     ___  
 |  _|   \__  \  | |_) | | | | | | | | '_ \   / _ \
 | |___   ___) | |  __/  | |_| | | | | | | | | (_) |
 |_____| |____/  |_|      \__,_| |_| |_| |_|  \___/ 
 Rfid-controlled musicplayer

 Rev 20210502-1

Wakeup caused by push button
Versuche SD-Karte wird im SD_MMC-Modus (1 Bit) zu mounten...
SD card type: SDHC
FTP-User wurde aus NVS geladen: esp32
FTP-Passwort wurde aus NVS geladen: esp32
Initiale Lautstärke wurde aus NVS geladen: 8
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 8
Hostname aus NVS geladen: radio
.Aktuelle IP: 192.168.11.184
Freier Heap-Speicher nach Setup-Routine: 135196
PSRAM: 4194204 bytes
Firmware version=4.1
RFID-Tags koennen jetzt gescannt werden...
Letzte RFID wurde aus NVS geladen: 228255109040
RFID-Karte empfangen: 228255109040
Modus: Webstream
Neue Playlist empfangen mit 1 Titel(n)
Free heap: 116204
info        : buffers freed, free Heap: 116204 bytes
info        : Connect to new host: "http://metafiles.gl-systemhaus.de/hr/hr3_2.m3u"
info        : Connect to "metafiles.gl-systemhaus.de" on port 80, extension "/hr/hr3_2.m3u"
info        : Connected to server in 81 ms
info        : Read from playlist
info        : Playlistheader: HTTP/1.1 200 OK
info        : Playlistheader: Accept-Ranges: bytes
info        : Playlistheader: Content-Type: audio/x-mpegurl
info        : Playlistheader: ETag: "3116a7f7531521df08a374bc20b55d1a:1507125291"
info        : Playlistheader: Last-Modified: Wed, 04 Oct 2017 13:54:50 GMT
info        : Playlistheader: Server: AkamaiNetStorage
info        : Playlistheader: Content-Length: 66
info        : Playlistheader: Expires: Sat, 29 May 2021 12:34:08 GMT
info        : Playlistheader: Cache-Control: max-age=0, no-cache, no-store
info        : Playlistheader: Pragma: no-cache
info        : Playlistheader: Date: Sat, 29 May 2021 12:34:08 GMT
info        : Playlistheader: Connection: close
info        : Playlistheader: Access-Control-Max-Age: 86400
info        : Playlistheader: Access-Control-Allow-Credentials: false
info        : Playlistheader: Access-Control-Allow-Headers: *
info        : Playlistheader: Access-Control-Allow-Methods: GET,POST
info        : Playlistheader: Access-Control-Allow-Origin: *
info        : Playlistheader: Content-Type: audio/x-mpegurl
info        : Switch to PLAYLISTDATA
info        : Playlistdata: http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3
info        : Entry in playlist found: http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3
info        : buffers freed, free Heap: 114844 bytes
info        : Connect to new host: "http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3"
info        : Connect to "hr-hr3-live.cast.addradio.de" on port 80, extension "/hr/hr3/live/mp3/128/stream.mp3"
info        : Connected to server in 70 ms
info        : HTTP/1.1 302 Found
info        : server: nginx
info        : date: Sat, 29 May 2021 12:34:08 GMT
info        : Content-Length: 0
info        : access-control-allow-origin: *
info        : access-control-allow-headers: Origin, Accept, X-Requested-With, Content-Type
info        : access-control-allow-methods: GET, OPTIONS, HEAD
info        : redirect to new host "http://hr-edge-3049-dus-ts-cdn.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MDQ4JnM9Nzg
info        : buffers freed, free Heap: 114608 bytes
info        : Connect to new host: "http://hr-edge-3049-dus-ts-cdn.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MDQ4JnM9Nzg
info        : Connect to "hr-edge-3049-dus-ts-cdn.cast.addradio.de" on port 80, extension "/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MDQ
info        : Connected to server in 48 ms
info        : HTTP/1.0 403 Account already in use
info        : Stream lost -> try new connection
info        : buffers freed, free Heap: 114920 bytes
info        : Connect to new host: "hr-edge-3049-dus-ts-cdn.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MDQ4JnM9Nzg2NmYyOW
info        : Connect to "hr-edge-3049-dus-ts-cdn.cast.addradio.de" on port 80, extension "/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MDQ
info        : Connected to server in 37 ms

Oder hier:

rst:0x5 (DEEPSLEEP_RESET),boot:0x12 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:10124
load:0x40080400,len:5828
entry 0x400806a8
Maximale Inaktivitätszeit wurde aus NVS geladen: 30
Initiale LED-Helligkeit wurde aus NVS geladen: 30
LED-Helligkeit für Nachtmodus wurde aus NVS geladen: 2

  _____   ____    ____            _                 
 | ____| / ___|  |  _ \   _   _  (_)  _ __     ___  
 |  _|   \__  \  | |_) | | | | | | | | '_ \   / _ \
 | |___   ___) | |  __/  | |_| | | | | | | | | (_) |
 |_____| |____/  |_|      \__,_| |_| |_| |_|  \___/ 
 Rfid-controlled musicplayer

 Rev 20210502-1

Wakeup caused by push button
Versuche SD-Karte wird im SD_MMC-Modus (1 Bit) zu mounten...
SD card type: SDHC
FTP-User wurde aus NVS geladen: esp32
FTP-Passwort wurde aus NVS geladen: esp32
Initiale Lautstärke wurde aus NVS geladen: 8
Maximale Lautstärke für Lautsprecher wurde aus NVS geladen: 8
Hostname aus NVS geladen: radio
.Aktuelle IP: 192.168.11.184
Freier Heap-Speicher nach Setup-Routine: 135336
PSRAM: 4194204 bytes
Firmware version=4.1
RFID-Tags koennen jetzt gescannt werden...
Letzte RFID wurde aus NVS geladen: 228255109040
RFID-Karte empfangen: 228255109040
Modus: Webstream
Neue Playlist empfangen mit 1 Titel(n)
Free heap: 116336
info        : buffers freed, free Heap: 116240 bytes
info        : Connect to new host: "http://metafiles.gl-systemhaus.de/hr/hr3_2.m3u"
info        : Connect to "metafiles.gl-systemhaus.de" on port 80, extension "/hr/hr3_2.m3u"
info        : Connected to server in 359 ms
info        : Read from playlist
info        : Playlistheader: HTTP/1.1 200 OK
info        : Playlistheader: Accept-Ranges: bytes
info        : Playlistheader: Content-Type: audio/x-mpegurl
info        : Playlistheader: ETag: "3116a7f7531521df08a374bc20b55d1a:1507125291"
info        : Playlistheader: Last-Modified: Wed, 04 Oct 2017 13:54:50 GMT
info        : Playlistheader: Server: AkamaiNetStorage
info        : Playlistheader: Content-Length: 66
info        : Playlistheader: Expires: Sat, 29 May 2021 12:36:03 GMT
info        : Playlistheader: Cache-Control: max-age=0, no-cache, no-store
info        : Playlistheader: Pragma: no-cache
info        : Playlistheader: Date: Sat, 29 May 2021 12:36:03 GMT
info        : Playlistheader: Connection: close
info        : Playlistheader: Access-Control-Max-Age: 86400
info        : Playlistheader: Access-Control-Allow-Credentials: false
info        : Playlistheader: Access-Control-Allow-Headers: *
info        : Playlistheader: Access-Control-Allow-Methods: GET,POST
info        : Playlistheader: Access-Control-Allow-Origin: *
info        : Playlistheader: Content-Type: audio/x-mpegurl
info        : Switch to PLAYLISTDATA
info        : Playlistdata: http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3
info        : Entry in playlist found: http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3
info        : buffers freed, free Heap: 115248 bytes
info        : Connect to new host: "http://hr-hr3-live.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3"
info        : Connect to "hr-hr3-live.cast.addradio.de" on port 80, extension "/hr/hr3/live/mp3/128/stream.mp3"
info        : Connected to server in 44 ms
info        : HTTP/1.1 302 Found
info        : server: nginx
info        : date: Sat, 29 May 2021 12:36:03 GMT
info        : Content-Length: 0
info        : access-control-allow-origin: *
info        : access-control-allow-headers: Origin, Accept, X-Requested-With, Content-Type
info        : access-control-allow-methods: GET, OPTIONS, HEAD
info        : redirect to new host "http://hr-edge-204a-fra-lg-cdn.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MTYzJnM9Nzg
info        : buffers freed, free Heap: 115012 bytes
info        : Connect to new host: "http://hr-edge-204a-fra-lg-cdn.cast.addradio.de/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MTYzJnM9Nzg
info        : Connect to "hr-edge-204a-fra-lg-cdn.cast.addradio.de" on port 80, extension "/hr/hr3/live/mp3/128/stream.mp3?_art=dj0yJmlwPTEwOS4yNTAuMjUwLjk0JmlkPWljc2N4bC1mM29qeGpsbGImdD0xNjIyMzc4MTY
info        : Connected to server in 63 ms

Ca. jeder zweite Versuch schlägt fehl, manchmal dauert es auch nur länger bis der Stream startet, oft bleibt der ESP aber einfach hängen.

Habt ihr eine Idee woran das liegen könnte? Kann natürlich auch sein, dass an dem Webstream etwas geändert wurde… Aber zumindest der ESP sollte dann ja nicht hängen.

Ich lehne mich mal weit aus dem Fenster und behaupte, dass der ESPuino unschuldig ist :rofl:. Also es ist so, dass der Status von der Lib von @Wolle von ESPuino ausgewertet wird. Das habe ich auch schon öfter gesehen, dass ein Stream abgerissen ist und der ESPuino dann wieder in den Status idle zurückgeht. Ursprünglich war das nicht so, das habe ich erst vor ein paar Monaten hinzugefügt (war aber auch dringend notwendig). Also meine Vermutung ist an dieser Stelle, dass die Lib den Abriss nicht erkennt.

Ich hab jetzt mit beiden Versionen (master und refactoring) einige Tests gemacht: bei der Masterversion findet bei Webstreams zuverlässig ein Reconnect statt, bei Problemen Stream lost -> try new connection, bei der refactoring Version leider i.d.R. nicht.
Wie kann ich herausfinden, welche Version der Lib von @Wolle genutzt wird? Sind da ggf. unterschiedliche Versionen mit den Branches verknüpft?

Das ist bisher nicht fest verknüpft. D.h. in Platformio.ini wird auf den Master-Branch der Lib referenziert, aber nicht eine spezielle Version festgepinnt.

Welche Version verwendet wurde kriegst du ggf. über .pio/libdeps raus (das befindet sich im Verzeichnis von ESPuino lokal bei dir auf dem Rechner).

1 Like

Die Funktion „Stream lost“ gibt es schon sehr lange um einen 24/7 Webradiobetrieb zu gewährleisten. Sie wird ausgelöst, wenn mehrere Sekunden keine Daten vom Host empfangen werden. Dann werden die Buffer und der Dekoder zurückgesetzt und die Verbindung neu aufgenommen. Das funktioniert nur wenn die physikalische Verbindung noch existiert. Bei einer guten Internetverbindung wird „Stream lost“ sehr selten aktiviert.