Aktuell arbeite ich an einem Modul, hierbei möchte ich einen ObjectLink verwenden.
Im Konfigurationsformular wird ein Sensor ausgewählt:
Die ID des ausgewählten Sensorwerts, soll anschließend im Objectlink hinterlegt werden.
Hierzu habe ich ein paar Fragen:
In der public function Create, habe ich den Link wie folgt angelegt:
$ist_luftfeuchtigkeit = IPS_CreateLink(); //Create link
IPS_SetName($ist_luftfeuchtigkeit, "Luftfeuchtigkeit"); //Name the link
IPS_SetParent($ist_luftfeuchtigkeit, $this->InstanceID); //Set a parent
Nach Erstellung sieht das ganze aktuell so aus:
Den Befehl „IPS_SetLinkTargetID“ kann ich bei der Erstellung der Instanz noch nicht verwenden, da erst nach Erstellung der Instanz im Instanzkonfigurator ausgewählt wird auf welche Variable der Link verweisen soll, da diese Info vorher noch nicht vorhanden ist.
Meine Frage:
An welcher Stelle bw. wie weiße ich dem Link jetzt noch die TargetID zu auf die er verweisen soll?
Ich dachte das ganze mache ich dann unter „public function ApplyChanges“ das funktioniert aber nicht.
Das ganze könnte wie folgt auch direkt im „ApplyChanges“ bereich untergebracht werden:
$ist_luftfeuchtigkeit = IPS_CreateLink(); //Create link
IPS_SetName($ist_luftfeuchtigkeit, "Luftfeuchtigkeit"); //Name the link
IPS_SetParent($ist_luftfeuchtigkeit, $this->InstanceID); //Set a parent
IPS_SetLinkTargetID($ist_luftfeuchtigkeit, TARGETID);
Diese Lösung finde ich aber nicht so schön, da die Instanz erst erstellt wird ohne den Objectlink.
Diese wird dann erst angelegt, sobald man eine ID im Instanzkonfigurator ausgewählt hat und einmal auf „Änderungen Übernehmen“ geglickt hat.
Habt ihr einen Tipp für mich? Wie handhabt ihr das wenn ihr in Modulen arbeite in Bezug auf Objectlinks.
Zusammengefasst:
In der „Create“ Funktion soll ein Objektlink angelegt werden.’
Anschließend soll, sobald eine Variable im „Instanzkonfigurator“ ausgewählt wurde die ID im erzeugten Objektlink hinterlegt werden, nachdem das ganze mit „Änderungen übernehmen“ bestätigt wurde.