Fehlermeldung beim Erstellen einer Instanz aus dem Discovery Modul heraus

Ich habe ein Discovery Modul, über das bei gefundenen Geräten der Anwender Konfigurator Instanzen erstellen können soll.

Hier kommt es zum Fehler

Woran könnte es liegen, bzw. in welcher Richtung müsste ich anfangen zu suchen?

  • Das manuelle Anlegen des Konfigurators klappt, aber nicht aus der Discovery Instanz heraus.

  • An der Form des Konfigurators kann es auch nicht liegen, denn selbst bei einer Minimalform

{
   "elements":[],
   "actions":[]
}

kommt der Fehler.

  • Ist der Konfigurator manuell angelegt worden, dann wird er auch im Discovery korrekt erkannt und zugeordnet und kann darüber auch zur Konfiguration aufgerufen werden.

Dein configuration Eintrag im create ist falsch. Der muss, wie oben beschrieben, ein Objekt sein.

1 „Gefällt mir“

Super, das war es. Das ist dein Geheimwissen, oder? :slight_smile:

Ne, bin aber selber da vor Jahren drauf reingefallen :rofl:

Ich bin nun einen Schritt weiter, aber es kommt noch ein Hinweis

Wo und wie müsste ich da die Kette mitgeben?

Die Instanz wird angelegt, aber ihr fehlt der Parent

Vielleicht ist es aber auch dieses Thema

Edit: die Meldung kommt auch auf einem „leeren“ System.

Siehe oben mein Code :smiley:

Oder halt die Doku:

Variante 2: Konfiguration einer Kette

@Pio
Der Link dort ist defekt:

Perfekt. Inzwischen sieht es (für mich) gut aus.

Zur Kontrolle :slight_smile:

                'create'     => [
                    [
                        'moduleID'      => HAIds::MODULE_CONFIGURATOR,
                        'configuration' => new stdClass(),
                        'name'          => "Home Assistant Konfigurator"
                    ],
                    [
                        'moduleID'      => HAIds::MODULE_SPLITTER,
                        'configuration' => [
                            'HAUrl' => $server['url']
                        ],
                        'name'          => "Home Assistant Splitter"
                    ],
                    [
                        'moduleID'      => HAIds::MODULE_MQTT_CLIENT,
                        'configuration' => [
                            'ClientID'          => 'to be defined',
                            'KeepAliveInterval' => 60,
                            'Subscriptions'     => json_encode([['Topic' => 'homeassistant/#', 'QoS' => 1]], JSON_THROW_ON_ERROR),
                        ],
                        'name'          => "MQTT Client Home Assistant"
                    ],
                    [
                        'moduleID'      => HAIds::MODULE_CLIENTSOCKET,
                        'configuration' => [
                            'Host' => $host,
                            'Open' => true,
                            'Port' => 8123
                        ],
                        'name'          => "Client Socket Home Assistant"
                    ]
                ]

Zwei Fragen habe ich noch

  • was nimmt man beim MQTT Client als ClientID? Der Der MQTT Client Configurator nimmt da eine zufällig erzeugte Zahl(?)

  • wenn ich dem Anwender die Wahl lassen möchte zwischen einer Anbindung an einen MQTT Client oder direkt an einen MQTT Server, wie mache ich das?

Das ist doch eine Discovery Instanz oder?

Dann kommt es ja ganz darauf an wie du HA ermittelst und eventuell auch gleich eine bekannte Verbindung zu Symcon feststellen kannst.
Das wäre ja dann die vorgeschlagene Konfig/Kette.

Sonst, bei reinem MQTT, wäre mein Vorgehen (macht das Z2M Modul ähnlich):

  • alle vorhandenen MQTT Server Instanzen nach einer bekannten Retain Messages durchsuchen.
  • alle MQTT Client Instanzen durchlaufen und dort per phpmqtt connecten und schauen ob diese Retain Messages dort auftauchen.
  • Konfigurator Felder um einen externen Broker anzugeben, welcher ebenfalls geprüft wird.
  • sonst eine Neuanlage vom MQTT Server in der Kette anbieten.

Besten Dank, das schaue ich mir mal an.