Plugin ‚matter‘ Konfiguration

plugin logo

Im folgenden sind etwaige Anforderungen und unterstützte Hardware beschrieben. Danach folgt die Beschreibung, wie das Plugin matter konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann. [1]

Es handelt sich bei diesem Plugin um ein gateway Plugin.

Beschreibung

Matter-Controller-Plugin: Verbindung zu Matter-Geräten.

Anforderungen

  • Minimum SmartHomeNG Version: 1.12.2.2

Konfiguration

Im folgenden ist beschrieben, wie das Plugin matter konfiguriert wird. Außerdem ist im folgenden beschrieben, wie das Plugin in den Item Definitionen genutzt werden kann.

Parameter

Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/plugin.yaml konfiguriert werden:

bridge_control_port

Port, auf dem bridge.js seine WebSocket-Steuer-API anbietet (nur localhost, eigenes Protokoll dieses Plugins). Muss sich zwischen mehreren Instanzen unterscheiden, aus demselben Grund wie bridge_matter_port.

  • Datentyp: int

  • Standardwert: 5561

bridge_discriminator

Kommissionierungs-Diskriminator der Bridge (12 Bit). Fest vergeben, siehe bridge_passcode. Sollte sich zwischen mehreren Instanzen unterscheiden, aus demselben Grund wie bridge_passcode.

  • Datentyp: int

  • Standardwert: 3840

bridge_enabled

Bridge-Rolle (shng-Items für andere Matter-Ökosysteme sichtbar machen) aktivieren.

  • Datentyp: bool

  • Standardwert: True

bridge_matter_port

Netzwerk-Port, auf dem die Bridge ihre eigene Matter-Fabric anbietet (fuer Kommissionierung durch andere Controller wie Apple Home). Muss sich von server_sidecar_port unterscheiden, sowie zwischen mehreren Instanzen - sonst kollidieren die bridge.js-Prozesse beim Binden des Ports.

  • Datentyp: int

  • Standardwert: 5560

bridge_passcode

Kommissionierungs-Passcode der Bridge. Fest vergeben (v1 hat noch keine Webif-UI fuer eine pro-Kommissionierung generierte Kombination). Sollte sich zwischen mehreren Instanzen unterscheiden - sonst werben zwei Bridges mit identischen Kommissionierungsdaten gleichzeitig im selben LAN, was beim Scannen/Eingeben nicht mehr eindeutig einer bestimmten Instanz zuzuordnen ist.

  • Datentyp: int

  • Standardwert: 20202021

bridge_sidecar_entry

Pfad (relativ zum Plugin-Verzeichnis) zur bridge.js-Datei - dem eigenen @matter/node-Programm des Plugins fuer die Bridge-Rolle (nicht matter-server). Liegt im sidecar/-Verzeichnis, nicht bridge/, da es sich die dortigen Node.js-Abhaengigkeiten mit der Server-Rolle teilt - ein einziges npm install in plugins/matter/sidecar/ deckt beide Rollen ab.

  • Datentyp: str

  • Standardwert: sidecar/bridge.js

bridge_storage_path

Verzeichnis (relativ zum shng-Arbeitsverzeichnis) fuer die Kommissionierungsdaten der Bridge - eine eigene Matter-Identitaet, getrennt von storage_path (Server-Rolle). Muss sich zwischen mehreren Instanzen unterscheiden, aus demselben Grund wie storage_path.

  • Datentyp: str

  • Standardwert: var/matter/bridge

bridge_vendor_id

Vendor-ID der Bridge (–vendorid-Aequivalent fuer die eigene Geraete-Identitaet, nicht die Fabric wie bei server_fabric_vendor_id). Default 65521 (0xFFF1) ist der von der Matter-Spec reservierte Test-Vendor-Bereich.

  • Datentyp: int

  • Standardwert: 65521

node_binary

Pfad zum Node.js-Binary (muss die von matter-server geforderte Version erfüllen, siehe user_doc.rst)

  • Datentyp: str

  • Standardwert: node

primary_interface

Netzwerk-Interface fuer lokale Adressen (–primary-interface). Auf Hosts mit mehreren Interfaces auf demselben Subnetz kann die automatische Auswahl ein Interface wählen, über das das Zielgerät nicht erreichbar ist - dann explizit setzen (z.B. en0).

  • Datentyp: str

server_alias_base_item

Item, unter dem Alias-Definitionen liegen (direkte Kind-Items, jeweils Typ num mit dem aktuellen node_id als Wert - siehe matter_alias). Muss bereits existieren, wird vom Plugin nicht angelegt. Fehlt es, bleibt die Alias-Funktion inaktiv, ohne den Rest des Plugins zu beeinträchtigen. Sollte sich zwischen mehreren Instanzen unterscheiden, falls beide matter_alias nutzen - ein node_id ist nur innerhalb der Fabric der jeweiligen Instanz gueltig, ein geteiltes Basis-Item wuerde Aliase beider Fabrics ununterscheidbar vermischen.

  • Datentyp: str

  • Standardwert: matter.aliases

server_bluetooth_adapter

HCI-ID des Bluetooth-Adapters (–bluetooth-adapter, z.B. „0“ fuer hci0), nicht die MAC-Adresse. Noetig fuer die Erstkommissionierung eines noch nicht vernetzten Matter-over-Thread-Geraets (BLE-basierte Uebergabe der Thread-Zugangsdaten). Leer = matter-servers eigener Default (kein Bluetooth).

  • Datentyp: str

server_commission_timeout

Wartezeit (Sekunden) auf die Antwort von matter-server auf einen Kopplungsversuch (commission_with_code). matter-server versucht jede bekannte Netzwerkadresse des Geräts mit bis zu 30s Timeout und plant bis zu 255s für einen Versuch ein. Die Kopplung läuft im Hintergrund, ihr Status wird im Webif laufend aktualisiert.

  • Datentyp: int

  • Standardwert: 300

server_enable_test_net_dcl

Testgeräte mit Entwicklungs-Zertifikaten zulassen (–enable-test-net-dcl). NICHT fuer echte Geräte aktivieren.

  • Datentyp: bool

  • Standardwert: False

server_enabled

Server-Rolle (Kommissionierung/Steuerung echter Matter-Geräte) aktivieren.

  • Datentyp: bool

  • Standardwert: True

server_fabric_label

Fabric-Label (–default-fabric-label), das andere Controller (z.B. Apple Home, das Fabrics-Webif-Tab) für shngs eigene Fabric anzeigen. Ohne dies wäre matter-servers eigener Default „HomeAssistant“ sichtbar.

  • Datentyp: str

  • Standardwert: SmartHomeNG

server_fabric_vendor_id

Vendor-ID (–vendorid) für shngs eigene Fabric. Wirkt nur beim allerersten Anlegen der Fabric (in vorhandenen Installationen bereits in den Node-Zertifikaten verankert) - Änderung erfordert Storage-Reset und Neukopplung aller Geräte. Default 65521 (0xFFF1) ist der von der Matter-Spec reservierte Test-Vendor-Bereich; echte Vendor-IDs werden von der CSA vergeben.

  • Datentyp: int

  • Standardwert: 65521

server_generated_items_base

Basis-Item, unter dem per „Item erstellen“-Button erzeugte Geräte-Items angelegt werden (wird bei Bedarf automatisch angelegt). Sollte sich zwischen mehreren Instanzen unterscheiden - node_ids sind nur innerhalb der Fabric der jeweiligen Instanz eindeutig.

  • Datentyp: str

  • Standardwert: matter_devices

server_generated_items_file

Datei (im items-Verzeichnis), in der per „Item erstellen“-Button erzeugte Geräte-Items landen, als Kind-Items unter server_generated_items_base. Datei und Basis-Item werden bei Bedarf automatisch angelegt.

  • Datentyp: str

  • Standardwert: matter_devices.yaml

server_icd_check_cycle

Intervall (Sekunden) zwischen Prüfungen auf abgelaufene ICD-Geräte (Batterie-/Sleepy-Thread-Geräte, z.B. Tür-/Fensterkontakte). Ein ICD-Gerät meldet sich nur alle IdleModeDuration Sekunden - die Prüfung markiert ein Item als ungültig, sobald es länger als matter_icd_invalid_factor * IdleModeDuration ohne Update ist.

  • Datentyp: int

  • Standardwert: 60

server_otbr_rest_url

Basis-URL der REST-API des Thread Border Routers (OTBR), fuer den „Automatisch abrufen“-Button bei den Thread Netzwerk-Zugangsdaten (GET /node/dataset/active). Nur relevant, wenn der Border Router erreichbar ist - Default passt, wenn er auf demselben Host wie shng laeuft. Leer = Button wird nicht angezeigt, Zugangsdaten muessen manuell eingefuegt werden.

  • Datentyp: str

  • Standardwert: http://localhost:8081

server_sidecar_entry

Pfad (relativ zum Plugin-Verzeichnis) zur matter-server-Einstiegsdatei. matter-server hat kein CLI-Binary, daher wird die Datei direkt mit node ausgeführt.

  • Datentyp: str

  • Standardwert: sidecar/node_modules/matter-server/dist/esm/MatterServer.js

server_sidecar_port

Port, auf dem der matter-server-Sidecar seine WebSocket-API anbietet (nur localhost). Muss sich zwischen mehreren Instanzen unterscheiden - sonst kollidieren die Sidecar-Prozesse beim Binden des Ports.

  • Datentyp: int

  • Standardwert: 5580

storage_path

Verzeichnis (relativ zum shng-Arbeitsverzeichnis) für die Fabric-/Kommissionierungsdaten des Sidecars. Muss sich zwischen mehreren Instanzen unterscheiden - jede Instanz ist eine eigene Fabric, geteilter Storage wuerde die Kommissionierungsdaten der anderen Instanz beschaedigen.

  • Datentyp: str

  • Standardwert: var/matter

Item Attribute

Das Plugin unterstützt folgende Item Attribute, die in den Dateien im Verzeichnis ../items verwendet werden:

matter_alias

Alternative zu matter_node: Name einer Alias-Definition unter server_alias_base_item. Löst node_id über die interne Alias-Tabelle des Plugins auf statt fest im Item-Wert - übersteht ein Rekommissionieren (neue node_id) ohne Änderung an diesem oder abhängigen Items, sobald der Alias über das Webif umgeleitet wird.

  • Datentyp: str

matter_attribute

Attribut-ID innerhalb des Clusters. Das Item wird per Subscribe/Report aktuell gehalten (z.B. 0 fuer OnOff.OnOff)

  • Datentyp: int

matter_available

Nur-Lese-Item, das die von matter-server erkannte Erreichbarkeit des Node spiegelt (dieselbe Information wie die „verfuegbar“-Spalte im Webif, hier als echtes Item fuer eigene Logik/Struct/Visu). Braucht nur matter_node, kein Endpoint/Cluster.

  • Datentyp: bool

matter_cluster

Matter-Cluster-ID (dezimal, z.B. 6 fuer OnOff)

  • Datentyp: int

matter_command

Kommandoname innerhalb des Clusters, der bei einem Item-Write aufgerufen wird (z.B. toggle, on, off)

  • Datentyp: str

matter_command_false

Optionales zweites Kommando fuer ein Bool-Item: bei falsy Wert wird dieses statt matter_command aufgerufen (z.B. matter_command=on, matter_command_false=off - ein Item spiegelt und steuert den Zustand statt zweier getrennter Trigger-Items).

  • Datentyp: str

matter_command_params

Optionale feste Parameter fuer matter_command. Der Platzhalter „$value“ wird durch den geschriebenen Item-Wert ersetzt.

  • Datentyp: dict

matter_endpoint

Endpoint-Nummer auf dem Matter-Node

  • Datentyp: int

matter_expose_name

Bridge-Rolle: Anzeigename fuer den anderen Controller. Default: voller Item-Pfad (strukturell eindeutig; remark/Item-Name koennten mehrfach vorkommen und waeren dann in einer flachen Zubehoerliste nicht unterscheidbar). Max. 32 Zeichen (Matter-Spezifikationslimit) - laengere Werte (oder ein zu langer Item-Pfad als Default) lassen das Item unsichtbar fuer die Bridge-Rolle, mit Fehlermeldung im Log.

  • Datentyp: str

matter_expose_type

Bridge-Rolle: macht dieses Item als Matter-Bridge-Gerät fuer andere Matter-Controller (Apple Home, Google Home, …) sichtbar. switch = steuerbarer Bool-Aktor (Item-Typ bool), contact = Nur-Lese-Bool-Sensor, z.B. Tuerkontakt (Item-Typ bool), temperature_sensor = Nur-Lese-Zahlensensor in Grad Celsius (Item-Typ num).

  • Datentyp: str

  • Mögliche Werte:

    • switch

    • contact

    • temperature_sensor

matter_icd_invalid_factor

Nur fuer ICD-Geraete (Batterie-/Sleepy-Thread, z.B. Tuer-/Fensterkontakte): ueberschreibt den Standard-Multiplikator (2.5) fuer die Ungueltig-Markierung dieses Items in der Datenbank. Schwelle = Faktor * IdleModeDuration (die vom Geraet selbst gemeldete Melde-Intervall). Vererbt sich wie matter_node an Kind-Items.

  • Datentyp: num

matter_node

Matter Node-ID des Geräts (wird bei der Kommissionierung vergeben)

  • Datentyp: int

matter_switch

Kurzform fuer einen Bool-Schalter (z.B. OnOff): Attribut und beide Kommandos werden automatisch aus dem Cluster abgeleitet (siehe clusters.py SWITCH_CLUSTERS). Setzt matter_attribute/matter_command/matter_command_false nicht voraus. Fehlermeldung im Log, falls der Cluster (noch) nicht in der Tabelle steht - dann die low-level Attribute direkt verwenden.

  • Datentyp: bool

Item-Structs

Das Plugin stellt die folgenden Item-Structs zur Verfügung. Diese Informationen sind aus der plugin.yaml entnommen und möglicherweise nicht vollständig.

battery

  • battery (foo, —)
    • percent (num, Batteriestand in %)

    • voltage (num, Batteriespannung in V)

contact

Kontaktzustand (BooleanState.StateValue)

  • contact (bool, Kontaktzustand (BooleanState.StateValue))

electrical_power_measurement

  • electrical_power_measurement (foo, —)
    • power (num, aktuelle Leistung in W)

    • voltage (num, aktuelle Spannung in V)
      • hinweis (foo, In eigenen Tests wurde die Spannung nur einmalig beim Verbinden aktualisiert. Obwohl das Gerät die Spannung laufend misst, wird sie über Matter nicht mehr übertragen - z.B. über MQTT sehr wohl.)

    • current (num, aktueller Strom in A)

humidity_sensor

aktuelle relative Luftfeuchtigkeit in %

  • humidity_sensor (num, aktuelle relative Luftfeuchtigkeit in %)

shelly_plug_m_3gen

  • shelly_plug_m_3gen (foo, —)

shelly_plug_m_3gen_simple

  • shelly_plug_m_3gen_simple (foo, —)
    • available (bool, Gerät erreichbar)

switch

  • switch (bool, —)
    • toggle (bool, auf True setzen, um den Schaltzustand zu wechseln)

temperature_sensor

aktuelle Temperatur in °C

  • temperature_sensor (num, aktuelle Temperatur in °C)

Logik Parameter

Das Plugin verfügt über folgende Parameter, die in der Datei ../etc/logic.yaml konfiguriert werden:

Keine Logik Parameter in den Metadaten beschrieben - Bitte in der README nachsehen (siehe Fußnote)

Plugin Functions

Das Plugin verfügt über folgende öffentliche Funktionen, die z.B. in Logiken aufgerufen werden können.

Keine