Frage zu FW_directNotify( mit Filter, fhemweb_instance ) / JavaScript

Begonnen von HomeAuto_User, 15 Februar 2020, 23:34:47

Vorheriges Thema - Nächstes Thema

HomeAuto_User

Hallo,
ich nutze folgendes im Modul 66_EPG.
FW_directNotify("FILTER=$name", "#FHEMWEB:WEB", "location.reload('true')", "");             # reload Webseite

Ist es machbar, das man die Angabe der $fhemweb_instance flexibel gestalten kann wenn man in manchen Routinen nicht an die Variable $FW_wname herankomt? Die Variable $FW_wname is ja nur zugänglich in sub 123_FW_Detail($@) {

Zielsetzung sollte werden, das der Instanzname nicht fest verankert ist weil dieser sich ändern kann.

Sowas in der Art  ???
FW_directNotify("FILTER=$name", "#FHEMWEB:WEB|WEBphone|WEBtablet", "location.reload('true')", "");             # reload Webseite

... oder gibt es einen Weg den Namen auszulesen wenn die Variable selbst noch nicht gefüllt ist in einer Rountine?

MfG
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

rudolfkoenig

Die Variable $FW_wname enhaelt den Namen der zuletzt von einem Browser angesprochenen FHEMWEB Instanz, $FW_cname den Namen der letzten Verbindung.
Da beide globale Variablen sind, sind sie ueberall verfuegbar, wenn FHEMWEB geladen wurde.
Die vorgeschlagene Syntax kann man mit einer Schleife ueber devspec2array("TYPE=FHEMWEB:FILTER=SNAME=^$" loesen.

ABER: ich finde das Neuladen aller mit dem Server verbundenen Webseiten, egal was sie gerade darstellen, aus Benutzersicht nicht sinnvoll, ich wuerde ein Modul, was sowas macht, meiden. Beispiel: ich aendere gerade eine Definition, die Seite laedt neu, meine Aenderungen sind weg.


justme1968

wenn man dynamisch daten im
frontend aktualisieren möchte ist es besser das über readings und long poll zu machen oder über ein eigenes widget das die daten dann passend darstellt.

beispiel sind readingsHistroy (nicht ganz optimal weil altes interface per event) oder readingsGroup (schon auf direct notify umgestellt, aber zum einstieg etwas und handlich) oder FB_CALLMONITOR).

das komplette neuladen der seite sollte man wenn möglich vermeiden.

und wenn man so etwas baut muss man auch dran denken ob man eventuell noch einen alternativen mechanismus vorsieht den andere frontends (tabletui, sprach assistenten) verwenden können um an dir relevanten daten zu kommen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

HomeAuto_User

Danke für die zu Wort Meldung.
Es geht nicht darum alle Seiten zu aktualisieren, nur um diese vom Modul, deswegen auch die Filter Option.

Das Neuladen ist notwendig weil die anzuzeigenden Daten in FW_Detail nach einem neuen setzen, erst dann aktualisiert werden wenn man refresht.
Für den Leihen, F5 im Browser. Eine andere Möglichkeit sieht man nicht in der zu Verfügung stehenden Dokumentation.

Die globalen Variable der Instanz sind erst geladen, wenn erstmals FW_Detail durchlaufen ist in meinem ersten Test.

Die Alternative um an die Daten derzeit heranzukommen sieht die Abfrage im JSON bei.


Gesendet von iPhone mit Tapatalk Pro
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

justme1968

das neu laden ist nicht nötig. (ps: mein browser kennt gar kein f5 :))

wie oben geschrieben: mit einem passenden fhemweb widget und etwas javascript kann man daten live aktualisieren. so wie es die als beispiel genannten module und noch einige weitere auch tun.


FW_Detail ist eine variable. die wird nicht durchlaufen. das sie erst gesetzt ist nach dem etwas angezeigt wurde ist doch normal. vorher hat fhemweb noch keine seite ausgeliefert.


aber zur klarstellung: geht es um ein modul das du schreibst? oder ist es wein workaround für ein modul das nicht genau tut was du möchtest? dann sollte man vielleicht dort, d.h. auf modul seite ansetzen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

HomeAuto_User

Zitat von: justme1968 am 16 Februar 2020, 13:50:45
aber zur klarstellung: geht es um ein modul das du schreibst? oder ist es wein workaround für ein modul das nicht genau tut was du möchtest? dann sollte man vielleicht dort, d.h. auf modul seite ansetzen.

Es geht um ein Modul was ich nach und nach weiter entwickle. Parallel dazu die User es bei sich testen und auch berichten.
Faden im Forum und Projekt auf Github.

Zitat von: justme1968 am 16 Februar 2020, 13:50:45
wie oben geschrieben: mit einem passenden fhemweb widget und etwas javascript kann man daten live aktualisieren. so wie es die als beispiel genannten module und noch einige weitere auch tun.
Ohne Refresh wäre ein denkbares Ziel wenn ich somit den Refresh "elliminieren" könnte.
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

HomeAuto_User

@justme1968

Hallo, ich habe nun mir mal das Beispielmodul 72_FB_CALLLIST.pm angesehen.
Das wird ja via Longpoll aktualisiert, sehe ich das richtig?

Wenn ja habe ich noch nicht die Stelle gefunden was dies veranlasst.
Meine Darsttellung habe ich mal Testweise umgestellt aber ich muss immer noch manuell einen Reload durchführen bis ich die Änderungen sehen.

Kannst du bzw. Ihr mir da enen Tip geben was dies veranlasst?

LG
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

justme1968

die daten werden in 72_FB_CALLLIST.pm mit FW_directNotify ans frontend geschickt und dort in fhemweb_fbcalllist.js mit FW_processCallListUpdate entgegengenommen und ausgewertet.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

HomeAuto_User

Vielen Dank für den Hinweis @justme1968

Ich vermute, das Beispiel ist schon etwas kompakter und so fällt es mir schwer sich in den Code zu denken.
Das Prinzip ist doch analog der Wiki, oder?

Ich möchte gern einfach anfangen.

Mir schwebte vor eine Tabelle wie

table>
  <tr>
    <th>Berlin</th>
    <th>Hamburg</th>
    <th>München</th>
  </tr>
  <tr>
    <td>Miljöh</td>
    <td>Kiez</td>
    <td>Bierdampf</td>
   </tr>
   <tr>
     <td>Buletten</td>
     <td>Frikadellen</td>
     <td>Fleischpflanzerl</td>
   </tr>
</table>


erstmals zu modifizieren um die Zusammenhänge besser zu verstehen.
Wichtig hierbei ist ja auch die Kennung der Tabelle.

Wie erreiche ich aber, das die Javascript Funktion aktiv wird? Ich testete es wie im Wiki mit einem alert('') aber erhielt keine Ansicht.
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet