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

  • Werner V
    antwortet
    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

    Einen Kommentar schreiben:


  • Werner V
    antwortet
    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

    Einen Kommentar schreiben:


  • SachsenTobi
    antwortet
    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

    Einen Kommentar schreiben:


  • Werner V
    antwortet
    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

    Einen Kommentar schreiben:


  • makki
    antwortet
    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

    Einen Kommentar schreiben:


  • Werner V
    antwortet
    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

    Einen Kommentar schreiben:


  • Memphi
    hat ein Thema erstellt [wiregate] Steuerung von Samsung TVs.

    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
Lädt...
X