Insider Preview IP 1 zur V 4.8 - veröffentlicht

Verehrte Nutzer des Timberwolf Servers. Wir haben die IP1 zur nächsten Hauptversion 4.8 für alle Modelle des Timberwolf Servers freigegeben.

Bild

Diese neue Version enthält eine neue Funktion zum selektiven Löschen von Datenpunkten in ein oder mehreren Zeitserien sowie 16 Verbesserungen und wichtige Fehlerkorrekturen


Insbesondere die neuen Funktionen zum selektiven Löschen in Zeitserien sind sehr wichtig, weil damit erstmals ein Bereinigen sowie ein Kürzen von Zeitserien möglich wird. Damit kann massiv Speicherplatz reduziert werden, womit auch Backup / Restore kürzer wird. Zudem können damit Datenschutzanforderungen umgesetzt werden.

Foren Diskussion: viewtopic.php?t=6070

Release Notes im Wiki: https://elabnet.atlassian.net/wiki/x/AYCEyw


WICHTIG: Dies ist die eine neue Insider Preview im Zyklus 4.8. Mit Installation der letzten Hauptversion 4.5 wurde der Bezug für Insider Versionen zurückgesetzt. Mitglieder im Insider Club müssen daher in der Systemaktualisierung erst den Bezug von Insider Versionen wieder freischalten, damit das Update angezeigt wird.

[Frage] [V4.8 DEV] Frage zur Somfy TaHoma local API zur Steuerung von Velux auf dem Timberwolf

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
CHD
Beiträge: 358
Registriert: Fr Dez 14, 2018 9:32 pm
Wohnort: Gronau
Hat sich bedankt: 1132 Mal
Danksagung erhalten: 220 Mal

[V4.8 DEV] Frage zur Somfy TaHoma local API zur Steuerung von Velux auf dem Timberwolf

#1

Beitrag von CHD »

Hallo zusammen,

nachdem mich dieses Velux ...-Dings vom Typ KFL200 zur Steuerung meines Dachfensters und Rollos an den Rand des Wahnsinns gebracht hat, hatte ich mich dazu entschieden, die Steuerung auf die TaHoma switch von Somfy zu ändern. Die lässt sich im Developermodus lokal und ohne Cloud steuern und ist zu anderen io-steuerbaren Produkten kompatibel. Das habe ich trotz meiner wenigen Kenntnisse bei API-Anwendungen soweit auch am laufen.

Jetzt komme ich nur beim "zusammenbauen" der eigentlichen Befehle und Abfragen nicht weiter. Vielleicht springt einem von euch das ja direkt ins Auge, wie ich den JSON zusammenbauen muss bzw. welche Selektoren genutzt werden müssen und welches Format...

Die Doku ist hier zu finden und dort gibt es auch einen Link zu Swagger.

https://github.com/Somfy-Developer/Somf ... me-ov-file

Dort habe ich den JSON gefunden und als Objekt zur Abfrage im TWS nachgebaut. Danke dann der Stelle auch für den Code aus dem Erfahrungsbericht hier viewtopic.php?p=62435&hilit=husquarna#p62435 , welchen ich für die Strings gut nutzen konnte.

Bild

Also, demnach muss ich doch alle Werte als STRING übergeben, oder? Ich habe davon abweichend auch einfach mal andere Selektoren bzw. Namen ausprobiert, aber noch ohne Erfolg.

Also zusammengefasst:
1) Welche Selektoren muss ich für z.B. öffnen, schließen und Zwischenstellungen ansprechen? Vielleicht hat da jemand einen Hinweis, damit ich an der richtigen Stelle weitersuchen kann. Ich finde da keine Erklärung zu, was was in dem JSON genau bewirkt. Ganz unten hänge ich noch eine Antwort auf die Abfrage des Rollos (Blind) an.
2) Welches Datenformat ist ggf. korrekt?

Abschließend noch ein Screenshot, wie das aktuell aussieht:
Bild
Und da man die Antwort nicht komplett lesen kann hier vollständig eingefügt:
{
"errorCode": "INVALID_PARAMETER",
"error": "Bad parameters. (\"[actions] content is not valid wrong type of iteration, expecting number iterator, got string iterator\")"
}

Der Antwort nach stört die API sich doch am STRING, oder was bedeutet das genau? Nach dem Swagger-Beispiel ist doch aber ein String erforderlich...

Und hier noch die Antwort zum Rollo, wenn ich die Device URL abfrage. Ich vermute mal, dass dort eigentlich alles zu wichtige zu erkennen sein sollte, wenn man das gewohnt ist und versteht.... Eventuell kann das ja jemand einmal grob und strukturiert erklären, wie man sowas aufbröselt und dabei vorgeht. Irgendwie hänge ich da nämlich gerade fest.

Code: Alles auswählen

{
  "enabled": true,
  "subsystemId": 0,
  "deviceURL": "io://XYZXYZXYZ",
  "synced": true,
  "label": "Blind",
  "type": 1,
  "definition": {
    "type": "ACTUATOR",
    "attributes": [
      {
        "name": "core:Manufacturer"
      },
      {
        "name": "core:FirmwareRevision"
      }
    ],
    "widgetName": "PositionableTiltedScreen",
    "states": [
      {
        "name": "core:PriorityLockTimerState"
      },
      {
        "name": "io:PriorityLockLevelState"
      },
      {
        "name": "io:PriorityLockOriginatorState"
      },
      {
        "name": "core:CommandLockLevelsState"
      },
      {
        "name": "core:SecuredPositionState"
      },
      {
        "name": "core:DiscreteRSSILevelState"
      },
      {
        "name": "core:RSSILevelState"
      },
      {
        "name": "core:Memorized1PositionState"
      },
      {
        "name": "core:ClosureState"
      },
      {
        "name": "core:OpenClosedState"
      },
      {
        "name": "core:NameState"
      },
      {
        "name": "core:StatusState"
      }
    ],
    "commands": [
      {
        "commandName": "open",
        "nparams": 0
      },
      {
        "commandName": "stop",
        "nparams": 0
      },
      {
        "commandName": "resetLockLevels",
        "nparams": 0
      },
      {
        "commandName": "identify",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "setName",
        "paramsSig": "p1"
      },
      {
        "nparams": 1,
        "commandName": "addLockLevel",
        "paramsSig": "p1,*p2"
      },
      {
        "nparams": 1,
        "commandName": "setClosure",
        "paramsSig": "p1"
      },
      {
        "commandName": "down",
        "nparams": 0
      },
      {
        "commandName": "up",
        "nparams": 0
      },
      {
        "commandName": "stopIdentify",
        "nparams": 0
      },
      {
        "commandName": "startIdentify",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "pairOneWayController",
        "paramsSig": "p1,*p2"
      },
      {
        "commandName": "getName",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "delayedStopIdentify",
        "paramsSig": "p1"
      },
      {
        "commandName": "my",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "removeLockLevel",
        "paramsSig": "p1"
      },
      {
        "nparams": 1,
        "commandName": "setSecuredPosition",
        "paramsSig": "p1"
      },
      {
        "nparams": 1,
        "commandName": "setPosition",
        "paramsSig": "p1"
      },
      {
        "nparams": 1,
        "commandName": "setMemorized1Position",
        "paramsSig": "p1"
      },
      {
        "nparams": 1,
        "commandName": "setConfigState",
        "paramsSig": "p1"
      },
      {
        "commandName": "refreshMemorized1Position",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "unpairOneWayController",
        "paramsSig": "p1,*p2"
      },
      {
        "commandName": "close",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "advancedRefresh",
        "paramsSig": "p1,*p2"
      },
      {
        "commandName": "unpairAllOneWayControllers",
        "nparams": 0
      },
      {
        "nparams": 1,
        "commandName": "wink",
        "paramsSig": "p1"
      }
    ],
    "uiClass": "Screen"
  },
  "states": [
    {
      "type": 3,
      "value": "normal",
      "name": "core:DiscreteRSSILevelState"
    },
    {
      "type": 1,
      "value": 76,
      "name": "core:RSSILevelState"
    },
    {
      "type": 3,
      "value": "Blind",
      "name": "core:NameState"
    },
    {
      "type": 1,
      "value": 0,
      "name": "core:ClosureState"
    },
    {
      "type": 3,
      "value": "open",
      "name": "core:OpenClosedState"
    },
    {
      "type": 11,
      "value": [],
      "name": "core:CommandLockLevelsState"
    },
    {
      "type": 1,
      "value": 0,
      "name": "core:Memorized1PositionState"
    },
    {
      "type": 3,
      "value": "available",
      "name": "core:StatusState"
    }
  ],
  "controllableName": "io:VerticalInteriorBlindVeluxIOComponent",
  "available": true,
  "attributes": [
    {
      "type": 3,
      "value": "VELUX",
      "name": "core:Manufacturer"
    },
    {
      "type": 3,
      "value": "00000000000000000004",
      "name": "core:FirmwareRevision"
    }
  ]
}
Vielen Dank im Voraus :bow-yellow:
Zuletzt geändert von Parsley am Di Nov 04, 2025 9:07 pm, insgesamt 1-mal geändert.
Viele Grüße, Christian

Timberwolf Server 2600 #200 ULTRA842 / PBM #778 / PBM #779 / PBM #780 / Reboot erlaubt / VPN offen
Timberwolf Server 3500XL #1715 ULTRA323 / Reboot erlaubt / VPN offen
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“