Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Plugins werden nicht mehr ausgeführt

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

    #16
    Zitat von makki Beitrag anzeigen
    Das macht er von alleine..
    Hallo makki,

    dies kann ich leider auch verneinen, oder zumindest nicht immer. Wiregated wird bei Status rot angezeigt und muss per "Hand" aktiviert werden.

    Wobei bei mir auch das Problem der Memleaks sein können, obwohl ich den "patch" mit den compilierten Plugins habe

    Kommentar


      #17
      Hast du irgend ein socket im einsatz? Bei mir ist die Systemstabilität massiv hoch gegangen nachdem ich alle IP und USB Socket so wie die zugehörigen Plugins entfernt habe und die ansteuerung anders gelöst habe.

      Es ist immer schwierig ohne Angaben zum System und den darauf laufenden "Tasks" irgend welche Rückschlüsse zu ziehen oder paralellen zu erkennen.
      Gruss Patrik alias swiss

      Kommentar


        #18
        Hi,

        nein ich habe keine Sockets, nur ein Ping-Plugin (aber das erst seit kurzem) und hatte davor schon gleiche probleme

        Gruß Flowy

        Kommentar


          #19
          Zitat von swiss Beitrag anzeigen
          Hast du irgend ein socket im einsatz? Bei mir ist die Systemstabilität massiv hoch gegangen nachdem ich alle IP und USB Socket so wie die zugehörigen Plugins entfernt habe und die ansteuerung anders gelöst habe.
          Hallo,

          sorry für die späte Antwort!

          Es war ein Socket, komischerweise läuft dieser seit über einem Jahr... auf einmal fing es an Probleme zu bereiten.
          Ich hab an den socket einstellungen mal ein wenig gedreht in der Hoffnung das es das war... (Bidirektional aktivieren war Augenscheinlich der ausschlaggebend Punkt)
          Funktioniert wieder Gott sei Dank.

          Im Anhang die aktuellen Einstellungen mit denen es funktioniert.

          Gruß
          Angehängte Dateien

          Kommentar


            #20
            Also hängt das WG nun nicht mehr alle 8 Stunden?

            Ich habe bei mir weitestgehend auf Soket's verzichtet (hatte fürher 6 Stück heute noch 1) und die Systemstabilität ist nun sehr gut. Zuvor hatte ich rund alle 24h einen Reboot (automatisch). Doch nun ist schon seit 99 Tage am Stück Ruhe
            Gruss Patrik alias swiss

            Kommentar


              #21
              blöder Weise funktioniert das Script jetzt nur noch jedes zweite mal...
              Ich weiss nur nicht wie ich den Socket umgehen kann...

              es geht um folgendes Script
              Code:
               #### Plugin für Radio mit Hilfe des Onkyo 414 #####
              #### Vorraussetzung iscp ####
                
               ## TODO:
              # Wenn Fernseher an nicht aus sondern umschalten
              # Stati abfragen
              # Firstboot
                
               ##### Radio on/off ###
               my $Radio_GA = '13/1/40';
              ######################
               #### Fernsehen Status ####
               my $Fernsehen = '13/1/39';
              ##########################
               #### Amp Status GA ######
               my $onkyo = '13/1/31';
              #########################
               ##### outputs ############
               my $FM = '13/1/36';
              my $Sat = '13/1/37';
              my $Video = '13/1/38';
              my $Game;
              ##########################
              #### Zone2 Outputs ###
              my $Z2FM = '13/1/41';
              ##### receive Volume #####
              my $onkyo_volume = '13/1/33'; #DPT 5.001
               my $faktor = 80/100;
              ##########################
               ##### Volume step up/down ######
              my $onkyo_vol_up_down= '13/1/34';
              my $vol_up_data = "01";
              my $vol_down_data = "09";
              ################################
               ### 2nd Amp ###
              my $verstaerker = '13/1/2';
              ########################
               ###### firstboot ############
              my $start_volume = "19";
              my $fernseher_start_volume = "22";
               #############################
               #### Bad Radio####
              my $Bad_Radio = '13/1/9';
              my $Bad_Volume = '13/1/44';
              my $Bad_Status;
              #### Kueche Radio ####
              my $Kueche_Radio = '13/1/0';
              my $Kueche_Volume = '13/1/43';
               
              ## definition für iscp, Onkyo Receiver
              my $Port = "60128";
              my $IP = "192.168.178.68";
               my $folder = "/home/onkyo-iscp/./onkyo-iscp";
               my $iscp_folder = "/home/onkyo-iscp/./onkyo-iscp 192.168.178.68";
              # /home/onkyo-iscp/./onkyo-iscp 192.168.178.68
              $plugin_subscribe{$Radio_GA}{$plugname}=1;
              $plugin_subscribe{$onkyo_volume}{$plugname}=1;
              $plugin_subscribe{$onkyo_vol_up_down}{$plugname}=1;
              $plugin_subscribe{$FM}{$plugname}=1;
              $plugin_subscribe{$Sat}{$plugname}=1;
              $plugin_subscribe{$Video}{$plugname}=1;
              $plugin_subscribe{$Fernsehen}{$plugname}=1;
              $plugin_subscribe{$Z2FM}{$plugname}=1;
              $plugin_subscribe{$Kueche_Radio}{$plugname}=1;
              $plugin_subscribe{$Bad_Radio}{$plugname}=1;
               $plugin_info{$plugname.'_cycle'} = 0;
                
               my %commandlist = ("power", "PW", 
              "volume_main", "MVL",  
              "volume_down", "MVLDOWN",
              "volume_up", "MVLUP",
              "main_selector", "SLI", 
              "zone2", "ZPW",
              "z2_selector", "SLZ",
              "z2_vol", "ZVL",
              "audio_selector", "LMD",
              );
              my %sources = (
              "VIDEO", "10",
              "SAT", "01",
              "GAME", "02",
              "FM", "24",
              "PC", "05",
              );
              my %audio_mode = {
              "stereo", "00",
              "all_channel", "0C",
              "studio_mix", "0A",
              "pl2_movie", "80",
               };
              ##### set Source ############################## 
              if (($msg{'dst'} eq ($FM)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $cmd = "$commandlist{'main_selector'}$sources{'FM'}";
              command_exec($cmd);}}
               if (($msg{'dst'} eq ($Sat)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $cmd = "$commandlist{'main_selector'}$sources{'SAT'}";
              command_exec($cmd);}}
               if (($msg{'dst'} eq ($Video)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $cmd = "$commandlist{'main_selector'}$sources{'VIDEO'}";
              command_exec($cmd);}}
               if (($msg{'dst'} eq ($Game)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $cmd = "$commandlist{'main_selector'}$sources{'GAME'}";
              command_exec($cmd);}}
               if (($msg{'dst'} eq ($Z2FM)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $cmd = "$commandlist{'z2_selector'}$sources{'FM'}";
               command_exec($cmd);}}
              #plugin_log($plugname, $cmd);}}
              ################################################
               ####### Volume step #################
              if (($msg{'dst'} eq ($onkyo_vol_up_down)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {
              if ($msg{'data'} eq $vol_up_data) {
              my $cmd = "$commandlist{'volume_main'}$commandlist{'volume_up'}";
              command_exec($cmd);}
               if ($msg{'data'} eq $vol_down_data) {
              my $cmd = "$commandlist{'volume_main'}$commandlist{'volume_down'}";
              command_exec($cmd);}}}
              #####################################
               ###### set volume DPT5 (receive Volume)##########
              if (($msg{'dst'} eq ($onkyo_volume)))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
              { my $volume1 = decode_dpt(0,$msg{'data'},5);
               plugin_log($plugname, $volume1);
              my $volume2 = ($faktor)*$volume1;
              my $volume = sprintf("%02d", $volume2);
               plugin_log($plugname, $volume2);
              my $cmd = "$commandlist{'volume_main'}$volume";
              plugin_log($plugname, $cmd);
              command_exec($cmd);}}
              ###### End Volume receive ########################
                
                
               ##### Ein Ausschalten  Kueche #######
              if ($msg{'dst'} eq ($Radio_GA))
              { if ($msg{'apci'} eq 'A_GroupValue_Write') 
               
               {my $Bad_Status = knx_read($Bad_Radio, 1,1);
              # plugin_log($plugname, $Bad_Status);
               if ($Bad_Status == 0)
                {if ($msg{'data'} == 01 ) {
                knx_write($verstaerker,1,1);
                 my $cmd = "$commandlist{'power'}01";
                knx_write($onkyo,1,1);
                knx_write($onkyo_volume,$start_volume,5);
                knx_write($Kueche_Volume,53,5);
                my $cmd3 = "$commandlist{'zone2'}01";
                knx_write($FM,1,1);
                knx_write($Z2FM ,1,1);
                command_exec($cmd, $cmd3)  ;
                }
               
                if ($msg{'data'} == 00 ) {
                my $cmd = "$commandlist{'zone2'}00";
                command_exec($cmd)  ;
                knx_write($verstaerker,0,1);
                my $fernstat = knx_read($Fernsehen,1, 1.001);
                #plugin_log ("Fernseher",  $fernstat);
                if ($fernstat == 01) {my $cmd = "$commandlist{'main_selector'}$sources{'SAT'}";
                command_exec($cmd);}
                if ($fernstat == 00) {my $cmd = "$commandlist{'power'}00";
                command_exec($cmd);
                knx_write($Kueche_Volume,0,5);
               }}}}
               if ($Bad_Status == 1)
                {if ($msg{'data'} == 01 ) {
                knx_write($Kueche_Volume, 53,5);
                }
               
                if ($msg{'data'} == 00 ) {
                knx_write($Kueche_Volume, 0,5);
               }}
               }
               
              ############ Fernsehen #######################
              if ($msg{'dst'} eq ($Fernsehen))
              { 
              if ($msg{'apci'} eq 'A_GroupValue_Write') 
              {my $Radio_status = knx_read($Radio_GA, 1,1);
              if ($Radio_status == 01) {
              if ($msg{'data'} == 01 ) {
              my $cmd = "$commandlist{'zone2'}00";
              my $cmd2 = "$commandlist{'main_selector'}$sources{'SAT'}";
              knx_write($onkyo_volume,$fernseher_start_volume,5.001);
              my $cmd3 = "$commandlist{'audio_selector'}$audio_mode{'pl2_movie'}";
              command_exec($cmd2, $cmd3);
              }}
               if ($Radio_status == 00) {
              if ($msg{'data'} == 01 ) {
              my $cmd = "$commandlist{'power'}01";
              my $cmd = "$commandlist{'zone2'}00";
              my $cmd2 = "$commandlist{'main_selector'}$sources{'SAT'}";
              knx_write($onkyo_volume,$fernseher_start_volume,5.001);
              my $cmd3 = "$commandlist{'audio_selector'}$audio_mode{'pl2_movie'}";
              command_exec($cmd2, $cmd3);
              }}
              if ($msg{'data'} == 00 ) {
              my $cmd = "$commandlist{'power'}00";
              my $cmd2 = "$commandlist{'zone2'}00";
              command_exec($cmd2, $cmd);}
              }}
                sub command_exec {
              foreach (@_) {
              my $cmd = $_;
              plugin_log($plugname, $cmd);
              use strict;
              use IO::Socket;
               
              # my $cmd="PWR01";
              #my $cmd=$ARGV[0];
              my @iscpPacket;
              my $IP = "192.168.178.68";
              my $Port = "60128";
              $iscpPacket[0] = chr(0x49); 
              $iscpPacket[1] = chr(0x53); 
              $iscpPacket[2] = chr(0x43); 
              $iscpPacket[3] = chr(0x50); 
              $iscpPacket[4] = chr(0x00);
              $iscpPacket[5] = chr(0x00);
              $iscpPacket[6] = chr(0x00);
              $iscpPacket[7] = chr(0x10); 
              $iscpPacket[8] = chr(0x00);
              $iscpPacket[9] = chr(0x00);
              $iscpPacket[10] = chr(0x00);
              $iscpPacket[11] = chr(3+length($cmd));
              $iscpPacket[12] = chr(0x01); 
              $iscpPacket[13] = chr(0x00); 
              $iscpPacket[14] = chr(0x00); 
              $iscpPacket[15] = chr(0x00);
              $iscpPacket[16] = chr(0x21); 
              $iscpPacket[17] = chr(0x31); 
               for(my $a=18;$a<=18+length($cmd);$a++) #18
              {
              my $s = substr($cmd,$a-18,1); # 18
              $iscpPacket[$a] = $s;
              }
               $iscpPacket[18+length($cmd)] = chr(0x0D); # 18
               print @iscpPacket;#
               my $host = $IP;
              my $port = $Port;
               my $SOCK = new IO::Socket::INET(PeerAddr => $host, PeerPort => $port, Proto => 'tcp', timeout => 3) || die "Socket Error: $!\n";
              $SOCK->autoflush(1);
              print $SOCK @iscpPacket;
              my $datagram;
              $SOCK->recv($datagram, 32);
              close ($SOCK);
              }}
              irgendwo ist da der Hund drin... Obwohl es ein Jahr ohne Probleme lief.

              ein tipp wie ich den socket umgehen kann?

              Gruß

              Kommentar


                #22
                Hmmm... Gibt es einen Grund wesshalb du nicht ausgetretene Pfade bei der Kommunikation mit dem Soket beschreitest?

                Klüger wäre doch, oben im code den Soket zu öffnen und am Plugin anzumelden...

                Code:
                my $socknum = 118; # Eindeutige Nummer des Sockets +1
                
                
                #Diese Einstellungen können normalerweise so belassen werden!
                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)
                
                if (!$socket[$socknum]) { # socket erstellen
                        $socket[$socknum] = IO::Socket::INET->new(LocalPort => $recv_port,
                                                  Proto => "udp",
                                                  LocalAddr => $recv_ip,
                                                  PeerPort  => $send_port,
                                                  PeerAddr  => $send_ip,
                                                  ReuseAddr => 1
                                                   )
                    or return ("open of $recv_ip : $recv_port failed: $!");
                
                    $socksel->add($socket[$socknum]); # add socket to select
                
                    $plugin_socket_subscribe{$socket[$socknum]} = $plugname; # subscribe plugin
                    return "opened Socket $socknum";
                }
                gesendet wird dann mit:

                Code:
                syswrite($socket[$socknum], $command);
                und wenn du Rückmeldungen auswerten willst, dann mit:

                Code:
                ...
                } elsif ($fh) {
                ... code der beim erhalt eines IP Telegramm abgearbeitet werden soll.
                }
                Gruss Patrik alias swiss

                Kommentar


                  #23
                  ja der Grund liegt darin das ich in dem Themen Gebiet nicht sehr fit bin ��... Aber gute Idee. Ich versuchen das mal umzusetzen.

                  Danke! Und schönen Abend noch!

                  Gruß

                  Kommentar


                    #24
                    Hoffe das hilft Funktioniert bei einigen meiner Plugins seit jahren problemlos Wurde vor langer Zeit mal von makki als "Funktionsvorlage" geschrieben und kommt in allen Plugins mit Soket die von mir kommen zur Anwendung.

                    Auch das Comfoair Plugin kommuniziert genau so mit dem Soket. Denke also das sollte auch bei dir mit dem Onkyo klappen
                    Gruss Patrik alias swiss

                    Kommentar


                      #25
                      na dann kann ich optimistisch bleiben

                      hätte ich dich besser mal sie SuFu benutzt bevor ich das Plugin zusammengefrickelt hab.

                      Dankeschön!! Und Gruß



                      gesendet ohne Tapatalk aber mit dem Telefon

                      Kommentar

                      Lädt...
                      X