wieso startet eine Anzeige im Frontend die Set-Routine?

Begonnen von betateilchen, 26 September 2013, 12:18:47

Vorheriges Thema - Nächstes Thema

betateilchen

Gegeben ist folgender Modulcode:


package main;

use strict;
use warnings;

sub PIFACE_Define($$);
sub PIFACE_Undefine($$);
sub PIFACE_Set($@);

sub
PIFACE_Initialize($)
{
my ($hash) = @_;
$hash->{DefFn} = "PIFACE_Define";
$hash->{UndefFn} = "PIFACE_Undefine";
$hash->{SetFn} = "PIFACE_Set";
$hash->{AttrList} = $readingFnAttributes;
}


sub
PIFACE_Define($$){
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
my $name = $hash->{NAME};

Log3($name, 3, "PIFACE $name: created");
readingsSingleUpdate($hash, "state", "active",1);

return undef;
}

sub
PIFACE_Undefine($$){
my($hash, $name) = @_;
RemoveInternalTimer($hash);
return;
}

sub
PIFACE_Set($@){
my ($hash, @a) = @_;
my $name = $hash->{NAME};
my $port = $a[1];
my $val  = $a[2];

Log3($name, 3, "PIFACE $name: set started with port: $port val: $val");
return;
}

1;


Eine Entity wird mit

define myPi PIFACE

korrekt angelegt.

Nun passiert folgendes - für mich völlig unverständlich: Sobald "myPi" irgendwo im Frontend angezeigt wird (z.B. beim Klick auf den Room "Unsorted" oder beim Klick auf die Detailanzeige selbst) wird die Set-Routine des Moduls durchlaufen, was zu völlig absurdem Verhalten führt.


2013.09.26 12:08:45 1: Including fhem.cfg
2013.09.26 12:08:45 3: telnetPort: port 7072 opened
2013.09.26 12:08:45 3: WEB: port 8083 opened
2013.09.26 12:08:45 3: PIFACE myPi: created
2013.09.26 12:08:45 1: Including ./log/fhem.save
2013.09.26 12:08:45 3: PIFACE myPi: set started with port: ? val:
2013.09.26 12:08:52 3: PIFACE myPi: set started with port: ? val:


Es handelt sich um die einzige Definition in einem ansonsten minimalistischen und aktuellen fhem 5.4


attr global altitude 40
attr global autoload_undefined_devices 1
attr global latitude 51.4316
attr global logfile ./log/fhem-%Y-%m.log
attr global longitude 6.8866
attr global modpath .
attr global motd none
attr global nofork 1
attr global statefile ./log/fhem.save
attr global userattr devStateIcon devStateStyle icon sortby webCmd
attr global verbose 3

define telnetPort telnet 7072 global

define WEB FHEMWEB 8083 global
attr WEB stylesheetPrefix dark

define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

define myPi PIFACE


Bestimmt hab ich nur eine Kleinigkeit falsch gemacht - es ist ja nicht mein erstes Modul - aber ich komme nicht drauf, was da schiefläuft.
Bitte um Hilfe - ich grüble darüber jetzt schon seit gestern.

Danke!
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

set wird mit ? aufgerufen damit das web frontend die liste der set kommandos bekommt. get und attr müssen auch augerufen werden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

jetzt, wo Du es sagst... Danke!

Das bedeutet aber auch, dass dieser Aufruf zu Zeitpunkten stattfindet, wo er gar nicht nötig wäre.
Eigentlich würde doch (nach meinem Verständnis) der Aufruf bei Generierung der Detailansicht völlig ausreichen.
Denn immer dann, wenn ich die Detailansicht bekomme, erfolgt der Aufruf noch einmal.


---
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!