Ankündigung

Einklappen
Keine Ankündigung bisher.

Russound per RIO über IP

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #76
    hi chris, also bei mir läufts mit rio auch mehr recht als schlecht. der russound geht nunmal mehrmals in den ruhezustand. danach geht bei mir nichts mehr :

    Code:
    2012-05-30 16:48:04.154,Russound_RIO-3.pl,KNX:A_GroupValue_Write->10/1/130;00;,0s, 2012-05-30 16:48:04.170,Russound_RIO-3.pl,<Unknown: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[3] OFF^)>Socket: [0: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[3] OFF^);->;;,0s, 2012-05-30 16:48:04.313,Russound_RIO-3.pl,<Unknown: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[4] OFF^)>Socket: [0: S;1: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[4] OFF^);->;;,0s, 2012-05-30 16:48:04.700,Russound_RIO-3.pl,KNX:A_GroupValue_Write->10/1/170;00;,0s, 2012-05-30 16:48:04.779,Russound_RIO-3.pl,Socket: [0: S;->;;,0s, 2012-05-30 16:48:05.287,Russound_RIO-3.pl,KNX:A_GroupValue_Write->10/1/210;00;,0s, 2012-05-30 16:48:05.304,Russound_RIO-3.pl,<Unknown: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[5] OFF^)>Socket: [0: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[5] OFF^);->;;,0s, 2012-05-30 16:48:05.819,Russound_RIO-3.pl,<Unknown: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[6] OFF^)>Socket: [0: S;1: E SubscriptionDoesNotExists (error near: WATCH C[1].Z[6] OFF^);->;;,0s,
    ist hier russconnected more stable ?

    lg lars

    Kommentar


      #77
      Zitat von larsknx Beitrag anzeigen
      ist hier russconnected more stable ?
      Der ist sehr stabil, im dritten Anlauf, nach teurer Moxa&HS-Baustein sollts ja wohl nach 4J endlich tun
      Spricht aber RNET via RS232, nicht RIO via IP und funktioniert (aus mir unbekannten gründen-> da wäre immernoch jemand gefragt, der sich da reinhängt!) wohl nicht mit der C5 sondern nur mit den alten CA* obwohl die C5 lt. Doku auch RNET kann.

      Fairerweise: die kennen aber auch kein Standby sondern werden per Aktor ausgeknipst..

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

      Kommentar


        #78
        Zitat von larsknx Beitrag anzeigen
        Hallo, ich probier seit Tagen, den internen Tuner vom C5 zum laufen zu bekommen. Telnetbefehle klappen wunderbar, hab das RIO Protocol for 3rd Party Integrators.pdf als Anleitung hergenommen.

        Ich kriegs einfach nicht hin, die Bank1 und dann zB NDR2 auszuwählen. Ich höre nur ein ständiges Rauschen. Hab die programmierten Frequenzen am Radio eingestellt, die sind definitv richtig.
        Ich hab bei mir per Telnet den Sender eingestellt (Per Tastenbefehle einfach die Frequenz eintippen...).
        Da ich eh nur einen Sender höre hab ich's dabei belassen, mehr hat mich nicht interessiert...

        Aber hier ist natürlich das Plugin zu schwach aufgestellt. D.h. wer will darf hier gerne verbessern.
        Zitat von larsknx Beitrag anzeigen
        hi chris, also bei mir läufts mit rio auch mehr recht als schlecht. der russound geht nunmal mehrmals in den ruhezustand.
        Hm, mein Russound C3 geht nur dann schlafen, wenn alle Zonen OFF sind. Damit läuft's bei mir auch sehr stabil - vor jedem Einschalten schicke ich ja ein WoL Magic Packet...
        TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!

        Kommentar


          #79
          hi chris, ich hab in deinem plugin die verbindung etwas anders gestaltet, zusätzlich zum abfangen vom schlafmodus meines c5 noch zwei funktionen eingebaut (check_socket, check_socket_second).

          das modifizierte plugin unterstützt allerdings die 8 zonen wie hier im thread beschrieben.

          damit gehts bei mir endlich auch dann, wenn der russound in den sleep modus geht. puh, war echt sau doof, immer wiregate sonst neustarten zu müssen, um nen neuen socket zu bekommen.

          Code:
          #############################################################################
          # Plugin: Russound RIO
          # V0.1 2011-12-26
          # Copyright: Christian Mayer (mail at ChristianMayer.de)
          # License: GPL (v3)
          #
          # Plugin for talking to the Russound multi room amplifiers via the RIO
          # protocoll over the IP interface
          #
          # Suggested settings:
          # ===================
          #
          #############################################################################
          
          #return;   # uncomment to disable plugin
          
          #############################################################################
          # Configuration:
          # --> change values in the conf.d directory!
          my $IP_of_Russound;
          my $MAC_of_Russound;
          my $numzones;
          my $KNX_Start_Address;
          
          my $socket;
          my $socknum;    # unique number of the Socket
          
          my $reset     ; # set to 1 to reset the states, run script and change to 0 again
          my $show_debug; # switches debug information that will be shown in the log
          #############################################################################
          # Do NOT change anything below!
          #############################################################################
          
          #############################################################################
          # Constants:
          my $MAX_ZONES = 31;
          my $ZONES_PER_CONTROLLER = 8;
          
          #############################################################################
          # Collect log information
          my $retval = '';
          
          #############################################################################
          # Read config file in conf.d
          my $confFile = '/etc/wiregate/plugin/generic/conf.d/'.basename($plugname,'.pl').'.conf';
          if (! -f $confFile)
          {
            plugin_log($plugname, " no conf file [$confFile] found."); 
          }
          else
          {
            plugin_log($plugname, " reading conf file [$confFile].") if( $show_debug > 1); 
            open(CONF, $confFile);
            my @lines = <CONF>;
            close($confFile);
            my $result = eval("@lines");
            if( $show_debug > 1 )
            {
              ($result) and plugin_log($plugname, "conf file [$confFile] returned result[$result]");
            }
            if ($@) 
            {
              plugin_log($plugname, "conf file [$confFile] returned:") if( $show_debug > 1 );
              my @parts = split(/\n/, $@);
              if( $show_debug > 1 )
              {
                plugin_log($plugname, "--> $_") foreach (@parts);
              }
            }
          }
          
          ### Load pm
          
          use IO::Socket::INET;
          
          #############################################################################
          # Configure socket
          
          #my $socknum = 31;
          #    socket exists 4711 lan -> IO::Socket::INET=GLOB(0x9611900)Socket: [0: S VERSION="01.05.00";1: S;2: N System.status="ON"; socknum 4711 socket1->;;
          
          # bei problemen alle netzwerkverbindungen anzeigen lassen_: http://wiki.ubuntuusers.de/Portscan lsof > odat 
          #kill -9 `lsof | grep ESTABLISHED | awk '{print $2}'` socket killen
          #iptables -I OUTPUT -p tcp -d 192.168.2.102 -j REJECT
          #[13:57:33] Patrick Kaiser: iptables -D INPUT 1
          # Hauptverarbeitung
          # or ($fh and eof($socket[$socknum]))
          
          #$socket[$socknum] =
          check_socket ();
          
          #
          #
          #if (!$socket[$socknum]) { # if it doesn't exist: create socket
          #  if ($IP_of_Russound) {
          ##    $socket[$socknum] = IO::Socket::INET->new(
          ##      PeerAddr => $IP_of_Russound, 
          ##      PeerPort => '9621', 
          ##      Proto => 'tcp', 
          ##      Timeout => 120, 
          ##      Blocking => 0
          ##    );
          ##    if(!$socket[$socknum]) # retry with WOL if first try didn't work
          ##    {
          #      `wakeonlan $MAC_of_Russound`;
          #      
          #      $socket[$socknum] = IO::Socket::INET->new(
          #        PeerAddr => $IP_of_Russound, 
          #        PeerPort => '9621', 
          #        Proto => 'tcp', 
          #        Timeout => 120, 
          #        Blocking => 0
          #      );
          #      $retval .=  "send wol -> wake on lan -> $socket[$socknum]";
          ##    }
          #    if(!$socket[$socknum]) { # fail if second try also didn't work
          #      return "open of $IP_of_Russound failed: $!";
          #    }
          #  } else {
          #    return "ERROR: No IP address configured!";
          #  }
          
          #  $socksel->add($socket[$socknum]); # add socket to select
          
          #  $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
          
          #}
          #else {
          #    $retval .=   "socket exists $socknum lan -> $socket[$socknum]";
          #}
          
          #############################################################################
          my $destReadable =  $msg{'dst'};
          my $val = hex $msg{'data'};
          
          # Convert to numeric GA
          my $knxstartaddress = str2addr( $KNX_Start_Address );
          my $dest = str2addr( $destReadable );
          
          # Eigenen Aufruf-Zyklus ausschalten
          $plugin_info{$plugname.'_cycle'} = 300;
          #$plugin_info{$plugname.'_cycle'} = 0;
          
          if (%msg) { # KNX telegramm
            $retval .= 'KNX:' if $show_debug;
          } elsif ($fh) { # incoming network message
            my $sockInfo .= 'Socket: [';
            my $cnt = 0;
            my $line;
            $/ = "\r\n"; # remove all new line
            while( defined ($line = <$fh>) )
            {
              chomp( $line );
              $sockInfo .= ($cnt++) . ': ' . $line .';';
              handleRussResponse( $line );
            }
            $retval .= $sockInfo . " socknum $socknum socket".print($socket[$socknum]) if $show_debug;
            
            #2012-07-16 19:12:49.182,Russound_RIO-3.pl,socket with number 4810 exists -> IO::Socket::INET=GLOB(0x906cb18)Socket: [ socknum 4810 socket1->;;,0s,
            #2012-07-16 19:36:33.837,Russound_RIO-3.pl,socket with number 4810 exists -> IO::Socket::INET=GLOB(0x9454190)Socket: [0: S; socknum 4810 socket1->;;,0s,
            if($sockInfo eq "Socket: [") {
                 #$socket[$socknum] =
                 $retval .=" kein socket -> rufe check_socket_second auf\n"; 
                check_socket_second ();
            }
            
          } else 
          { # called during init or on cycle intervall
            syswrite( $socket[$socknum],  "VERSION\r" );
            syswrite( $socket[$socknum],  "WATCH System ON\r" );
          
          #  sendcmd( "VERSION" );
          #  sendcmd( "WATCH System ON" );
          
            # aboniere alle relevanten GAs
            for (my $zone=0;$zone<$numzones;$zone++) 
            {
              my $ctrl = int($zone/$ZONES_PER_CONTROLLER);
              my $czone = int($zone%$ZONES_PER_CONTROLLER);
              #my $base = $knxstartaddress + 10 + ($czone*40) + ($ctrl*256);
              my $base = $knxstartaddress + 10 + ($czone*40) + ($ctrl*512);
                  $base+=16 if $czone>=6;
              for( my $i = 0; $i < 13; $i++ ) # iterate funcnames
              {
                my $a = $base + $i;
                my $gastr = sprintf "%d/%d/%d", ($a >> 11) & 0xf, ($a >> 8) & 0x7, $a & 0xff;
                $plugin_subscribe{$gastr}{$plugname} = 1;
              }
              for( my $i = 0; $i < 10; $i++ ) # iterate stateames
              {
                my $a = $base + $i + 20;
                my $gastr = sprintf "%d/%d/%d", ($a >> 11) & 0xf, ($a >> 8) & 0x7, $a & 0xff;
                $plugin_subscribe{$gastr}{$plugname} = 1;
              }
            }
          }
          
          $retval .= $msg{'apci'} . '->' . $msg{'dst'} . ';'. $msg{'data'} . ';' if $show_debug;
          
          #############################################################################
          # Main function
          if($msg{'apci'} eq "A_GroupValue_Write")
          {
            # Transfere KNX Address to Russound Function similarly
            # to the rusconnectd
            my $func;
            my $zone;
            my $controller;
            {
              use integer;
          #    $func = ($dest - $knxstartaddress) % 256;
          #    $zone = ($func - 10) / 40;
          
          
                   $func = ($dest - $knxstartaddress) % 512;
                   $func -=16 if $func>=266;
                   $zone = ($func - 10) / 40;
              $func = ($func - 10) % 40;
          
              ##$controller = ($dest - $knxstartaddress) / 256;
              $controller = ($dest - $knxstartaddress) / 512;
            }
            
            if( $func < 20) # >= 20 = response addresses
            {
              $retval .= sendrussFunc( $controller, $zone, $func, $val );
            }
          }
          
          return $retval;
          
          #############################################################################
          # Helper funtions
          
          sub check_socket {
          
              if (!$socket[$socknum]) { # socket erstellen
                  if (defined $socket[$socknum]) {
                  
                      if ($socket[$socknum]->opened) {
                          $socket[$socknum]->close();
                          $retval .=   "close socket " if $show_debug;
                      }
                      undef $socket[$socknum];
                  }
                  
                  $socksel->remove($socket[$socknum]);
                  $retval .=   "remove socket " if $show_debug;
                  
                  $socket[$socknum] = IO::Socket::INET->new(
                PeerAddr => $IP_of_Russound, 
                PeerPort => '9621', 
                Proto => 'tcp', 
                Timeout => 120, 
                Blocking => 0
              ) or return ("open of $IP_of_Russound on Port 9621 failed: $!");
          
                  $socksel->add($socket[$socknum]); # add socket to select
                  $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                  $retval .=   "check_socket - new socket created:-> $socket[$socknum]" if $show_debug;
              }
              else {
                  $retval .=   "socket with number $socknum exists -> $socket[$socknum]" if $show_debug;
              }
          
              return $socket[$socknum];
          
          }
          
          sub check_socket_second {
          
              `wakeonlan $MAC_of_Russound`; # just to be sure wakeup russound
          
              if (defined $socket[$socknum]) {
                  
                  if ($socket[$socknum]->opened) {
                      $socket[$socknum]->close();
                      $retval .=   "close socket " if $show_debug;
                  }
                  undef $socket[$socknum];
              }
          
              $socksel->remove($socket[$socknum]);
              $retval .=   "remove socket " if $show_debug;
                  
              $socket[$socknum] = IO::Socket::INET->new(
                PeerAddr => $IP_of_Russound, 
                PeerPort => '9621', 
                Proto => 'tcp', 
                Timeout => 120, 
                Blocking => 0
            ) or return ("open of $IP_of_Russound on Port 9621 failed: $!");
                  
              $socksel->add($socket[$socknum]); # add socket to select
              $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
              $retval .=   "check_socket_second: new socket created:-> $socket[$socknum]" if $show_debug;
              
              return $socket[$socknum];
          
          }
          
          sub sendcmd 
          {
          #     my $cmd = shift;
          #    
          #     my $t = new Net::Telnet (
          #    Timeout => 10,
          #    Host => $IP_of_Russound,
          #    Port => 9621,
          #    Prompt => '/^/',
          #    Telnetmode => 0
          #  );
          #  $t->open();
          #  $t->print( $cmd );
          #  $t->close();
          #  my $res = $t->getline();
          #  $retval .= $cmd . '->' . $res ;
          #  return $res;
              
              
            my $cmd = shift;
            syswrite( $socket[$socknum],  "$cmd\r" );
            return;
          }
          
          sub sendrussFunc
          {
            my $controller = shift;
            my $zone       = shift;
            my $func       = shift;
            my $val        = shift;
          
            my $cz = 'C[' . ($controller+1) . '].Z[' . ($zone+1) . ']';
          
            if( -9 == $func ) #all zones
            {
              return 'Func ' . $func . ' not implemented or known';
            } elsif( 0 == $func ) #power
            {
              if( $val == 0 )
              {
                sendcmd("EVENT $cz!ZoneOff");
                sendcmd("WATCH $cz OFF" );
              } else {
                `wakeonlan $MAC_of_Russound`; # just to be sure
                sendcmd("EVENT $cz!ZoneOn" );
                sendcmd("WATCH $cz ON" );
              }
            } elsif( 1 == $func ) #src
            {
              my $mapped = $val + 1;
              sendcmd("EVENT $cz!SelectSource $mapped");
            } elsif( 2 == $func ) #volume
            {
              my $mapped = int( $val * 50/255 );
              sendcmd("EVENT $cz!KeyPress Volume $mapped");
            } elsif( 3 == $func ) #bass
            {
              my $mapped = $val > 10 ? $val-256 : $val;
              sendcmd("SET $cz.bass=\"$mapped\"");
            } elsif( 4 == $func ) #treb
            {
              my $mapped = $val > 10 ? $val-256 : $val;
              sendcmd("SET $cz.treble=\"$mapped\"");
            } elsif( 5 == $func ) #loud
            {
              sendcmd("SET $cz.loudness=\"" . ($val?'ON':'OFF') . '"');
            } elsif( 6 == $func ) #bal
            {
              my $mapped = $val > 10 ? $val-256 : $val;
              sendcmd("SET $cz.balance=\"$mapped\"");
            } elsif( 7 == $func ) #party
            {
              sendcmd("EVENT $cz!PartyMode " . ($val?'ON':'OFF') );
            } elsif( 8 == $func ) #dnd
            {
              sendcmd("EVENT $cz!DoNotDisturb " . ($val?'ON':'OFF') );
            } elsif( 9 == $func ) #turnonvol
            {
              my $mapped = int( $val * 50/255 );
              sendcmd("SET $cz.turnOnVolume=\"$mapped\"");
            #TODO: 10 src cmd and 11 keypadcmd
            } elsif( 12 == $func ) #volume relative up/down
            {
              sendcmd("EVENT $cz!KeyPress Volume" . ($val?'Up':'Down') );
            } else {
              return 'Func ' . $func . ' not implemented or known('.$val.')';
            }
          }
          
          sub handleRussResponse
          {
            my $response = shift;
            
            return if $response eq 'S';
            
            if( $response =~ /^N C\[([0-9]*)\].Z\[([0-9]*)\].(.*)="(.*)"/ )
            { # WATCH message from a controller
              my $index = "${plugname}_$1_$2_$3";
              return if $plugin_info{$index} eq $4; # no change
              
              $plugin_info{$index} = $4;
              sendKNXfuncCZ( $1, $2, $3, $4 );
            } elsif( $response =~ /^N S\[([0-9]*)\].(.*)="(.*)"/ )
            {
              #$retval .= 'S:'.$1.'>'.$2.'>'.$3.';';
            } elsif( $response =~ /^N System.(.*)="(.*)"/ )
            {
              #$retval .= 'System:'.$1.'>'.$2.';';
            } elsif( $response =~ /^S / )
            {
              return; # don't care about response code...
            } else {
              $retval .= "<Unknown: $response>";
            }
          }
          
          sub sendKNXfuncCZ
          {
            my $C     = shift;
            my $Z     = shift;
            my $state = shift;
            my $val   = shift;
            my $func; # KNX func number
            my $dpt;
            
            if( $state eq 'status' )
            {
              $func = 0;
              $val  = $val eq 'ON' ? 1 : 0;
              $dpt  = 1;
            } elsif( $state eq 'currentSource' )
            {
              $func = 1;
              $val = $val - 1;
              $dpt  = 5.004;
            } elsif( $state eq 'volume' )
            {
              $func = 2;
              $val = int($val * 255 / 50);
              $dpt  = 5.004;
            } elsif( $state eq 'bass' )
            {
              $func = 3;
              $val = $val < 0 ? 256+$val : $val;
              $dpt  = 5.004;
            } elsif( $state eq 'treble')
            {
              $func = 4;
              $val = $val < 0 ? 256+$val : $val;
              $dpt  = 5.004;
            } elsif( $state eq 'loudness' )
            {
              $func = 5;
              $val  = $val eq 'ON' ? 1 : 0;
              $dpt  = 1;
            } elsif( $state eq 'balance' )
            {
              $func = 6;
              $val = $val < 0 ? 256+$val : $val;
              $dpt  = 5.004;
            } elsif( $state eq 'partyMode' )
            {
              $func = 7;
              $val  = ($val eq 'ON' || $val eq 'MASTER') ? 1 : 0;
              $dpt  = 1;
            } elsif( $state eq 'doNotDisturb' )
            {
              $func = 8;
              $val  = $val eq 'ON' ? 1 : 0;
              $dpt  = 1;
            } elsif( $state eq 'turnOnVolume' )
            {
              $func = 9;
              $val = int($val * 255 / 50);
              $dpt  = 5.004;
            } else {
              $retval .= "ERROR: Unknown state '$state' with value '$val'!";
              return;
            }
              
            my $knxGA = $knxstartaddress+30+$func + (($Z-1)*40) + (($C-1)*256);
            knx_write( addr2str( $knxGA, 1 ), $val, $dpt );
            $retval .= 'KNX[' . addr2str( $knxGA, 1 ) . ',' . $dpt . ']:' . $val . ';' if $show_debug;
          }

          Kommentar


            #80
            Zitat von makki Beitrag anzeigen
            Der ist sehr stabil, im dritten Anlauf, nach teurer Moxa&HS-Baustein sollts ja wohl nach 4J endlich tun
            Spricht aber RNET via RS232i
            Na da kann ich mir endlich mal einen CA-4 zulegen und loslegen. Allerdings bin ich nicht sicher, was genau ich alles brauche für den Anschluß. Wird da Moxa noch benötigt oder wie wird der CA-4 an das WG angebunden?
            Gunnar Wagenknecht
            http://gunnar.ausapolda.de/

            Kommentar


              #81
              Zitat von gunnar Beitrag anzeigen
              oder wie wird der CA-4 an das WG angebunden?
              Hoi

              Die neueren C4 und C6 werden per LAN gesteuert. Mit dem Rio Protokoll.
              Man kann aber auch RNET einstellen (mit einer Gratis Software von Russound).

              Der Vorteil von einer Anbindung über RS232 ist, dass Du den Russ ganz ausschalten kannst.

              Über Lan bleibt die Netzwerkkarte im Standby. (WOL) (Hab' ich so)
              Grüsse Bodo
              Fragen gehören ins Forum, und nicht in mein Postfach;
              EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

              Kommentar


                #82
                Zitat von Bodo Beitrag anzeigen
                Der Vorteil von einer Anbindung über RS232 ist, dass Du den Russ ganz ausschalten kannst.
                Ich denke mal, daß ich einen "alten" CA4 nehme. Geht das mittels RS232-USB Adapter?
                Gunnar Wagenknecht
                http://gunnar.ausapolda.de/

                Kommentar


                  #83
                  Hi

                  Uups, sorry hab' nicht aufgepasst. Die CA4 kenn ich nicht so.
                  Grüsse Bodo
                  Fragen gehören ins Forum, und nicht in mein Postfach;
                  EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                  Kommentar


                    #84
                    Funktionsgarantie gibts keine aber ich meine mich zu erinnern das damit jemand schonmal eine alte CA4 ans rennen bekommen hat, bis auf die Kaskadierungsmöglichkeiten sind die ja recht ähnlich.

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

                    Kommentar


                      #85
                      Ok, dann frag mich mal anders, wie werden die "nicht-RIO" Russounds am besten mit dem WireGate verbunden? Geht ein direkter Anschluß an den seriellen Port des WireGates?
                      Gunnar Wagenknecht
                      http://gunnar.ausapolda.de/

                      Kommentar


                        #86
                        Zitat von gunnar Beitrag anzeigen
                        Ok, dann frag mich mal anders, wie werden die "nicht-RIO" Russounds am besten mit dem WireGate verbunden? Geht ein direkter Anschluß an den seriellen Port des WireGates?
                        Ja, ansonsten per USB-Serial.
                        Weiter dazu aber bitte hier, hat mit RIO und damit diesem Thread nichts zu tun..
                        Ich überarbeite gerade den Wiki-Artikel, das ganze mal sauber zu beschreiben

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

                        Kommentar


                          #87
                          Hallo,

                          ich habe mein Russound C5 mal via Plugin angebunden

                          Soweit mal keine Fehler.

                          Was ich nicht finde ist das mapping der Kommandos


                          10/1/0 ...10/1/xxx

                          wo ist definiert was die einzelnen Gruppenadressen bewirken?

                          Ich möchte den Russound über den HS steuern.
                          Gruß Hartwig

                          Kommentar

                          Lädt...
                          X