Cloud-Anbindung

Gibt es irgendwelche Pläne für eine Cloud-Anbindung, damit man die Musik- und Meta-Daten zwischen verschiedenen ESPuinos synchronisieren kann?

Beispiel: Man hat zwei ESPuinos und zwei Kinder. Ein Kind übergibt seine Karte dem anderen Kind und kann damit auf seinem Gerät die gleiche Musik-Datei mit dieser Karte hören? Wie macht ihr das bisher? Lernt ihr das immer auf beiden Geräten an oder ex- und importiert?

Mir schwebt da aktuell etwas mit AWS bzw. MinIO für On-Premise vor. Die Musik- und Meta-Daten werden zwischen Cloud und SD-Karte synchronisiert. Raucht das Gerät mal ab, dann kann man ganz einfach wieder seine Daten holen.

1 „Gefällt mir“

Also ich habe da bisher keine Pläne, fände es aber spannend zu erfahren, wie schnell man Daten mit sdmmc auf SD speichern kann, wenn man sie parallel runterlädt.

@QDaniel hatte damals sowas (Ähnliches) umgesetzt glaube ich. Da gingen ESPuinos zu Bekannten und er hat ihnen ab und an Karten zukommen lassen, mit denen dann ein Download initiiert wurde. Weiß jetzt aber nicht mehr, ob er dafür auf die Karten was geschrieben hat (das möchte ich nicht) oder ob das Mapping zum File dann serverseitig über die ID des Tags gemacht wurde.

Ich für meinen Teil kopiere die Daten halt dann auf den zweiten ESPuino und lerne die Karten manuell an. Das geht sicherlich komfortabler, aber bei mir war das bisher kein Task, der dauernd kam.

Aber ja, klingt nicht uninteressant, was du vor hast.

Vielleicht etwas einfacher wäre ein NAS o.ä. und die Tags werden einfach mit dem Pfad assoziiert.
Die erwähnten cloud Technologien sind zwar fancy, aber eventuell mit Kanonen auf Spatzen geschossen.

Synchronisieren (wenn die tracks wirklich auf die Karte sollen) könnte man mit rsync o.ä. lösen, das los getreten wird, sobald ein FTP server eines espuino im Netz auftaucht.

Viele Wege führen nach Rom :wink:

Die ESPuinos könnten sich auch untereinander im gleichen Netzwerk synchronisieren, aber mein Use-Case ist Heimnetz-Übergreifend.

Es gibt natürlich viele Möglichkeiten so etwas umzusetzen.

Ich werde den Weg über S3-Kompatiblen-Storage mal weiterverfolgen.

Ein MinIO ist im Container schnell aufgezogen oder man mietet sich eben für ein paar Cent im Monat S3 von AWS.

Es lokal per HTTP vom NAS zu streamen ist kein Problem. Nur kann man bei einem Hörspiel halt die Position nicht gespeichert werden, wenn man es streamt.

Glaube (ich weiß es nicht) das scheitert in der Praxis daran, dass der ESP32 dann einigermaßen ausgelastet ist und nicht mehr zur Audiowiedergabe taugt. Zumal der FTP-Server per Default auch gar nicht instanziert wird, weil das speichertechnisch mit dem Heap dann eng werden kann.

@tuniii bitte nicht falsch verstehen, ich bin selbst auch an so einer Lösung interessiert :wink: Ich glaube, der Storage ist weniger das Problem sondern eher wie die Daten synchronisiert werden.
Ich finde den Sync Mechanismus von Syncthing recht spannend, da er ohne Server auskommt (nutze Ihn für Handy, Laptop und PC) aber dafür hat der ESP bestimmt nicht genug Power.

@biologist das mit dem sync hatte ich mir auch so gedacht, dass man auf das NAS als „master“ neue Sachen ablegt und danach auf den Boxen den FTP server aktiviert und somit die neusten Tracks bekommt. Ganz automatisch ist das nicht.

Karten, die einen Download anstoßen sind denke ich ein cooler Ansatz, da die Sachen eben nur bei Bedarf geladen werden und man gut Kontrolle drüber hat, wann der ESP sich damit abstrampelt. Für das Mapping müsste man sich noch etwas einfallen lassen.

So oder so, ich bin gespannt, was hierbei raus kommt und werde ein Auge auf diesen Thread haben :slight_smile:

Die Idee ist, dass der ESPuino selbständig sich die Informationen vom S3-Storage holt. D.h. im ESPuino gibt man die Zugangsdaten für den S3-Bucket an und er schaut dann selbst was ihm fehlt. Im S3 lassen sich ja auch zu den Dateien beliebige Meta-Daten abspeichern. Der RFID-Tag wird dann einer dieser Meta-Daten sein. Man kann dann direkt vom PC zum S3 hochladen und der ESPuino erledigt den Rest. Die Lösung kann man dann beliebig schön machen. Entweder als Skript oder als Applikation.

Also ist es eher ein Download in eine Richtung und keine Synchronisation mehrerer Geräte. Ergibt Sinn, ist ja auch einfacher so.

Die einzige Logik, die man dann braucht, ist dann ein Abgleich, was schon geladen wurde und was noch fehlt, richtig?

Viel Erfolg!

Ja, genau. Es geht mir nur darum die Dateien zentral zur Verfügung zu stellen und dass die Kinder dann die RFID-Tags untereinander tauschen können.

Danke :slight_smile:

Die Idee finde ich auch sehr spannend. Hatte bisher eher in Richtung HTTP-Server als Quelle gedacht. Dafür haben wir schon recht viel im Code. Der Ringbuffer könnte verwendet werden. Gibt es schon S3 Libs für den ESP?

Eine fertige Lib habe ich bisher nicht gefunden. Ich sehe aber auch kein Problem die Requests selbst zu bauen. Der ESP muss ja nur wissen, was es gibt und abgleichen. Daher hält es sich ESP-seitig in Grenzen. Die restlichen Befehle werden nicht direkt auf dem ESP benötigt und für den PC gibt es ja viele SDKs und Command Line Tools.

Hello, finde die Idee sehr gut. Mein Ansatz dazu wäre folgender.
Es muss den Verweis zwischen Ordner und Karten id geben diese müsste auf allen Geräten synchronisiert sein dann schaut der der esp beim Aufruf nach ob es den Ordner lokal gibt wenn nicht kann über eine config per ftp https smb oder was auch immer dieser odner lokal kopiert werden dann muss nicht alles auf jedem Gerät verfügbar sein.

Habe aber im Moment noch keinen Espuino am laufen deshalb bin ich noch nicht in der Lage dies zu beurteilen bzw zu helfen.
Lg