fhemweb.js Umbau

Begonnen von rudolfkoenig, 31 Dezember 2014, 16:45:43

Vorheriges Thema - Nächstes Thema

rudolfkoenig

NotifyFn wird mit $hash aufgerufen, der ein $CHANGED Feld enthaelt mit allen Events (ohne das Wort "state").
deviceEvents liefert ein anderes Feld zurueck, das den Eintrag mit dem Wort "state" enthaelt. deviceEvents wird u.A. in FHEMWEB verwendet.

herrmannj

ich habe den Aufruf noch nicht durchschaut. Ich müsste dann in der notifyFn des Moduls "von Hand" deviceState() aufrufen ? In einem äteren post dazu habe ich gefunden das die enddevice-module das (per attr) akiv unterstützen müssen, hat das noch bestand ?

rudolfkoenig

Attr sagt mir nichts, allerdings funktioniert das nur bei Modulen die readings*Update verwenden.
Wer das noch nicht tut, der soll sein Modul anpassen.

justme1968

#93
es gibt zwei informids die in zusammenhang mit state relevant sind:

- <device> ist für das device icon in der raum übersicht
- <device>-state ist für das state reading in der detail ansicht.

die longpoll nachricht für <device> wird unabhängig von den einträgen in $events immer anhand von STATE erzeugt.
die longpoll nachricht für <device>-state wird ganz normal durch das state: eintrag in CHANGED erzeugt.

für den fall das state keinen : enthält steht in $events:$VAR1 = [
          'test',
          'state: test'
        ];

und werden genau drei longpoll nachrichten erzeugt. für das icon (unabhängig von $events), für state und für den state timestamp.
der eintrag für state ohne präfix erzeugt keine longpoll nachricht und bewirkt auch sonst nichts weiter.

sobald state einen : enthalt taucht in $events etwas auf das beim split dann fälschlicherweise für ein event auf ein reading gehalten wird das es aber gar nicht ist:$VAR1 = [
          'a: on b:off',
          'state: a: on b:off'
        ];

dieses erzeugt dann die falsche longpoll nachricht.

wenn der falsche eintrag vorher schon rausgefiltert wird und gar nicht erst in CHANGEDWITHSTATE landet sollte eigentlich alles gut sein und diverse 'fehlinterpretationen' werden vermieden.

deviceEvents sollte nicht nur state: hinzufügen sondern auch das state reading ohne präfix nicht mehr mit zurück liefern.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Markus Bloch

Ist das eigentlich beim Aufruf von "update" so gedacht?

Events (global only):
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:13.888 Global global RMDIR: /usr/local/FHEM/share/fhem/restoreDir/2015-01-24
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:14.351 Global global UPD FHEM/00_SONOS.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:14.759 Global global UPD FHEM/00_THZ.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:15.017 Global global UPD FHEM/00_ZWDongle.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:15.159 Global global UPD FHEM/01_FHEMWEB.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:15.463 Global global UPD FHEM/10_EnOcean.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:16.060 Global global UPD FHEM/10_ZWave.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:16.271 Global global UPD FHEM/21_SONOSPLAYER.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:16.611 Global global UPD FHEM/33_readingsGroup.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:16.825 Global global UPD FHEM/33_readingsProxy.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:16.972 Global global UPD FHEM/70_ENIGMA2.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:17.292 Global global UPD FHEM/70_ONKYO_AVR.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:17.508 Global global UPD FHEM/70_PHTV.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:17.837 Global global UPD FHEM/70_XBMC.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:18.041 Global global UPD FHEM/98_copy.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:18.148 Global global UPD FHEM/98_logProxy.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:18.336 Global global UPD FHEM/98_structure.pm
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:18.522 Global global UPD docs/commandref.html
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:19.617 Global global UPD docs/commandref_DE.html
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:20.451 Global global
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:20.482 Global global update finished, "shutdown restart" is needed to activate the changes.
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:20.537 Global global
#FHEMWEB:WEB<<$('#saveCheck').css('visibility','hidden')<< 2015-01-28 17:28:25.709 Global global fheminfo server response: ==> ok


Im normalen Event-Monitor sieht alles gut aus. Nur wenn man ein update mit updateInBackground durchführt, habe ich solche Ausgaben. Ist das bei anderen auch so?
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

rudolfkoenig

Dieses Problem habe ich gestern eigentlich gefixt.

justme1968

ich habe für den farbtemperatur slider jetzt auch einen gespiegelten hintergrund eingecheckt der verwendet wird wenn die farbtemperatur in mired statt in kelvin angegeben wird.

ich habe mir erlaubt die ergänzung in deinen styles gleich mit ein zu checken. ich hoffe das war ok.

bevor ich ein eigenes image eingecheckt habe wollte ich das vorhanden image per js spiegeln. das funktioniert aber leider nur bei embeded svg und nicht bei referenzierten.

bei meinen versuchen ist mir aber noch etwas anderes aufgefallen: ich wollte das spiegeln in der activateFn erledigen. das wäre aber nur mit klimmzügen gegangen da der slider die activateFn bei jeder änderung selber aufruft und nicht nur ein mal wenn das element in den dom baum eingefügt ist.

sauberer wäre zum setzen der änderungen nicht die activateFn zu 'missbrauchen' sondern jeweils eine eigene interne funktion anzuspringen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

rudolfkoenig

Habe FW_directNotify mit einem optionalen ersten Parameter "FILTER=room=XXX" erweitert, siehe http://forum.fhem.de/index.php/topic,48736.msg404497.html#msg404497