Ein herzerfrischendes Moin vom achtern Diek tosammen
Ich habe eine Frage:
Mit der Funktion in einem Modul "X_FW_detailFn($$$$)" kann man sich eine eigene Detail - Seite zusammenstricken.
Das funktioniert auch sehr gut!
Nun möchte ich per Attribut zwischen dem Fhem - Standard und meiner Version umschalten.
Frage a) Gibt es einen Trick wie man X_FW_detailFn($$$$) per Attribut / Befehl deaktivieren kann?
Frage b) Wenn a) = Nein, wie lautet der html - Code, der zurück gegeben werden muss, um die fhem Standard Anzeige zu darzustellen?
Ich habe mir ich der 01_FHEMWEB.pm einen Wolf gesucht aber nichts brauchbares gefunden.
Gruß und Danke vorab
Sailor
$hash->{FW_deviceOverview} = 1;
$hash->{FW_addDetailToSummary} = 1;
Damit lässt sich das steuern.
Gruß
Dan
Frage a) Gibt es einen Trick wie man X_FW_detailFn($$$$) per Attribut / Befehl deaktivieren kann?
Im AttrFn beim Setzen eines Attributes $modules{<TYPE>}{FW_detailFn} loeschen, und beim Entfernen (oder 0-Setzen) des Attributes wieder setzen.
$hash->{FW_deviceOverview} = 1;
Das bewirkt, dass die standard Darstellung des Geraetestatus in der Detailansicht auch dann erfolgt, wenn FW_DetailFn definiert ist.
Wenn FW_detailFn zusaetzlich undef zurueckliefert, dann ist das gleichwertig mit einem Modul ohne FW_detailFn (was die Detailansicht betrifft).
$hash->{FW_addDetailToSummary} = 1;Damit wird veranlasst, dass der Rueckgabewert von FW_detailFn in der Raumuebersicht zusaetzlich(!) zu der stadard Darstellung ausgegeben wird, falls der Rueckgabewert nicht undef ist.
Moin tosammen
Ich habe mal ein wenig ausprobiert
Der Code
sub DepartureBnT_FW_detailFn($$$$) {
my ($FW_wname, $devname, $room, $extPage) = @_;
my $hash = $defs{$devname};
my $name = $hash->{NAME};
$hash->{FW_deviceOverview} = 1;
return(undef);
}
führt dazu, dass schlichtweg nichts über dem set-Befehl angezeigt wird.
Den "$modules{X}{FW_detailFn}" zu löschen, führt dazu
Der Code
sub DepartureBnT_FW_detailFn($$$$) {
my ($FW_wname, $devname, $room, $extPage) = @_;
my $hash = $defs{$devname};
my $name = $hash->{NAME};
$modules{DepartureBnT}{FW_detailFn} = "";
return(undef);
}
sowie
sub DepartureBnT_FW_detailFn($$$$) {
my ($FW_wname, $devname, $room, $extPage) = @_;
my $hash = $defs{$devname};
my $name = $hash->{NAME};
$hash{FW_detailFn} = "";
return(undef);
}
führen zum gleichen Ergebnis.
Gruss
Sailor
Mein Vorschlag fuer die Aenderung war AttrFn, nicht DepartureBnT_FW_detailFn.
$modules{DepartureBnT}{FW_detailFn} muss gesetzt werden, $defs{$devname}{FW_detailFn} (aka $hash->{FW_detailFn}) interessiert niemanden.
Zu FW_deviceOverview=1: wenn gesetzt, dann kann man die zusaetzliche Anzeige der "standard" Darstellung mit dem Attribut deviceOverview steuern (siehe https://fhem.de/commandref_modular.html#FHEMWEB-attr-deviceOverview).
Muss auch als $modules{DepartureBnT}{FW_deviceOverview}=1 gesetzt werden.
Ich gehe davon aus, dass fuer die aktuelle Aufgabe FW_deviceOverview irrelevant ist.
Hallo Rudi
Danke, wer lesen kann ist klar im Vorteil! ;)
However, mit
sub DepartureBnT_Attr(@) {
my @a = @_;
my $name = $a[1];
my $hash = $defs{$name};
### Check whether "ShowDetails" attribute has been provided
elsif ($a[2] eq "ShowDetails")
{
### Log Entry for debugging purposes
Log3 $name, 1, $name. " : DepartureBnT_Attr - ShowDetails : " . $a[3];
if ($a[3] eq "Fhem"){
$modules{DepartureBnT}{FW_detailFn} = "";
}
elsif ($a[3] eq "Departure"){
$modules{DepartureBnT}{FW_detailFn} = "DepartureBnT_FW_detailFn";
}
### Update all Departures
DepartureBnT_Update($hash);
}
}
funktioniert es tatsächlich, allerdings werden dann alle Devices des gleichen TYPEs (DepartureBnT) umgeschaltet, unabhängig was im jeweiligen Attribut "ShowDetails" steht.
Mit anderen Worten: Ein klitzekleines bisschen über das Ziel herausgeschossen.
Wie kann ich dies auf eine Instanz begrenzen bzw. differenzieren.
Gruß
Sailor
ZitatMit anderen Worten: Ein klitzekleines bisschen über das Ziel herausgeschossen.
Naechster Vorschlag:
- FW_detailFn definieren und FW_deviceOverview setzen
- FW_detailFn liefert je nach ShowDetails Attribut den Inhalt oder undef zurueck.
Nebeneffekt: damit wird in der Detailansicht bei allen Instanzen von DepartureBnT immer erst die standard Anzeige angezeigt, und danach (wenn ShowDetails gesetzt) die modulspezifische Anzeige.
Der Benutzer kann das zwar mit dem deviceOverview FHEMWEB(!) Attribut uebersteuern, das gilt aber fuer alles, was ueber diese FHEMWEB-Instanz angezeigt wird.
Hallo Rudi
Zitat von: rudolfkoenig am 28 Februar 2026, 10:21:33ZitatMit anderen Worten: Ein klitzekleines bisschen über das Ziel herausgeschossen.
Naechster Vorschlag:
- FW_detailFn definieren und FW_deviceOverview setzen
- FW_detailFn liefert je nach ShowDetails Attribut den Inhalt oder undef zurueck.
Nebeneffekt: damit wird in der Detailansicht bei allen Instanzen von DepartureBnT immer erst die standard Anzeige angezeigt, und danach (wenn ShowDetails gesetzt) die modulspezifische Anzeige.
Der Benutzer kann das zwar mit dem deviceOverview FHEMWEB(!) Attribut uebersteuern, das gilt aber fuer alles, was ueber diese FHEMWEB-Instanz angezeigt wird.
Das hat zum Erfolg geführt - Danke für deine geduldige Hilfe!
Gruß
Sailor