Dev-Branch

Der Code schaut gut aus, aber es gab einige Punkte. C++ (und alle mondernen gcc’s, also auch avr-gcc) hat ein Data Type bool, es gibt keinen guten Grund boolean von Arduino zu verwenden (Arduino selbst empfiehlt bool :wink: ). Rad neuerfinden und type safety und so :slight_smile: .

Hab die Variablen auch noch const gemacht, um den Compiler mit der Nase drauf zu stoßen, dass die Variablen wegzuoptimiert werden können.

// If error occured: move to the next track in the playlist
const bool activeMode = (gPlayProperties.playMode != NO_PLAYLIST && gPlayProperties.playMode != BUSY);
const bool noAudio = (!audio->isRunning() && !gPlayProperties.pausePlay);
const bool timeout = ((millis() - playbackTimeoutStart) > playbackTimeout); 
if (activeMode) { 
	// we check for timeout
	if (noAudio && timeout) {
		// Audio playback timed out, move on to the next
		System_IndicateError();
		gPlayProperties.trackFinished = true;
		playbackTimeoutStart = millis();
	}
} else {
	// we are idle, update timeout so that we do not get a spurious error when launching into a playlist
	playbackTimeoutStart = millis();
}

Funktioniert bei mir ohne Auffälligkeiten. Läuft mit der m3u und den Playlists über RFID & Web-UI.

4 „Gefällt mir“

Ich habe schlecht geschlafen und bisschen krank bin ich auch noch…

aber wie kann da const funktionieren?
Die Werte können doch nicht zur Compilezeit bekannt sein ?!

Hi,
const ist nicht constexpr (das sind Variablen dessen Inhalt zu Compile-Zeit bekannt ist). Const sagt dem Compiler, dass die Variable zur Laufzeit nur 1x gesetzt wird und ihr Inhalt sich danach nie ändern wird (basically es ist eine read-only Variable).

Der Compiler wird sich auch Beschweren (mit error, also Beschweren mit großem B :smiley: ), wenn du versucht den Inhalt einer const Variable zu modifizieren.

1 „Gefällt mir“

aha danke für die Erleuchtung…

So, bin mit den Audio-Issues nochmal weitergekommen. War bei mir direkt mit dem aktuellen Dev-wieder so, dass es die Audio-Artefakte gab (super langsame / stotternde Wiedergabe).
Dieses mal waren die Änderungen am loop-Task irrevelvant und auch eine höhere Prio des Audio-Tasks hat nichts gebracht.

Folgende Dinge habe ich festgestellt:

  • Wenn man die Ques im Audio-Task nur minimal warten lässt, verstärkt sich das Problem um ein vielfaches
  • der call audio->loop() verträgt scheinbar keine verzögerungen mehr

Nachdem ich den audio->loop() call in einen separaten Task gepackt habe, der nur diesen Call beinhaltet, und den Rest in der Prio reduziert, läuft der Ton bei mir wieder normal. Kann es eventuell sein, dass die audio->loop() immer hungriger und intoleranter gegenüber delay geworden ist?
Bin der Meinung wir müssen hier was tun, weiß nur nicht was die beste Lösung ist…
Muss diese ganze Sache auch noch evaluieren. Das letzte Mal hat es auch nach was anderem ausgesehen, dass es offensichtlich aber nicht war :wink:

Update: tatsächlich bringt das nur was in Kombination mit Änderungen in der main-loop, wenn dort die Gesamtlast reduziert wird… Super stange das ganze…

Update2: wenn man den TCP-Async-Task auf Core 0 schiebt, ist das Phänomen ebenfalls deutlich schwächer / die Situation besser…

Neue Software im DEV-Branch verfügbar: 20231229-1-DEV :

  • Offizielles PlatformIO package 6.5.0 (Arduino 2.0.14, ESP-IDF 4.4.6)
  • Aktualisierte Audiobibliothek, gibt unseren Tasks mehr CPU-Zeit
  • Optimierter Port-Expander Zugriff
  • Nach dem Laden der Weboberfläche ist der Root vorausgewählt um die verwirrende Meldung „Wähle den Ordner für den Upload!“ zu vermeiden
  • Kritische Batteriespannung für’s Abschalten kann in der Weboberfläche eingestellt werden
  • Bugfix 1: DONT_ACCEPT_SAME_RFID_TWICE_ENABLE and web frontend
  • Erweitertes Task-Debugging. /stats enthält jetzt Infos über freien Heapspeicher und die Überschriften der Taskauflistung.
    Ein neuer Endpunkt /debug der diese Infos als JSON zurückibt.
    Kommando PRINT_TASK_STATS zur Ausgabe im seriellen Monitor
  • Anzeige der zugewiesenen RFID-Tag ist nicht mehr abgeschnitten nach ca. 60 Einträgen / 8KB
  • Neuer Endpunkt /rfid/ids-only liefert nur die gespeicherten Tag-Namen zurück ohne Details.
  • Bei Webstreams wird das Stationslogo angezeigt sofern verfügbar.
  • Bei Webstreams wird der Füllpuffer angezeugt.
  • Bei Webstream Dropouts erscheint Toast.Meldung „Langsamer Stream, Aussetzer möglich.“
  • Auslieferung des Coverbildes: Chunkgröße aus Stabilitätsgründen auf 1024 Bytes beschränkt. Hier gibt es noch einen alternativen Vorschlag

Vielen Dank an alle Mitwirkenden & Happy Testing!

9 „Gefällt mir“

Der gesetzte Wert wird jedoch nicht abgespeichert. D.h. nach dem Neustart ist der alte Wert (2) wieder da.
Hinweis: SHUTDOWN_ON_BAT_CRITICAL habe ich nicht aktiv.

Ah, das ist richtig. Im Frontend wird der Slider nicht ausgeblendet wenn die Option deaktiviert ist. Das Json wird jedoch ignoriert.

@tueddy
cool, bei mir geht wieder alles . kann wieder problemlos zugreifen

1 „Gefällt mir“

Hat jemand das Problem, dass der Fortschritt nicht gespeichert wird ? Ich wundere mich die ganze Zeit warum ich immer wieder die selbe Folge hören muss :joy:

Das war glaube ich hier schon Thema: 3 Bugs in AudioPlayer.cpp: Hörbuchmodus + Speichern der Playposition + sleepAfter

Ja, im Hörbuchmodus wird derzeit keine neue Position mehr gespeichert und folglich immer die alte geladen. Du kannst den Commit mal ausprobieren (aus dem letzten Link von biologist) und bestätigen, ob dann wieder alles funktioniert:

Ich probiere es gleich mal aus :+1:

Also bei funktioniert der Fix, ich warte dann noch auf eine weitere Bestätigung.
@sfields kannst Du einen PR dazu erstellen?

Ich habe es jetzt nur schnell testen können, ob es nach dem Ausschalten geht. Dies kann ich bestätigen. Mit Modifikation konnte ich es jetzt auf die schnelle nicht testen. Vielleicht hilft das aber schon mal ?!

Habe ich gemacht. Es war aber der erste, den ich jemals erstellt habe. Hoffe das passt so. Weitere Bestätigungen, dass das damit läuft und v.a. keine anderen Fehler eingeführt werden wären natürlich hilfreich.

1 „Gefällt mir“

Ich wünsche Euch zunächst ein frohes neues Jahr!

Die beiden offenen Punkte

  • Einstellung der kritschen Batteriespannung in der Weboberfläche
  • Speichern der Hörbuch Position

sollten jetzt mit Software-Revision 20240102-1-DEV behoben sein.

7 „Gefällt mir“

Allen die an diesem Projekt teilhaben, auch von mir, ein frohes neues und gesundes Jahr 2024.

2 „Gefällt mir“

Behebt das auch, dass der endlos-Modus nicht mehr funktioniert? Also z.B. „sortiert endlos“? Der beendet die Wiedergabe aktuell einfach am Ende der Playlist.
Habe das gerade erst auf dem Stand davor festgestellt und noch nicht den neusten dev-brach testen können…

Erst mal schönes neues Jahr und danke für eure Arbeit. Ich habe gerade den aktuellen DEV Branch installiert. Mir ist aufgefallen, das, wenn die Lautstärke im Webinterface über die max. Lautstärke, die über allgemein als Max festgelegt wurde, angehoben wird. Lässt sich die Lautstärke nicht mehr über den Drehencoder regeln. Kann das jemand nachstellen?
Gruß Joachim