FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Byte09 am 21 Dezember 2019, 14:12:47

Titel: FW_summaryFn Aufrufunterscheidung?
Beitrag von: Byte09 am 21 Dezember 2019, 14:12:47
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
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag 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?
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: Byte09 am 21 Dezember 2019, 17:40:49
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
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: justme1968 am 21 Dezember 2019, 18:20:21
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?

Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: Byte09 am 21 Dezember 2019, 18:30:36
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
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag 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.
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: Byte09 am 21 Dezember 2019, 19:37:16
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

Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: justme1968 am 21 Dezember 2019, 19:39:46
@rudi: ich glaube wir sollten trotzdem beim redirect durch rename oder room änderung $FW_room zurück setzen.
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: rudolfkoenig am 21 Dezember 2019, 20:16:10
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.
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: justme1968 am 21 Dezember 2019, 20:20:45
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.
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: Byte09 am 22 Dezember 2019, 07:57:55
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
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: rudolfkoenig am 22 Dezember 2019, 18:24:51
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.
Titel: Antw:FW_summaryFn Aufrufunterscheidung?
Beitrag von: justme1968 am 22 Dezember 2019, 19:55:32
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.