Musik abspielen, wenn Smartphone im gleichen WLAN ist

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Hallo,


    ich möchte meinen RPi 3 so einrichten, dass automatisch eine Musikdatei oder auch eine Wiedergabeliste (zufällig) abgegespielt wird, wenn mein Handy sich im gleichen WLAN befindet. Ich habe mich leider noch nie wirklich mit RPi beschäftigt, bin aber sehr interessiert daran. Wie kann ich so etwas realisieren?

    Habe den RPi frisch mit Raspi OS Bullseye aufgespielt.

  • Wie kann ich so etwas realisieren?

    Z.B. Dem Telefon im Router eine feste IP geben, mit Python https://gpiozero.readthedocs.i…internal.html?#pingserver das Telefon regelmäßig anpingen und wenn es im Netz auftaucht die Musik abspielen.


    //Edit

    Die Musik hatte ich vergessen z.B. so (die Taster kann man ja weglassen): https://gpiozero.readthedocs.i…cipes.html#gpio-music-box

  • Guten Morgen,


    die Zuweisung einer festen IP habe ich vorgenommen. Anpingen über dein Skript funktioniert auch.

    Die Musik hatte ich vergessen z.B. so (die Taster kann man ja weglassen): https://gpiozero.readthedocs.i…cipes.html#gpio-music-box

    Mein Wunsch ist folgender:

    Wenn sich mein Handy mit dem WLAN verbindet, soll die Musik abgespielt werden. Am liebsten wäre es mir, wenn ich dazu Audacious (oder einen anderen Player) ansteuern könnte. Denn ich möchte ja auch mittels Laptop auf den Pi zugreifen und dort die Musik steuern (Zugriff per RealVNC eingerichtet). Wenn sich mein Handy dann aus dem WLAN ausloggt und nach mehr als einer Stunde wieder einloggt, dann soll das ganze wieder von vorne geschehen.


    Ich weiß nur gerade keinen Ansatz, um das umzusetzen...

  • Nicht, dass ich es nicht ausprobieren würde. Ich weiß nur nicht, wie ich es umsetzt, dass das Skript jedesmal wieder von vorne anfängt zu prüfen. Und nicht nach einem erfolgreichen oder erfolglosen Ping abbricht.

  • Verstehe ich nicht, das Skript bricht nicht ab. Dafür sorgt hier RE: Ping liefert "Operation not permitted" das pause() am Ende. Es wird alle 10 Sekunden ein ping abgesetzt und bei Veränderung die Funktion online() oder offline() aufgerufen.


    Mit der Funktion online() könnte man einen Player starten und in der Funktion offline() könnte man den Player stoppen lassen.


    Das Skript ist z.Zt. aber nur in der Entwicklunsphase und müsste am Ende noch schick gemacht werden. ;)

  • Ok, mein Code sieht nun so aus und funktioniert:


    Es passiert auch, was passieren soll. Bisher also ein fettes Dankeschön!


    ich habe das über vlc gelöst, da der Player ohnehin auf dem Raspi OS vorinstalliert ist. Meine Wahl wäre Audacious gewesen. Wenn ich das weiter verfolge, muss ich dann über den Python-Befehl "os" gehen?


    Weiterhin wäre es mir sehr Recht, dass sich die GUI des VLC-Players öffnet, damit ich vom Laptop aus direkt auf diesen Zugreifen kann (per RealVNC). Geht das?

  • Wenn ich das weiter verfolge, muss ich dann über den Python-Befehl "os" gehen?

    os ist dafür veraltet. Der Standard ist https://docs.python.org/3.9/library/subprocess.html


    Weiterhin wäre es mir sehr Recht, dass sich die GUI des VLC-Players öffnet, damit ich vom Laptop aus direkt auf diesen Zugreifen kann (per RealVNC).

    Ja, das geht einfach oder über Umwege. Kommt darauf an wie das Skript gestartet wird.

  • hyle Mein Code sieht nun so aus:

    Wenn das Handy von offline zu online wechselt, wird der VLC-Player gestartet und die Datei spielt. So sollte das sein!

    Ich erhalte allerdings auch Warnungen:


    Außerdem wird der VLC-Player nicht beendet, wenn das Handy sich abmeldet. Das wäre jetzt für diesen Fall auch nicht so schlimm, aber mich würde interessieren, warum es nicht geht.


    Danke bisher! Das hat mich viel weitergebracht.

  • Wenn das Handy von offline zu online wechselt, wird der VLC-Player gestartet und die Datei spielt. So sollte das sein!

    Du meinst auf dem Desktop des RPi? Die Warnungen kannst Du ignorieren oder nach /dev/null schicken.


    Außerdem wird der VLC-Player nicht beendet, wenn das Handy sich abmeldet.

    Versuchs mal mit killall vlc!


    //Edit

    Btw. Da hatte ich ein Typo im Skript, was die Funktionsnamen betrifft und den dann schön per C&P vervielfacht. :blush: War schon spät gestern. Häng mal überall an mobile_phon ein "e" dran, also mobile_phone!

  • Hallo,


    'when_activated' startet ein Thread in dem gewartet wird bis was passiert ist und 'when_deactivated' startet auch einen Thread der darauf wartet bis was passiert.

    Ein Thread kann aber nicht in den anderen eingriffen und da etwas beenden. Das sagt auch die Warnung.


    Du müsstest nach dem starten der Musik in einer Schleife den Ping-Server abfragen und dann entsprechend reagieren.

    Ungetestet:


    Grüße

    Dennis


    Edit: Es gibt auch eine vlc-Bibliothe für Python, dann könnte man sich das 'subprocess' sparen.

    🎧 Mein Auto springt, mein Toaster kocht, es zwickt mich im Genick. Meine Frau ist eingelocht, die Spülmaschine tickt. Meine Telefonapperat brüllt mich seit Tagen an, er ist schon lange abgestellt im Bett liegt Peter Pan. Die Uhr geht falsch, die Haustür singt, mein Spiegel schlägt zurück - Ich werde noch verrückt, was solls ich bin entzückt. Die Badewanne zieht nicht ab ihr glaubt nicht was ich seh' - Sie ist voll Himbeerengelee 🎧

    Edited once, last by Dennis89: Edit2: 'break' eingefügt ().

  • Ich habe das mal probiert, scheint aber nicht sehr zuverlässig zu sein.

    Trotz vollem WLAN-Empfang am Handy erkennt er es plötzlich als abgemeldet.

    Dann muss ich das WLAN am Handy aus- und wieder anmachen, damit er es erkennt.

    Hängt bestimmt mit Stromsparmaßnahmen des Handys zusammen.

  • Trotz vollem WLAN-Empfang am Handy erkennt er es plötzlich als abgemeldet.

    Voller WLAN-Empfang am Handy bedeutet ja nicht, dass der PI das Handy zu dem Zeitpunkt auch in seinem arp-cache hat. Und wenn das nicht der Fall ist, wird der Ping nicht funktionieren.

    Code
    arp -a

    D. h. vor dem Ping sollte man evtl. einen arping machen, damit die IP-Adresse und die MAC-Adresse des Handy, in der arp-cache des PI aufgenommen werden. Oder man konfiguriert im PI, einen statischen arp-cache-Eintrag für das Handy (... aber nur wenn das Handy eine feste IP-Adresse im Wlan hat).

    BTW: Man kann (als temporärer Test) im PI auch schauen, ob das Handy auf den Ping des PI antwortet, mit z. B.:

    Code
    sudo tcpdump -c 20 -vvveni any icmp and host <IP-Adresse-Handy>

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Ich habe es mal eine Weile laufen lassen:

    Script:

  • Ich habe es mal eine Weile laufen lassen:

    Code
    Samsung im WLAN
    22-11-15 14:31:42
    Samsung ohne WLAN
    22-11-15 14:33:10
    Samsung im WLAN
    22-11-15 17:08:03
    Samsung ohne WLAN
    22-11-15 17:08:39
    ...
    ...

    D. h., das OS des Samsung ist nicht in der Lage, das Smartphone permanent und ohne Unterbrechung im WLAN zu halten, oder? Oder könnte man evtl. im Router, die WLAN-Konfiguration noch etwas optimieren/verbessern?


    BTW: Das Script ist gut. Mit dem Script kann ich jetzt auch meinen Freunden In ihrem eigenen WLAN zeigen, dass es nicht an meinen mumble-Servern liegt, wenn sie mit ihren Smartphones aus dem Chat rausfliegen.


    EDIT:


    Kann man evtl. auch im Smartphone (Android) die WLAN-Verbindung bzw. das Halten der WLAN-Verbindung optimieren, mit z. B. "power-save deaktivieren", "Wlan im standby aktiv", etc., ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Vermutung: Wenn die App zum abholen meiner Emails anspringt, ist das Telefon wieder kurz erreichbar.

    Eine Einstellung für das Verwalten der Energiesparmaßnahmen für das WLAN konnte ich am Handy nicht finden.

    Am Router wird es wohl nicht liegen, glaube ich.

  • Eine Einstellung für das Verwalten der Energiesparmaßnahmen für das WLAN konnte ich am Handy nicht finden.

    Mit Sicherheit wird es da was (abhängig von der Android-Version) geben.


    Versuch mal mit:

    - WLAN im Ruhemodus aktiviert lassen -> "Immer"

    - WLAN-Optimierung (Akkuverbrauch bei aktiviertem WLAN minimieren) -> deaktivieren

    (oder so ähnlich bzw. gleichwertig bzw. evtl. noch zusätzliche config-Möglichkeiten).


    EDIT:


    Quote

    Vermutung: Wenn die App zum abholen meiner Emails anspringt, ist das Telefon wieder kurz erreichbar.

    BTW: kannst Du diese App zum abholen der Emails, evtl. temporär zum testen so konfigurieren, dass sie permanent aktiv ist und nicht nur periodisch bzw. ab und zu anspringt?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Das hat natürlich alles den Nachteil, dass mehr Akku verbraucht wird. Im Grunde ständig. Und das nur um einen Sound abzuspielen wenn man nach Hause kommt. Vielleicht ist es sinnvoller das umzukehren — nicht im Netz zu schauen ob ein bestimmtes Gerät auftaucht, sondern auf dem Mobilgerät zu schauen ob ein bestimmtes Netz da ist und von dort aus das abspielen anzustossen.

    „Eat the rich — the poor are full of preservatives.“ — Rebecca ”Becky” Connor, The Connors

  • ..., sondern auf dem Mobilgerät zu schauen ob ein bestimmtes Netz da ist und von dort aus das abspielen anzustossen.

    OK. Aber wie muss man sich das hier:

    Code
    Samsung im WLAN
    22-11-15 17:08:03
    Samsung ohne WLAN
    22-11-15 17:08:39

    vorstellen? Das Samsung war um 17:08:03 Uhr im WLAN und das Abspielen wurde angestoßen. Während dem Abspielen und 36 Sekunden später, ist das Samsung nicht mehr im WLAN? Oder hat das beabsichtigte Abspielen, weniger als 36 Sekunden gedauert?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden