Hilfe bei Websocket client für Samsung Tizen Fernseher gesucht,

dump.txt (14,4 KB)

ok leere mal bitte deinen token Variable, und lösche vorher alle symcon Geräte aus deinen Samsung Fernseher raus (in den Einstellungen deines Fernsehers).

Dann verbinde dich neu, und bestätige symcon erneut, prüfe jetzt ob die Tokenvariable neu gesetzt wurde.

Swen

Ja sie wurde neu gesetzt.

ok schau mal ob der fehler noch vorhanden ist

Swen

Hallo @Acer90 ,

vielen Dank für das neue Modul. Das Aus-/Einschalten des TV’s funktioniert nun sehr gut.
Folgendes ist mir noch aufgefallen:

  • Apps können nicht ausgelesen und gestartet werden (Apps / RunningApp)
  • SendKeys funktionier aber die Variablen Channel / Input / Mute werden nicht aktualisiert
  • Die Variable Status hat sich genau einmal aktualisiert, jetzt bleibt sie immer auf An
  • Lautstärke ändern funktioniert aber auch hier ändert sich die Variable nicht

Hast du eine Idee? Benötigst du weitere Debugs?

Grüße

Das könnte Geräte abhängig sein, das müssten wir uns nächstes Wochenende nochmal anschauen.

Über das Webinterface, oder über ein PHP script als PHP_Befehl(nicht request Action)
Die Verbindung ist hier nur Uni-Direktional, ich bekomme als keine Informationen vom Fernseher zurück.

Das sollte nicht so sein, es kann aber sein das der Websocket bei deinen Fernseher anbleibt.
Hier scheint es bei Samsung keine klare Line zu geben. bitte mal testen Ob der Port bei ausgeschalteten Fernseher Offen bleibt.

Siehe Oben, :thinking:

Swen

Hallo Swen, wie bekomme ich denn raus ob der Fernseher wirklich eingeschaltet ist?

Früher ging das über den Socket. Jetzt ist er verbunden aber das Gerät ist nicht an. Ich brauche das weil ich die Jalousien steuere wenn das Gerät an ist.

Hast du mal versucht ob der Port immer erreichbar ist. Damit wir ein Bug ausschließen können.

Sonnst schauen wir uns mal den json output an, dafür such ich dir morgen mal den link raus.

Swen

Ich prüfe alle 2 Sekunden ob der Status 102 ist also geöffnet.
Zwischendurch schliesst er sich dann geht er wieder auf. Dann gehen zwischendurch die Jalousien hoch. :slight_smile:

foreach ($ClientSockets as $CS) {
    $CS_Status = false;
    $IP = getvaluestring($CS["ID_IP"]);
    $Ping_Status = sys_ping($IP, 100);
    if ($Ping_Status) {
        $CS_Status = (IPS_GetInstance ($CS["CS_ID"])["InstanceStatus"] == 102);
        //print_r("Status ".IPS_GetInstance ($CS["ID"])["InstanceStatus"]." ID ".$CS["ID"]." Ping ".$IP." ".$Ping_Status."\n");
    }
    setvalueboolean($CS["ID_CS_STATUS"], $Ping_Status and $CS_Status );
    
} 

kannst du mir mal bitte die debugausgabe per PM zukommen lassen.

Einmal wenn der fernseher angeschaltet und einmal wenn er für mindestens 60 Sekunden ausgeschaltet ist. Sollte die Webseite dann nicht erreichbar sein, brauch ich diese info auch ebenfalls einmal.

DebuggingTV’s InfomationServer InfomationDebugging Tizen Web App | Samsung Developers

Swen

Hi Swen,

so nun habe ich auch nen neuen. Q90 er Serie. Ich habe ähnliche Themen wie oben beschrieben

  • Power On geht nicht (wenn er aus ist, ist er vom Netzwerk auch weg)
  • Vol hat andere Werte? 1 ist bei mir Lautstärke 6, 0 ist bei -6 als Integer
  • Apps auslesen zeigt er nicht
  • Input: Int Werte wohl anders. Bei 8 schaltet er zwischen den HDMI Eingängen hin und her
  • Mute geht
  • Vol über Int setzen (nur andere Int Werte)
  • Ausschalten geht
  • Keys senden geht

Power on geht nur wenn das gerät auch WakeOnLan/WakeOnWirelesLan kann. Dafür einmal auf der Samsung Webseite die Produkt-Spezifikationen prüfen.

Das ist leider das Problem das Samsung hier für jedes gerät die werte anders fährt.

Siehe oben, kann sein, das dein gerät dieses nicht unterstützt, oder Samsung den Befehlscode dafür geändert hat, schau ich mir aber nochmal an.

Siehe Oben, der Arbeit hier aber mit KeyComands (z.B. KEY_HDMI1), geben falls mal versuchen direkt einen Befehl an den Fernseher zusenden.
Siehe hier:
SamsungTizen/SymconSamsungTizen at main · Acer90/SamsungTizen (github.com)

switch ($Value){
                    case 0:
                        $this->SendKeys("KEY_COMPONENT1");
                        break;
                    case 1:
                        $this->SendKeys("KEY_COMPONENT2");
                        break;
                    case 2:
                        $this->SendKeys("KEY_AV1");
                        break;
                    case 3:
                        $this->SendKeys("KEY_AV2");
                        break;
                    case 4:
                        $this->SendKeys("KEY_AV3");
                        break;
                    case 4:
                        $this->SendKeys("KEY_SVIDEO1");
                        break;
                    case 6:
                        $this->SendKeys("KEY_SVIDEO2");
                        break;
                    case 7:
                        $this->SendKeys("KEY_SVIDEO3");
                        break;
                    case 8:
                        $this->SendKeys("KEY_HDMI");
                        break;
                    case 9:
                        $this->SendKeys("KEY_HDMI1");
                        break;
                    case 10:
                        $this->SendKeys("KEY_HDMI2");
                        break;
                    case 11:
                        $this->SendKeys("KEY_HDMI3");
                        break;
                    case 12:
                        $this->SendKeys("KEY_HDMI4");
                        break;
                    case 13:
                        $this->SendKeys("KEY_DVI");
                        break;
                    case 14:
                        $this->SendKeys("KEY_TV");
                        break;
                    case 15:
                        $this->SendKeys("KEY_ANTENA");
                        break;
                    case 16:
                        $this->SendKeys("KEY_DTV");
                        break;
                }

Swen

HDMI Key dann wechselt er. Gibt man direkt die KEY_HDMI1 an passiert nichts

Über WOL der Fritzbox kann ich ihn aufwecken.

Kann man eigentlich auch irgendwie die Fernseher Menü Einstellungen ansprechen?
Bei mir Sonderfall. Ich hab nen Sch… Sky Receiver dran und der handelt das UHD Signal nicht richtig aus. Das muss man in den Einstellungen das Erweiterte Signal einmal ein/aus schalten damit der Fernseher dann mit dem Receiver spricht.

das hier beachtet?

Soll der Fernseher einschaltbar sein, so sind die Optionen unter Wake On Lan ebenfalls zu konfigurieren → Broadcast Adresse: Netzwerk-Rechner | heise Netze → MAC Adresse des Fernsehers

Ja hab ich…Merke aber ein seltsames Verhalten. Einmal hat er über das Modul eingeschaltet. Dann zig mal geht nichts. Es geht auch nicht immer über die Fritz!Box. Vermutlich erst wenn der Samsung in einem „tieferen“ Schlaf oder so ist. Muss ich mal stärker beobachten. Sehr merkwürdiges Verhalten.
Über die Samsung APP geht es komischerweise immer ein zu schalten.

Richtig, der websocket server des fernsehers wird 15-60 sekunden nach den ausschalten erst abgeschaltet. das Modul pürft ob der websocket server erreichbar ist, dann sendet er ein KEY_Power kommand, ansonsten sendet er das WOL signal an den Fernseher.

Swen

Kann man dein Modul „zwingen“ schneller den Sockel zu verbinden?

Folgendes: Script schadet HDMI Gerät ein (Sky Receiver), darauf hin geht der Fernseher an. Dann will ich Keys zum Fernseher senden aber der Sockel ist noch nicht verbunden. Eine Schleife zu CheckOnline dauert zu lange.

Daher würde ich direkt den Sockel ansteuern und das verbinden fokussieren.

die Funktion CheckOnline prüft ob der Websocket Server wieder erreichbar ist.
Das Überprüfunginterval kannst du im Modul einstellen

SamsungTizen_CheckOnline($id);

Hier noch der Inhalt der function:

public function CheckOnline()
{
    $this->SendDebug(__FUNCTION__, '', 0);

    $ipAdress = $this->ReadPropertyString("IPAddress");
    if (Sys_Ping($ipAdress, 1000)) {
        if ($this->GetValue("VariableOnline") == false) $this->SetValue("VariableOnline", true);
        $this->SetTimerInterval("CheckOnline", 0);
        $this->UpdateConfigurationForParent();
        //          }
    }else {
      if ($this->GetValue("VariableOnline")) {
          $this->SetValue("VariableOnline", false);
          $this->SetStatus(104);
      }
    }
}

Das Problem ist das es etwas dauert bis der websocket wieder erreichbar ist, du kannst das ja mal gerne mit einen Websocketclient testen (nicht Symcon).

Swen

Hmm. ich seh auf die schnelle nicht woran es liegt.

Aber bei mir aktualisiert der Status sich nicht nach Aufruf der CheckOnline Funktion. Er bleibt auf TRUE stehen. Aufruf von SYS_PING ergibt FALSE.

Hallo an Alle, wie bekomme ich raus ob der Fernseher tatsächlich an ist. Wenn ich die Stromversorgung einschalte geht der Status auf true und dann wieder auf false. Ich steuere damit meine Jalousien und die gehen dann immer zu und auf. Auch Sysping meldet das der Fernseher erreichbar ist obwohl er nicht eingeschaltet ist. Auch der Socket wechselt nach dem zuschalten der Stromversorgung auf verbunden und dann wieder auf nicht verbunden.
Acer wollte das Modul doch noch überarbeiten?

Nachtrag: die Variable Apps wird nicht aktualisiert und Apps können nicht gestartet werden.