FW_summaryFn Aufrufunterscheidung?

Begonnen von Byte09, 21 Dezember 2019, 14:12:47

Vorheriges Thema - Nächstes Thema

Byte09

Hi zusammen,

ich suche nach einer Möglichkeit , innerhalb der FW_summaryFn zu unterscheiden , woraus deren Aufruf resultiert ?

konkret wird die FW_summaryFn bei den Befehlen:

2019.12.21 14:05:04 4: WEB_192.168.178.43_49653 GET /fhem?detail=Timer6; BUFLEN:0
und
2019.12.21 14:09:33 4: WEB_192.168.178.43_49728 GET /fhem?room= ...
aufgerufen.

gibt es eine Möglichkeit, dieses zu unterscheiden, z.B eine globale Variable in der der letzte Befehl (?detail/?room=) gespeichert ist oder eine andere Möglichkeit . Ich komme da leider nicht weiter .

gruss Byte09

justme1968

die FW_detailFn ist dazu da im device detail screen zusätzliche dinge anzuzeigen, die FW_summaryFn wird verwendet um statt des state icons etwas anzuzeigen.

da die device status zeile per default auch in der detail ansicht angezeigt wird wird die FW_summaryFn sowohl für für die raum übersicht als auch für die detail ansicht aufgerufen.

über den übergeben $FW_room solltest du feststellen können in welchem kontext du gerade bist.

es gibt module die für beides die gleiche routine hinterlegen. vielleicht bist du auf so ein beispiel gestossen?

was möchtest du denn genau machen?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Byte09

#2
Zitat von: justme1968 am 21 Dezember 2019, 16:44:04
die FW_detailFn ist dazu da im device detail screen zusätzliche dinge anzuzeigen, die FW_summaryFn wird verwendet um statt des state icons etwas anzuzeigen.

da die device status zeile per default auch in der detail ansicht angezeigt wird wird die FW_summaryFn sowohl für für die raum übersicht als auch für die detail ansicht aufgerufen.

über den übergeben $FW_room solltest du feststellen können in welchem kontext du gerade bist.

es gibt module die für beides die gleiche routine hinterlegen. vielleicht bist du auf so ein beispiel gestossen?

was möchtest du denn genau machen?

ja, das ist soweit klar.

Ich möchte die FW_summary immer dann abbrechen , wenn Sie aus der Detailansicht aufgerufen wird .
Weiterhin soll Sie abgebrochen werden , wenn eine weitere Bedingung nicht erfüllt ist .
In diesem Fall möchte ich die 'Standartansicht' haben.

Bisher habe ich das so gelöst:

sub MSwitch_summary($) {
    my ( $wname, $name, $room ) = @_;
    my $hash = $defs{$name};
    my $testroom = AttrVal( $name, 'MSwitch_Inforoom', 'undef' );

Log3( $name, 0, "$wname, $name, -$room-  " );
Log3( $name, 0, " FW_room  $FW_room " );

    if ( $testroom ne $room ) { return; }
.
.
.


das klappt soweit auc, solange ich mich in der Webansicht in der Detailansicht 'bewege' da dann die übergebene Variable $room immer undefiniert ist.

Wenn aber die Detailansicht aus einer anderen Aktion aufgerufen wird ( nach einem rename oder einem define mit raumzuweisumg ) kommt die Variable $room z.T definiert mit und es klappt nicht mehr auf diese art.

Daher suche ich eine möglichkeit diese beiden Fälle zuverlässig zu unterscheiden.
$FW_room  ist da aus gleichen Gründen leider nicht hilfreicher.


Ansonsten sehe ich irgendwie nur die Möglichkeit , die Summary aus der Detaiansicht gar nicht aufzurufen und sie dort ( FW_detailFn ) komplett selber zu 'bauen' . Möchte ich aber nur ungerne .

Sinn ist der , dass ich in der Raumansicht unter gewissen Umständen eine komplett andere Darstellung der Summary habe möchte als in der Detailansicht (Anhang).

gruss Byte09

justme1968

ich würde sagen das beim umbenennen und define der raum auch in der detail ansicht gesetzt ist ist ein fehler in fhemweb. wenn du genau hinschaust wird auch der raum eintrag in der seitenleiste selektiert.


aber ich verstehe den anwendungsfall immer noch nicht.

das die device summary zeile in der detail ansicht angezeigt wird ist doch absichtlich ein feature von fhemweb. das verhalten kann vom anwender über das deviceOverview attribut beeinflusst werden.

wenn es für ein modul nicht sinnvoll ist die summary zeile anzuzeigen kann eine FW_detailFn angeben.

wenn es trotz der FW_detailFn sinnvoll ist die sumary zeile anzuzeigen kann man das über $hash->{FW_deviceOverview} = 1; erzwingen.

das sich ein device in einem raum mit einem bestimmten namen anders verhält wie in anderen räumen ist meiner meinung nach falsch und wäre inkonsistent.

welche anwendung hast du denn genau im sinn?

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

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

Byte09

#4
Zitat von: justme1968 am 21 Dezember 2019, 18:20:21

das sich ein device in einem raum mit einem bestimmten namen anders verhält wie in anderen räumen ist meiner meinung nach falsch und wäre inkonsistent.

welche anwendung hast du denn genau im sinn?

Naja, als falsch würde ich es nicht bezeichnen , aber als anders.

Ich möchte die Möglichkeit haben , alle Devices in einen (zusätzlichen) Raum zu sortieren den ich optional über Attribut angeben kann indem ich das Attribut in einem Device setze, dieses wird dann automatisch auf alle anderen Devices des Moduls übertragen ( auch anders , aber es wird ja niemand gezwungen ;-) ) , und dort ALLE wichtigen Infos in einer Übersicht zu haben . Mache ich in diesem Modul von Anfang an , jetzt wollte ich diesen manchmal auftretenden Fehler mal angehen.

gruss Thomas

rudolfkoenig

Wenn ich mich nicht irre, dann enthaelt Parameter 4 (%extPage) beim Aufruf aus dem Raumuebersicht einen Eintrag group, was beim Aufruf in der Detailseite fehlt.

Byte09

Zitat von: rudolfkoenig am 21 Dezember 2019, 19:28:58
Wenn ich mich nicht irre, dann enthaelt Parameter 4 (%extPage) beim Aufruf aus dem Raumuebersicht einen Eintrag group, was beim Aufruf in der Detailseite fehlt.
Super, danke vorab.

ich schaue mir das spätestens morgen früh an.

gruss Thomas

Gesendet von meinem ELE-L29 mit Tapatalk


justme1968

@rudi: ich glaube wir sollten trotzdem beim redirect durch rename oder room änderung $FW_room zurück setzen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Gerne, wenn mir jemand zeigt, wie das Problem zu sehen ist.
Auf Anhieb habe ich es aus der Beschreibung nicht verstanden, und will nicht raten.

justme1968

debug meldung wie im beispiel oben und die summary fn einbauen.

detail ansicht aufrufen -> log ausgabe mit leerem room -> ok.

dann entweder direkt von dort das device per rename umbenennen oder room setzen/ändern -> fhemweb zeigt nach redirect wieder die detail ansicht, aber im log ist zu sehen das $FW_room gesetzt war und der raum in der seitenleiste ist markiert. obwohl dir detail ansicht gezeigt wird.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Byte09

#10
Zitat von: rudolfkoenig am 21 Dezember 2019, 19:28:58
Wenn ich mich nicht irre, dann enthaelt Parameter 4 (%extPage) beim Aufruf aus dem Raumuebersicht einen Eintrag group, was beim Aufruf in der Detailseite fehlt.

damit konnte ich es lösen, danke !

gruss thomas

rudolfkoenig

Zitat@rudi: ich glaube wir sollten trotzdem beim redirect durch rename oder room änderung $FW_room zurück setzen.
Ich hoffe ich habe jetzt den richtigen Aufruf identifiziert:
- es geht um den FW_summaryFn Aufruf in FW_devState()
- was aus FW_makeDeviceLine aufgerufen wird
- was wiederum aus FW_doDetail aufgerufen wird, falls FW_deviceOverview gesetzt ist.

justme1968

ja. das müsste sie sein.

ich vermute das man beim redirect auf die detail seite $FW_room löschen sollte. das passiert neben copy und attr auch noch für define.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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