Musikbox (alias Toniebox) als Eigenbau

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Maruu
    LoxBus Spammer
    • 07.03.2017
    • 489

    Musikbox (alias Toniebox) als Eigenbau

    Hallo zusammen,

    in Kürze ist Weihnachten und für meine Kids gibt es dieses Jahr Musikboxen als Überraschung. Der CD-Player hat vor kurzem den Geist aufgegeben und da ich sowieso in jedem Raum zwei Deckenlautsprecher, angesteuert über einen MusicServer4Lox und einen Loxone Verstärker, eingebaut habe, will ich die auch nutzen. Das Prinzip der Toniebox gefällt mir dabei sehr gut: man stellt eine Figur mit integriertem RFID-Chip auf die Box und diese beginnt Lieder oder Geschichten abzuspielen. Ich habe das Ganze nun adaptiert und eine Holzbox gravieren lassen, 5 Taster (Leiser, Lauter, Zurück, Pause/Start, Vorwärts) eingebaut, einen ESP8266 als Controller verwendet und daran noch einen RFID-Reader angeschlossen. Legt man eine RFID-Karte auf den Reader, sendet der ESP8266 (auf dem ESP Easy läuft) die ID des RFID-Tag via WLAN und UDP an den Loxone MS und dieser routet die Kommandos weiter an das Logitech Media Server CLI. Auf dem MusikServer4Lox sind Playlisten hinterlegt, die als Namen die ID der RFID-Tags haben. So startet also eine RFID-Karte eine Playliste auf dem MusikServer4Lox. Was sich darin befindet, kann ich dann frei wählen. Beschriftet man die RFID-Karten nun noch mit passenden bunten Aufklebern, gefällt es bestimmt auch den Kids. Gebaut habe ich insgesamt 3 Musikboxen, zwei für die Kinderzimmer und eine für das Wohnzimmer (jeweils fest mit den zugehörigen Musikzonen verdrahtet).

    Alles in allem ein schönes Bastelprojekt

    Hier die Verwendeten Komponenten:

    - Holzbox inkl. Gravur 11,99 €
    - NodeMCU (ESP8266) 5,99 €
    - RFID-Reader PN532 6,75 €
    - USB-Verlängerungskabel 2,88 €
    - Arcade Buttons 5 € (5 x 1 €)
    - Forstnerbohrer 4,40 €
    - RFID-Karten 100 Stück 29,99 €
    - Bedruckbare Adressaufkleber für RFID-Karten 9,73 €

    In Summe sind das grob 35-40 € je Box + RFID-Karten. Was da noch fehlt ist ein Micro USB-Netzteil, davon hatte ich aber durch alte Handys und andere Geräte noch genügend zu Hause rumliegen. Außerdem ein paar Leitungen, Schrauben und Winkel aus der Werkzeugkiste.

    Anbei noch ein paar Fotos, um einen besseren Eindruck davon zu bekommen.

    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Bild.jpg Ansichten: 12 Größe: 552,8 KB ID: 226864

    Edit:

    Bauanleitung:

    Auf Wunsch, hier noch einige detailliertere Infos zum Projekt:

    Musikbox:
    Die Musikboxen sind aus Holz. Den passenden Link zum Onlineshop inkl. Lasergravur findet Ihr oben. An den Shopbetreiber sendet man nach dem Kauf ein Bild (PNG, Vektorgrafik, ...) mit dem Gewünschte Layout. Ich habe in Paint.NET einfach die Größe des Boxdeckels als Arbeitsblatt angelegt und dann gezeichnet. Am Schluss hab ich die Layer als PNG in großer Auflösung exportiert und an den Betreiber gesendet. Die Paint.NET-Datei mit den einzelnen Layern findet Ihr hier: Lasergravur Musikbox Bischof.zip Oberhalb der Symbole (Lauter, Leiser, ...) sind noch kleine Punkte eingezeichnet, diese werden ebenfalls mit graviert und dienen als Mittelpunkt für das Bohrloch für die Arcade-Buttons. Den passenden Forstnerbohrer dafür habe ich ebenfalls oben verlinkt. Die Arcade-Buttons werden anschließend in die Bohrungen gesteckt und von unten mit einer Kunststoff-Kontermutter verschraubt.

    ESP8266:
    Herzstück der Musikbox ist ein ESP8266. Der Controller ist sehr günstig, besitzt WLAN, zahlreiche GPIOs und es hat sich rund um den kleinen Chip eine große Community gebildet. Als Software für den ESP8266 nutze ich ESP Easy. Dabei handelt es sich um eine Applikation mit Weboberfläche, in der man flexibel zahlreiche Sensoren und Aktoren (auch über I²C) anbinden kann. Zusätzlich kann man über Regeln Befehle empfangen und versenden. Als Release habe ich die Version "Release mega-20191208" genommen, es sollten aber auch nachfolgende Release kein Problem sein. Als erstes flasht man über USB den ESP8266 um die Steuerungssoftware zu laden (siehe Readme im Download des Releases). Meine Konfiguration findet Ihr hier: config.zip damit sind gleich die ganzen Ausgänge und Eingänge definiert, wenn man diese beim Flashen gleich mit hochläd (geht auch im Nachhinein in der Weboberfläche).

    Als nächstes muss man den ESP8266 mit den Sensoren verdrahten. Der PN532 (RFID-Reader) wird über den I²C Bus an den ESP angeschlossen. Wichtig, vorab muss der I²C Modus über die DIP-Schalter am PN532 aktiviert werden. Danach verbindet man SCL (D1 bzw. GPIO 5) und SDA (D2 bzw. GPIO4) des ESP8266 mit dem PN532. Zusätzlich werden ebenfalls noch GND mit dem G des ESP und Vin (5V) auf VCC des PN532, sowie D0 (bzw. GPIO16) mit dem Pin RSTPDN (nicht RSTO) des PN532 verbunden. Die Arcade-Buttons werden alle auf einer Seite mit 5 GND verbunden und nach meiner Konfiguration auf der anderen Seite folgendermaßen belegt:

    Leiser: D5 bzw GPIO14
    Lauter: D6 bzw GPIO12
    Zurück: D7 bzw GPIO13
    Pause/Start: SD2 bzw GPIO9
    Vorwärts: SD3 bzw GPIO10

    Was dann noch fehlt, sind die Rules. Also die Regeln, wenn ein Ereignis auftritt (RFID-Tag eingelesen, Taster gedrückt, ...), dass per UDP ein Wert an den Miniserver geschickt wird. Wie die Rules in der Weboberfläche aktiviert werden, findet Ihr hier. Folgende Rules nutze ich: ESPEasyRules.txt Kurz zur Erklärung der Rules. Die unteren 5 Regeln schicken beim Drücken der 5 Buttons jeweils eine 1 an den Miniserver. Im oberen Bereich kümmere ich mich um den RFID-Tag. Das Problem ist, dass sobald sich ein RFID-Tag auf dem Lesegerät befindet, alle 300 ms das Event "on RFID#Tag do" ausgelöst wird. Mit der oberen Logik prüfen ich ob sich innerhalb von einer Sekunde der letzte Zustand (RFID-Tag vorhanden oder nicht) geändert hat und sende nur bei einer Änderung den geänderten Wert (also die ID des RFID-Tags oder 0). Für jede der 5 Buttons und für den RFID-Tag nutze ich einen separaten UDP Port 5100-5105, alle werden an die IP des Miniservers 192.168.1.9 geschickt.

    Loxone:
    In Loxone muss man nun auf die 6 UDP-Ports lauschen. Dies mache ich mit virtuellen UDP Eingängen. Alle Eingänge haben als Befehlserkennung den Wert "\v". Die 5 Buttons haben den Haken "Als Digitaleingang verwenden" aktiviert, der UDP-Port des RFID-Tags nicht.

    Die Werte werden dann 1:1 an virtuelle Ausgänge weitergegeben, bei dem die TCP-Adresse des Musikservers in das Feld "Adresse" eingetragen wird: "tcp://192.168.1.11:9090". 9090 ist dabei der Port des Logitech Mediaserver (LMS) CLI, dabei handelt es sich um das Command Line Interface zur Steuerung des MusikServer4Lox per Commandozeile oder eben wie hier per TCP-Aufruf. Einzige Ausnahme ist der RFID-Tag, Loxone scheint den eingehenden Wert als Zahl zu interpretieren (um genau zu sein als int32) und hat Probleme bei Zahlen die größer sind als die größte int32 Zahl. Daher jage ich die Zahl noch durch einen Statusbaustein und gebe den Wert hinten einfach 1:1 als Text aus, das klappt bei mir wunderbar. Hier die Befehle zur Steuerung des LMS via TCP:

    Leiser: 01:d5:5e:14:13:2f mixer volume -10\r
    Lauter: 01:d5:5e:14:13:2f mixer volume +10\r
    Zurück: 01:d5:5e:14:13:2f playlist index -1\r
    Pause/Start: 01:d5:5e:14:13:2f pause\r
    Vorwärts: 01:d5:5e:14:13:2f playlist index +1\r
    Playliste starten: 01:d5:5e:14:13:2f playlist play <v>\r

    Alle Befehle beginnen mit der MAC-Adresse des jeweiligen Players, diese findet Ihr im Webinterface des LMS unter Einstellungen->Player. Beim Befehl zum Starten der Playliste, wird noch die ID des RFID-Tags übergeben. Unter dieser ID muss auf dem MusicServer4Lox dann auch eine Playliste hinterlegt werden, die er starten soll. Dies bedeutet, wenn Ihr eine neue RFID-Karte einlernen wollt, lest die RFID aus, legt eine Playliste mit der ID des RFID-Tags als Name im LMS an und mehr müsst ihr nicht machen.

    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Loxone Übersicht.png Ansichten: 11 Größe: 103,2 KB ID: 226863

    Beste Grüße,

    Hannes
    Zuletzt geändert von Maruu; 09.01.2020, 09:39.
  • hismastersvoice
    Supermoderator
    • 25.08.2015
    • 7147

    #2
    Sehr schönes Projekt...
    Vielleicht kannst ja noch das Sketch und ein paar Screenshots des LMS anfügen. Dann kann man es leichter nachbauen.

    Die Idee mit der Gravur auf der Holzbox ist wirklich gelungen.
    Kein Support per PN!

    Kommentar


    • Maruu
      Maruu kommentierte
      Kommentar bearbeiten
      Kann ich gerne am Wochenende machen.
  • Nobbi75
    Lox Guru
    • 25.08.2015
    • 1257

    #3
    Das ist ja eine richtig coole Idee.

    Schade dass du damit zu spät für meine Kinder bist, die mittlerweile ihre SONOS One haben.


    Gesendet von meinem SM-G960F mit Tapatalk

    Kommentar


    • Maruu
      Maruu kommentierte
      Kommentar bearbeiten
      Meine Kids haben noch keine Handys, daher habe ich nach einer Lösung gesucht, wie sie das Multiroom sinnvoll nutzen können. Wenn die später mal mit Ihren eigenen Smartphones rumlaufen, dann werden die wohl auch eher über die App die jeweilige Zone steuern.

    • samke
      samke kommentierte
      Kommentar bearbeiten
      Zitat von Nobbi75
      ...Schade dass du damit zu spät für meine Kinder bist, die mittlerweile ihre SONOS One haben...
      Meine Kinder haben auch jeweils ein SONOS One, allerdings vom Alter her kein Handy, und per Sprachsteuerung funktioniert die Musik/Hörspielauswahl leider mehr schlecht als recht. Daher habe ich jetzt, danke der Projekt-Vorstellung von Maruu (Danke!), das ganze auch per RFID umgesetzt - allerdings halt mit SONOS Boxen. Ehrlicherweise habe ich das jetzt dann doch nicht mit Loxone gemacht, sondern per ioBroker. Als Hardware nutze ich ein D1 Mini 8266 + RFID RC522. Als Musik Quelle nutze ich Deezer. Das einzig blöde aktuell ist noch, das ich alles was per RFID abgespielt werden soll, bei SONOS in die Favoriten legen muss, sonst habe ich es nicht geschaft, die Sachen zu starten. Vielleicht finde ich hier ja noch eine bessere Lösung.

    • Maruu
      Maruu kommentierte
      Kommentar bearbeiten
      Sehr schön, freut mich dass es Nachahmer gibt. Poste doch mal ein Bild von deiner Umsetzungen in den Kommentaren, vielleicht ist es ja noch eine Anregung für Andere.

      Ich hab mich für den Weg über Loxone entschieden, da ich so z. B. das Abspielen sperren oder die maximale Lautstärke regulieren kann. Geht aber natürlich auch direkt an das jeweilige Endgerät
  • Maruu
    LoxBus Spammer
    • 07.03.2017
    • 489

    #4
    So, jetzt habe ich im initialen Thread noch die Bauanleitung inkl. Screenshots und Konfiguration ergänzt.

    Kommentar

    • Lightpicture
      Lebende Foren Legende
      • 16.11.2015
      • 3500

      #5
      Ein wunderschönes Geschenk und eine spitzen Idee.
      Da werden sich deine Kinder bestimmt sehr freuen.
      FG
      Lightpicture

      Nur ein Netzwerkkabel ist richtiges WLAN

      Kommentar

      • samke
        Extension Master
        • 27.09.2019
        • 183

        #6
        Hi, leider funktioniert Github aktuell nicht richtig, der Download ist extrem langsam -> 30h für 50MB...
        Kannst du das ESPEasy hier vielleicht als Download reinstellen? (Release mega-20191208)
        Danke für deinen Aufwand!

        Kommentar

        • Maruu
          LoxBus Spammer
          • 07.03.2017
          • 489

          #7
          Hier das File
          Angehängte Dateien

          Kommentar


          • samke
            samke kommentierte
            Kommentar bearbeiten
            Super, danke! Damit lief der Download nun.
        • samke
          Extension Master
          • 27.09.2019
          • 183

          #8
          Leider ich noch mal, sorry.

          Kann es sein, das die Verlinkung im ersten Post zur "ESPEasyRules.txt" und "config.zip" nicht funktionieren? Bei mir kommt dort "Seite nicht gefunden".

          Kommentar


          • samke
            samke kommentierte
            Kommentar bearbeiten
            Achhhh, "Lösung" gefunden -> unter dem Post unter Anhänge funktionieren die Downloads. Im Text sind sie wohl nur falsch verlinkt.

          • Maruu
            Maruu kommentierte
            Kommentar bearbeiten
            Ich hab mal die Links im Beitrag angepasst, jetzt sollte wieder alles gehen
        • samke
          Extension Master
          • 27.09.2019
          • 183

          #9
          Auf Anregung von Maruu [#3.3], hier mal meine abgewandelte Umsetzung aus seiner Idee/Projekt (noch mal Danke an Maruu!).

          Als Hardware nutze ich einen D1 Mini 8266 + RFID RC522 Leser - beim Sound/Boxen-System nutze ich SONOS mit Deezer als Streaming-Anbieter. Den D1 und RFID Reader habe ich in ein Gehäuse gepackt und dieses lackiert. Es handelt sich erstmal um ein Gehäuse zum Testen und Erfahrungen Sammeln. Von der verbauten Hardware her, könnte das Gehäuse später locker 2/3 niedriger werden. Ich habe bewusst keine Taster am Gehäuse verbaut, weil ich diese an den SONOS Boxen weiter verwenden möchte und das aus meiner Sicht ausreicht. Mein Wunsch wäre es, später den Reader in den Schrank einzubauen, so das dieser garnicht mehr zu sehen ist.

          Ich wollte das ganze eigentlich auch mit Loxone umsetzen, bin dann aber doch davon weggegangen und habe mich für ioBroker entschieden. Damit hatte ich null Erfahrung und wollte auch mal was mit machen. Am ESP habe ich unter User die Karten angelernt und dort unter Username die Hörpsiel-/Musik-Titel hinterlegt. Ich sende dann über den ESP die ausgelesenen RFID Daten per MQTT an den ioBroker. Dort zerlege ich den String in zwei Teile per JavaScript -> die RFID Nummer und den "Usernamen".
          Per Blockly werte ich dann das Hörspiel/die Musik anhand des "Usernamen" aus und setze noch die Lautstärke auf eine hinterlegte Startlautstärke und schalte evtl. vorher eingestelltes "Shuffle" aus -> dann spielt die Box los. Man kann die Karte dann direkt wieder runternehmen und weg packen. Erst wenn man eine andere Karte auf den Reader legt, ändert sich das Album/Hörspiel. Lauter/leiser + vor/zurück + pause/stop passiert dann weiterhin alles an der SONOS Box.

          Unschön ist aktuell noch, das ich bei SONOS alle gewünschten Alben/Hörspiele unter Favoriten ablegen muss, ansonsten kann ich diese nicht per Befehl starten. Zumindest habe ich hier noch keine Lösung zu gefunden und bin noch weiter auf der Suche.

          Evtl. verbinde ich das ganze jetzt aber doch auch noch mal mit Loxone. Die Idee die Box oder Funktion via App sperren zu können, hört sich gut an. So könnte ich zB auch für Abends recht einfach und schnell max. Hördauer einstellen usw. und hätte das alles in einer App.

          Klicke auf die Grafik für eine vergrößerte Ansicht  Name: sonos.JPG Ansichten: 1 Größe: 127,8 KB ID: 228653Klicke auf die Grafik für eine vergrößerte Ansicht  Name: reader.JPG Ansichten: 0 Größe: 66,4 KB ID: 228654Klicke auf die Grafik für eine vergrößerte Ansicht  Name: esp.JPG Ansichten: 0 Größe: 45,8 KB ID: 228655Klicke auf die Grafik für eine vergrößerte Ansicht  Name: Blockly.JPG Ansichten: 0 Größe: 80,1 KB ID: 228656
          Zuletzt geändert von samke; 04.01.2020, 14:34.

          Kommentar


          • Maruu
            Maruu kommentierte
            Kommentar bearbeiten
            Sehr cool geworden.Durch das schlichte Design und die Nutzung der Buttons am Sonos-Speaker passt das alles auch sehr schön zusammen.
        • crasythom
          LoxBus Spammer
          • 02.10.2015
          • 297

          #10
          Für das Projekt werde ich mich sogar mal mit so einem ESP Dings da auseinandersetzen. Bin mal gespannt. Bestellt habe ich schon mal.
          Ich überlege noch, ob ich das über ioBroker mit meiner Pioneer Stereoanlage in Verbindung mit der NAS versuchen soll oder auch einen Sonos Lautsprecher nehmen soll.
          Sehr cool fände ich auch, wenn es über einen Amazon Dot funktioniert. Der ist schön günstig und für Benjamin Blümchen muss das ja auch nicht so laut sein. Ich versuche jetzt schon eine zeitlang über den Alexa-Adapter in ioBroker eine bestimmte Folge abzuspielen. Ich kann aber nur Benjamin Blümchen im allgemeinen starten. Hat hier schon jemand Erfahrung? Evtl. könnte man sich da auch Playlisten anlegen?

          Kommentar

          • samke
            Extension Master
            • 27.09.2019
            • 183

            #11
            Ich hab da das gleiche Problem per Alexa (Dot) - Radio-Sender, Musik scheint kein Problem zu sein, bei Hörspielen gehts nicht wirklich voran. Dort komm ich auch nur an Musik dran.
            (Gleiches Problem hatte ich aber auch schon "immer" wenn ich das per Sprache versucht habe.)

            Klicke auf die Grafik für eine vergrößerte Ansicht  Name: echo.JPG Ansichten: 0 Größe: 30,9 KB ID: 228955

            Kommentar

            • samke
              Extension Master
              • 27.09.2019
              • 183

              #12
              Ahhhaaa... hab noch ein wenig weiter gegoogelt...
              Warum auch immer, darf man wohl "von Benjamin Blümchen" nicht angeben. Also man muss nur "Spiele Album ZAHL TITEL" angeben.
              Dann hat es bei meinen Tests gerade wunderbar funktioniert. Funktionierte auch ohne die Album Zahl - aber dann könnte es vielleicht ja auch den Titel noch mal von was anderem geben (wenn es blöd läuft). Warum auch immer man den "Interpreten" nicht angeben darf, merkwürdig. Aber vielleicht auch egal, so klappt es zumindest *juhu* :-)

              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: echo2.JPG
Ansichten: 2288
Größe: 29,9 KB
ID: 228961

              Kommentar


              • crasythom
                crasythom kommentierte
                Kommentar bearbeiten
                Prima! Danke für den Tip. So funktioniert es auch mit Amazon Music.
            • theld
              Smart Home'r
              • 10.02.2017
              • 35

              #13
              Hi Maruu,
              tolles Projekt.

              Zwei Fragen zum RFID-Reader:
              1. Ist es richtig, dass der RFID-Reader rot blinkt?
              2. Bei mir kommt vom RFID-Reader nichts am Miniserver an. Eine blanko-Karte müsste doch zumindest eine ID haben, oder?

              Kommentar

              • Maruu
                LoxBus Spammer
                • 07.03.2017
                • 489

                #14
                Hi,

                der RFID-Reader hat eine rote LED, das stimmt. Dauerhaft blinkt er aber glaube ich nicht. Siehst Du denn in ESPEasy unter Devices beim RFID-Reader den Wert des RFID-Tags wenn dieser auf dem Reader liegt? Wenn ja, dann liegt es nur noch an der Kommunikation zwischen dem ESP und Loxone.

                Gruß Hannes

                Kommentar

                • theld
                  Smart Home'r
                  • 10.02.2017
                  • 35

                  #15
                  Hallo Maruu,
                  habe mein Fehler gefunden, die beiden Jumper waren nicht auf I²C gestellt. Jetzt hat er die Karten erkannt, jedoch bekomme ich im Log (siehe Anhang) regelmäßig den Fehler "PN532: Read error". Liegt das am ständigen auslesen des Sensors oder soll ich meine Lötstellen noch mal prüfen?
                  Klicke auf die Grafik für eine vergrößerte Ansicht

Name: log.jpg
Ansichten: 2186
Größe: 222,3 KB
ID: 229320
                  Angehängte Dateien

                  Kommentar

                  Lädt...