Graph Symbol im WF entfernen, kleines Hilfsscript

Hallo
hab hier eine Kleinigkeit die vielleicht dem ein oder anderen nützlich sein kann:

Wird eine Variable gelogged entsteht ja im WF dieses Symbol um den IPS eigenen Graph anzuzeigen.
Oft ist dies aber nicht erwünscht, da ggfl. das ganze WF Layout zerstückelt wird. Auch wenn man seine Graphen mit einem alternativen Tool erstellt ist das Symbol deplatziert.
Leider kann man es mit Bordmitteln auch nicht abschalten.
Einzige Möglichkeit ist die Verwendung einer Dummy Variablen nur fürs loggen. Dann den Wert der StatusVar bei jeder Änderung auf die entsprechende DummyVar umkopieren.

Wenn man schon viele Instanzen angelegt hat ist diese Umstellung eine mühsame Klickorgie.

Anbei ein kleines Script das den Aufwand dafür deutlich reduziert.

Was passiert ?
Wenn das Script von einer Variablen per „bei Änderung“ Ereignis getriggert wird, so prüft es bei jedem Aufruf ob UNTERHALB der aufrufenden Variablen eine Variable mit Namen „log“ besteht.

Wenn „Ja“ wird der Variableninhalt nach „log“ kopiert.

Wenn „Nein“

  • wird diese „log“ angelegt
  • das logging der Aufrufenden Variablen abgeschaltet
  • dafür logging für „log“ angeschaltet.
  • zusätzlich noch im Archivehändler die bestehenden Daten der aufrufenden Variablen auf die neue „log“ umgebogen.

Im Grunde nix besonderes, aber spart viel Klickarbeit die benötigt würde um das WF von diesem Graph Symbol zu befreien will. Ich hab mich zummindest ewig dafür gedrückt es händisch zu machen und mich lieber über ein kaputtes WF akzeptiert.

Die Id des Archivehändler ist natürlich auf eure abzuändern.
Bei Datenbankauswertungen in eigenen Scripten ist dann noch händisch die VariableID auf die ID der jeweiligen „log“ zu setzen.

$idArchiveHandler = 22801 /*[Archive Handler]*/;

# ID von Dummy Variable holen
$idlog = @IPS_GetVariableIDByName('log', $IPS_VARIABLE);

   if($idlog===false) {  # wenn nicht vorhanden neu anlegen
	$var = IPS_GetVariable($IPS_VARIABLE);
	$idlog = IPS_CreateVariable($var['VariableValue']['ValueType']);
	IPS_SetParent($idlog, $IPS_VARIABLE);
	IPS_SetHidden($idlog, true);
	IPS_SetName($idlog, 'log');
	AC_SetLoggingStatus($idArchiveHandler,$idlog,true);   # logging einschalten
   AC_ChangeVariableID($idArchiveHandler,$IPS_VARIABLE,$idlog);  #id in bestehender db umschstellen
   AC_SetLoggingStatus($idArchiveHandler,$IPS_VARIABLE,false);  # logging für alte variable auschalten
	}

# Wert in Dummy Variable schreiben
SetValue($idlog,$IPS_VALUE);