Fhem -> Samsung TV

Begonnen von mcbain2k, 25 Mai 2013, 11:45:13

Vorheriges Thema - Nächstes Thema

vbs

Von mir aus kanns gerne eingecheckt werden. Ich denke, das Risiko, dass es etwas kaputt macht, ist gering.

Zwiebel

done. ab morgen per Update zur Verfügung.

Gruß
Zwiebel

Elektrolurch

Hallo,

ich hatte vor ca. 1 Jahr (als Anfänger) stv eingebunden, um die Telefonnummern von eingehenden Anrufen auf dem TV anzeigen zu lassen, ging aber nicht.
Jetzt habe ich mich dem Problem noch einmal gewidmet und folgendes herausgefunden:

define myTV STV 192.168.1.1. 82235

geht nicht, man muss für die Optionen, call,sms und date an den TV zu senden, die Port-Nummer weglassen.
Da ist ein kleiner bug in der Implementierung der "define"-Funktion von STV.

Dann eine Frage:
Im Beispiel im Code steht so was (habe das Original leider nicht gerade da):

set myTV call  12356 Peter 52588 Paul
Für sms stehen auch zwei Namen und Telefonnumern drin.
Warum?
Ich möchte doch eigentlich nur den Namen und ggfs. die Nummer des eingehenden Telefonates darstellen.
Gibt man nur zwei, statt vier Parameter hinter dem call an, meckert perl, dass da ein concat (auf $body .= ...argumente, in der i-Schleife) gemacht wird.
Erwartet der Samsung TV vier Parameter?
Wegen dem WAF kann ich da leider nicht so viel ausprobieren...:-)

Gruß


Elektrolurch
configDB und Windows befreite Zone!

vbs

Wenn man keine Port-Nummer angibt, dann wird als default 52235 benutzt. Es gibt nur zwei gültige Port-Nummern: 52235 und 55000.
Je nach Modell muss man die korrekte Port-Nummer angeben. Daran wird auch erkannt, welche Features verfügbar sind. Ich gehe davon aus, dass Modelle, die Port-Nummer 55000 verwenden, einfach die Kommandos wie sms nicht unterstützen.
Also nur Spekulation meinerseits, aber warum denkst du, dass es ein Bug ist?

P.A.Trick

Sehe ich so wie vbs, meine D-Serie unterstützt das auch nicht!
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Elektrolurch

Na ja, der "Bug" liegt darin, dass das Modul nicht funktioniert, wenn ich bei der Definition des Devices den Port 52235 angebe. Wenn man dann z.B. set myTV call xxx yyy aufruft, kommt die Meldung: ungültiger Befel, benutze - und dann keine Liste der Befehle. Man kann das auch aus dem Code nachvollziehen.
Wie gesagt, ist nur ein "Schönheitsfehler". Ich habe dann mit Hilfe von modify den Port gelöscht und siehe da, jetzt funktioniert call und sms.
Unklar ist noch, warum für call vier Parameter erwartet werden. Gibt man weniger an: set myTV call 01723333 Harry, so gibt es eine perl-Fehlermeldung, undefinierter Wert in concat.

Gruß


Elektrolurch
configDB und Windows befreite Zone!

Rince

Welche Serie bzw. welchen Fernseher nutzt du denn?

Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Zwiebel

Hallo Elektrolurch,

für das STV Modul wurde immer wieder erweitert, weil Samsung von port 52235 auf 55000 gewechselt hat. Dabei sind auch funktionen verändert worden. Um eine abwerts kompatibel zu sein, wird wenn kein port angegeben wird 52235 verwendet.
Somit sollte kein port und port 52235 gleich sein...

Aber du hast recht man könnte den fehler besser abfangen wenn zu wenig parameter angegeben werden.

set myTV call Name_des_anrufers_mit_der_nummer: 0171000000 auf_nummer: 0171111111

Dein SamsungTV kann ja nicht selber angerufen werden. 

viele Grüße
Zwiebel

vbs

Ich hab jetzt verstanden, was Elektrolurch meint und er hat mMn völlig Recht. Hat bei mir etwas gedauert, da im ersten Post (vermutlich Tippfehler) von Port 82235 die Rede war.

Im Code ist es tatsächlich so, dass die validcommands nicht gesetzt werden, wenn Port 52235 händisch angegeben wurde:
if (defined $args[3]) {
$hash->{Port} = $args[3]
} else {
$hash->{Port} = 52235;
$hash->{".validcommands"} = "mute volume call sms date";
}


Im Falle von händisch-55000 werden später noch die validcommands gesetzt. Für 52235 jedoch nicht.

Zwiebel

Hallo vbs,

sehe ich auch so - wird morgen per update verteilt!

da hat ja noch ein ";" gefehlt nach dem ..$args[3] !!! Wie konnt es überhaupt funktionieren?

Gruß
Zwiebel

Elektrolurch

Hallo,

ich muss noch Mal nachfragen: Die Beispiele für den set-Befehl im Code:

set <name> call Peter 1111111 Klaus 222222Peter 1111111 Klaus 222222
# set <name> sms Peter 1111111 Klaus 222222 das ist der text
#
Warum stehen da zwei Namen und Telefonnummern?
und dann in
sub STV_52235($@)

....
if ( $arg eq "call")
  {
    $kind = 2;
   
  }
  if ( $arg eq "sms")
  {
    $kind = 3;
    for my $i (6..$count){
      $body .= $a[$i];
      $body .= " ";
    }
  }
  if ( $arg eq "date")
  {
    $kind = 4;
    for my $i (10..$count){
      $body .= $a[$i];
      $body .= " ";
    }
  }
Ich habe das zwar noch nicht so ganz durchblickt, werden da aber dann auch nicht leere Argumente kopiert? Und warum bei "call" garnichts?


Ich habe das in meinem Call-Monitor integriert:

fhem("set msg1_TVWohnzimmer call $Anrufername $ext_nummer");

70_stv scheint "Hängenzubleiben" und damit auch fhem, wenn der Anrufernamen leer ist.

Gruß

Elektrolurch



configDB und Windows befreite Zone!

Badflex

Hallo, ich habe das selbe Problem wie einer meiner Vorredner. Wenn ich mein Samsung mit Port 55000 definiere, stützt fhem auf meiner fritzbox 7330 ab.
Ohne Port geht es, aber ich habe nicht alle Funktionen.

Fehler:
# Bad arg length for Socket::inet_ntoa, length is 0, should be 4 at ./FHEM/70_ST
V.pm line 71.

Ich glaube der Fehler tritt auf seit dem ich eine zweite Fb als repeater eingerichtet habe, wo auch der stick mit fhem drin  steckt.
fhem ip ist statt 1 jetzt 21.
Am Tv habe ich jetzt mal bei den Netzwerk Einstellungen die 21er IP als Gateway eingestellt, aber ohne Erfolg.
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Zwiebel

Hi,

das liegt an der Namensauflösung.

Zeile 84
  my $address = inet_ntoa(scalar gethostbyname(hostname() || 'localhost'));

ich sollte an einigen stellen das Modul umbauen...hoffentlich wirds nächste Woche damit.

Aber du könntest vielleicht noch ein Test machen.

my $address = "192.168.1.1";  # irgendeine
oder
my $address = "192.168.???.???";  # deine passende

gruß
Zwiebel

Badflex

Zitat von: Zwiebel am 10 September 2014, 19:52:13
Hi,

das liegt an der Namensauflösung.

Zeile 84
  my $address = inet_ntoa(scalar gethostbyname(hostname() || 'localhost'));

ich sollte an einigen stellen das Modul umbauen...hoffentlich wirds nächste Woche damit.

Aber du könntest vielleicht noch ein Test machen.

my $address = "192.168.1.1";  # irgendeine
oder
my $address = "192.168.???.???";  # deine passende

gruß
Zwiebel

Danke, hat funktioniert.  :D
Raspberry Pi, CUL868(SlowRF), FB 7490, SmartVisu, fast nur HomeMatic wenig FS20, Netatmo

Zwiebel

hi,

welche Version hat funktioniert?
Wenn eine "richtige" ip nicht notwendig ist würde es in dem Modul einfacher machen.
Bitte um Feedback ob auch eine "falsche" ip funktioniert.

vielen dank
Zwiebel