Ankündigung

Einklappen
Keine Ankündigung bisher.

Steuerung von Samsung TVs

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

    [wiregate] Steuerung von Samsung TVs

    Hallo,

    Es gibt für den HS einen Plugin, welcher eine Samsung TV Steuerung über LAN erlaubt. HS Plugin für Samsung Nun würde ich gerne wissen ob es sowas auch für den Wiregate, (Cometvisu usw) gibt bzw. ob sowas geplant ist.

    MfG Alexander

    #2
    Hi!

    Ich bin zwar eine Niete was Plugins erstellen etc. angeht, aber googeln kann ich

    Hab hier was gefunden, vielleicht hilft das jemanden weiter der sich etwas mehr auskennt.

    [INFORMATION]
    #!/usr/bin/perl

    use CGI qw(:standard);
    use IO::Socket;
    use MIME::Base64;

    #IP Address of TV
    my $tvip = "192.168.100.1";

    print "Content-type: text/html\n\n";

    my $sock = new IO::Socket::INET (
    PeerAddr => $tvip,
    PeerPort => '55000',
    Proto => 'tcp',
    );
    die "Could not create socket: $!\n" unless $sock;

    #Normal remote keys
    #KEY_0
    #KEY_1
    #KEY_2
    #KEY_3
    #KEY_4
    #KEY_5
    #KEY_6
    #KEY_7
    #KEY_8
    #KEY_9
    #KEY_UP
    #KEY_DOWN
    #KEY_LEFT
    #KEY_RIGHT
    #KEY_MENU
    #KEY_PRECH
    #KEY_GUIDE
    #KEY_INFO
    #KEY_RETURN
    #KEY_CH_LIST
    #KEY_EXIT
    #KEY_ENTER
    #KEY_SOURCE
    #KEY_AD
    #KEY_PLAY
    #KEY_PAUSE
    #KEY_MUTE
    #KEY_PICTURE_SIZE
    #KEY_VOLUP
    #KEY_VOLDOWN
    #KEY_TOOLS
    #KEY_POWEROFF
    #KEY_CHUP
    #KEY_CHDOWN
    #KEY_CONTENTS
    #KEY_W_LINK #Media P
    #KEY_RSS #Internet
    #KEY_MTS #Dual
    #KEY_CAPTION #Subt
    #KEY_REWIND
    #KEY_FF
    #KEY_REC
    #KEY_STOP

    #Bonus buttons not on the normal remote:
    #KEY_TV

    #Don't work/wrong codes:
    #KEY_CONTENT
    #KEY_INTERNET
    #KEY_PC
    #KEY_HDMI1
    #KEY_OFF
    #KEY_POWER
    #KEY_STANDBY
    #KEY_DUAL
    #KEY_SUBT
    #KEY_CHANUP
    #KEY_CHAN_UP
    #KEY_PROGUP
    #KEY_PROG_UP

    my $myip = "192.168.100.2"; #Doesn't seem to be really used
    my $mymac = "01-23-45-67-89-ab"; #Used for the access control/validation, but not after that AFAIK
    my $appstring = "iphone..iapp.samsung"; #What the iPhone app reports
    my $tvappstring = "iphone.UE32C6500.iapp.samsung"; #Might need changing to match your TV type
    my $remotename = "Perl Samsung Remote"; #What gets reported when it asks for permission/also shows in General->Wireless Remote Control menu

    my $messagepart1 = chr(0x64) . chr(0x00) . chr(length(encode_base64($myip, ""))) . chr(0x00) . encode_base64($myip, "") . chr(length(encode_base64($mymac, ""))) . chr(0x00) . encode_base64($mymac, "") . chr(length(encode_base64($remotename, ""))) . chr(0x00) . encode_base64($remotename, "");
    my $part1 = chr(0x00) . chr(length($appstring)) . chr(0x00) . $appstring . chr(length($messagepart1)) . chr(0x00) . $messagepart1;

    print $sock $part1;
    print $part1;
    print "\n";

    my $messagepart2 = chr(0xc8) . chr(0x00);
    my $part2 = chr(0x00) . chr(length($appstring)) . chr(0x00) . $appstring . chr(length($messagepart2)) . chr(0x00) . $messagepart2;
    print $sock $part2;
    print $part2;
    print "\n";

    #Preceding sections all first time only

    if (defined(param("key"))) {
    #Send remote key
    my $key = "KEY_" . param("key");
    my $messagepart3 = chr(0x00) . chr(0x00) . chr(0x00) . chr(length(encode_base64($key, ""))) . chr(0x00) . encode_base64($key, "");
    my $part3 = chr(0x00) . chr(length($tvappstring)) . chr(0x00) . $tvappstring . chr(length($messagepart3)) . chr(0x00) . $messagepart3;
    print $sock $part3;
    print $part3;
    print "\n";
    } elsif (defined(param("text"))) {
    #Send text, e.g. in YouTube app's search, N.B. NOT BBC iPlayer app.
    my $text = param("text");
    my $messagepart3 = chr(0x01) . chr(0x00) . chr(length(encode_base64($text, ""))) . chr(0x00) . encode_base64($text, "");
    my $part3 = chr(0x01) . chr(length($appstring)) . chr(0x00) . $appstring . chr(length($messagepart3)) . chr(0x00) . $messagepart3;
    print $sock $part3;
    print $part3;
    print "\n";
    }

    close($sock);

    print "\n\n";

    [/INFORMATION]

    Quelle mit ein wenig Doku >> klick <<

    Da mein TV im Schlafzimmer auch ein Samsung Smart TV ist würd mich das übrigens auch interessieren

    lg Werner
    KNX, DMX, 1Wire, WireGate, CometVisu

    Kommentar


      #3
      Das sieht übersichtlich aus, sollte absolut machbar sein (hab aber selber nur nen alten Samsung ohne LAN..)

      obiges ist ein CGI-Script für den Webserver, zum testen und verstehen der Sache sollte das 1:1 auf dem WG laufen..

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

      Kommentar


        #4
        Hi,

        da ist sogar ein html Code dabei der eine Fernbedienung imitiert, mit dem man dann über das cgi Script wohl den Fernseher schalten kann. Muss mich da jetzt wohl ein wenig spielen

        lg Werner
        KNX, DMX, 1Wire, WireGate, CometVisu

        Kommentar


          #5
          Moin,

          die große Frage ist nur: Ab welcher Serie bei Samsung funktioniert das?

          Meistens nämlich erst ab der D Serie???

          Oder hat das mal einer bei einer C Serie getestet die ja auch alle nen Lan haben?

          Danke

          Kommentar


            #6
            Hi!

            Das Script was ich gepostet habe ist offensichtlich für die C-Serie, der Link den ich gepostet habe führt auch ins Forum für die C-Serie.

            Mein Gerät ist ebenfalls eine C-Serie, mal schauen vielleicht kommt ich dieses WE dazu mich ein wenig zu spielen.

            lg Werner
            KNX, DMX, 1Wire, WireGate, CometVisu

            Kommentar


              #7
              Hi!

              Kurze Vorgeschichte... Hab das CGI-Script + Web IF getestet und es hat auf Anhieb funktioniert. Also hab ich mich doch an einem Plugin versucht - ich weiß zwar nicht warum, aber es funktioniert :P

              [HILFE]
              # Plugin Samsung SmartTV Steuerung
              # Version: 0.2 BETA (12.10.2012)
              # Copyright: Werner V (https://knx-user-forum.de/members/werner+v.html)
              # License: GPL (v2)
              # Benötigt Samsung SmartTV mit LAN Anschluss

              use CGI qw(:standard);
              use IO::Socket;
              use MIME::Base64;

              ########################
              ### DEFINITION ###
              ########################

              # Eigenen Aufruf-Zyklus setzen (Initialisierung/zyklisches prüfen)
              $plugin_info{$plugname.'_cycle'} = 86400;

              # Allgemeine Einstellungen
              my $tvip = "192.168.1.41"; # IP des SmartTVs
              my $knx_GA = "11/1/0"; # Gruppenadresse für die Bedienung
              my $myip = "192.168.1.40"; #Remoute IP auf der das Plugin läuft
              my $mymac = "01-23-45-67-89-ab"; #Remoute MAC Adresse auf der das Plugin läuft, wird nur beim erstmaligen anmelden gebraucht, wird danach im AllShare gespeichert
              my $appstring = "iphone..iapp.samsung"; #What the iPhone app reports (wirklich benötigt?)
              my $tvappstring = "iphone.UE32C6500.iapp.samsung"; #Might need changing to match your TV type (wirklich benötigt?)
              my $remotename = "Samsung Remote"; #Wird am SmartTV (AllShare) angezeigt sobald man sich das erste mal anmeldet

              #########################
              ### ENDE DEFINITION ###
              #########################

              #########################
              ### Hauptverarbeitung ###
              #########################

              # Socket erstellen
              my $sock = new IO::Socket::INET (
              PeerAddr => $tvip,
              PeerPort => '55000',
              Proto => 'tcp',
              );
              die "Could not create socket: $!\n" unless $sock;

              # Telegramm vom KNX
              if (%msg) {
              if ($msg{'apci'} eq "A_GroupValue_Write" and $knx_GA eq $msg{'dst'}) {
              my $messagepart1 = chr(0x64) . chr(0x00) . chr(length(encode_base64($myip, ""))) . chr(0x00) . encode_base64($myip, "") . chr(length(encode_base64($mymac, ""))) . chr(0x00) . encode_base64($mymac, "") . chr(length(encode_base64($remotename, ""))) . chr(0x00) . encode_base64($remotename, "");
              my $part1 = chr(0x00) . chr(length($appstring)) . chr(0x00) . $appstring . chr(length($messagepart1)) . chr(0x00) . $messagepart1;
              print $sock $part1;
              print $part1;
              print "\n";
              my $messagepart2 = chr(0xc8) . chr(0x00);
              my $part2 = chr(0x00) . chr(length($appstring)) . chr(0x00) . $appstring . chr(length($messagepart2)) . chr(0x00) . $messagepart2;
              print $sock $part2;
              print $part2;
              print "\n";
              my $key = decode_dpt16($msg{'data'});
              my $message = chr(0x00) . chr(0x00) . chr(0x00) . chr(length(encode_base64($key, ""))) . chr(0x00) . encode_base64($key, "");
              my $part3 = chr(0x00) . chr(length($tvappstring)) . chr(0x00) . $tvappstring . chr(length($message)) . chr(0x00) . $message;
              print $sock $part3;
              print $part3;
              print "\n";
              return;
              }

              }
              else {
              $plugin_subscribe{$knx_GA}{$plugname} = 1;
              }
              return;
              close($sock);
              print "\n\n";
              [/HILFE]

              Hintergrund bzw. Aufbau: Man sendet per DPT 16 den gewünschten KEY (zB. KEY_VOLUP, KEY_VOLDOWN, KEY_CHUP, KEY_CHDOWN usw.) an die GA, dieser wird von Plugin umgewandelt und an den TV gesendet. Funktioniert soweit auch alles einwandfrei, hab mir zum Testen in der CV einen Multitrigger angelegt und die vier Buttons für Channel +/- und Lautstärke +/- belegt.

              Jetzt bräuchte man nur noch ein Frontend oder ähnliches für die CV

              Getestet hab ich mit einem C-Serie TV. Übrigens, wenn die bessere Hälfte gerade am fernsehen ist, hört man beim Testen gleich sehr gut ob es funktioniert oder nicht auch wenn man nicht vorm TV sitzt

              Feedback und Verbesserungsvorschläge sind gerne gesehen

              lg Werner
              KNX, DMX, 1Wire, WireGate, CometVisu

              Kommentar


                #8
                Zitat von Werner V Beitrag anzeigen
                Übrigens, wenn die bessere Hälfte gerade am fernsehen ist, hört man beim Testen gleich sehr gut ob es funktioniert oder nicht auch wenn man nicht vorm TV sitzt
                Hoi Werner

                Sehr gut, hab' mich köstlich amüsiert.
                Eine allgemeine Steuerungsseite für TV und Receiver (Dreambox) wäre wirklich eine sehr nützliche Ergänzung für die CometVisu. (design=metall)
                Die flutscht schon sehr ordentlich (echtzeit), sogar auf den iProdukten. (sogar die Slider)
                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


                  #9
                  Ein paar Anregungen:
                  - use CGI braucht man in diesem Fall ned
                  - close($sock) ist eher ungeschickt, die Plugins sind extra so gemacht, das der offen bleiben darf (wenn der TV z.B. was redet kann man sich mit $plugin_socket_subscribe aufrufen lassen)
                  Das gibt so ziemlich sicher ein memleak, der Socket sollte nur einmal aufgemacht werden..

                  Makki

                  P.S.: und dann sollte das ins SVN, damit nicht untergeht..
                  EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                  -> Bitte KEINE PNs!

                  Kommentar


                    #10
                    Hi makki,

                    danke für den Input, das mit dem use CGI dacht ich mir auch schon. Ich werd die Tage das Plugin noch ein wenig aufräumen bzw. will ich auch testen ob man die $appstring und $tvappstring wirklich braucht. Ich posts dann nochmal hier dann kannst du es gerne ins SVN stellen

                    lg Werner
                    KNX, DMX, 1Wire, WireGate, CometVisu

                    Kommentar


                      #11
                      Hallo,

                      schöner Beitrag. Dann bekomme ich ja doch noch ein Fernseher für mein Bad, den ich mit meiner Fliese steuern kann :-)

                      Könnt ihr auch die Modelle nennen, mit dem es bei euch funktioniert ?

                      Gruß Manuel

                      Kommentar


                        #12
                        Ich muss zugeben ich blicke bei den Scripten oben noch nicht ganz durch. Ich müsste bei mir lediglich die Lautstärke meines TVs auf 0 setzen. Kann mir hierfür jemand das IP-Telegramm definieren?
                        Grüße
                        Christian

                        Kommentar


                          #13
                          Alternativ müsste ich mir wohl doch das umfassende HS Plugin zulegen.

                          Kommentar


                            #14
                            Zitat von manu241 Beitrag anzeigen
                            Hallo,

                            schöner Beitrag. Dann bekomme ich ja doch noch ein Fernseher für mein Bad, den ich mit meiner Fliese steuern kann :-)

                            Könnt ihr auch die Modelle nennen, mit dem es bei euch funktioniert ?

                            Gruß Manuel
                            Fliese ?????

                            Kommentar


                              #15
                              Schön und sehr interessant! Verwendete Sensoren etc. werden auch noch gefragt werden..

                              Ich darf an der Stelle aber an die Thread-Disziplin erinnern: das ganze Thema ist (schon alleine zuliebe der Touchfliese) besser in einem neuen Thread aufgehoben, weils mit Titel nur sehr peripher zu tun hat
                              -> Edit: Hab das Thema gerade verschoben
                              hier gehts weiter zum Thema: https://knx-user-forum.de/forum/supp...wiregate/23315

                              @SaarChris: Dito, wenn du eine Lösung für den HS suchst, häng dich doch vielleicht an den HS-Thread dazu..

                              Und nun zurück zum Thema, die geposteten Forums-Thread zum Samsung-Protokoll sind ein bisschen unübersichtlich (vor allem wenn man keinen solchen hat und es nicht bewerten kann..), gibts das irgendwo gesammelt ?
                              Wäre ansonsten im Zuge des entstehenden Plugins eine Sache für Lexikon oder OpenAutomation-Wiki (CometVisu)

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

                              Kommentar

                              Lädt...
                              X