Modul 48_SST zum Einbinden von Samsung SmartThings

Begonnen von pasp, 25 August 2020, 19:39:47

Vorheriges Thema - Nächstes Thema

Prof. Dr. Peter Henning

Würde ich wirklich gerne wissen - denn das fehlt bisher in den diversen Wegen, Samsung-Kisten zu steuern.

LG

pah

pasp

Neue Version 0.7.14

Änderungen:

  • Unterstützung von mehreren, unterschiedlichen Werten in der Rückgabe des Wertefeldes (HASH(0x5a292d8))
  • Bug aus Zeitumwandlung entfernt (Angabe in aktueller Zeitzone statt 2020-09-13T19:05:40.338Z)
  • Dokumentation um ein paar Readings erweitert.

Zitat von: buzzmain am 13 September 2020, 18:45:34
1. wie bekommen wir die Zeit umgerechnet, um die Enduhrzeit anzuzeigen? (Z.B.: washerOperatingState_completionTime
2020-09-13T19:05:40.338Z = 21:05)
Somit eingebaut/repariert.

Zitat von: tremichl am 25 September 2020, 16:33:39
Nur bei powerConsumption steht HASH(0x5a292d8) drin.
Sollte jetzt gelöst sein.

Wie immer bei Erweiterungen, die ich bei mir nicht richtig testen kann: Bitte testen und hoffentlich Erfolg vermelden ;)
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

pasp

Zitat von: Prof. Dr. Peter Henning am 26 September 2020, 19:12:40
Würde ich wirklich gerne wissen - denn das fehlt bisher in den diversen Wegen, Samsung-Kisten zu steuern.

Was spricht denn gegen ein kurzes Ausprobieren? :D
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

Prof. Dr. Peter Henning

Witzbold. Das kann nur ein Neuling fragen...

Ich habe in FHEM wirklich genügend Baustellen, die anderen zu Gute kommen - da kann ich es mir durchaus leisten, mal auf diese anderen zu bauen.

pah

reinhard@seven-up.at

Hallo,

Erstmals möchte ich einmal ein Großes Lob an pasp aussprechen für diese Arbeit.

Ich habe einen Samsung QLED, Samsung Windfree Splitklimaanlage in 4 Räumen und Samsung Bluray Player.
Hausautomatisierung ist Loxone und ein Raspberry mit Loxberry Software.
Für den Rasberry gibt es ein Plugin https://www.loxwiki.eu/display/LOXBERRY/Fhem
Kann das Programm bei mir auch funktionieren?

pasp

Zitat von: reinhard@seven-up.at am 27 September 2020, 01:32:32
Ich habe einen Samsung QLED, Samsung Windfree Splitklimaanlage in 4 Räumen und Samsung Bluray Player.
Hausautomatisierung ist Loxone und ein Raspberry mit Loxberry Software.
Für den Rasberry gibt es ein Plugin https://www.loxwiki.eu/display/LOXBERRY/Fhem
Kann das Programm bei mir auch funktionieren?
Da bin ich überfragt, weil ich nicht weiß, wie sich FHEM als Plugin verhält.
Ist das ein komplettes Standard-FHEM oder wurde da was angepaßt?  ???
Sollte der normale Installationsverlauf nicht funktioniert, lade Dir doch mal das 48_SST.pm von Github runter und legs manuell in das FHEM Verzeichnis, in dem auch die ganzen anderen *.pm Dateien liegen (ggf. einfach mal nach z.B. 00_MQTT.pm suchen). Spätestens nach 'nem Neustart von FHEM sollte es dann eigentlich funktionieren.  :)

Interessant wäre das auf jeden Fall  :D
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

tremichl

Sehe jetzt 8 Readings welche sich auf powerConsumption beziehen. Danke! Versuche nun herauszufinden was sie im einzelnen bedeuten.
Wir haben keine Ahnung davon, was wir nicht wissen

pasp

#67
Neue Version 0.7.16

Änderungen:

  • anstatt eines Timout counters gibt es jetzt 4 - getrennt nach Setzen und Abfragen sowie nach Total und Aktuell (*_row)
  • neues get-Kommando: x_option - muß einmalig pro Gerät (nicht beim CONNECTOR) ausgeführt werden, damit das Setzen funktionieren kann (es wird ein unsichtbares Internal gesetzt)
    Achtung: setList wird dabei überschrieben!
  • das Setzen von Werten sollte jetzt in den meisten Fällen funktionieren

Bitte reichlich Testen und mir Rückmeldung geben - bei Fehlern am Besten mit der Ausgabe bei verbose 5 :)
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

Prof. Dr. Peter Henning

Das Modul (aktuelle Version heute) ist bei mir leider funktionslos.

Nach Installation mit einem frisch generierten Samsung Token (ALLE Rechte) ist der Connector zunächst im Status "connection idle".

Verbose ist auf 5 gesetzt, im Log ist nach dem Systemstart zu lesen
ZitatSST (SST): reschedule for epoch 1601556544.87883

Beim manuellen Absetzen eines get device_list wechselt der Status auf "polling device from cloud", im Popup lese ich:
Zitat------ send below text to developer ------

$VAR1 = {
  "_links" => {},
  "items" => []
};

------ send above text to developer ------

Device-ID - Name - Autocreation Status

Das wars. get_timeouts_row bleibt auf 0, keine Devices werden gefunden oder angelegt, keine Meldung im Log, Niente.
Gleichzeitig kann ich mit der SmartThings App auf dem Handy wunderbar meinen Samsung-Fernseher erkennen und steuern.

Eine Kleinigkeit noch
ZitatPERL WARNING: Possible attempt to separate words with commas at /opt/fhem/FHEM/48_SST.pm line 71, <$fh> line 1021.

LG

pah

pasp

Zitat von: Prof. Dr. Peter Henning am 30 September 2020, 15:18:05
Nach Installation mit einem frisch generierten Samsung Token (ALLE Rechte) ist der Connector zunächst im Status "connection idle".
...
Beim manuellen Absetzen eines get device_list wechselt der Status auf "polling device from cloud", im Popup lese ich:

    $VAR1 = {
      "_links" => {},
      "items" => []
    };

Das ist sehr seltsam. Das ist eigentlich die die komplette Antwort JSON der Samsung Cloud, d.h. der Connect funktioniert offensichtlich, aber es kommen keine Daten. :o
Ich habe zur Verifikation bei mir gerade nochmal alles neu erstellt (bis auf das Token), und hatte keine Probleme und eine deutlich längere (=korrekte) Ausgabe.
Ich tippe dennoch auf fehlende Berechtigungen im Token, vielleicht kannst Du das nochmal überprüfen.
Unter https://account.smartthings.com/tokens kann man die vergebenen Rechte listen, das sieht dann in etwa so aus:
fhemconnect — r:locations:*, w:customcapability, x:rules:*, l:installedapps, r:scenes:*, r:customcapability, w:rules:*, w:schedules, x:notifications:*, w:installedapps:*, x:scenes:*, r:installedapps:*, r:schedules, w:deviceprofiles, r:rules:*, x:devices:*, l:devices, w:locations:*, r:devices:*, w:devices:*, x:locations:*, r:apps:*, r:deviceprofiles, w:apps:*

Zitat von: Prof. Dr. Peter Henning am 30 September 2020, 15:18:05
Das wars. get_timeouts_row bleibt auf 0, keine Devices werden gefunden oder angelegt, keine Meldung im Log, Niente.
Gleichzeitig kann ich mit der SmartThings App auf dem Handy wunderbar meinen Samsung-Fernseher erkennen und steuern.
Ja, solange das Modul noch in diesem Stadion ist, sende ich viele Infos direkt in die Oberfläche, damit man nicht ständig alles aus der Shell greppen muß.
Die SmartThings App nutzt ja nicht das Token. Bei mir hat die auch funktioniert, aber die Antwort führ meinen Kühlschrank war auch fehlehaft, bis Samsung das repariert hatte. :/
Das dürfte aber hier nicht das Problem sein, hier geht's ja erstmal um das Basislisting.

Zitat von: Prof. Dr. Peter Henning am 30 September 2020, 15:18:05
Eine Kleinigkeit noch

PERL WARNING: Possible attempt to separate words with commas at /opt/fhem/FHEM/48_SST.pm line 71, <$fh> line 1021.

Danke für den Hinweis, sollte in der nächsten Version behoben sein.
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

Prof. Dr. Peter Henning

So, ich bin einen Schritt weiter. Die App findet den Samsung-Fernseher zwar problemlos, für das SST-Modul muss aber zusätzlich ein Device in der SmartThings-Cloud angelegt werden.

Zitat------ send below text to developer ------

$VAR1 = {
  "_links" => {},
  "items" => [
    {
      "components" => [
        {
          "capabilities" => [
            {
              "id" => "switch",
              "version" => 1
            },
            {
              "id" => "refresh",
              "version" => 1
            }
          ],
          "categories" => [
            {
              "name" => "Switch"
            }
          ],
          "id" => "main"
        }
      ],
      "deviceId" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "deviceNetworkType" => "UNKNOWN",
      "deviceTypeId" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "deviceTypeName" => "2015 Samsung Smart TV",
      "dth" => {
        "completedSetup" => bless( do{\(my $o = 0)}, 'JSON::PP::Boolean' ),
        "deviceNetworkType" => "UNKNOWN",
        "deviceTypeId" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "deviceTypeName" => "2015 Samsung Smart TV",
        "networkSecurityLevel" => "UNKNOWN"
      },
      "label" => "TV",
      "locationId" => "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "manufacturerName" => "SmartThings",
      "name" => "TV",
      "presentationId" => "SmartThings-smartthings-2015_Samsung_Smart_TV",
      "restrictionTier" => 0,
      "type" => "DTH"
    }
  ]
};

------ send above text to developer ------

Device-ID - Name - Autocreation Status

xxxxxxxxxxxxxxxxxxxxxxxxxxx - TVcannot determine device type from name (TV) or deviceTypeName (2015 Samsung Smart TV). - newly created as SST_3b5abadacf89



Das entsprechend FHEM-Device wird auch angelegt. Das wars dann aber auch - weder ergibt eine Statusabfrage irgendwelche Readings außer get_timeouts_row, noch liefert ein get x_options etwas Anderes als
Zitatr2ccc:
$VAR1 = {}

LG

pah

pasp

Zitat von: Prof. Dr. Peter Henning am 01 Oktober 2020, 21:05:21
So, ich bin einen Schritt weiter. Die App findet den Samsung-Fernseher zwar problemlos, für das SST-Modul muss aber zusätzlich ein Device in der SmartThings-Cloud angelegt werden.
Also irgendwas ist bei Dir grundlegend anders. Das ist das mit Abstand kürzeste device_list von allen. :o
Ich kann mich nicht erinnern irgendein Device in Samsung angelegt haben zu müssen...
Die presentationId und der manufacturerName sehen mir auch recht seltsam aus.
Gibt's da ggf. irgendwelche firmware updates, die noch ausstehen?

Zitat von: Prof. Dr. Peter Henning am 01 Oktober 2020, 21:05:21
Das entsprechend FHEM-Device wird auch angelegt. Das wars dann aber auch - weder ergibt eine Statusabfrage irgendwelche Readings außer get_timeouts_row, noch liefert ein get x_options etwas Anderes als
Update doch bitte nochmal SST und setze verbose auf 5. Wenn da beim status keine Rückmeldung kommt, wäre das schon wieder ein Novum.  :-\
FHEM auf RPi 4
Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
Verwaltete Module: SST

tremichl

    Zitat
    • das Setzen von Werten sollte jetzt in den meisten Fällen funktionieren

    Bitte reichlich Testen und mir Rückmeldung geben - bei Fehlern am Besten mit der Ausgabe bei verbose 5 :)

    set coolingsetpoint 22 C

    ergibt diese Ausgabe:

    Command failed:
    ConstraintViolationError: The request is malformed.
    Command has results:
    {"commands":[{"capability":"thermostatCoolingSetpoint",
    "command":"setCoolingSetpoint",
    "arguments":[22,
    "C"],
    "component":"main"}]}
    {"requestId":"BD045F5A-E1AF-401B-BE86-6F8F5FA8C7F0",
    "error":{"code":"ConstraintViolationError",
    "message":"The request is malformed.",
    "details":[{"code":"SizeError",
    "target":"commands[0].arguments",
    "message":"commands[0].arguments must have a size between 1 and 1.",
    "details":[]}]}}


    Vermutlich liegt es am vorausgefüllten " C". Wenn man nur den Wert eingibt wird die Variable gesetzt und erfolgreich ins Gerät übertragen :)

    Zur Zeit kann ich 4 Werte setzen:

    coolingSetpoint
    maximumSetpoint
    minimumSetpoint
    switch

    In der App gibt es noch einige Optionen wie z.B. "Zweistifenkühlung, Super-Turbo, Komfort, Flüsterbetrieb, Einzelbenutzer" die ich in den Readings nicht finden kann...

    Schön wäre auch noch wenn man z.B. auch fanMode, fanOscillationMode setzten könnte

    Jedenfalls sehr erfreulich zu sehen wie das Modul Gestalt annimmt! Danke!

    Liebe Grüße Michael
    Wir haben keine Ahnung davon, was wir nicht wissen

    Prof. Dr. Peter Henning

    OK, im Log zeigt sich

    Zitat2020.10.02 18:02:13 5: SST (SST_3b5abadacf89): get command - received ?
    2020.10.02 18:02:27 5: SST (SST): get command - received ?
    2020.10.02 18:02:31 5: SST (SST_3b5abadacf89): get command - received ?
    2020.10.02 18:02:33 5: SST (SST_3b5abadacf89): get command - received status
    2020.10.02 18:02:33 4: SST (SST_3b5abadacf89): get status - query cloud service
    2020.10.02 18:02:34 5: SST (SST_3b5abadacf89): get status - received JSON data
    2020.10.02 18:02:34 5: SST (SST_3b5abadacf89): get status - identified disabled components:
    $VAR1 = [];

    2020.10.02 18:02:34 5: SST (SST_3b5abadacf89): get status - identified readings:
    $VAR1 = {};

    2020.10.02 18:02:34 5: SST (SST_3b5abadacf89): get status - identified setList options:
    $VAR1 = [];

    und bei einem get ... status

    Zitat$VAR1 = {
      "components" => {
        "main" => {
          "refresh" => {},
          "switch" => {
            "switch" => {
              "timestamp" => "2020-10-01T18:47:52.671+0000",
              "value" => undef
            }
          }
        }
      }
    };

    Ein set ... power off, oder on, oder inbetween führt zur Fehlermeldung
    ZitatCould not identify internal name for value power!

    Ein get ... x_options ergibt im FHEMWEB gar nichts, im Log steht
    Zitat2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get command - received x_options
    2020.10.02 18:06:34 4: SST (SST_3b5abadacf89): get x_options - query cloud service
    2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get x_options - received JSON data
    2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get x_options - identified disabled components:
    $VAR1 = [];

    2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get x_options - identified readings:
    $VAR1 = {};

    2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get x_options - identified setList options:
    $VAR1 = [];

    2020.10.02 18:06:34 5: SST (SST_3b5abadacf89): get x_options - identified readings to c3 path mappings:
    $VAR1 = {};

    Noch eine Kleinigkeit: In dem Github fürs Update stimmt etwas nicht.

    Zitat2020.10.02 17:54:05 1 : Downloading https://raw.githubusercontent.com/PatricSperling/FHEM_SST/master/controls_SST.txt
    2020.10.02 17:54:05 1 :
    2020.10.02 17:54:05 1 : SST
    2020.10.02 17:54:05 1 : UPD ./FHEM/48_SST.pm
    2020.10.02 17:54:06 1 : UPD ./FHEM/48_SST.pm.bak
    2020.10.02 17:54:06 1 : Got 14 bytes for ./FHEM/48_SST.pm.bak, expected 57275
    2020.10.02 17:54:06 1 : aborting.

    LG

    pah

    pasp

    #74
    Zitat von: tremichl am 02 Oktober 2020, 17:14:54
    set coolingsetpoint 22 C

    ergibt diese Ausgabe:
    ...

    Vermutlich liegt es am vorausgefüllten " C". Wenn man nur den Wert eingibt wird die Variable gesetzt und erfolgreich ins Gerät übertragen :)
    Genau. Da mich das C eh genervt hat, hatte ich discard_units eingeführt. Entweder auf 1 setzen, das C manuell entfernen oder auf die nächste Version upgraden, dann sollte das ignoriert werden.

    Zitat von: tremichl am 02 Oktober 2020, 17:14:54
    Zur Zeit kann ich 4 Werte setzen:

    coolingSetpoint
    maximumSetpoint
    minimumSetpoint
    switch
    Super ;D

    Zitat von: tremichl am 02 Oktober 2020, 17:14:54
    In der App gibt es noch einige Optionen wie z.B. "Zweistifenkühlung, Super-Turbo, Komfort, Flüsterbetrieb, Einzelbenutzer" die ich in den Readings nicht finden kann...

    Schön wäre auch noch wenn man z.B. auch fanMode, fanOscillationMode setzten könnte
    Nicht so super :(
    Schick mir doch bitte mal die komplette Ausgabe von get status bei verbose 5 (unbedingt danach wieder auf 3 oder 4 runtersetzen, sonst müllt Dein Log voll). Ich hoffe, ich finde da dann irgendwas, sonst bin ich mit meinem Latein erstmal am Ende. :-\
    FHEM auf RPi 4
    Eingesetzte Systeme: MQTT2, Shelly, HUE, FritzBox, Synology, WifiLight
    Verwaltete Module: SST