DevelopmentState

Aus FHEMWiki
Zur Navigation springen Zur Suche springen

Der Default-Status eines Gerätes wird in FHEM durch die interne Variable STATE dargestellt. Diese wird beispielsweise von FHEMWEB oder von dem list-Befehl angezeigt.

Der STATE sollte jedoch von Modulautoren nicht direkt gesetzt werden. Stattdessen ermittelt FHEM den Wert folgendermaßen:

  1. Falls das Attribut stateFormat gesetzt ist, wird dieses ausgewertet und das Ergebnis in den STATE geschrieben. (siehe readingFnAttributes in der CommandRef)
  2. Falls das Reading state existiert, wird dessen Wert in STATE übernommen.

Wenn ein Modulautor ein bestimmtes Reading in STATE vorbelegen möchte, so kann er dies mit dem stateFormat-Attribut tun. Dies sollte aber nur in der define Funktion des Moduls geschehen, damit der User die Möglichkeit hat, das Attribut anschließend anzupassen.

Beispiel:

sub MYMODULE_Define($$)
{
	my ($hash, $def) = @_;
	my @args = split("[ \t]+", $def);
	my ($name, $type) = @args;
	[...];
	
	# prüfen, ob eine neue Definition angelegt wird 
	if($init_done && !defined($hash->{OLDDEF}))
	{
		# setzen von stateFormat
	 	$attr{$name}{"stateFormat"} = "power";
 	}
	
	[...];
}

sub MYMODULE_Call($$)
{
	[...];
	my $power = [...];
	readingsBeginUpdate($hash);
	readingsBulkUpdate($hash,"power",$power);
	readingsEndUpdate($hash, 1);
	[...];
}