Module: UnregisterVariable geht nicht

Hallo,

in /etc/symcon/scripts/__ipsmodule.inc.php steht ab Zeile 142 (zumindest in meiner Version):

                protected function UnregisterVariable($Ident) {
                        $vid = @IPS_GetObjectIDByIdent($Ident, $this->InstanceID);
                        if($vid !== false)
                                return;
                        if(!IPS_VariableExists($vid))
                                return; //bail out
                        IPS_DeleteVariable($vid);
                }

wenn ich das in

                protected function UnregisterVariable($Ident) {
                        $vid = @IPS_GetObjectIDByIdent($Ident, $this->InstanceID);
                        if($vid === false)
                                return;
                        if(!IPS_VariableExists($vid))
                                return; //bail out
                        IPS_DeleteVariable($vid);
                }

ändere, kann man sogar Variablen löschen.

Oder habe ich das falsch gelesen?

Gruß,
Thorsten

Nein, ich würde das auch so sehen.
Allerdings nutze und habe das auch früher nie genutzt. Löschen sollte der User schon selbst.
Was wenn die Var verlinkt und geloggt war ?
Michael

Ist natürlich ein Fehler den ich zum nächsten Update fixe.

@NallChan: Wenn du Geräte umkonfigurierst (z.B. den Gerätetyp änderst) so löscht IPS dir manchmal auch Variablen, die für den Gerätetyp nicht relevant sind, damit keine Leichen übrig bleiben. Dein Einwand ist trotzdem korrekt :slight_smile:

paresy

Hi,

ihr meint ein


$links = IPS_GetLinkList();
$vid   = $this->GetIDForIdent("GroupVolume");

foreach( $links as $key=>$LinkID ){
  if ( IPS_GetLink($LinkID)['TargetID'] === $vid )
    IPS_DeleteLink($LinkID);
}

wenn in meiner Modulkonfiguration das Flag für GruppenKoordinator gelöscht wird?

Hintergrund:
Wenn beim Sonos modul die Instanz nicht mehr als Gruppenkoordinator gekennzeichnet ist, soll die Funktionalität das Gruppenvolumen zu ändern entfernt werden, da es quasi ja keine Gruppe mehr gibt.

Wäre natürlich blöd, wenn jemend das Häkchen versehentlich löscht…
Aber Strafe muss sein :smiley:

@paresy: Oder sollte das gar mit in die Funktion „UnregisterVariable“ mit rein?

Gruß,
Thorsten

Ja, das verhalten mit dem Typ andern habe ich bei der Modbus-Instanz gesehen.
Bei HM werden es immer nur mehr, wenn man ein anderen Gerätetyp als Adresse einträgt.

Ich finde es kommt auch stark auf das Modul an.
Und dann nicht nur Vars, auch Links oder Events. Aber dafür sollte der Modul-Entwickler selbst sorgen.
Michael