FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: plin am 23 Januar 2015, 20:44:57

Titel: Initialen Device-Status im Modul abfragen/setzen
Beitrag von: plin am 23 Januar 2015, 20:44:57
Hallo zusammen,

ich schreibe aktuell an einem Modul für Belkin-Swicthes (siehe http://forum.fhem.de/index.php/topic,17115.msg249996.html?PHPSESSID=16r9uhb97ilt3fk8r5ad45iga7#msg249996).

Leider ist die Dokumentation zur Modul-Entwicklung nicht so präzise, dass ich klar erkennen kann was ich tun muss, um den Device-Status auszulesen und in FHEM zu hinterlegen.

Eine Recherche in anderen Modulen führte zu dem Ansatz

<..snip..>
sub
wemo_Initialize($)
{
  my ($hash) = @_;

  $hash->{StateFn}   = "wemo_StateFn";
  $hash->{SetFn}     = "wemo_Set";
  $hash->{DefFn}     = "wemo_Define";
  $hash->{AttrList}  = "remote_ip";
#print "##### Init #####\n";
#print Dumper $hash;
}
<...snip...>
sub
wemo_StateFn($$$$)
{
  my ($hash, $tim, $vt, $val) = @_;

  my $name   = $hash->{NAME};
  my $remote_ip = AttrVal($name, "remote_ip", '127.0.0.1');
  my $wemo = WebService::Belkin::WeMo::Device->new(ip => $remote_ip, db => '/etc/belkin.db');
  my $wemoval = $wemo->getBinaryState();

  $hash->{READINGS}{$vt}{VAL} = $wemoval;
  $hash->{READINGS}{$vt}{TIME} = TimeNow();
  Log3 $hash, 4, "$tim Readings: $vt Value: $wemoval";

  return undef;

}
<...snip...>


Die ..._StateFn wird aber anscheinend nie aufgerufen.

Fragen

Viele Grüße
Peter
Titel: Antw:Initialen Device-Status im Modul abfragen/setzen
Beitrag von: rudolfkoenig am 23 Januar 2015, 20:55:06
ZitatWelche Modul-Funktion muss ich für das Setzen des Status verwenden?
readingsSingleUpdate (oder ..Begin/Bulk/End..), mit dem ReadingNamen "state".
Das wird automatisch zu STATE, es sei denn, der Benutzer modifiziert es mit stateFormat

ZitatMuss ich in der fhem.cfg noch etwas angeben?
Nein.

ZitatWie kann ich den Status zyklisch prüfen/setzen (falls er per iPhone App geändert wurde)?
Wessen Status? Falls es um das Belkin geht, z.Bsp. im DefineFn per InternalAt Polling konfigurieren.
StateFn wird aufgerufen, falls das Modul zu den "setstate XXX " FHEM-Befehlen was sagen will.
Diese werden ueblicherweise im fhem.state abgelegt, und beim Starten ausgefuehrt.
Titel: Antw:Initialen Device-Status im Modul abfragen/setzen
Beitrag von: betateilchen am 23 Januar 2015, 20:57:04
Vielleicht sollte das irgendjemand mal hier dokumentieren, da fehlt die StateFn nämlich völlig:

http://www.fhemwiki.de/wiki/DevelopmentModuleIntro
Titel: Antw:Initialen Device-Status im Modul abfragen/setzen
Beitrag von: plin am 24 Januar 2015, 08:36:56
ok, Danke für die Infos. Bin jetzt einen Schritt weiter, habe nur noch ein Problem mit der "Perl-Belkin-WeMo-API-master" und Timeouts beim Aufruf der API.

Zwischenstand:

Viele Grüße
Peter