FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: klausw am 14 März 2017, 19:22:11

Titel: update Mechanismus von FTUI
Beitrag von: klausw am 14 März 2017, 19:22:11
Hallo zusammen

ich versuche in das widget_weekprofile die Update Funktion zu implementieren.

um erstmal bisschen zu spielen um zu verstehen wie das funktioniert habe ich erstmal nur ein Log drin:

    function update (dev,par){
    ftui.log(1,"weekprofile im update: '"+dev+"' | '"+par+"'");
    };


Da kommen zwar Meldungen rein, aber die sind alle von anderen Devices die in der FTUI Umgebung vorhanden sind.
Vermutlich muss ich noch irgendwo registrieren, worauf gelauscht werden soll.

Im Event Monitor taucht bei Änderungen im weekprofile folgendes auf:

2017-03-14 19:10:01 weekprofile wochenprofil PROFILES_SAVED

Wie bekomme ich dazu  function update ausgelöst?

Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 14 März 2017, 23:05:19
www/tablet/js/widget_example.js
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 15 März 2017, 00:17:46
Das habe ich komplett übersehen, danke
Zitat von: setstate am 14 März 2017, 23:05:19
www/tablet/js/widget_example.js

Allerdings wird im weekprofile bei Datenänderung kein Reading erzeugt, sondern nur ein Event:
DoTrigger($me,"PROFILES_SAVED",1)

Dieses bekomme ich nicht mit me.addReading(elem, 'PROFILES_SAVED'); eingefangen.

Auch die JSON Daten der Heizzeiten sind nur als Referenz in den Internals gespeichert:
Internals:
   NAME       wochenprofil
   NR         567
   NTFY_ORDER 50-wochenprofil
   STATE      created
   TYPE       weekprofile
   PROFILES:
     HASH(0x66b10d8)
     HASH(0x6bcb048)
   Readings:
     2017-03-14 19:43:56   profile_count   2
     2017-03-14 13:34:33   state           created
   TOPICS:
     default
Attributes:
   room       Test



gibt es da noch eine Andere Möglichkeit?
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 15 März 2017, 00:23:20
Reagiert der Eventmonitor von FHEM? Es müsste ja nur ein Update eines Readings sein.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 15 März 2017, 00:29:36
Zitat von: setstate am 15 März 2017, 00:23:20
Reagiert der Eventmonitor von FHEM? Es müsste ja nur ein Update eines Readings sein.

Ja da taucht das auf:
2017-03-14 19:10:01 weekprofile wochenprofil PROFILES_SAVED

das ist aber kein Reading. Die beiden Readings ändern sich nicht.

Den Mechanismus hinter DoTrigger() kenne ich nicht
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 15 März 2017, 07:02:09
solche Events kommen grundsätzlich auch im FTUI per longpoll an. Ich müsste mir überlegen, was und wie man umbauen muss, um Widgets Updates auszulösen.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 15 März 2017, 10:03:44
Zitat von: setstate am 15 März 2017, 07:02:09
solche Events kommen grundsätzlich auch im FTUI per longpoll an. Ich müsste mir überlegen, was und wie man umbauen muss, um Widgets Updates auszulösen.
Verstehe, währe super wenn du das hinbekommst.
Kommen die denn beim widget_eventmonitor.js an?
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 18 März 2017, 09:24:40
mit der 2.6.14 kann man jetzt auch auf Trigger Events lauschen

<div data-type="example" data-device="global" data-get="SAVE"></div>

Reaktion in der Update Funktion im eigenen Widget

    function update(dev, par) {
        me.elements.filterDeviceReading('get', dev, par)
            .each(function (index) {
            console.log('triggered');
                ....
            });
Titel: Antw:update Mechanismus von FTUI
Beitrag von: roman1528 am 18 März 2017, 10:28:48
Zitat von: setstate am 18 März 2017, 09:24:40
mit der 2.6.14 kann man jetzt auch auf Trigger Events lauschen

<div data-type="example" data-device="global" data-get="SAVE"></div>

Reaktion in der Update Funktion im eigenen Widget

    function update(dev, par) {
        me.elements.filterDeviceReading('get', dev, par)
            .each(function (index) {
            console.log('triggered');
                ....
            });


widget_link.js

Zeile 259 ist eine geschwungene Klammer zu viel^^

Grüße^^
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 18 März 2017, 10:40:27
danke. ist gefixed
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 20 März 2017, 18:00:38
Ist das so gemeint:

function init() {
me.elements = $('div[data-type="'+me.widgetname+'"]',this.area);
        me.elements.each(function(index) {           
            ...
            elem.initData('updtrig', 'PROFILES_SAVED');
            // subscripe my readings for updating
            me.addReading(elem, 'updtrig');
            ...
        });
    };


    function update (dev,par){
    me.elements.filterDeviceReading('updtrig', dev, par)
            .each(function (index) {
            console.log('weekprofile triggered: ' + $(this));
            });
    };


oder habe ich da einen Denkfehler drin?
Im Log kommt nix an.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 20 März 2017, 18:10:59
Grundsätzlich, ja.
Du mal debug auf 5  setzen und schauen, ob per Longpoll überhaupt was ankommt.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 20 März 2017, 18:46:34
Irgendwas klemmt noch:

Die Verbindung zu wss://meindynvpn.de:8443/fhem?XHR=1&inform=type=status;addglobal=1;filter=WEB,testdummy,testdummy1,,timer,wochenprofil,weekprofil.test.toast,Grundig,GPIO4_DS1820_000802299fdc,SHT21,BMP180,Fritzbox_CM,Anwesend%20STATE%20longpoll%20%20disabled%20PROFILES_SAVED%20undefined%20humidity%20pressure%20countmissed%20state%20playStatus;fmt=JSON&fwcsrf=null wurde unterbrochen, während die Seite geladen wurde.  fhem-tablet-ui.js:893:29
Error while longpoll  fhem-tablet-ui.js:1716:13
restartLongpoll  fhem-tablet-ui.js:1716:13
stopLongpoll  fhem-tablet-ui.js:1716:13
startLongpoll: true  fhem-tablet-ui.js:1716:13
websockets URL=wss://meindynvpn.de:8443/fhem?XHR=1&inform=type=status;addglobal=1;filter=WEB,testdummy,testdummy1,,timer,wochenprofil,weekprofil.test.toast,Grundig,GPIO4_DS1820_000802299fdc,SHT21,BMP180,Fritzbox_CM,Anwesend STATE longpoll  disabled PROFILES_SAVED undefined humidity pressure countmissed state playStatus;fmt=JSON&fwcsrf=null  fhem-tablet-ui.js:1716:13


Aber beispielsweise Buttons werden sofort aktualisiert wenn ich die in fhemweb schalte.

Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 20 März 2017, 19:12:11
,, irritiert mich und das undefined

Das kann ich noch versuchen, zu verhindern
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 20 März 2017, 19:14:33
Hast du einen Vorschlag wie ich raus finden kann woher das kommt?
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 21 März 2017, 16:18:46
Zitat von: setstate am 20 März 2017, 19:12:11
,, irritiert mich und das undefined

Das kann ich noch versuchen, zu verhindern

Das ,, kommt bestimmt davon, das der Button zum öffnen des Weekprofiles kein data-device hat.

<div id="weekprofile_ftui" class="inline small"
data-type="weekprofile"
data-device="wochenprofil"
data-profile="Bad"
data-style="round"
data-theme="light"
data-height="300"
data-width="auto"
data-title="Heizung Bad" >
<div data-type="button" class="small left-narrow-10 readonly"
data-icon="fa-calendar"
data-on-color="green"
data-background-icon=""
data-on-background-color="#505050">
</div>
</div>


Das hat aber sicher nichts mit dem Trigger Event zu tun.
Kann ich dir beim debuggen irgendwie helfen?

Edit:

zwischen longpoll und disabled befinden sich auch 2 leerzeichen
das zerstört eventuell auch die Anfrage
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 21 März 2017, 17:42:06
Funktioniert der Trigger, wenn longpoll_filter auf ".*" steht?
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 21 März 2017, 22:21:17
Zitat von: setstate am 21 März 2017, 17:42:06
Funktioniert der Trigger, wenn longpoll_filter auf ".*" steht?
nein, auch dann kommt nix an
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 21 März 2017, 22:25:31
Mmmm, da bin ich raus ...
Sorry
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 22 März 2017, 09:29:02
Hast du ein komplettes Beispiel mit einem Trigger, das bei dir funktioniert? Dann kann ich schauen ob es ein grundsätzliches Problem bei mir ist.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 22 März 2017, 09:53:55
Nein, ich wüsste nicht, wo ich Trigger benutze.
Ich habe nur das konstruierte Beispiel aus #7, was bei mir funktionierte.
Titel: Antw:update Mechanismus von FTUI
Beitrag von: klausw am 22 März 2017, 14:29:21
ist es Möglich, das du nur globale Trigger abonniert hast?

Ich habe nacheinander Ein Weekprofile gespeichert und "Save Config" augeführt.
Der Trigger vom "Save Config" kommt an. Der vom Weekprofile nicht.

Event Monitor:
2017-03-22 14:23:54 weekprofile weekprofil.test.toast PROFILES_SAVED
2017-03-22 14:24:32 Global global SAVE


FTUI Log:

["#FHEMWEB:WEB_127.0.0.1_59456","$('#saveCheck').css('visibility','hidden')",""]  fhem-tablet-ui.js:1720:13
Array [ "#FHEMWEB:WEB_127.0.0.1_59456", "$('#saveCheck').css('visibility','h...", "" ]  fhem-tablet-ui.js:1720:13
  fhem-tablet-ui.js:1720:13
["global","no definition","<div id=\u0022global\u0022  title=\u0022no definition\u0022 class=\u0022col2\u0022>no definition</div>"]  fhem-tablet-ui.js:1720:13
Array [ "global", "no definition", "<div id="global"  title="no definit..." ]  fhem-tablet-ui.js:1720:13
["global-SAVE","",""]  fhem-tablet-ui.js:1720:13
Array [ "global-SAVE", "", "" ]  fhem-tablet-ui.js:1720:13


longpoll_filter steht auf ".*"
Titel: Antw:update Mechanismus von FTUI
Beitrag von: setstate am 22 März 2017, 14:37:09
Das Abo wird ja über data-device und data-get festgelegt

Also data-device="weekprofil.test.toast" data-get="PROFILES_SAVED"