Samsung Fernseher fernbedienen

Aber laut Link hat die B-Serie doch auch „Remote“ Möglichkeiten, nur eben auf Port 2345 statt 55000?!

Diese Meldung kommt beim Starten der Software. Aber mit einem gehackten B-Version sollte das kein Problem mehr sein.

Kurzgefasst B-Serie

Es ist möglich mit dem Tool oder allgemein über den erwähnten Port 2345 einen Teil der Dinge zu tun… um genau zu sein die Messaging Teile f unktionieren sofern man diese explzit beim Fernseher in den Einstellungen freigiebt. Alle Fernbedienungstasten/Remote funktioniert NICHT. AUSSER man ladet auf dem Fernseher über einen usbstick einen lokalen Client der startet und die Befehler empfängt. Das ist zwar ein Hack, das Problem, dieser Client muss jedesmal wenn der Fernseher ein und ausgeschaltet wird (Eben nur B-Serie) manuel gestartet werden. Ist somit kaum brauchbar. Es gibt zwar auch hierfür noch firmware hacks hab mir das angeschaut aber hier lasse ich die Finger davon wegd a muss man genau wissen was man macht und mit dem Fernseher in die Reparatur klappt nicht einfach so mal schnell. also Wenn dann und Neubeschaffung eher nicht die B-Serie…

Danke @simba69

funktioniert Super mit UE37C6800

endlich auch die GUIDE Taste die in vielen Apps nicht drin

Leider funktioniert das Ganze bei Samsung BD-PLayer noch nicht. Zumindest hab ich es nicht hinbekommen

Hallo Samys,

es wäre doch super wenn IPS wichtige Meldungen an den Samsung senden könnte. Ich habe zwar keine Ahnung wie mann solche „Code`s“ weiterverarbeitet aber es sind doch sehr viele Profis hier.

Vielleicht kann man das gebrauchen: MessageBoxService request format

Hast Du es so probiert?:

CSCK_SetOpen(13848 /*[UE55C6700 Socket]*/, true);

$msg = chr(0x64).chr(0x00).chr(strlen(base64_encode($src))).chr(0x00).base64_encode($src).chr(strlen(base64_encode($mac))).chr(0x00).base64_encode($mac).chr(strlen(base64_encode($remote))).chr(0x00).base64_encode($remote);
$pkt = chr(0x00).chr(strlen($app)).chr(0x00).$app.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(13848 /*[UE55C6700 Socket]*/,$pkt);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key))).chr(0x00).base64_encode($key);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(13848 /*[UE55C6700 Socket]*/,$pkt);

$key = "KEY_0";

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key))).chr(0x00).base64_encode($key);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(13848 /*[UE55C6700 Socket]*/,$pkt);


CSCK_SetOpen(13848 /*[UE55C6700 Socket]*/, false);

Der Beitrag ist zwar schon etwas älter aber da ich bisher keine Lösung dazu gefunden habe, hier meine Lösung: :wink:

Wenn vor jedem weiteren Key eine Pause von ca 200 ms eingelegt wird funktioniert es… :wink:

Hier mein kompletter Code wo der Speicherplatz „0815“ ausgewählt wird:

<?

$src = "192.168.178.100"; # ip des IPS
$mac = "00-00-00-00-00-00"; # mac des IPS
$remote = "Perl Samsung Remote";
$dst = "192.168.178.204"; # ip of tv
$app = "iphone..iapp.samsung";
$tv = "UE55D8090"; # iphone.UE55D8090.iapp.samsung

$key1 = "KEY_0";  #auszuführende Taste
$key2 = "KEY_8";  #auszuführende Taste
$key3 = "KEY_1";  #auszuführende Taste
$key4 = "KEY_5";  #auszuführende Taste

error_reporting(0);

$ping = Sys_Ping($dst, 1000);
if ($ping ==false){
    echo "<FONT SIZE='+3' COLOR=red><br>FERNSEHER REAGIERT NICHT</FONT>";
    die();
    }

$samsungstatus = IPS_GetInstance(39315 /*[UE55D8090 Socket]*/ );
if ($samsungstatus['InstanceStatus']>102){
    CSCK_SetOpen(39315 /*[UE55D8090 Socket]*/ , true);
    IPS_ApplyChanges(39315 /*[UE55D8090 Socket]*/ );
    $samsungstatus = IPS_GetInstance(39315 /*[UE55D8090 Socket]*/ );
    if ($samsungstatus['InstanceStatus']>102){
        echo "<FONT SIZE='+3' COLOR=red><br>FERNSEHER REAGIERT NICHT</FONT>";
        die();
        }
    }

CSCK_SetOpen(39315 /*[UE55D8090 Socket]*/ , true);

$msg = chr(0x64).chr(0x00).chr(strlen(base64_encode($src))).chr(0x00).base64_encode($src).chr(strlen(base64_encode($mac))).chr(0x00).base64_encode($mac).chr(strlen(base64_encode($remote))).chr(0x00).base64_encode($remote);
$pkt = chr(0x00).chr(strlen($app)).chr(0x00).$app.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(39315 /*[UE55D8090 Socket]*/ ,$pkt);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key1))).chr(0x00).base64_encode($key1);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(39315 /*[UE55D8090 Socket]*/ ,$pkt);

IPS_Sleep(250);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key2))).chr(0x00).base64_encode($key2);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(39315 /*[UE55D8090 Socket]*/ ,$pkt);

IPS_Sleep(250);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key3))).chr(0x00).base64_encode($key3);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(39315 /*[UE55D8090 Socket]*/ ,$pkt);

IPS_Sleep(250);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key4))).chr(0x00).base64_encode($key4);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(39315 /*[UE55D8090 Socket]*/ ,$pkt);

CSCK_SetOpen(39315 /*[UE55D8090 Socket]*/ , false);

?>

Hat jemand seinen Samsung eigentlich schon komplett in IPS eingebunden?

Ich habe leider vom programmieren nahezu null Plan und suche eine elegantere Lösung, als für jeden Befehl manuell ein Skript zu erstellen. :confused:

Gruß
Freak4x

Ich löse das so, ein Skript für alle Befehle.

<?


if($IPS_SENDER == "WebFront")
{
  	SetValue($IPS_VARIABLE, $IPS_VALUE);
}
$ping = Sys_Ping('192.168.1.66', 1000);
if ($ping ==true){
	switch ($IPS_VALUE)
	   {
	      case "1":
	      $wert = ("KEY_PIP_ONOFF");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "2":
	      $wert = ("KEY_PMODE");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "3":
	      $wert = ("KEY_ZOOM1");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "4":
	      $wert = ("KEY_4");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "5":
	      $wert = ("KEY_5");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "6":
	      $wert = ("KEY_6");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "7":
	      $wert = ("KEY_7");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "8":
	      $wert = ("KEY_8");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "9":
	      $wert = ("KEY_9");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "10":
	      $wert = ("KEY_0");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "11":
	      $wert = ("KEY_VOLUP");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "12":
	      $wert = ("KEY_VOLDOWN");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "13":
	      $wert = ("KEY_CHUP");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "14":
	      $wert = ("KEY_CHDOWN");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "15":
	      $wert = ("KEY_SOURCE");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "16":
	      $wert = ("KEY_RETURN");
			IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "17":
	      $wert = ("KEY_CYAN");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "18":
	      $wert = ("KEY_GREEN");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "19":
	      $wert = ("KEY_RED");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
       case "20":
	      $wert = ("KEY_EXIT");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	      
	      case "21":
	      $wert = ("KEY_ENTER");
	      IPS_Sleep (250);
	      SetValue($IPS_VARIABLE,50);
	      break;
	   }

$src = "192.168.102.6"; # ip des IPS
$mac = "00-25-11-2B-F0-AB"; # mac des IPS
$remote = "Perl Samsung Remote";
$dst = "192.168.102.66"; # ip of tv
$app = "iphone..iapp.samsung";
$tv = "UE55C8700"; # iphone.UE55C6700.iapp.samsung

$key = "$wert";  #auszuführende Taste

error_reporting(0);

$ping = Sys_Ping($dst, 1000);
if ($ping ==false){
    echo "<FONT SIZE='+3' COLOR=red><br>FERNSEHER REAGIERT NICHT</FONT>";
    die();
    }

$samsungstatus = IPS_GetInstance(26580 /*[SamsungTV]*/);
if ($samsungstatus['InstanceStatus']>102){
    CSCK_SetOpen(26580 /*[SamsungTV]*/, true);
    IPS_ApplyChanges(26580 /*[SamsungTV]*/);
    $samsungstatus = IPS_GetInstance(26580 /*[SamsungTV]*/);
    if ($samsungstatus['InstanceStatus']>102){
        echo "<FONT SIZE='+3' COLOR=red><br>FERNSEHER REAGIERT NICHT</FONT>";
        die();
        }
    }

CSCK_SetOpen(26580 /*[SamsungTV]*/, true);

$msg = chr(0x64).chr(0x00).chr(strlen(base64_encode($src))).chr(0x00).base64_encode($src).chr(strlen(base64_encode($mac))).chr(0x00).base64_encode($mac).chr(strlen(base64_encode($remote))).chr(0x00).base64_encode($remote);
$pkt = chr(0x00).chr(strlen($app)).chr(0x00).$app.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(26580 /*[SamsungTV]*/,$pkt);

$msg = chr(0x00).chr(0x00).chr(0x00).chr(strlen(base64_encode($key))).chr(0x00).base64_encode($key);
$pkt = chr(0x00).chr(strlen($tv)).chr(0x00).$tv.chr(strlen($msg)).chr(0x00).$msg;
CSCK_SendText(26580 /*[SamsungTV]*/,$pkt);

CSCK_SetOpen(26580 /*[SamsungTV]*/, false);
}
else{
echo "TV ist aus, bitte einschalten";
SetValue($IPS_VARIABLE,50);
}
?>

dann noch eine Variable erstellen mit (in meinem Beispiel) 21 Assoziationen.

Uwe, you made my day ;)))

Heute habe ich den dritten Samsung (alles D-Serie) in Betrieb genommen und Dein Script ausprobiert. Es lief auf Anhieb!

Danke und einen Guten Rutsch an alle!

Axel

Na Sup:)i, freut mich.

dann noch eine Variable erstellen mit (in meinem Beispiel) 21 Assoziationen.

Hallo Uwe,

Dein Skript sieht schon Mal recht vielversprechend aus. Aber wie und wo lege ich eine Variable mit xx Assoziationen? :confused:

Hoffentlich wirst Du schlau daraus.:o

Vielen Danke für die Mühe, hab’s damit hinbekommen. :smiley:

Die „Eigene Aktion“ hatte ich bei der Variable nicht ausgewählt, ansonsten war ich doch schon auf dem richtigen Weg. :eek:

Gruß
Freak4x

Hallo Uwe,
nachdem ich dein Bild gesehen habe, meine ich, es könnte als Anleitung für einen Neuling verwendet werden. Das ist dir gut gelungen. Aber wohin damit, dass es jeder findet ?

Erinnert mich ein bischen an IPS V1.0 :cool: Da hat man auch vor lauter Pfeilen hin und her nichts mehr gesehen. :smiley:

Erinnert mich ein bischen an IPS V1.0

Hihi, mich auch.:smiley:

So, jetzt ist mein UE55D7090 da, hängt an der Wand, beeindruckt alle Besucher mit tollen 3D Bildern und ich bin der Held meiner Frau. Mal wieder. :wink:

Jetzt habe ich diesen Thread hier schon eine Weile, eher aus allgemeinem Interesse, verfolgt und die Anbindung klappt soweit auch. Und jetzt frage ich mich: „Wofür eigentlich ?“. Klar, proof of concept - und toll was man alles mit IPS machen kann, aber meinen Fernseher will ich jetzt nicht wirklich über das Webfront bedienen…

Daher meine, ernst gemeinte, Frage: Für welche praktischen Verwendungszwecke nutzt ihr die Anbindung ?

Das einzige was mir einfallen würde, wäre so etwas wie „leiser machen wenn es klingelt (Tür/Telefon)“, ist jetzt für mich aber nicht so das Killerfeature…

Also bitte - wofür nutzt ihr das? Bei der Menge an Beiträgen und vor allem an Skripten, muss ich doch irgendwas übersehen…

Viele Grüße
Martin

Ja, das würde mich auch mal interessieren.
Hab nämlich das gleiche „Problem“. Samsung „D“ Serie gekauft, Steuerbarkeit ausprobiert - mich gefreut.

Aber was mach ich jetzt damit ?

Gute Ideen willkommen.
bb

Mein PVR lässt im Hintergrund Timshifting laufen und meine Kinder machen einfach nur den Fernseher aus. Ich würde den PVR gerne ausschalten, sobald der Fernseher länger als 5 Minuten aus ist…

Darüber hinaus eine Szene „Glotzen“ (oder so), bei welcher TV angeschaltet und Licht gedimmt wird etc.

Mir würde jetzt spontan einfallen, per Script zu prüfen, welcher Kanal (Sender) eingeschalten ist…

Kanal wo heute Rosamunde Pilcher läuft… Script starten… alle 4 Minuten Fernseher ausschalten… nach ner Weile zu Frauchen sagen… das liegt wohl am Sender… durchzappen, bis der Actionthriller gefunden wurde und Frauchen davon überzeugen, dass es besser ist, diesen zu schauen… wenn Frauchen das nicht versteht… neuer Versuch mit RoPi-Kanal… bringt nix… nach 4 Minuten TV aus… und du wirst sehen Frauchen schaut auch gerne mal Sly, Arni u. Co. :wink:

Ne, aber mal in Ernst… per Tablett den TV steuern, wenn der eh auf’m Tisch rumliegt… oder per alles aus… auch den TV mit ausschalten… usw.