Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Socat Problem - Squeezebox Telnet

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #46
    So, habe es "auf die Schnelle" mal implementiert und konnte auf Anhieb mein iPhone mit Softsqueeze starten und pausieren :-)
    Das Ganze habe ich über die CometVisu Oberfläche gesteuert.
    Der Feinschliff fehlt noch, kommt aber nach meinem Urlaub.

    Ich habe noch ein paar Ideen und versuche diese umzusetzen. Ich poste das Ergebnis sobald es fertig ist!

    MfG,
    Konstantin

    Kommentar


      #47
      Schön, ich freue mich ja immer (um auch mal was positives zu sagen) zu sehen welch tolle Sachen Anwender mit einem offenen System schaffen!
      Weil einfach bei OSS der Phantasie keine künstlichen Grenzen von der Marketingabteilung gesetzt sind (ich sage das nur weil ich es gelegentlich auch mal verteidigen muss )

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #48
        ich hab' ja jetzt n' neues NAS, auf dem der SBS läuft.
        Das tut er besser als das D-Link.
        Was aber immer noch nicht tut, ist die CLI Steuerung.

        Muss ich ggf. noch Portforwarding am Router (Fritzbox) einstellen?

        Lt Log läuft das Plugin ja.
        Wenn die Verbindung über Putty steht, kommen die ersten Befehle auch an-doch dann ist Schluss.

        Ohne Putty geht nix.

        Das ist doch wohl nicht wahr.

        Grüße,
        Lio

        Kommentar


          #49
          Zitat von lio123 Beitrag anzeigen
          ich hab' ja jetzt n' neues NAS, auf dem der SBS läuft.
          Also wiedersprechen und gleichzeitig CLI anprangern ist nich drin

          Entweder Klicki-Bunti-SBS oder halt die wahrheit

          Makki
          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
          -> Bitte KEINE PNs!

          Kommentar


            #50
            Zitat von makki Beitrag anzeigen
            Also wiedersprechen und gleichzeitig CLI anprangern ist nich drin

            Entweder Klicki-Bunti-SBS oder halt die wahrheit

            Makki
            das versteh ich nun nicht. und helfen tut's auch nicht. Was widerspricht sich?
            Klicki Bunti?


            Grüße,
            Lio

            Kommentar


              #51
              Administriert man den SBS nichtmehr primär durch rumschubsen der Maus? Sorry, ich bin da raus

              Makki
              EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
              -> Bitte KEINE PNs!

              Kommentar


                #52
                Du kannst genau so die .conf editieren.


                Gesendet von unterwegs

                Kommentar


                  #53
                  aber den CLI kann man doch gar nicht konfigurieren!?!

                  Hat niemand ne Idee, warum die SB nur ein paar befehle lang reagiert, wenn Putty mit dem Wiregate verbunden ist, und danach nicht mehr?

                  Danke und Grüße,
                  Lio

                  Kommentar


                    #54
                    Lio ich glaub immernoch das ist ein reines Socketproblem. Pack doch mal die Daten auf den Tisch:

                    IP Wiregate
                    IP Squeezebox
                    IP Squeezeboxserver

                    Dann kann man mal ganz bestimmt sagen was in den Socketeinstellungen stehen muss. Das muss dann auch ganz ohne Putty und Commandline funktionieren.
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      #55
                      ok, dann lass ich noch mal die Hosen runter:

                      Socketeinstellung WG siehe Anhang.

                      SqueezeBox Radio: 192.168.2.28 MAC:00:04:20:29:25:E1
                      SqueezeBoX Server: 192.168.2.30 (NAS QNAP T212)
                      Wiregate: 192.168.2.26


                      Plugin:
                      Code:
                      # Steuern der Squeezeboxen
                      # socat notwendig
                      # V0.2 2012-06-28
                      
                      ### Im WG muss eine Socketverbindung mit folgenden Parametern erstellt werden
                      # Socket1: tcp-connect, Socket: IP_OF_SqueezeServer:9090
                      # Socket2: udp-datagram, Socket: localhost:50105, Optionen: bind=localhost:50106,reuseaddr
                      
                      ### Definitionen 
                      
                      # 00%3A04%3A20%3A1f%3A92%3Ac4 <-Originalmuster
                      # 00:04:20:29:25:e1  <- Eigene Mac 
                      my $player_id = "00%3A04%3A20%3A29%3A25%3Ae1";   # Player ID = Mac Adresse Trennzeichen "%3A"
                      
                      my $power_ga = "10/1/1";  # "power" # DPT1 1=on 0=off
                      my $play_ga = "10/1/2";  # "play" # Trigger DPT1 Wert egal
                      my $mute_ga = "10/1/3";  # "mixer muting" # DPT1 1=mute 0=unmute
                      my $vol_trigger_ga = "10/1/4";  # "mixer volume" +/- 10% Trigger DPT1 1=vol-up 0=vol-down
                      my $volume_ga = "8/1/5";  # "mixer volume" # absoluter Wert  DPT5
                      my $pause_ga = "10/1/5";  # "button pause" # Trigger DPT1 Wert egal
                      my $stop_ga = "10/1/6"; # "button stop" # Trigger DPT1 Wert egal
                      my $favorites_ga = "8/1/7"; # "favorites playlist play item_id:" # DPT 6.020 Nummer des Favoriten
                      my $temp = knx_read("15/5/20",0); # Schreibt Temperatur Wohnzimmer in Variable
                      my $temp_trigger = "10/1/7"; # Löst die Anzeige in der Squeezebox aus-Arbeitszimmer Taster4
                      
                      
                      my $socknum = 121; # Eindeutige Nummer des Sockets +1
                      my $send_ip = "localhost"; # Sendeport (UDP, siehe in Socket-Einstellungen)
                      my $send_port = "50106"; # Sendeport (UDP, siehe in Socket-Einstellungen)
                      my $recv_ip = "localhost"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
                      my $recv_port = "50105"; # Empfangsport (UDP, siehe in Socket-Einstellungen)
                      
                      ### Ende Definitionen
                      
                      # Eigenen Aufruf-Zyklus setzen
                      $plugin_info{$plugname.'_cycle'} = 0;
                      
                      # Plugin an Gruppenadresse "anmelden"
                      $plugin_subscribe{$power_ga}{$plugname} = 1;
                      $plugin_subscribe{$play_ga}{$plugname} = 1;
                      $plugin_subscribe{$mute_ga}{$plugname} = 1;
                      $plugin_subscribe{$vol_trigger_ga}{$plugname} = 1;
                      $plugin_subscribe{$volume_ga}{$plugname} = 1;
                      $plugin_subscribe{$pause_ga}{$plugname} = 1;
                      $plugin_subscribe{$stop_ga}{$plugname} = 1;
                      $plugin_subscribe{$favorites_ga}{$plugname} = 1;
                      $plugin_subscribe{$temp_trigger}{$plugname} = 1;
                      
                      # Socket erstellen
                      if (!$socket[$socknum]) {
                              $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                                        Proto => "udp",
                                                        LocalAddr => $recv_ip,
                                                        PeerPort  => $send_port,
                                                        PeerAddr  => $send_ip,
                                                        ReuseAddr => 1
                                                         )
                          or plugin_log($plugname, "open of $recv_ip : $recv_port failed: $!");
                          $socksel->add($socket[$socknum]); # add socket to select
                          $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                          plugin_log($plugname, "opened Socket $socknum");
                      } 
                      
                      # Nur bei einem Wert auf GA reagieren
                      
                      
                      # Temp in Squeezebox Küche
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $temp_trigger && defined $msg{'value'}) {
                          my $command = $player_id . " show line1:Draussen%20sind%20gerade line2:" . $temp . "%20°C duration:30 centered:1";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $temp);
                      
                      }
                      
                      
                      
                      
                      # Power Befehl / 0=off 1=on
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $power_ga && $msg{'value'}) {
                          my $command = $player_id . " power " . $msg{'value'};
                          my $return_val = sendCommand($command);
                       #   plugin_log($plugname, $return_val);
                      }
                      
                      # Play (last) = Power on / Trigger mit beliebigem Wert
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $play_ga && defined $msg{'value'}) {
                          my $command = $player_id . " play";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Mute Befehl / Trigger mit beliebigem Wert
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $mute_ga && defined $msg{'value'}) {
                          my $command = $player_id . " mixer muting " . $msg{'value'};
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Volume Down Befehl -10 Prozent / DPT 1 Trigger auf 0
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $vol_trigger_ga && $msg{'value'}==0) {
                          my $command = $player_id . " mixer volume -10";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Volume Down Befehl +10 Prozent / DPT 1 Trigger auf 1
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $vol_trigger_ga && $msg{'value'}==1) {
                          my $command = $player_id . " mixer volume +10";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Lautstärke setzen / DPT 5 in %
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $volume_ga && defined $msg{'value'}) {
                          my $command = $player_id ." mixer volume " .$msg{'value'};
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Pause Befehl / Trigger mit beliebigem Wert
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $pause_ga && defined $msg{'value'}) {
                          my $command = $player_id . " button pause";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      # Stop Befehl über Button / Trigger mit beliebigem Wert
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $stop_ga && defined $msg{'value'}) {
                          my $command = $player_id . " button stop";
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Favoriten wählen / DPT 6.020 als integer der Favoritennummer
                      if ($msg{'apci'} eq "A_GroupValue_Write" && $msg{'dst'} eq $favorites_ga && defined $msg{'value'}) {
                          my $command = $player_id ." favorites playlist play item_id:" .$msg{'value'};
                          my $return_val = sendCommand($command);
                      #    plugin_log($plugname, $return_val);
                      }
                      
                      # Log
                      return 0;
                      
                      sub sendCommand {
                      
                          my $command = $_[0]."\n";
                          plugin_log($plugname, $command);
                          syswrite($socket[$socknum], $command);
                      }
                      Angehängte Dateien

                      Kommentar


                        #56
                        Hi Lio,

                        ich lese nun schon eine zeitlang mit in dem Thread verstehe aber ehrlich gesagt nicht ganz das Problem bzw. was Du exakt machen willst.
                        Habe bei mir eigentlich eine ähnliche Config wie Du, also SBS auf NAS, Squeezebox. Ich steuere allerdings die Squeezebox mit dem EIBPC und (noch) nicht mit dem WG. Mit der CLI habe ich auch zwecks Config schon gespielt, aber die eigentliche Steuerung passiert doch via UDP-Commands vom EIBPC zum SBS. Der SBS wiederum schickt die Daten weiter an die Squeezebox.
                        Was genau willst Du da denn mit den Sockets und Telnet machen?
                        M.E. brauchst Du doch "nur" ein entsprechendes Plugin das UDP-Commands versendet. Die Details der UDP-Commands sind eigentlich ganz gut in einem PDF dokumentiert und ich meine im SVN gibt es schon UDP-Plugin's, welche relativ leicht zu modifizieren sind. So zumindest habe ich das ganze bei mir auf der ToDo-Liste stehen, allerdings weit weit hinten...

                        Sorry wenn ich da irgendein Detail nicht auf dem Schirm habe, dann Asche über mein Haupt...
                        VG, Oliver

                        Kommentar


                          #57
                          Aber wie wir im screenshot sehen, läuft der bube ja garnicht, da wär nun vermutlich fork statt reuseaddr wieder besser, kommt aber drauf an..

                          Makki
                          EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                          -> Bitte KEINE PNs!

                          Kommentar


                            #58
                            Erst durch den Post von Oliver wach geworden: zuwas dann socat&TCP wenns eh so geht?

                            Makki
                            EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                            -> Bitte KEINE PNs!

                            Kommentar


                              #59
                              Ich schau mir das die Tage mal an. Bis auf Dein crlf , was es nicht benötigt, sehe ich aber auch keinen Fehler in den Socketeinstellungen.

                              Ich hatte das mit dem CLI damals auch nur übernommen, wenn es einfacher geht wäre das umso besser. Das Plugin ist imho eh ein reines memleak und u.a. deshalb bei mir nicht mehr im Einsatz. Das mal zu untersuchen steht aber ganz weit hinten auf meiner Liste.

                              Squeezebox ansich ist schon interessanter, jetzt wos wieder kalt wird. Ich hab mir damals immer die Aussentemperatur auf Display senden lassen .


                              Gruß
                              Umgezogen? Ja! ... Fertig? Nein!
                              Baustelle 2.0 !

                              Kommentar


                                #60
                                Nun ja hab' immer nur brav gemacht, was hier im Beitrag stand, somit war irgendwann auch mal crlf dran.

                                mit fork wurde der bubbe nicht wach, nun aber, siehe anhang.

                                Ganze CMD-Zeile:
                                /usr/bin/socat tcp-connect:192.168.2.30:9090,crlf udp-datagram:localhost:50105,bind=localhost:50106,reus eaddr

                                Ja, das mit der Tempanzeige war letzte Wintersaison. Mittlerweile schwinden auch die Tasks- ztmindest ist der Garten 98% fertig.
                                Angehängte Dateien

                                Kommentar

                                Lädt...
                                X