Status emulieren richtige Implementierung

Hallo,

ich möchte gerne einen device Modul implemetieren, welches generisch verschiedene Gerätetypen unsterstützt. Analog zum Homematic Modul soll es dazu die WriteValue Methoden und ggf. die RequestStatus Methode geben.

Wie implementiere ich aber das Status emulieren und die public Funktionen richtig? Als Beispiel nehmen wir mal einen Steckdosenaktor. Die Antwort der Aktoren kann ggf. schon ein paar Sekunden dauern. Dazu habe ich eine Methode WaitForMsg gebaut, die eine bestimmte Zeit auf eine bestimmte Nachricht wartet. Wenn die Nachricht in der Zeit ankommt, wird true zurückgegeben, sonst false.

Meine Idee:

  1. public Function DUOFERN_WriteValueBoolean(‚STATE‘, true) um den Zustand auf Aus/ An zu stellen
    a) Sende „An Befehl“ an Aktor
    b) WaitForMsg(„Erwartete Antwort vom Aktor“);
    c) return true wenn erwartete Antwort erhalten, sonst false

  2. In form.json unter elements eine Checkbox { „type“: „CheckBox“, „name“: „status“, „caption“: „Status emulieren“ } anlegen und das Property dazu.

  3. Boolean Variable STATE anlegen

  4. Skript mit Ereignis auf Änderung der Variable STATE legen
    a) ReadProperty Status emulieren
    b) wenn status emulieren true, dann aktualisiere Variable STATE auf $_IPS[‚VALUE‘]
    c) DUOFERN_WriteValueBoolean(‚STATE‘, …);
    d) wenn status emulieren true && result von DUOFERN_WriteValueBoolean(‚STATE‘, …) = false dann aktualisiere Variable STATE auf $_IPS[OLD’VALUE’]
    e) wenn status emulieren false && result von DUOFERN_WriteValueBoolean(‚STATE‘, …) = true dann aktualisiere Variable STATE auf $_IPS[‚VALUE‘]

Macht das so Sinn?

Vielen Dank!

Gruß baba