MiPlay V0.7 - Beim Saugen Musik inkl. Lautstärkeregelung abspielen

  • Was macht MiPlay:

    MiPlay überwacht den aktuellen Status des Saugroboters und spielt beim Saugen automatisch Musik ab.

    Schließlich spricht nichts gegen etwas Gute-Laune-Musik beim Saugen :)


    Funktionen:

    - Musik starten, wenn gesaugt wird

    - Musik automatisch pausieren/stoppen, je nach Status

    - Lautstärke der Musik automatisch an die Saugstärke anpassen

    - Lautstärke der Musik auf Wunsch vorgeben

    - Bei Fehler einen Ton ausgeben *1

    - Wenn fertig, einen Ton ausgeben *1


    *1)

    Aus technischen Gründen kann der Saugroboter nicht gleichzeitig Musik abspielen und eine Sprachmeldung ausgeben. Dadurch sind Meldungen des Saugroboters bei Musik nicht hörbar. Das Skript kann aber zwischen Musikdateien wechseln. Diese Funktion wird verwendet um z.B. Fehler akustisch auszugeben.

    Damit diese Töne ausgegeben werden, müssen jeweils die passenden Dateien im Verzeichnis vorliegen.

    finished.mp3 Diese Datei -wenn vorhanden- wird einmalig abgespielt, wenn sich der Saugroboter nach Hause begibt

    error.mp3 Diese Datei -wenn vorhanden- wird einmalig abgespielt, wenn ein Fehler gemeldet wurde.

    Aus Lizenzrechtlichen Gründen füge ich keine mp3-Dateien bei. Du kannst selbst eine Datei Deiner Wahl mit den jeweiligen Namen in das Verzeichnis kopieren, die dann vom Skript verwendet wird. Im Internet findest Du legale mp3-Dateien, die z.B. als notification für Handies verwendet werden können. Einfach mal selber suchen ;)


    Was Du brauchst:

    valetudo

    Paket curl: apt install curl

    Paket cmus: apt install cmus

    Mindestens eine mp3-Datei, die beim Saugen abgespielt werden soll



    Konfiguration:

    MiPlay wird über Parameter beim Starten konfiguriert.

    Einzig notwendiger Parameter ist -f FILE.mp3. Für andere Parameter nutzt das Skript Standardwerte, wenn nicht angegeben.


    Aufruf:

    ./MiPlay-start.sh [-a AVG|-c VOLUME] [-f FILE] [-v 0|1]


    -a: (AVG)

    Damit kannst Du die automatische Lautstärkeregelung an das Sauggeräusch anpassen. Je höher die Zahl, desto lauter die Musik im Verhältnis zur Saugstärke.

    Default 80

    Lautstärke = (Saugstärke + AVG) / 2


    -c:

    Du kannst aber auch die Lautstärke festlegen, sodass keine automatische Anpassung stattfindet (0%-100%). Werte über 80% können je nach Musik zur Übersteuerung führen. Einfach ausprobieren.

    Dieser Parameter überschreibt -a

    Default AUS


    -v: (VERBOSE)

    Bei -v 0 wird das Skript ohne Ausgabe auf der Konsole automatisch in den Hintergrund ausgeführt

    Bei -v 1 Kannst Du auf der Konsole mitverfolgen, was gerade passiert

    Default 0


    -f: (FILE)

    Hier gibst Du entweder eine einzelne Datei inkl. Pfad an, oder ein Verzeichnis.

    Beispiel:

    Eine mp3-Datei abpsielen: ./MiPlay-start.sh -f /PFAD/FILE.mp3

    Alle mp3-Dateien in einem Verzeichnis nacheinander abpsielen: ./MiPlay-start.sh -f /PFAD/*.mp3



    Installation:

    Erstelle das Verzeichnis auf dem Roboter mkdir /mnt/data/MiPlay

    kopiere den Inhalt der Zipdatei in das Verzeichnis

    Starte das Skript mit -v 0 so läuft es im Hintergrund bis zum nächsten Reboot weiter


    Weitere Beispiele:

    ./MiPlay-start.sh -a 80 -f /mnt/data/1.mp3 -v 1 Datei /mnt/data/1.mp3 wird beim Saugen mit AVG 80 abgespielt. Ausgabe auf der Konsole.


    ./MiPlay-start.sh -a 80 -f /mnt/data/1.mp3 -v 0 Datei /mnt/data/1.mp3 wird beim Saugen mit AVG 80 abgespielt. Keine Ausgabe auf der Konsole, Skript läuft im Hintergrund weiter


    ./MiPlay-start.sh -c 90 -f /mnt/data/1.mp3 -v 1 Datei /mnt/data/1.mp3 wird beim Saugen mit 90% Lautstärke abgespielt. Ausgabe auf der Konsole.


    ./MiPlay-start.sh -c 90 -f /mnt/data/*.mp3 -v 1 Alle mp3-Dateien in /mnt/data werden beim Saugen nacheinander mit 90% Lautstärke abgespielt. Ausgabe auf der Konsole.




    TIPP:

    Um Platz zu sparen, wandle die mp3-Dateien in mono um, z.b. mit vlc.

    Sollte die Musik "stocken"/"Stottern", kann es sein, dass eine Instanz noch im Hintergrund aktiv ist.

    Hier hilft:

    pkill cmus

    pkill MiPlay.sh

    Danach MiPlay wieder wie gewünscht starten

  • MicroDevil

    Changed the title of the thread from “MiPlay V0.7 - Musik beim Saugen abspielen inkl. Lautstärkeregelung” to “MiPlay V0.7 - Beim Saugen Musik inkl. Lautstärkeregelung abspielen”.
  • Hört man denn im Turbomodus überhaupt noch was?

  • oooh ja ;)

    Kommt natürlich darauf an, wie Du den Skript konfigurierst, aber bei 100% Lautstärke brüllt er regelrecht. Einfach mal ausprobieren und während Musik läuft die Saugstärke ändern

  • Ich stehe eher auf die leiseren Töne. Ich vermute mal, die gehen unter.

  • Im Turbo-Modus sind es zum Glück nur 90 Prozent. Aber das reicht dann wohl auch aus, um meiner Musik das ungewisse Etwas zu verleihen. ^^

  • Yay, das "ungewisse etwas". Das ist natürlich immer dabei :D

    Zugegeben die Funktion ist mehr eine Spielerei und proof of concept, aber ich finde es motivierend, wenn beim Saugen gute Laune Musik ertönt. Vielleicht ist es auch gar nicht die Musik, sondern nur der Stolz des Erfinders ;)

    Wie dem auch sei. Wenn ich noch heraus finden könnte wie man die Position des Roboters in Koordinaten umwandelt, würde ich meine Tools um weitere Funktionen erweitern. Hab da noch paar Ideen, die Dir vielleicht mehr zusagen werden.

    Mal schauen

  • !ACHTUNG BUGs in v0.7!

    Bitte nutzt das Skript aktuell nicht Dauerhaft im Hintergrund, bis ich eine Lösung gefunden habe.

    Code
    1. BUG, cmus:
    2. Wird das Skript per crontab, oder rc.local gestartet, wird cmus aufgrund fehlender Angaben ($HOME und $USER) beim Boooten sofort wieder beendet. Das Skript läuft dann in einer Schleife und versucht erfolglos auf cmus zuzugreifen. Ein manueller Start des Skripts nach dem Bootvorgang im Vordergrund/Hintergrund funktioniert zwar zuverlässig, aber nur bis zum nächsten Reboot (wird vom Robbi aber automatisch 1x pro Tag durchgeführt)
    3. BUG, mögliche Speicher Überlastung:
    4. Aufgrund der periodischen Abfragen des aktuellen Status von Valetudo, kann der Roboter möglicherweise mit der Zeit träge reagieren, bis hin zum sporadischen Reboot. Der Grund scheint ein volllaufender Speicher zu sein, der dazu führen kann, dass andere Dienste nicht mehr sauber laufen.
  • Nein leider nicht. Die Bugs sind noch nicht behoben. Ich muss alles komplett überarbeiten und mir etwas Neues einfallen lassen, da der Robbi Skripte und Befehle etwas anders interpretiert :(


    Aber das ist kein Fehler. Wenn Du das Erste Mal das Skript startest, läuft cmus noch nicht im Hintergrund. Starte jetzt einfach mal eine Reinigung, dann müsste die Musik nach paar Sekunden starten.



    Gruß

    MD

  • nicedevil

    Noch ein Tipp:

    Bei -v1 würdest Du vermutlich diese Fehlermeldung sehen, bei -v0 siehst Du sie vielleicht nicht, ist aber da.

    Code
    1. error: can't change volume: mixer is not open

    Das heißt cmus kann die Lautstärke nicht anpassen!


    Folgendes in der Konsole eingeben, egal ob cmus gerade läuft, oder nicht:

    Code
    1. cmus-remote -C "set softvol=true"

    Hab diesen Bug mal schnell behoben, für den Rest brauche ich mehr Zeit ;)


    Viel Spaß

    MD

  • hab deine neue version genommen


    Sieht nix anders aus.

    Achso und das andere Problem hab ich nun selber gefixt.

    Hatte zwar die MiPlay-start.sh ausführen gegeben, aber der MiPlay selbst nicht.


    Solltest vielleicht noch oben in die Installationsanleitung reinhauen.


    Code
    1. chmod +x /mnt/data/MiPlay/MiPlay.sh
    2. chmod +x /mnt/data/MiPlay/MiPlay-Start.sh
  • Kleine Anregung: Wäre es denkbar, dass die finished oder error Meldungen auch .wav Dateien sein könnten? Wenn ja, mach doch am besten ne kleine Config file rein, die dann die Werte abfragt? So könnte man einfach die Sounddateien aus den Sprachpaketen nutzen (ja man könnte die jetzt natürlich noch umwandeln, aber würde so ja auch einfacher gehen) :)


    Ah und noch was fällt mir grade ein :D
    Wenn er fertig ist mit dem Saugen, könnte man dann noch was machen, dass er die Lautstärke allmählich runterfährt von der Musik?


    EDIT: Wollte gerade den Autostart reinjagen:


    Code
    1. /mnt/data/MiPlay/MiPlay.sh -f /mnt/data/1.mp3 -a 60 INSTALL
    2. Setting autostart in boot
    3. -a 60 -f /mnt/data/1.mp3
    4. sed: -e expression #1, char 53: unknown option to `s'
  • nicedevil

    Default Volume ist ich schon drin, in der nächste Version kann man sie selbst definieren.

    Du kannst sie auch auf die Schnelle als Workaround selbst machen, ist aktuell auf 60% gestellt

    Ebenfalls bereits im Nachfolger ist die Funktion drin, dass Originalmeldungen ausgegeben werden, wenn man finished.mp3/error.mp3 nicht hat. Du versaust mir hier quasi gerade die

    Überraschung ;) Zusätzlich wav-Dateien zu kopieren ist somit nicht nötig.

    Der Nachfolger wird allerdings kein eigenständiges Skript mehr sein, sondern Teil von mizt. Damit wird auch der volllaufender Speicher und die Problematik mit dem Start beim Booten umgangen.


    Diese beiden Skripte sind bereits als ausführbar markiert. Die Markierung geht allerdings vermutlich verloren, wenn man die Dateien unter Windows bearbeitet. Kann es sein, dass Du das gemacht hast?

    Da sind haufenweise Bugs drin, daher auch die Meldung die Skripte nicht zu nutzen: MiPlay V0.7 - Beim Saugen Musik inkl. Lautstärkeregelung abspielen

    Deshalb genieße die Vorfreude, bis ich die Zeit habe mich darum zu kümmern, hab gerade zu viele Projekte gleichzeitig am Laufen ;)


    Gruß

    MD

  • Habs zwar mit Windoof bearbeitet aber die Dateien danach mit vi wieder neu erstellt und per Copy Paste den Code eingefügt und mit chmod +x die Scripte wieder gangbar gemacht.


    Naja ich gedulde mich mal mit Geduld oder so :)

    Vielen Dank auf jeden für deine Arbeit.

  • Guten Abend,


    gibt es hier Neuigkeiten? Wäre es nicht besser statt mp3 eventuell sogar Spotify einzubinden?


    Gruß

    Lars

  • Hi,

    ich werde vlt. demnächst den Nachfolger vorstellen, kämpfe gerade mit paar Kinderkrankheiten des Roboters und suche dafür noch eine Lösung.

    Dann kannst Du theoretisch eine beliebige Source angeben, eben auch eine Playlist auf einen beliebigen Server...


    ABER...


    Wie soll der Robbi Spotify abspielen, wenn er keinen Internetzugang hat? ;)

    Gruß

    MD

  • Hi,

    wieso hat der Robi keine Internetverbindung?

    Ich habe meinen nicht über eine Firewall geblockt, auf jedenfall nicht wissentlich.

    Freu mich schon auf das Tool..Danke!


    Schönen Feiertag...