FS20-Dimmer-Statusänderungen werden nicht live angezeigt, nur nach Reload

Begonnen von dadoc, 22 Februar 2016, 13:43:45

Vorheriges Thema - Nächstes Thema

dadoc

Hallo zusammen,
nach der Umstellung auf Apache fluppt es mit dem Icon-Laden und Werte-Aktualisieren, wie an anderer Stelle beschrieben.
Was aber jetzt nicht (mehr?) zu gehen scheint ist, dass sich der Status der FS20-Dimmer im UI aktualisiert, wenn man sie anderweitig (weitere ftui-Instanz, App, WebUI...) beispielsweise ein- oder ausschaltet. Nur wenn man die Seite neu lädt, wird der veränderte Zustand auch in ftui angezeigt.
Bei den anderen Widgets (z.B. Switches -> FS20-Schalter) wird die Statusänderung dagegen in Echtzeit angezeigt.

Die Dimmer sind nach setstates kürzlicher Überarbeitung des Dimmermoduls so angelegt:
<div data-type="dimmer"
data-get-on="on|dim([0-9].*)%"
data-get="state"
data-device="Dimmer_07"
data-value="true"
data-set-value="dim$v%"
data-set-on="dim$v%"
class="FS20">
</div>

Und in fhem so:
define Dimmer_07 FS20 xxxx d6
attr Dimmer_07 IODev CUL_0
attr Dimmer_07 alias Treppe
attr Dimmer_07 fm_type dimbutton,lamp
attr Dimmer_07 fp_oben 126,549,7,
attr Dimmer_07 model fs20di
attr Dimmer_07 room Favourites,Terrassen
attr Dimmer_07 webCmd dim


Das Aktualisieren funktioniert auch dann nicht, wenn ich versuchsweise eine index.html. einzig und allein mit einem Dimmer bestücke.
Hat jemand eine Idee, woran das liegen könnte?
Grüße
Martin

Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

jemu75

Probiere mal das data-get="state" wegzulassen. Ich hatte diesen Effekt bei einem anderen Widget und konnte das Problem so lösen. Soweit ich mich erinnere, greift ftui automatisch das "state" ab, wenn nichts definiert ist.

VG jens

Gesendet von meinem HUAWEI GRA-L09 mit Tapatalk


setstate

Wenn nichts definiert ist, wird STATE abgegriffen, das ist ein kleiner aber feiner Unterschied.
Änderungen bei STATE werden per Longpoll übermittelt, für state nicht. Dafür bekommt man dann nur beim Reload der Seite den aktuellen Wert.

jemu75

Wenn "STATE" und "state" die gleichen Werte beinhalten, wäre das aber eine Lösung - oder?

Gesendet von meinem HUAWEI GRA-L09 mit Tapatalk


dadoc

Wenn "STATE" und "state" die gleichen Werte beinhalten
Wenn man den Dimmer im WebUI bedient, verhalten sich STATE (aus INTERNALS) und state (aus readings) anscheinend synchron, und der on/off-Status wird live an ftui geschickt wenn man dort den Dimmer mit data-get="STATE" definiert (der korrekte Dim-Status in% wird nicht übernommen, da IMO das Dimmer-Widget auch im FS20-Modus reine Zahlenwerte erwartet und nicht Sachen wie dim31%).

Wenn man den Dimmer aber z.B. über ftui einschaltet (auf vorherigen Wert), steht im WebUI: state=dim31% STATE=off;
reload des WebUI: state=dim31% STATE=31%.

D.h. bei solchen Schaltvorgängen wird der STATE-Wert nicht automatisch im UI aktualisiert.
Habt Ihr einen Tipp für einen Workaround, etwa um state und STATE immer synchron zu halten? Bin auf readingsgroup gestoßen, aber das ist mir fürchte ich (noch) zu hoch...
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Zitat von: setstate am 22 Februar 2016, 15:41:52
Änderungen bei STATE werden per Longpoll übermittelt, für state nicht. Dafür bekommt man dann nur beim Reload der Seite den aktuellen Wert.
setstate, ich denke, dass das möglicherweise doch am widget liegt. Wenn man am selben Dimmer data-type statt als "dimmer" als "switch" definiert, dann klappt das mit dem "Live"-Aktualisieren.

FS20-Schalter und FS20-Dimmer verhalten sich auch gleich im oben beschrieben Bereich state / STATE.
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

justme1968

Zitat von: setstate am 22 Februar 2016, 15:41:52
Wenn nichts definiert ist, wird STATE abgegriffen, das ist ein kleiner aber feiner Unterschied.
Änderungen bei STATE werden per Longpoll übermittelt, für state nicht. Dafür bekommt man dann nur beim Reload der Seite den aktuellen Wert.

das ist genau umgekehrt. STATE ist ein internal und erzeugt keine events und wird somit auch nicht per longpoll übermittelt. state ist ein reading und erzeugt events die per longpoll übermittelt werden.

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

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

tomster

Hmm, das könnte GENAU der Grund dafür sein, dass ich manche Werte erst nach einiger Zeit angezeigt bekomme. Akk'rat jetzt hab ich leider keinen Zugriff auf mein FHEM per VPN zum Ausprobieren...

dadoc

Beim Dimmer zumindest tritt das nur auf, wenn man class="FS20" nimmt. Ohne das funktioniert das mit dem Live-Aktualisieren auch bei den FS20-Dimmern (bis auf, wie beschrieben, den Prozentwert). Ich dachte erst, mit data-get="STATE" und data-set="state" sollte es gehen, tut es aber nicht.
Ich traue mich da aber mangels jeglicher JS-Kentnisse nicht dran und wüsste auch nicht, wo ich die state/STATE-Geschichte bearbeiten könnte.

Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

dadoc

Ich habe noch einmal herumprobiert, und jetzt geht das Live-Aktualisieren des on/off-Status mit STATE, was vor ein paar Wochen in meiner Erinnerung noch nicht ging:
<div data-type="dimmer"
data-get-on="on|dim([0-9].*)%"
data-get="STATE"
data-device="Dimmer_07"
data-value="true"
data-set-value="dim$v%"
data-set-on="dim$v%"
class="FS20">
</div>

Wenn STATE z.B. "dim31%" ist, müsste in meinem Verständnis das Aktualisieren des links neben dem Slider angezeigten Wertes auf einen extern eingestellten Dimm-Wert mit
data-get-value="$v"
gehen, also den Wert "31" ohne das Präfix "dim" und das Suffix "%" zur Anzeige liefern. Geht aber nicht. Oder denke ich da falsch?
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

setstate

Das geht nur, wenn man auch einen data-dim angibt. Ansonsten wird der Wert nur lokal gespeichert und dieser benutzt.

data-dim="dim"

dadoc

Geht halt deswegen nicht, weil mit
data-dim="dim"
der aus dem ftui abgeschickte Befehl dann
set FS20Dimmer dim dim31%
heisst statt korrekt
set FS20Dimmer dim31%

Es bringt auch nix, wenn man das "dim" bei data-set-value weg lässt, denn dann ist ein Leerzeichen dazwischen und es geht natürlich auch nicht:
set FS20Dimmer dim 31%
Man müsste $v das beim Zusammensetzen des Befehls vorausgehende Leerzeichen trimmen lassen, aber das geht wohl nicht.
Grüße
Martin
Standort 1: FS20 mit CUL und FHEM auf Raspi. HM-Komponenten (Heizung, Rollladen, Schalter). HM IP über Raspimatic (testweise)
Standort 2: Homematic (Wired) über CCU2 und PocketHome HD
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods

nightstorm99

Hallo dadoc,

genau das gleiche Problem habe ich auch!
:(

Gruß
Denny