IPS SetInstanceSettings will nicht...

Hi

$xmldata=IPS_GetInstanceSettings(59956);
   $xml     = new IPS_XMLParser();
   $array = $xml->GetArray( $xmldata );

   $array['ID']['Settings']['UpdateInterval']=1;
   //echo var_dump($array);
   $xmldata=$xml->SetArray( $array );
   //echo $xmldata;
   $result=IPS_SetInstanceSettings(59956,$xmldata);
   if($result==FALSE){
   echo "mist";
   }
   unset($xmldata, $xml, $array);

bekomme ein „mist“ ausgegeben. kann mir beim besten willen net erklären warum.

mfg
roeni

Hallo roeni,

wenn man mit diesen Funktionen experimentiert, kann es passieren, dass versehentlich unverträgliche Daten in die Instanz geschrieben werden.

Ist dies einmal geschehen, arbeitet die Instanz nicht mehr ordnungsgemäß, selbst wenn man anschließend korrekte Werte einträgt.

Abhilfe:

  • Instanz löschen
  • Instanz neu anlegen
  • ID anpassen
    Von jetzt an hat man eine sauber laufende Instanz.
  • das Skript erneut anwenden

Wenn das Skript inzwischen fehlerfrei ist (wovon ich hier ausgehe), dann sollte es auch das gewünschte Ergebnis liefern.

Gruß
HJH

hmm -.-
ok hab das gerät bei instances gelöscht und neu hinzugefügt.
kann den updateintervall trotzdem nich per script ändern -.-

Was steckt bei dir hinter der ID?

DS2408 8-Channel Adressable switch.

ich habe ein script was jede minute einmal läuft und prüft ob irgendwelche aktionen ausgeführt werden müssen.
zu beginn des scripts will ich den update intervall auf 1 setzen um genauere rückmeldungen zu erhalten.
wenn dann auf alle ereignisse reagiert wurde und das script praktisch zu ende ist will ich den update intervall auf 10 setzen.

Naja habe diese Fkt. noch nicht benutzt, da ziemlich mächtiger Tobak, das ist eher was für Olli… und bei sowas immer vorher Backup machen, sonst is schnell mal was pfutsch.
Kenne den Inhalt der XML Daten ja bei Dir nicht, aber man muß soweit ich weiß alle Daten auch die nicht veränderten wieder reinschreiben in die neuen InstanceSettings. Hast Du auch alle Werte aus der XML übernommen? Kenne die Instance leider nicht.

Gruß Thomas

M.W. reicht es nicht, die settings in die xml-Datei zu schreiben.
Auch die Instance muss dazu gebracht werden, die neuen Parameter zu lesen (normalerweise beenden und neu starten).

Tommi

In den meisten Fällen: Korrekt :slight_smile:

Nur der Autor des entsprechenden Modul’s kann sagen wann die Settings vom Modul ausgelesen werden. Bei meinen Modulen werden sie z.B. nur zum Start des Moduls gelesen.

Gruß
Olli

Habe einen Bugfix ins LiveUpdate gestellt. Dadurch wird der Rückgabewert korrekt gesetzt.

Funktionsweise:
Die Funktion lädt eine neue Konfiguration in den Speicher und ruft intern die LoadSettings Funktion der Instanz auf. Daduruch werden Normalerweise die neuen Einstellungen geladen und intern via SetSettings übernommen.

Wie Olli schon sagte, hängt es aber vom Modul ab, ob es die Settings bei einem erneuten LoadSettings übernimmt oder nicht.

In den meisten Fällen wird es funktionieren. (Hier bei OneWire klappt es auch)

Trotzdem ist die Funktion insgesamt mit großer Vorsicht zu genießen, da sie im Schlimmsten Fall die Settings so verändern kann, dass IPS nicht mehr Fehlerfrei startet.

paresy

Hallo,

im uebrigen war dies ja unser Wunsch, bei OneWire fuer bestimnmte Zeiten das Update Interval aenderbar zu machen.

Gruss Torro

Gibt es ja auch. TMEX_SetInterval :slight_smile:

Damit erübrigt sich der ganze Trick hier.

paresy

Hallo paresy,

ja, ich weiss das ja. Aber Roeni kann das nicht wissen, wenn er nicht CTRL+SPACE benutzt, um nach moeglichen TMEX Befehlen zu schauen. Wir haben es naemlich im Wiki einfach nicht drin, da fehlt es.

Ich werde es gleich mal noch ergaenzen…

Gruss Torro

Hallo Roeni,

hier findest Du nun im Wiki die Loesung fuer Dich.

Gruss Torro