Autor Thema: [gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat  (Gelesen 805 mal)

Offline mwllgr

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 67
[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« am: 01 Dezember 2019, 23:04:12 »
Hallo,

habe soeben an einem Modul von mir gesehen, dass bei allen Sets außer einem einzigen die Returns bei einem Set über eine Art Messagebox angezeigt werden.
Bei einem Set jedoch ("dateTimeSync") wird der Return-Wert über eine eigene Seite ausgegeben. Vielleicht helfen die angehängten Bilder, falls jemandem unklar ist, was ich meine.

Wie entscheidet FHEM, wie die Nachricht ausgegeben wird? Für genau dieses Set gibt es kein dazu passendes Attribut/Get-Feld.

Danke im Voraus


Update:
Gerade herausgefunden, dass die "Messagebox" kommt, wenn man ein Reading erstellt, welches den gleichen Namen wie das set-Feld hat.
Ist das so beabsichtigt?
« Letzte Änderung: 09 Dezember 2019, 20:49:30 von mwllgr »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21939
Antw:FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #1 am: 02 Dezember 2019, 18:29:32 »
Zitat
Wie entscheidet FHEM, wie die Nachricht ausgegeben wird?
Da es historisch gewachsen ist, ist es etwas chaotisch:
- fhemweb.js zeigt die "sofortige" Antwort des get-Input-Feldes im Dialog an, das Gleiche gilt fuer die "haupt" Befehlszeile, wenn der Befehl mit get anfaengt _UND_  nicht die Hauptseite angezeigt wird (sondern z.Bsp. eine Detailseite).
- falls auf der Detailseite set/get/attr angeklickt wird, und ein Reading/Attribut mit diesem Namen noch nicht existiert, dann wird die Seite neu geladen da es durch diesen Befehl angelegt werden koennte. Sonst reicht ein Dialog, da eine Aenderung per longpoll mitgeteilt und das Reading aktualisiert wird.
- man kann von perl aus eine Nachricht per Dialog anzeigen lassen per asyncOutput, das nutzen get Funktionen, wenn die Antowrt nicht sofort zur Verfuegung steht.

Offline mwllgr

  • Developer
  • Jr. Member
  • ****
  • Beiträge: 67
Antw:FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #2 am: 09 Dezember 2019, 20:48:54 »
Ah - alles klar, danke!

Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 706
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #3 am: 26 Januar 2020, 17:28:01 »
Hallöchen.

Ich muss hier nochmal nachhacken!
Genauer, was ist der Unterschied, wenn man ein get-Befehl a) im Inputfeld ausführt oder b) auf der Detailseite auf get klickt?

In beiden Fällen wird ein Dialog angezeigt. Das Ergebnis\Visualisierung ist aber unterschiedlich!
In Variante a werden scheinbar HTML-Tags gefiltert und in Variante 2 nicht?

Das wirft allgemein die Frage auf, wie sinnvoll ist es komplexere HTML Elemente (z.B. Tabellen, etc.) in get Antworten zurück zu geben?
Gibt es hierfür eine Richtlinie oder Ähnliches?

Risiko.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21939
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #4 am: 26 Januar 2020, 20:36:21 »
Zitat
Genauer, was ist der Unterschied, wenn man ein get-Befehl a) im Inputfeld ausführt oder b) auf der Detailseite auf get klickt?
Es durchlaeuft unterschiedliche Code-Bereiche in fhemweb.js :)

Zitat
Das wirft allgemein die Frage auf, wie sinnvoll ist es komplexere HTML Elemente (z.B. Tabellen, etc.) in get Antworten zurück zu geben?
Gar nicht. Get darf/soll auch ueber telnet/websocket/etc aufgerufen werden, das Ergebnis soll nicht formatiert sein.
Fuer aufwendigere Sachen ist FW_detailFn gedacht, das ist FHEMWEB spezifisch, da kann/soll man HTML/JavaScript/etc verwenden.

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20161
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #5 am: 26 Januar 2020, 22:00:18 »
natürlich kann es sinnvoll sein aus einem get html zurück zu geben um z.b. ein bild anzuzeigen oder in der antwort anklickbare links zu zeigen.

die detailFn ist für dinge die immer angezeigt werden sollen wenn die detail ansicht gezeigt wird (ja man kann natürlich hier interaktive elemente einbauen, aber warum das rad neu erfinden wenn es schon get gibt?). und das get ist um etwas bestimmtes von hand abzufragen.

wichtig ist das man prüft über welchen weg die anfrage reingekommen ist (telnet, web, automatisch durch code) und dann die passende antwort zurück gibt. nur wenn die anfrage interaktiv über fhemweb gekommen ist sollte man (sofern passend) html zurück geben. sonst natürlich nicht.

wichtig ist das man $hash->{CL} und insbesondere $hash->{CL}{TYPE} auswertet um zu wissen ob asyncOutput möglich ist und/oder ob der aufruf über fheweweb reingekommen ist. und man sollte sich bewusst sein das fhemweb nicht das einzige frontend ist. und telnet auch nicht. es könnte auch ein sprach assistent verwendet werden. es kann also sein das man neben der prüfung zum passenden ausgabe format auch spezialisierte get und/oder readings bereitstellen muss um andere frontends oder andere anwendungsfälle abzudecken. auch um anwendern die schlecht/nicht sehen die benutzung zu ermöglichen.

FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 706
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #6 am: 28 Januar 2020, 21:10:58 »
Ok!
Danke André für die ausführliche Antwort.
Werde ich mir dann nochmal anschauen müssen  :-\


Offline Risiko

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 706
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #7 am: 30 Januar 2020, 20:21:55 »
Hallo, ich nochmal.

Man kann leider in $hash->{CL} nicht unterscheiden, ob man in der Detailansicht auf den Link get geklickt hat oder den Befehl im Inputfeld eingegeben hat.
Anbei zwei Screenshots. a) get über Link b) get über Input

Ich würde gern im Fall b) einfach einen andere Rückgabe ohne HTML liefern.

Danke.


Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20161
Antw:[gelöst] FHEMWEB: Get-/Set-Returns Anzeigeformat
« Antwort #8 am: 30 Januar 2020, 20:25:35 »
das ist richtig. beides zählt als interaktiv per web.

aber wenn du deine rückgabe in <html></html> einschliest sollte in beiden fällen der gleiche dialog angezeigt werden und nicht die klartext antwort.

wenn das immer noch nicht reicht: niemand schreibt dir vor das du hinter dem link nicht ein anderes kommando oder das gleiche mit einem besonderen parameter stecken kannst um beides zu unterscheiden.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

 

decade-submarginal