ESPuino Release V2.2

In (un)regelmäßigen Abständen werden die Entwicklungen aus dem experimentellen DEV-Branch in den Master übernommen. Jetzt ist es mal wieder soweit

ESPuino Version 2.2 (17.01.2024):

  • Viele bisher nicht abspielbare Audiodateien werden nun abgespielt
  • Anzeige des Titelfortschritts mit Sprungmöglichkeit im Webinterface
  • Suchfunktion für Audiodateien im Webinterface
  • Dokumentation der REST-API-Schnittstelle
  • Kritische Batterie-Abschaltspannung im Webinterface einstellbar
  • Aufwecken auch mit ISO-15693 Karten (LPCD)
  • Ungültige Einträge einer M3U-Playlist werden übersprungen
  • Fehler behoben, der den Neustart der SD-Karte verhindern konnte

und weitere Verbesserungen& Bugfixes (Changelog)

Download:

Vielen Dank an alle Beteiligten!

12 „Gefällt mir“

Vielen Dank für die Arbeit am ESPuino.

Seit dem Update ruckelt bei mir die Wiedergabe.

Am Ram sollte es nicht liegen oder?

Bildschirmfoto vom 2024-01-20 12-22-32

Meine Hardware ist folgende Platine: ESPuino-mini 4Layer - #32 von joker mit ESP32-Develboard "D32 pro LiFePO4" und PN5180 mit LPCD.

Schaut mal in die espuino/stats wie viel Prozent der mp3task einnimmt.
Ich hatte das Verhalten mal im dev und konnte die Ursache nicht bestimmen https://forum.espuino.de/t/dev-branch/1835/525
Gelöst hatte es sich dann von selbst nach dem nächsten Update (obwohl da keine besonderen Änderungen stattgefunden haben)

Wie genau ruckelt es? Immer? Oder nur zu Beginn? Bei welchen Dateiformaten? Kommt das Ruckeln auch vor, wenn du nicht die Web-Oberfläche an hast?

Schließe mich an. Auch das D32 pro mit Mini layer 4 und 5180 Reader aber ohne lcpd
Weiter ist mit aufgefallen, dass die Wiedergabe ab und an wieder von alleine anläuft obwohl ich den Tag runter genommen habe (pause in tag remove) entsprechend an in den settings.

Komme aber von der Version von Asbach Uralt irgendwo Anfang 23 oder Ende 22.

@sfields
Hier bei MP3 und m4a. Spielt keine Rolle welches davon. Auch die lange oä sind egal. Durchgängig während des abspielens. Habs nicht gemessen aber klingt fast schon zyklisch.

Edit3:
Ist nicht zyklisch. Zwischen 3 und 17 Sekunden. Auch ohne webui.

So circa 10 Sekunden nach dem reboot

Ich verwende die gleiche Hardware & schließe das als Ursache aus.
Könnt Ihr mal die (abweichenden) settings hier zeigen? Evt. wäre auch ein MP3 Beispiel für die Fehlersuche hilfreich (Bitte kein Weihnachtslied).

Ich kopier die defines später rein.

Vermute aber, dass irgendwas mit dem PN5180 passiert ist.

Naheliegender weise hab ich mal in den log geschaut.

[121479] RFID-Karte erkannt: 36-05-c3-c6
N [121479] Card type: ISO-14443
N [121479] RFID-Karte erneut aufgelegt
I [121484] Kontroll-Kommando empfangen via Queue: 3
I [121484] Kommando: Fortsetzen
N [123295] RFID-Karte wurde entfernt
I [123299] Kontroll-Kommando empfangen via Queue: 3
I [123299] Kommando: Pause
N [123543] RFID-Karte erkannt: 36-05-c3-c6
N [123543] Card type: ISO-14443
N [123543] RFID-Karte erneut aufgelegt
I [123544] Kontroll-Kommando empfangen via Queue: 3
I [123555] Kommando: Fortsetzen
N [129303] RFID-Karte wurde entfernt
I [129303] Kontroll-Kommando empfangen via Queue: 3
I [129304] Kommando: Pause
N [131440] RFID-Karte erkannt: 36-05-c3-c6
N [131440] Card type: ISO-14443
N [131440] RFID-Karte erneut aufgelegt
I [131443] Kontroll-Kommando empfangen via Queue: 3
I [131454] Kommando: Fortsetzen

Ich schraub den Espuino mal auf und schau ob irgendwo irgendwo was verrutscht ist

Edit:

	#define PORT_EXPANDER_ENABLE          // When enabled, buttons can be connected via port-expander PCA9555 (https://forum.espuino.de/t/einsatz-des-port-expanders-pca9555/306)
	//#define I2S_COMM_FMT_LSB_ENABLE       // Enables FMT instead of MSB for I2S-communication-format. Used e.g. by PT2811. Don't enable for MAX98357a, AC101 or PCM5102A)
	#define MDNS_ENABLE                     // When enabled, you don't have to handle with ESPuino's IP-address. If hostname is set to "ESPuino", you can reach it via ESPuino.local
	//#define MQTT_ENABLE                   // Make sure to configure mqtt-server and (optionally) username+pwd
	#define FTP_ENABLE                      // Enables FTP-server; DON'T FORGET TO ACTIVATE AFTER BOOT BY PRESSING PAUSE + NEXT-BUTTONS (IN PARALLEL)!
	#define NEOPIXEL_ENABLE                 // Don't forget configuration of NUM_LEDS if enabled
	//#define NEOPIXEL_REVERSE_ROTATION     // Some Neopixels are adressed/soldered counter-clockwise. This can be configured here.
	#define LANGUAGE DE                     // DE = deutsch; EN = english
	//#define STATIC_IP_ENABLE              // DEPRECATED: Enables static IP-configuration (change static ip-section accordingly)
	#define HEADPHONE_ADJUST_ENABLE         // Used to adjust (lower) volume for optional headphone-pcb (refer maxVolumeSpeaker / maxVolumeHeadphone) and to enable stereo (if PLAY_MONO_SPEAKER is set)
	#define PLAY_MONO_SPEAKER             // If only one speaker is used enabling mono should make sense. Please note: headphones is always stereo (if HEADPHONE_ADJUST_ENABLE is active)
	#define SHUTDOWN_IF_SD_BOOT_FAILS       // Will put ESP to deepsleep if boot fails due to SD. Really recommend this if there's in battery-mode no other way to restart ESP! Interval adjustable via deepsleepTimeAfterBootFails.
	#define MEASURE_BATTERY_VOLTAGE         // Enables battery-measurement via GPIO (ADC) and voltage-divider
	//#define MEASURE_BATTERY_MAX17055      // Enables battery-measurement via external fuel gauge (MAX17055)
	#define SHUTDOWN_ON_BAT_CRITICAL      // Whether to turn off on critical battery-level (only used if MEASURE_BATTERY_XXX is active)
	//#define PLAY_LAST_RFID_AFTER_REBOOT   // When restarting ESPuino, the last RFID that was active before, is recalled and played
	//#define USE_LAST_VOLUME_AFTER_REBOOT  // Remembers the volume used at last shutdown after reboot
	//#define USEROTARY_ENABLE                // If rotary-encoder is used (don't forget to review WAKEUP_BUTTON if you disable this feature!)
	#define BLUETOOTH_ENABLE                // If enabled and bluetooth-mode is active, you can stream to your ESPuino or to a headset via bluetooth (a2dp-sink & a2dp-source). Note: This feature consumes a lot of resources and the available flash/ram might not be sufficient.
	//#define IR_CONTROL_ENABLE             // Enables remote control (https://forum.espuino.de/t/neues-feature-fernsteuerung-per-infrarot-fernbedienung/265)
	#define PAUSE_WHEN_RFID_REMOVED       // Playback starts when card is applied and pauses automatically, when card is removed (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	#define PAUSE_ON_MIN_VOLUME           // When playback is active and volume is changed to zero, playback is paused automatically. Playback is continued if volume reaches 1. (https://forum.espuino.de/t/neues-feature-pausieren-wenn-rfid-karte-entfernt-wurde/541)
	//#define DONT_ACCEPT_SAME_RFID_TWICE   // RFID-reader doesn't accept the same RFID-tag twice in a row (unless it's a modification-card or RFID-tag is unknown in NVS). Flag will be ignored silently if PAUSE_WHEN_RFID_REMOVED is active. (https://forum.espuino.de/t/neues-feature-dont-accept-same-rfid-twice/1247)
	#define SAVE_PLAYPOS_BEFORE_SHUTDOWN  // When playback is active and mode audiobook was selected, last play-position is saved automatically when shutdown is initiated
	#define SAVE_PLAYPOS_WHEN_RFID_CHANGE // When playback is active and mode audiobook was selected, last play-position is saved automatically for old playlist when new RFID-tag is applied
	//#define HALLEFFECT_SENSOR_ENABLE      // Support for hallsensor. For fine-tuning please adjust HallEffectSensor.h Please note: only user-support provided (https://forum.espuino.de/t/magnetische-hockey-tags/1449/35)
	#define VOLUMECURVE 0 					// 0=square, 1=logarithmic (1 is more flatten at lower volume)

Edit2:

Habs jetzt ohne die PAUSE_WHEN_RFID_REMOVED kompiliert. Legt man die rfid auf und nimmt sie runter stottert nichts mehr.
Legt man sie auf und lässt sie drauf, dann wird immer wieder neu begonnen. Zumindest in meinem Fall scheint hier also das immer wieder lesen und rfid verlieren das Thema zu sein.

Das ist sehr sicher der selbe Fall wie neulich.
Abhängig vom Code kommt es vermutlich zu Cache-misses, auch weil wir das RTOS im Flash haben.
Wer ein aktuelles Board hat kann aber auch einfach die min. Revision in der sdkconfik.defaults auf 3 stellen. Das ist auf einem Schlag viel Speicher frei und man kann zusätzlich auch die Option von RTOS (places functions into Flash) deaktivieren…
Dann sollte es egal sein, ob diese Optionen aktiviert werden oder nicht.
RFID-issues wären eher im 1s Takt.

PS: die Option „don’t accept same rfid twice“ ist sehr hilfreich bei schlechtem RFID empfang…

Läuft dann die Musik wieder an wenn man den selben RFID-tag wieder auflegt?
Da ich nicht ganz so heimisch bin in platformio… Wo/wie wird den die rtos deaktiviert?

CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=n oder auskommentieren mit # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y

Und just to be safe…
Mit min rev auf 3 stellen meinst du
CONFIG_ESP32_REV_MIN=3
in der sdkconfig.defaults ergänzen, korrekt ?

Hier die Änderungen, die notwendig sind:
grafik

Also einmal mit „#“ auskommentieren und einmal die Option „CONFIG_ESP32_REV_MIN_3=y“.

Das mit dem „Don’t accept same RFID twice“ hilft bei schlechtem Abstand zum reader, dass ungewolltes ernetes triggern nicht mehr stattfinded. Wird aber wahrscheinlich in Konflikt mit dem „Pause when removed“ stehen.

Was alternativ ebenfalls beim Stottern helfen kann ist den Audiotask über „IRAM_ATTR“ ins IRAM zu schieben.
Die Zeile im Audioplayer.cpp würde dann entsprechend so aussehen:

void IRAM_ATTR AudioPlayer_Task(void *parameter) {
1 „Gefällt mir“

Kompiliere gerade noch und flash dann mal die Version mit den Anpassungen an der sdkconfig.defaults

Edit:
Leider nichts. Ich versuchs morgen noch mit deinem zweiten Tipp.

Probleme mit Audio-Ruckeln gab es bereits während der Entwicklung im DEV-Branch. Ich war jetzt davon ausgegangen das Alles soweit funktioniert und wir haben das ja noch einige Zeit laufen lassen für weitere Tests.

Aber mit den obigen Settings kann ich die Aussetzer jetzt auch bestätigen. Wer diese Settings verwendet sollte mit dem Umstieg noch warten bis das Problem gelöst ist.

Das ist sehr spannend, war mir sicher, dass das die Sache lösen kann. Muss ich mir genauer anschauen.
Kannst du das „ruckeln“ noch näher beschreiben oder eine Audio-Aufnahme davon erstellen?

Klar. Ich kompiliere es morgen wenn ich wieder zuhause bin mit dem 2. Teil deines Vorschlags und wenn es da Aussetzer gibt, dann kann ich ein Audiofile dazu machen.

Klingt wie wenn jemand den rfid runter nimmt und gleich wieder drauf setzt. Mal quasi kurz weg und mal als ob er ihn sich ne Sekunde anschaut und dann wieder drauf setzt.

Okay, dann ist es was anderes als das Problem das ich dachte. Dann war ich auf der falschen super. Sorry.

Bei mir funktioniert es jetzt, nachdem ich zur alten Version zurück gewechselt bin und dann die 2.2 nochmal neu aufgespielt habe. Ich habe dann ein wenig an den Einstellungen herumgespielt und dabei ist manchmal wieder aufgetreten. Auch bei den gleichen Settings. Ich habe die Binaries nicht verglichen, kann also nicht sagen, ob es am Kompilieren oder Aufspielen liegen könnte.

@Joe91 deine Änderungen probiere ich mal aus, tatsächlich funktioniert mein RFID nämlich nicht zuverlässig (mit PAUSE_WHEN_RFID_REMOVED)

…tatsächlich funktioniert mein RFID nämlich nicht zuverlässig (mit PAUSE_WHEN_RFID_REMOVED)

Wenn Dein PN5180 Leser die Karte schlecht erkennt: Prüfe alle Lötverbindungen, insbesondere die Buchse zu Platine, halte die Leitungen kurz und Störquellen wie Metall/Magnete & auch den ESP-32 selbst fern von der Antenne.
Du kannst auch noch den 5V Pin des PN5180 mit einer Spannung von 5V beschalten, jetzt hat der nur 3,3V. Eine höhere Spannung erhöht die RF-Reichweite. Die Leseweite sollte ohne Gehäuse ungefähr 10cm betragen. ISO-15693 Karten sind zuverlässiger als die Standard ISO-14443 Karten.
Ich hatte auch schon Karten von AZ-Delivery die schlecht erkannt wurden. Hab einfach die nächste aus dem 20er Pack genommen und Alles war gut.

Das sind gute Tipps, danke! Muss ich mal ausprobieren, wenn ich den ESPuino mal wieder aufschraube.
Karten funktionieren sogar sehr gut. Ich brauche leider Tags die kleiner gleich 30cm Durchmesser sind, da muss ich mich wohl noch etwas durchprobieren.
Ich habs mir noch nicht genauer angesehen, aber könnte man im Code einen „debounce“ einbauen, also erst bei 2x nicht Erkennen pausieren?

Ich habe das Gefühl, dass es durch die Änderungen von @Joe91 besser geworden ist, aber vielleicht bilde ich mir das ein. Mache den Modus erstmal wieder aus.

Kannst die Tags dann auch gleich zum Pizza backen nehmen duck und weg

2 „Gefällt mir“

Ich habe jetzt remote das ganze gemacht. Hat mich nicht los gelassen.
Laut meiner Frau ist es damit besser geworden. Aber noch nicht weg.

Das Audiofile bringt nicht viel… Im hoerbuch bekommt man den Aussetzer nicht so super mit.

Ich mach dann morgen selbst noch mit nem Musikfile.

@tueddy machts Sinn den PN5180 mit 3v3 anzusteuern? Die liegen quasi eh schon oben an den Buttons.
In der lipo Version gibt’s ja auch nirgends 5v die man nutzen könnte, oder hab ich was übersehen?