Asynchrone Aktualisierung der Weboberfläche per Javascript

Begonnen von ThorstenH, 10 Februar 2013, 15:04:29

Vorheriges Thema - Nächstes Thema

ThorstenH

Ich wünsche mir, dass die Weboberfläche von fhem nicht jedes mal neu geladen wird, nachdem ich einen Button oder Link betätigt habe.

Idealerweise würde z.B. das "Einschalten" eines Homematic Zwischensteckers per Mausklick dazu führen, dass ohne ein Reload der Seite der Zustand erst nach "wird eingeschaltet" (oder was auch immer) wechselt und nach Bestätigung des Zwischensteckers, dass tatsächlich eingeschaltet wurde, nach "eingeschaltet".

Das würde auch "longpoll" als Workaround wegfallen lassen. Ich würde schon gerne wissen, ob die Haustüre durch meinen Klick wirklich abgeschlossen wurde, ohne nach 2-3 Sekunden die Seite manuell neu zu laden.

Johannes

Wäre mit dem extjs framework, welches hier Link bereits zum einsatz kommt, problemlos möglich... Könnte die Usability der GUI auf jeden Fall deutlich aufwerten.

Tobias

IMHO macht ja longpoll genau DAS. Funktioniert bei mit einwandfrei... Das Frontend aktualisiert sich automatisch ohne das ich eingreifen (reload) machen muss
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

ich bin mir nicht sicher ob longpoll zumindest in der derzeitigen implementierung ohne nebeneffekte ist. wenn ich z.b. mehrere räme und devices in einzelnen tabs aufmache ist es mir bis her mehrfach passiert das der komplette browser hängt und keinerlei verbindung mehr zu fhem auf macht. erst ein neustart des browser hilft. auch die 5sec reconnect meldungen mit ein paar gedenk 10tel sekunden sind nicht ganz optimal.

abängig von der safari version klappt das mit dem unterdrückten refresh auch nur beim klick auf das icon. beim klick auf ein text kommando passiert der refresh unabhängig von longpoll.

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

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

ThorstenH

Zitat von: Tobias schrieb am Mi, 13 Februar 2013 15:34IMHO macht ja longpoll genau DAS. Funktioniert bei mit einwandfrei... Das Frontend aktualisiert sich automatisch ohne das ich eingreifen (reload) machen muss

Es geht um asynchrone Aktualisierung, d.h. weder du *noch* der Browser macht dabei ein reload. Es wird gezielt nur ein Teil der Seite aktualisiert, und zwar sobald es notwendig ist und nicht "nach Ablauf von gefühlten x zehntel Gedenksekunden".

Johannes

So ist es. Allerdings bringt das alles nichts, wenn FHEM keine Callback Funktion, bzw Rückmeldung für alle Setter bietet. Kann sein dass ich mich täusche, aber derzeit bleibt einem garnichts anderes übrig als nach einem "set" ständig ein "get" zu machen um zu schauen, ob die Änderung erfolgreich war.

ThorstenH

Selbst dieses "ständige get" könnte man asynchron gestalten, damit zumindest nicht die ganze Seite neu geladen wird und "verspringt". Man könnte auch im Hintergrund asynchron pollen und dann gezielt einzelne Anzeigen des HTML Dokuments aktualisieren. Ohne Reload der Seite.