Webradio Tag bei Startup Spielt nicht

Aus meiner Sicht ist das Thema gefixt - hab’s getestet:

Habe mir jetzt (zum ersten Mal bei ESPuino) Claude zu Hilfe genommen. Das werde ich jetzt öfter mal machen :slight_smile:

@Chris_KA Ich hoffe du bist mir jetzt nicht böse, dass ich das quasi „hijackt“ habe. Größtenteils ist Claude deinem Fix gefolgt.

Problem

Ein Webradio-Tag, das beim Booten aufliegt (physisch oder via Auto-Replay PLAY_LAST_RFID_AFTER_REBOOT), spielt nicht — weil das WLAN zum Zeitpunkt der Tag-Verarbeitung noch nicht verbunden ist. Der vorhandene Retry-Mechanismus war für genau diesen Fall toter Code (er hing an gTriedToConnectToHost, das nur gesetzt wird, wenn connecttohost() überhaupt erreicht wird — was im Fehlerfall nie passiert).

Fixes (2 zusammenhängende)

1. Retry nach WLAN-Connect

  • Scheitert ein Webstream mangels WLAN, wird der Tag gemerkt (gRetryRfidTagId) und gRetryRfidOnWifiConnect gesetzt.
  • Sobald WLAN steht, wird der Tag erneut in die RFID-Queue gelegt — nur wenn nichts anderes läuft, mit geprüftem xQueueSend (Fehlschlag wird geloggt statt still verworfen).
  • Funktioniert unabhängig vom Reboot-Feature und deckt auch m3u-Webstreams ab.
  • Der alte, kaputte Mechanismus (gPlayLastRfIdWhenWiFiConnected/gTriedToConnectToHost) wurde entfernt.

2. DONT_ACCEPT_SAME_RFID_TWICE-Lockout

  • Die Sperre wird jetzt beim Akzeptieren des Tags scharfgeschaltet statt erst bei aktiver Wiedergabe. Sonst bliebe ein Tag mit sofort scheiterndem ersten Track für immer gesperrt — was auch Fix 1 blockiert hätte.

Zwei Abweichungen vom Forums-Vorschlag (durch Code-Analyse erzwungen)

  • Retry nutzt gCurrentRfidTagId statt gPlayProperties.playRfidTag (letzteres ist auf dem Fehlerpfad nie gesetzt).
  • Idle-Check + Rückgabewert-Prüfung beim Re-Enqueue.