Samsung ue55es8090 Lautstärke per FHEM

Begonnen von Invers, 17 Juli 2013, 22:12:42

Vorheriges Thema - Nächstes Thema

Invers

Weiss zufällig jemand, ob es einen Code gibt, mit dem man die Lautstärke per Zahl festlegen kann?

Genauere Erklärung:

Ich kann überflüssiger Weise mit meinem TV reden. Das ist praktisch, wenn man ihn einschalten will.
Auch die Lautstärke lösst sich über Sprache verstellen. Sage ich "lauter", ändert sich das Level um 1. Ich kann aber auch "Lautstärke 20" sagen, dann springt die Lautstärke sofort auf 20.
Genau diesen Befehl möchte ich nun per FHEM senden, kenne ihn aber nicht.
Daher meine Frage.
Hat jemand eine Idee? VOL20 funktioniert nicht. Ich fürchte fast, es wird nicht gehen.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Gerhard

Hallo Inves,

es gibt zwei Möglichkeiten die SamsungTVs über FHEM zu Steuern,

1. von UliM remotecontrol Modul siehe: http://www.fhemwiki.de/wiki/Remotecontrol

2. über das Modul STV kannst du konkret die Lautstärke eintstellen: siehe auch: http://forum.fhem.de/index.php?t=msg&goto=81407&rid=242#msg_81407

z.B. in fhem.cfg

define SamsungTV STV 192.168.0.24   # ip anpassen!

über telnet:

set volume 20     # siehe auch commandref

Gruß, Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

Gerhard

Hallo Invers,

sollte sicherlich: set SamsungTV volume 20 heißen!

Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

Invers

Danke für die ausführlichen Antworten.
Leider habe ich bisher trotzdem keinen Erfolg zu verzeichnen.


Ich nutze zur Steuerung des TV den folgenden, aus dem Forum stammenden Code in 99_myUtils:

#### Samsung-TV steuern ########################################################################################################
# called by n_STV
sub
samsungtv($) {
my $cmd = shift;
my @ARGV = split(" ",$cmd);
#### Configuration
#Debug "samsungtv ARGV 0:".$ARGV[0]. ($ARGV[1] ? " 1:".$ARGV[1] : "");
my $tv = "UE55ES8090"; # Might need changing to match your TV type
my $port = "55000";    #TCP port of Samsung TV
my $tvip = "192.168.178.22"; # IP Address of TV
my $myip = "192.168.178.20"; # Doesn't seem to be really used
my $mymac = "1C:6F:65:C5:AD:FC"; # Used for the access control/validation

    my $appstring = "iphone..iapp.samsung"; # What the iPhone app reports
    my $tvappstring = "iphone.".$tv.".iapp.samsung"; # TV type
    my $remotename = "Perl Samsung Remote"; # What gets reported when it asks for permission/also shows in General->Wireless Remote Control menu

    # command-line help

    if ($ARGV[0] eq "--help") {
       print "Usage: samsungremote KEY [KEYS]\n";
       print "Normal remote keys: 0 1 2 3 4 5 6 7 8 9 UP DOWN LEFT RIGHT ENTER MENU PRECH GUIDE INFO RETURN CH_LIST EXIT SOURCE AD PICTURE_SIZE VOLUP VOLDOWN MUTE TOOLS POWEROFF CHUP CHDOWN CONTENTS W_LINK RSS MTS SRS CAPTION TOPMENU SLEEP ESAVING PLAY PAUSE REWIND FF REC STOP TV HDMI PIP_ONOFF ASPECT \n";
       exit;
    }


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

    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;

    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;

    # Preceding sections all first time only

    if (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;
    }
    else {
      foreach my $argnum (0 .. $#ARGV) {
        # Send remote key(s)
# Debug "samsungtv.pl sending ".uc($ARGV[$argnum]);
        my $key = "KEY_" . uc($ARGV[$argnum]);
        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;
#        sleep(1);
        select(undef, undef, undef, 0.5);
       }
    }

    close($sock);

}



und in der fhem.cfg:

define STV1 dummy
attr STV1 group TV
attr STV1 webCmd HDMI:TV:CHUP:CHDOWN:POWEROFF

define STV2 dummy
attr STV2 group TV
attr STV2 webCmd MENU:UP:ENTER:VOLUP:VOLDOWN

define STV3 dummy
attr STV3 group TV
attr STV3 webCmd LEFT:DOWN:RIGHT:EXIT:VOLUME=20




Die Steuercodes funktionieren auch alle. Die wirklich sehr schöne Remote benötige ich  nicht, da ich nur Laut und Leise steuern will.
Das Einfügen von VOLUME=20 oder VOLUME 20 oder VOLUME20 oder VOLUME_20 hat nicht funktioniert.
Theoretisch muss Samsung einen zweiteiligen Befehl nutzen, da ich ja auch "Lautstärke 23" sagen könnte.

Könnte man ein Lautstärkelevel auslesen, dann könnte man zur Not ja den Befehl VOLUP oder VOLDOWN so oft senden, bis 20 erreicht ist. Das ist allerdings nicht sehr effektiv, da die Regelung dann sehr langsam wäre.
Ich vermute einfach mal, dass es keinen direkten Befehl dafür gibt und wollte hier im Forum eigentlich einen Trick oder den Befehl dafür herausbekommen.

Hat noch jemand eine Idee?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Gerhard

Hi Invers,

also für dich kommt Lösung 2 in Frage.

zum Testen kannst du in Telnet volgendes eingeben:

(tvIP soll deine richrige IP sein z.B. 192.168.0.214)

define SamsungTV STV tvIP
set SamsungTV volume 20

so, jetzt sollte dein Fernseher die Lautstärke auf 20 gestellt haben!

Gruß, Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

Invers

Sorry, dass ich nochmal nerve.
Da rührt sich nix. Gar kein Steuerbefehl geht.

Kann es sein, dass der Port 55000 eingestellt werfden muss bei STV?
Bei mir wird automatisch der Port 52235 eingestellt.
Falls der ÜPort geändert werden muss, was muss ich dazu eingeben?

Ich habe die Syntax nicht erkannt in der Erklärung:

This module supports Samsung TV devices.
LEXXBXX (B Series) use port 52235
LEXXCXX (C|D Series) use port 55000



Hier mal meine Werte:

CFGFN
   
DEF    
192.168.178.22

Host
192.168.178.22

NAME
SamsungTV

NR
303

Port
52235

STATE
Initialized

TYPE
STV
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Gerhard

Hallo Invers,

du kannst es mal mit den beiden Ports versucen:

define SamsungTV STV 192.168.178.22 52235
oder
define SamsungTV STV 192.168.178.22 55000

Gruß, Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

UliM

Hi,
das ist eine E-Serie, also Port 55000. Muss beim define von STV angegeben werden. Dann funzt's :)
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Invers

Das hatte ich vermutet, da ja alle Befehle an den TV mit diesem Port fuktionieren.
Aber leider erzielt der Befehl "set SamsungTV volume 20" eine Fehlermeldung, alle anderen gehen. Also ist ja prinzipiell eigentlich erstmal alles richtig konfiguriert. Schade, dass man da nicht mit Samsung reden kann. Die sperren sich da voll. Und die Hotline liest mir was aus dem Handbuch vor. Aber dafür hab ich zur Not ein Programm. :-)

[STV] Invalid command volume. Use any of:
0 1 2 3 4 5 6 7 8 9
UP DOWN LEFT RIGHT ENTER MENU PRECH GUIDE INFO RETURN
CH_LIST EXIT SOURCE AD PICTURE_SIZE VOLUP VOLDOWN MUTE TOOLS POWEROFF
CHUP CHDOWN CONTENTS W_LINK RSS MTS SRS CAPTION TOPMENU SLEEP
ESAVING PLAY PAUSE REWIND FF REC STOP TV HDMI PIP_ONOFF
ASPECT

Hat jemand noch eine Idee? Vielleicht hat je einer, der das liest, auch einen TV der E-Serie und kann mal kurz probieren?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

UliM

Hi,
hab ne E-Serie, VOLUP+VOLDOWN fnktionieren.
Absolutes Setzen nicht - selbst falls die Firmware das kann, wird für port 55000 ein Parameter ignoriert. (also die 20 von set ... volume 20).
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Gerhard

Hallo,

@Uli: Danke!

@Invers: sollte es mit Port 55000 funktionieren, dann kannst CALLMONITOR anwenden:

hier mein config:

define SamsungTV STV 192.168.0.24             #meiner ist eine D-Serie

#
# Test FB_CALLMONITOR....
#

define MyCallMonitor FB_CALLMONITOR 192.168.0.1:1012
attr MyCallMonitor event-on-change-reading event
attr MyCallMonitor group Wohnzimmer
attr MyCallMonitor room Haus

 
define n_MyCallMonitor notify MyCallMonitor {\
  my $extNr = ReadingsVal("MyCallMonitor", "external_number", "none");;\
  my $intNr = ReadingsVal("MyCallMonitor", "internal_number", "none");;\
  my $conNr = ReadingsVal("MyCallMonitor", "used_connection", "none");;\
  my $event = ReadingsVal("MyCallMonitor", "event", "none");;\
  my $MSN = "" ;;\
  SELECT:{\
   if ($intNr eq "922630"){$MSN = "MSN 1";; last SELECT;; }\
   if ($intNr eq "922631"){$MSN = "MSN 2";; last SELECT;; }\
   if ($intNr eq "123456"){$MSN = "MSN 3";; last SELECT;; }\
   if ($intNr eq "123456"){$MSN = "MSN 4";; last SELECT;; }\
   if ($intNr eq "123456"){$MSN = "MSN 5";; last SELECT;; }\
   if ($intNr eq "123456"){$MSN = "MSN 6";; last SELECT;; }\
  }\
  if($event eq "ring"){\
    fhem "set SamsungTV mute on";;\
    fhem "set SamsungTV call 'von:_'.$extNr.' '.$extNr.' '.$intNr";;\
  } elsif($event eq "call"){\
    ;;\
  } elsif($event eq "disconnect"){\
    fhem "set SamsungTV mute off";;\
  } else {\
    ;;\
  }\
}

d.h. wenn ein Anruf kommt wird Fehrnseher stumm gestelt, ein MsgBox mit tel.nr. und Name wenn in 7390 eingetragen ist.

die zeilen: fhem "set SamsungTV mute on";;\ und fhem "set SamsungTV mute off";;\ kannt du mit anderen Befehlen erweitern z.B. set lampe on etc.

sicherlich die ip und tel.nr. mußt du anpassen.

Gerhard

FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

Invers

Zu allererst möchte ich den Profis und auch allen Andern dafür nochmals danken, dass sie sich meiner Sache angenommen haben.
Den TV auf MUTE zu setzen, wird meine Frau nicht begeistern, aber da muss sie nun wohl durch. Sie kann sich ja dann bei Samsung beklagen. LOL
Falls sie das nicht will, werde ich halt Timeshift einsetzen.

Ich werde die Call-Monitor-Methode anwenden, falls ich mich nicht zu blöd anstelle.
Falls doch, was ich fast vermute, werde ich mich noch einmal melden.

Also herzlichen Dank allen Helfern!
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Gerhard

Hi Invers,

du kannst mute weglassen und nur die MsgBox ausgeben und ev. irgend etwas anderes schalten...?

viel Spass!

Gerhard
FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

UliM

Zitat von: Gerhard schrieb am Do, 18 Juli 2013 17:33du kannst mute weglassen und nur die MsgBox ausgeben und ev. irgend etwas anderes schalten...?
Port55000 kann keine msg-box :( Wie gesagt, nix mit Parametern.
Vll finden sich ja Tester dafür...
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Gerhard

Hi Uli,

ich hatte mit dem ruSamsung tool (http://samsung.rainerullrich.de/) ausprobiert was mein TV kann.

mit Wireshark habe ich festgestellt, das dieser tool beide Ports bediente je nach funktionsaufruf.

hier eine Ausschnitt aus der Beschreibung:

Hinweise:
   Es gibt prinzipiell 2 Arten/Wege, wie der ruSamsungTVCommunicator mit dem Samsung TV kommuniziert:
     A) Messaging-System
          - Ist bei den allermeisten Samsung TVs möglich, ohne spezielle Anmeldung oder ähnlichem
          - Folgende Reiter verwenden das Messaging-System:
              - Anruf
              - SMS
              - Termin
              - Messages-Misc (Lautstärke, Mute, Helligkeit, Kontrast, Schärfe, Farbtemperatur)
          - bidirektional, d.h. aktuelle Einstellungen des TVs können ausgelesen bzw. abgefragt werden
          - Port 52235 bis D-Serie
          - Port 7676 ab E-Serie

     B) Remote Controll/Fernbedienung
           - Ist bei allen Samsung TVs der Serie C und nachfolgende Serien möglich
           - Bei B-Serie TVs nur durch Zuhilfenahme der Applikation "Remote Lan Control"
           - Folgende Reiter verwenden das Remote Control System:
              - RC-Test
              - Fernbedienung
           - Port 2345 bei B-Serie, Port 55000 bei C-Serie und Nachfolgeserien

     Das heißt zum Beispiel, dass an allen Fernsehern die Lautstärke zumindest über das Messaging-System
     gesteuert werden kann. Zusätzlich auch noch über die Fernbedienung, sofern dafür die Voraussetzungen
     erfüllt sind.

   In der Ini-Datei muss für einen ersten Test normalerweise nichts modifizieren werden, auch nicht der
   Fernseher (IP-Namen oder IP-Adresse) eintragen werden, denn das Programm sucht alle UPnP-fähigen Devices
   im Netzwerk zusammen und stelle ein Menü zur Auswahl zu Verfügung. Ggf. öffnet sich ein IP-Eingabe-Fenster.

   In der Firewall müssen folgende Ports frei gegeben werden:
     -  1900 (UDP-Port zum Suchen nach UPnP-Geräten im Netzwerk via SSDP-Discover mit 239.255.255.250:1900)
     -  2345 (TCP-Port zur Fernbedienung des Samsung TV B-Serie)
     -  7676 (TCP-Port zur Kommunikation (Messages, Lautstärke, ...) mit Samsung TV ab E-Serie)
     - 52235 (TCP-Port zur Kommunikation (Messages, Lautstärke, ...) mit Samsung TV bis D-Serie)
     - 55000 (TCP-Port zur Fernbedienung des Samsung TV C-Serie und Nachfolger)

   Eventuell für die ersten Tests die Firewall temporär ausschalten! Virenscanner ggf. ebenso.
   Alternativ muss in Windows Vista und Windows 7 (bei Verwendung von PFW auch in Windows XP) explizit das
   Programm in der Firewall freigegeben werden.

Gerhard

FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.