"WriteProperty"? (property aus dem Modul heraus setzen)

Hi,

ich würde gerne eine vorhandene Property aus dem Modul heraus setzen. Geht das?

Klar, Properties sind Einstellungen. Hier könnte sich der vorgegebene Wert aber durch externe Konfiguration am angeschlossenen Gerät ändern. Ich würde diese Änderung gerne im IPS widerspiegeln lassen…

Gruss
Coyote

IPS_SetProperty
Die Frage ist eher ist das wirklich notwendig oder kann das nicht ganz normal im Create gesetzt werden?

Nein, kann es leider nicht. Es geht um maximal erlaubte Spannungen. Und der Create läuft nur einmal. Wenn jetzt via App in dem Gerät eine höhere erlaubte Spannung (oder niedrigere) gesetzt wird, dann muss das Modul sich entsprechend verhalten. Das bekomme ich zwar hin (da man den Wert aus dem Gerät auslesen kann), aber es spiegelt sich nicht in den Moduleinstellungen (wo man die erlaubte Spannung auch festlegen kann) wider. Man hat also praktisch (leider) 2 Konfigurations-UIs (IPS Modul + Geräte App).

Richtige Antwort.
Nicht machen! Niemals selbst IPS_SetProperty auf sich selbst ausführen.
Du musst ja dann auch ein IPS_ApplyChanges auf deine Instanz ausführen und mit Pech hast du dann eine Endlosschleife.
Wird im Best Practice zur PHP-Modul Erstellung · GitHub unter 2. v aufgeführt.

Es gibt bestimmt andere Wege.
Im Create kannst du eh keinen Sinnvollen Wert vorgeben, wenn du ihn vom Gerät abfragen willst. Create wird auch beim starten von IPS ausgeführt; somit solltest dort nichts aktives außerhalb IPS machen.

Da ich nicht die genauen Zusammenhänge kenne, musst du selber prüfen welche oder alle der folgenden Ideen eventuell funktionieren kann.

Beim Öffnen der Konfiguration den min/Max Wert vom Gerät lesen und als Dropdown in der Konfig-Form dem User zur Verfügung stellen. (Doku: GetConfigurationForm)

Sobald die Verbindung zur Hardware aufgebaut wird, den Wert der Hardware mit der Konfig in IPS vergleichen und wenn der in IPS außerhalb der Range ist einen Fehlerstatus setzen (SetStatus).
Den Wert aus der Hardware kannst du auch in einem InstanzBuffer speichern und brauchst in dann nicht jedes mal neu zu lesen.

Beim Übernehmen der Konfig in IPS (Applychanges) die Eingestellten Werte in IPS prüfen mit den min/max Werten der Hardware und dann eine Fehlermeldung mit echo ausgeben.

usw…

Michael

okok… bin ja Argumenten gegenüber aufgeschlossen :wink:

Werde die Einstellung im IPS nur auslesen und verwenden bzw. im Gerät setzen aber dafür keine Konfiguration anbieten. Dann sollte es ausreichend funktionieren.

Danke für die schnellen antworten !