Webradio mit Loxone und Raspberry!

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Michael Rene Maurer
    LoxBus Spammer
    • 25.08.2015
    • 221

    #1

    Webradio mit Loxone und Raspberry!

    WEBRADIO – RaspberryPI!
    RADIO und MP3-Ansagen!!!



    Music Player Client installieren:
    1; apt-get install mpd mpc alsa utils ---à wird für Internetradio benötigt

    mp3 Codec installieren:
    2; sudo apt-get install mpg321 lame ---à wird für durchsagen vom Raspberry benötigt!

    Radiosender hinzufügen:

    3; mpc add http://mp3stream7.apasf.apa.at:8000/;stream.nsv (nur ein Beispiel)
    mpc add andere Stream URL
    mpc add andere Stream URL
    mpc add andere Stream URL


    4; mpc save my_radios


    Oder ihr legt eine Playlist unter /var/lib/mbp/playlist eine Liste mit dem Namen Sender.m3u an!
    5; mpc load sender (ladet eure erstellte playlist)

    6; mpc playlist (zeigt die Playlist an)

    7; mpc clear (löscht ihr die Playlist) ---à diesen Befehl müsst ihr ausführen wenn ihr ein Sender update macht!
    Und dann wieder mit mpd load sender

    8; mpc play 1 spielt den ersten Eintrag der Playlist ab
    mpc play 2 spielt den zweiten Eintrag der Playlist ab

    9; mpc stop (stoppt die Wiedergabe)


    10; mpg321 /home/pi/Musik/Song???XXX.mp3 (spielt eine mp3 ab, Durchsagen zum Beispiel)


    Mein Script macht dann nichts Anderes als bei dem Empfang spezieller IP-UDP-Telegramme die Befehle von oben auszuführen


    11; Hier das Python-Script:

    Dieses Script muss einfach gestartet werden, oder ihr legt es im rc.local ab, und nicht vergessen zum Schluss der Befehlszeile &
    exit einzutragen!!!

    !/usr/bin/python

    import socket
    import os
    import subprocess

    UDP_IP = "xxx.xxx.xxx.xxx" # IP-Adresse des Pi
    UDP_PORT = xxxxx # UDP Port der abgehört werden soll

    sock = socket.socket (socket.AF_INET,socket.SOCK_DGRAM) # UDP
    sock.bind((UDP_IP,UDP_PORT))

    while True:
    data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes
    if data == "stop" :
    subprocess.Popen(["mpc", "stop"])
    if data == "Hit-Radio" :
    subprocess.Popen(["mpc", "play", "1"])
    if data == "Antenne" :
    subprocess.Popen(["mpc", "play", "2"])
    if data == "Radio-STMK" :
    subprocess.Popen(["mpc", "play", "3"])
    if data == "Kronehit" :
    subprocess.Popen(["mpc", "play", "4"])
    if data.startswith("/home/pi/Audio/Durchsagen/") :
    subprocess.Popen(["mpg321", data])


    mpc und mpg321 müssen installiert sein!


    Nochmal die Befehle für den Raspberry!:

    sudo apt-get install mpd mpc alsa utils
    sudo apt-get install mpg321 lame



    Für das Internetradio habe ich eine Playlist angelegt mit den Radio Streams.
    Sende ich z.B. des Telegramm "Kronehit" zum Pi wird Playlisteintrag Nr. 4 gespielt. "Stop" beendet die Wiedergabe.
    Für Sprachdurchsagen sende ich den kompletten Pfad (/home/pi/Audio/Durchsagen/Datei.mp3) der mp3 zum Pi. Existiert diese Datei auf dem Pi, wird sie wiedergegeben.
    Radio und Sprachdurchsagen laufen gleichzeitig und relativ unabhängig voneinander.
    Mit "mpc", "volume", "90" und "mpc", "volume", "100" könnte man auch noch die Lautstärke verändern.


    12; In /etc/initd/mpd ändert ihr dann das Script auf „SO AB“

    #!/bin/sh

    ### BEGIN INIT INFO
    # Provides: mpd
    Required-Start: $local_fs $remote_fs
    Required-Stop: $local_fs $remote_fs
    Should-Start: autofs $network $named alsa-utils pulseaudio
    Should-Stop: autofs $network $named alsa-utils pulseaudio
    Default-Start: 2 3 4 5
    Default-Stop: 0 1 6
    # Short-Description: Music Player Daemon
    # Description: Start the Music Player Daemon (MPD) service
    # for network access to the local audio queue.
    ### END INIT INFO


    13; Jetzt könnt ihr einfach kleine Aktiv Lautsprecher oder ihr schließt euren Raspberry an Eure Dolby oder dergleichen an!!








    WEBRADIO – RaspberryPI!
    Nur RADIO!!!
    Für diejenigen die das Image von Toni installiert haben, dort funktioniert es ab hier ganz normal, das heißt, ihr könnt RADIO hören und zusätzlich könnt ihr Speech-OUT oder Voice-OUT nutzen!!!

    WEBRADIO – Webseite!


    Ihr müsst

    Music Player Client installieren:
    1; apt-get install mpd mpc alsa utils ---à wird für Internetradio benötigt

    Ihr legt einfach unter /var/www/ einen Ordner mit dem Namen Webradio an! Dieser beinhaltet dann z.B. Die Logos für die Sender die ihr wollt, und die kleinen PHP Scripte!
    Die Logos und Buttons bitte mit z.B. „???.png“ ablegen und die Größen anpassen
    *pro Sender ein Logo
    *für leiser, lauter und stop
    diese Buttons findet ihr z.B. unter „www.iconfinder.com/iconsets/ie_Glossy_button“
    WEBRADIO – Webseite!


    2; Zur Steuerung Eures Radios könnt ihr auch noch eine kleine PHP Seite bauen!
    Dort macht ihr dann das Index.html mit dem Inhalt z.B:

    HTML-Code:
    <html>
             <head>
             <title>LOXONE Webradio</title>
             </head>
    <body>
    <center>
    <a href="oe3.php"><img src="logo-oe3.png"></a>
    <br><br>
    <a href="antenne.php"><img src="logo-antenne.png"></a>
    <br><br>
    <a href="radio_stmk.php"><img src="logo-radio_stmk.png"></a>
    <br><br>
    <a href="kronehit.php"><img src="logo-kronehit.png"></a>
    <br><br><br>
     
     
     
    <a href="leiser.php"><img src="leiser.png"></a>
    <a href="stop.php"><img src="stop.png"></a>
    <a href="lauter.php"><img src="lauter.png"></a>
     
     
     
     
    </center>
    </body></html>

    ....aufrufen könnt ihr dann die Seite mit

    www.eure Raspberryip/Webradio/index.html“

    3; Dann legt ihr für jeden Sender ein PHP an, z.B. mit den Namen „oe3.php“ an

    PHP-Code:
    <?php
    system ( "mpc play 1");                  
    header("Location:index.html");
    ?>

    „mpc play 1“ deswegen weil es mein Erster Sender in der Playlist ist!

    4;Dann legt ihr für jeden Sender ein PHP an, z.B. mit den Namen „leiser.php“ an

    PHP-Code:
    <?php
    system ( "mpc volume -5");                  
    header("Location:index.html");
    ?>

    5;Dann legt ihr für jeden Sender ein PHP an, z.B. mit den Namen „lauter.php“ an

    PHP-Code:
    <?php
    system ( "mpc volume +5");                  
    header("Location:index.html");
    ?>
     
    6;Dann legt ihr für jeden Sender ein PHP an, z.b mit den Namem „stop.php“ an
     
    <?php
    system ( "mpc stop");                  
    header("Location:index.html");
    ?>
    6; Den Ordner WEBRADIO hab ich dann auf die Berechtigung „755“ gesetzt!

    Das wars am Raspberry!

    Ihr könnt das ganze auch noch in die Loxone einbinden!

    Ihr legt einen virtuellen Ausgang an mit der Zieladdresse z.B. 192.168.1.1:80, „HACKEN“ Verbindung nach senden schließen und kein Trennzeichen!

    Dann legt ihr für leiser-start-stop und jeden Sender einen virtuellen Ausgangs Befehl an!
    Mit dem Inhalt z.B.: /Webradio/leiser.php an!
    Damit könnt ihr dann mit Virtulelle oder auch Digitale Eingänge über Euer Loxone-System auch das Radio fernbedienen!


    Güße aus der grünen Steiermark.....

    Und viel Spass damit....
    M.Maurer

    PS: Für Ideen und Verbesserungsvorschläge bin ich offen!
    Vorallem was meine WEBSEITE betrifft! Da bin ich nicht so ganz FIT!!!



    LG MRM
  • Gast

    #2
    Hallo Michael,
    ich hab im Haus zwei Raspberries mit Audioplayer laufen. Wenn ich das richtig sehe laufen die beide auf MPD Basis. Das eine läuft auf Volumio und das andere auf RuneAudio und kann sogar AirPlay. Lautsprecher dafür sind im Bad in der Decke und in der Küche in die Wand eingebaut. Ich hab bisher immer nach einer Lösung gesucht, um sie an Loxone anzuschließen. Die Lösung liegt aber wohl im mpg321 als zusätzlichen Player. Gute Lösung, probier ich die Tage mal aus. Theoretisch brauch ich dafür nicht mal ein Skript weil der Miniserver auch so schon http Kommandos ausgeben kann. Ich muss dann nur die Kommandos in Loxone programmieren.
    Vielen Dank!
    Gruß,
    Tim
    Zuletzt geändert von Gast; 19.10.2015, 00:13.

    Kommentar


    • okenny
      okenny kommentierte
      Kommentar bearbeiten
      Hi Tim

      Wie weit bist du mit Volumio gekommen?
      Ich habe jetzt Loxone am laufen, dazu habe ich ein Pi mit Volumio am laufen - funktioniert gut!. Kann ich mit Loxone mein Volumio steuern?

      Danke!

    • Gast
      Gast kommentierte
      Kommentar bearbeiten
      Moin,
      du kannst Volumio über den Miniserver steuern. Allerdings bin ich nie über einfache Funktionen wie lauter, leiser, play, pause oder nächster Titel hinausgekommen.
      Hier mal ein Link zu einem anderen Forum wo ein paar Befehle beschrieben sind:


      Gruß,
      Tim

    • okenny
      okenny kommentierte
      Kommentar bearbeiten
      Danke, soweit war ich auch schon gekommen.
  • Gast

    #3
    Hallo Michael,
    Danke für deine HowTo, hätte noch 2 - 3 Fragen dazu:

    Wenn ich keine Seite zum Bedienen brauche, weil ich das Webradio ausschließlich über Loxone bedienen möchte, brauche ich dann die index.html Datei überhaupt?
    Würden dann die einzelnen php Dateien reichen?

    Wie genau rufe ich die php Dateien im Loxone auf? Habe dort den Befehl /webradio/start.php bei "Befehl bei ein" reingeschrieben.

    Gruß
    Martin

    Kommentar


    • Michael Rene Maurer
      Michael Rene Maurer kommentierte
      Kommentar bearbeiten
      Hi, wenn du keine Webseite brauchst, brauchst du auch nicht zwingend das index.html, lass es oben!, ist ja nicht groß!
      IP Adresse Raspi und er der Befehl/web........ sollte dann funktionieren!
  • Gast

    #4
    Hi,
    zum Test ist die Seite doch nicht ganz verkehrt.
    Leider bringt er mir immer, dass er bei einem Klick auf Start usw. die angegebene php Datei nicht findet, obwohl sie im richtigen Verzeichnis liegt.
    Hab den Webserver und auch den Raspberry neu gestartet. Hättest du sonst noch ne Idee wo ich nachsehen könnte?

    NACHTRAG:
    Hat sich erledigt. Hab jetzt alles in den html Ordner am Raspberry kopiert. Jetzt werden auch die Dateien gefunden. War jetzt einfacher als dem Apache Server zu sagen, wie das neue Verzeichnis heißt...zumindest für mich.

    Gruß
    Martin
    Zuletzt geändert von Gast; 20.01.2016, 21:47. Grund: Problem gelöst

    Kommentar

    • Gast

      #5
      Hallo ,

      ich habe auch versucht, mit der Anleitung das Webradio über den Miniserver zu steuern. Leider bislang ohne Erfolg.
      Eine feste IP-Adresse hat der RaspberryPi.
      Den UDP Port habe ich auf 65000 gesetzt.
      Erstmal musste ich einen Webserver installieren, da habe ich den lighttpd genommen, weil ich eine Anleitung dafür gefunden habe.
      Ich bekomme auch die Webseite mit den Bildern angezeigt, (alles liegt in /var/WWW/html) aber wenn ich auf der Seite auf ein Icon klicke, dann bekomme ich eine HTTP 500-Fehlermeldung.


      Was auch nicht funktioniert ist, dass ich mit dem Miniserver das Radio steuern kann.

      Das Ganze liegt wahrscheinliche daran, dass das Python-Script nicht funktioniert, ich weiß nur nicht warum.
      Python ist installiert und funktioniert auch

      pi@raspberrypi:/var/www/html $ /usr/bin/python
      Python 2.7.9 (default, Sep 17 2016, 20:26:04)
      [GCC 4.9.2] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      Das Script - ich kenne die Endung für Python-Scripts nicht - hat Execute Rechte
      -rwxr-xr-x 1 pi pi 716 Nov 25 23:22 /home/pi/radioscript.pyt
      Wenn ich das Script so starte, dann bekomme ich nur Fehlermeldungen
      pi@raspberrypi:/var/www/html $ sudo /home/pi/radioscript.pyt
      /home/pi/radioscript.pyt: 1: /home/pi/radioscript.pyt: !/usr/bin/python: not found
      /home/pi/radioscript.pyt: 3: /home/pi/radioscript.pyt: import: not found
      /home/pi/radioscript.pyt: 4: /home/pi/radioscript.pyt: import: not found
      /home/pi/radioscript.pyt: 5: /home/pi/radioscript.pyt: import: not found
      /home/pi/radioscript.pyt: 7: /home/pi/radioscript.pyt: UDP_IP: not found
      /home/pi/radioscript.pyt: 8: /home/pi/radioscript.pyt: UDP_PORT: not found
      /home/pi/radioscript.pyt: 10: /home/pi/radioscript.pyt: Syntax error: "(" unexpected
      In rc.local ist die Zeile so eingetragen (bringt aber nix, wenn es nicht läuft):
      sudo /home/pi/radioscript.pyt & Exit

      Kann mir einer auf die Sprünge helfen?

      Grüße

      Chris

      Kommentar

      • Gast

        #6
        Okay, also was bei mir nicht funktioniert ist der Aufruf im Script von python, die Syntax die oben in der Anleitung steht "!/usr/bin/python" - da kann mein rasbian nix mit anfangen, auch meine Korrektur in "#!/usr/bin/python" hat daran allerdings nichts geändert.

        Dann habe ich also das Script mit "python radioscript.py" aufgerufen und einen "syntaxerror non-ascii character ' xc3' in file" Fehler bekommen, den ich mit der Zeile "# coding: utf8" eliminieren konnte - um danach direkt den nächsten Fehler zu bekommen: "IndentationError: expected an indented block"

        Okay, wieder was gelernt, Python ist also die erste Scriptsprache, die einen Fehler wirft, wenn man die Einrückung nicht richtig setzt.
        Nun sieht mein Script also so aus und läuft auch (siehe Bild)

        Ich habe das Script mit " nohup python radioscript.py &" gestartet, einen laufenden Prozess habe ich, aber mein Miniserver spricht immer noch nicht mit meinem RaspberryPi,

        Ich komme also immer noch nicht richtig weiter.
        Kann ich irgendwo prüfen, ob meine Befehle überhaupt bis zum RaspberryPi kommen?

        Danke und Grüße

        Chris

        update: Entweder ich bin wirklich eingerostet, oder raspbian funktioniert ein bißchen anders.
        ich habe das Script immer mit . ./radioscript.py gestartet, mit o.g. Fehlern. Wenn ich das Script als executable ablege und mit ./radioscript.py starte, dann läuft's

        Ändert aber nichts an dem Problem mit der Kommunikation
        Zuletzt geändert von Gast; 28.11.2016, 22:30.

        Kommentar

        • Gast

          #7
          Okay, ich hab's.
          Ich habe den Fehler gemacht, dass ich hier per Copy&Paste gearbeitet habe, anscheinend werden dann versteckte Sonderzeichen mit übertragen. Nachdem ich alles nochmal händisch abgetippt habe, funktioniert jetzt alles.

          den Test, ob was ankommt habe ich mit tshark gemacht mit " tshark -i 1 -aduration:20 -w traffic.pcap"
          und dann die Datei mit wireshark auf dem Rechner ausgewertet. - Nur als Zusatzinfo, da ich ja selbst danach gefragt hatte....
          Zuletzt geändert von Gast; 28.11.2016, 22:32.

          Kommentar

          • Steva88
            Smart Home'r
            • 08.02.2016
            • 75

            #8
            Hi,

            Wie macht ihr das, dass die Songtitel und Interpret in der loxone angezeigt werden?

            Gruß

            Steve

            Kommentar

            • Gast

              #9
              Hallo zusammen, ich bin noch recht frisch in der Rasperry Welt Habe mal eine Verständnis frage, und zwar ist es möglich eine Textausgabe vom Miniserver auf einen Rasperry der Volumio installiert hat auszugeben?

              Danke

              Kommentar

              Lädt...