Konfigurator Modul - Elemente von Gerät abfragen und in Liste einfügen

Hallo zusammen,

so noch einigen Monaten Pause, will ich nun endlich mein angefangenes DuoFern Modul fertig schreiben. DuoFern ist ein Protokoll ähnlich Z-Wave und kann alle möglichen Geräte wie z.B. Schaltsteckdosen, Rolladen und Sensoren ansprechen.

Der Splitter zur Kommunikation ist soweit fertig, als nächstes soll der Konfigurator kommen. Hier habe ich ein ConfigurationForm erstellt, welches alle Device-Instanzen sucht und diese in eine Liste einfügt, das läuft auch soweit. Aus den Device-Instanzen baue ich praktisch meine Liste mit den Geräten die bereits gepaired sind.

Jetzt zu meiner eigentlichen Frage:

  1. Zusätzlich möchte ich „gefundene Geräte“ in der Liste aufnehmen, welche bereit zum pairen sind bzw. gefunden wurden. Wird ein Gerät betätigt (z.B. Rollo gefahren oder Schaltsteckdose geschaltet), bekomme ich eine Nachricht im Debug Fenster im Konfigurator, auch wenn es nicht gepairt ist. Wie speicher ich das nun idealerweise mit in die Liste (egal ob der Konfigurator geöffnet ist oder nicht)?

  2. Zusätzlich kann ich noch eine Anfrage senden um (eigentlich gepairte) Geräte zu suchen. Leider Antworten da alle bereits gepairten Geräte und ein einziger Gerätetyp (von den Gerätetypen die ich besitze) der nicht gepairt ist. Dazu kann ich eine Anfrage über den Button senden (siehe Screenshot) und die Antwort erhalte ich dann im Debug Fenster. Diese müsste ich aufbereiten und in die Liste schreiben, wenn das überhaupt noch Sinn macht. Die komplette Antwort kann schon bis zu 30 Sekunden dauern. Ich dachte, dass ich damit die Geräte finden kann, die mit dem original System gepairt wurden und jetzt in IPS übernommen werden sollen ohne neu zu pairen. Leider antwortet da halt auch ein Gerätetyp, obwohl dieser nicht gepairt ist… Vielleicht hat jemand eine gute Idee…

2017-11-27_020827.png

Vielen Dank und sorry für die blöden Fragen, bin etwas raus aus der Materie.

Gruß baba

Moin,

ähnlich ging es mir so mit dem Plugwise Netzwerk.
Ist ja ein ZigBee Netzwerk und nur der Coordinator (USB-Stick) kennt alle Geräte. Ebenso können Broadcast Nachrichten zum suchen und pairen von Geräten länger dauern ( ca. 5 Sekunden).

Ich habe das verwalten des Netzwerkes getrennt vom Konfigurator umgesetzt.
Hauptgrund ist, dass der Konfigurator ja zum Konfigurieren vom Instanzen in IPS ist und nicht zum Konfigurieren des Mesh-Netzwerkes.
Außerdem konnte ich die Liste nicht sinnvoll pflegen (vorhandene Instanz ohne angelerntes Gerät; angelerntes Gerät ohne Instanz, neu gefundene Geräte, Gerät welches offline ist usw…) wäre einfach zu unübersichtlich geworden da ja fast jede Kombi vorkommen kann.

Somit habe ich im Splitter zwei Listen eingebaut.
Eine über alle bekannten Geräte; werden beim Verbinden mit dem USB-Stick aus diesem geladen und in einem Buffer geschrieben; zum ablernen.

Und eine über alle gefundenen Geräte welche nicht gepairt sind.
Letzteres funktioniert ‚leider‘ nur indem man über einen Button im Formular die Suche startet und dann die Instanz schließt und neu öffnet.
Die Daten der gefundenen Geräte speichere ich in einem eigenen Buffer, welcher beim öffnen des Formulars gelesen und als Liste dargestellt wird.

Die Magie kannst du die hier ansehen:
IPSPlugwise/module.php at cf692d9a9a437f077cf80381c071588680160066 · Nall-chan/IPSPlugwise · GitHub

Dabei sind die neuen und bekannten Geräte in den Arrays (Buffer) $this->NewNodes und $this->Nodes gespeichert.

Michael

Hallo Michael, vielen Dank für deine schnelle Antwort.

Ähnlich wie bei dir würde ich es dann wohl auch umsetzen.

  1. Die Liste der bereits gepairten Geräte wollte ich anhand der Device-Instanzen führen. Gibt es eine Instanz zum Gerät, gehe ich davon aus, dass es gepairt ist. So kann der Nutzer eine Device Instanz von Hand hinzufügen, wenn er weiss dass das Gerät schon gepairt ist.

  2. Zu den gefundenen Geräten: Bei DuoFern gibt es leider keinen Befehl um neue Geräte zu finden. Es muss, wie oben beschrieben, das Gerät betätigt werden und dann sendet es eine Nachricht zum USB-Stick. Sollte ich das in eine gespeicherte Liste (oder lieber Buffer schreiben) und diese beim Öffnen vom Konfigurator mit laden?

Gruß baba

P.S.: Geplant ist das man sich nur den USB Stick kaufen muss ohne die Basisstation, sodass man sich einiges an Kosten erspart, deswegen sollte man schon halbwegs das Netzwerk verwalten können.

Zu 1) kannst du die Geräte nicht aktiv abfragen? Wenn das geht, dann kannst du ja beim verbinden des Stick abfragen ob alle erreichbar und somit gepairt sind.
Dann findest du auch Instanzen welche Leichen sind, also die Hardware offline ist.

Zu 2) ja einfach immer die Adressen in einem Buffer mitschreiben, und dann wenn die Liste dargestellt wird, mergen mit den bekannten Adressen der Geräte-Instanzen.
Schon kannst du schon bekannte von unbekannten / neuen Adressen unterscheiden.
Michael

Zu 1) Ich muss beim Verbinden des Sticks, dem Stick die Geräte-Ids der gepairten Geräte übergeben. Danach könnte ich Fragen welche Geräte erreichbar sind. Da Antwortet aber auch ein Gerätetyp der nicht gepairt ist, wieso auch immer. Die original Basistation macht das aber auch so. Die initalisiert den Stick und übergibt dabei die Geräte-Ids und schickt dann 5x den Befehl um die erreichbaren Geräte zu suchen. Sind welche ausser Reichweite wird neben dem Gerät ein Ausrufezeichen angezeigt. Die machen das 5x, da nicht alle zuverlässig antworten, wenn die Geräte weiter weg sind.

Zu 2) Danke, mache ich so

Gruß baba