FHEM Forum

FHEM => Frontends => TabletUI => Thema gestartet von: Isnogud0815 am 20 September 2019, 08:07:38

Titel: Tablet Refresh auslösen durch FHEM
Beitrag von: Isnogud0815 am 20 September 2019, 08:07:38
Hallo,


kann ich ferngesteuert ein Refresh der dargestellten FTUI-Seite auf einem Tablet auslösen durch einen FHEM Befehl wie z.B. in einem anderen Thread (https://forum.fhem.de/index.php?topic=32305.0) gefundenen Befehl

trigger WEB JS:location.reload(TRUE)

Gruß
Isno
Titel: Antw:Tablet Refresh auslösen durch FHEM
Beitrag von: darkness am 20 September 2019, 10:27:42
Hey,

wenn auf dem Tablet z.B. Fully Fullscreen Browser läuft, kann ein reload bei Bewegung getriggert werden. Ich nutze auch noch einen Bewegungsmelder in Verbindung mit AMAD (aktiviert das Display, was ein Reload erzeugt).

Gruß
Titel: Antw:Tablet Refresh auslösen durch FHEM
Beitrag von: Isnogud0815 am 20 September 2019, 15:13:01
Hi,

aber genau so herum wollte ich es nicht.

Ich würde gerne vom FHEM Server dies auslösen können

Gruß
Isno
Titel: Antw:Tablet Refresh auslösen durch FHEM
Beitrag von: Wernieman am 20 September 2019, 16:26:56
Wie soll ein Server über eine http-Verbindung, die von Client zum Server läuft, ein refresh auslösen können?
Titel: Antw:Tablet Refresh auslösen durch FHEM
Beitrag von: Thorsten Pferdekaemper am 20 September 2019, 16:33:09
Hi,
es gibt ein reload-Widget: https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/reload
Dein Befehl wäre dann in etwa so etwas wie "setreading RELOAD action 1".

Zitat von: Wernieman am 20 September 2019, 16:26:56
Wie soll ein Server über eine http-Verbindung, die von Client zum Server läuft, ein refresh auslösen können?
So wie auch alles andere in FTUI auf Backend-Änderungen reagiert: Ajax-Longpoll, Websocket oder Polling (Shortpoll).

Gruß,
   Thorsten
Titel: Antw:Tablet Refresh auslösen durch FHEM
Beitrag von: Isnogud0815 am 23 September 2019, 08:24:42
Hallo Thorsten,


ja, das ist genau das, was ich brauche.

habe es aber ein klein wenig modifiziert bei mir, so das es problemlos auf state reagiert

Das dummy sieht folgendemaßen aus:
Internals:
   FUUID      5d885a02-f33f-58b4-949a-b672306602b0ffbd
   NAME       RELOAD
   NR         142
   STATE      off
   TYPE       dummy
   .attraggr:
   .attrminint:
   READINGS:
     2019-09-23 08:18:34   state           off
Attributes:
   room       Control
   webCmd     on:off


Eingebunden folgendermaßen:
div class="row-0" data-type="reload" data-device="RELOAD" data-get="state" data-reload-on="on" data-reset-to="off"></div>

Das widget sieht bei mir nun so aus und funktioniert hier perfekt


/* FTUI Plugin
* Copyright (c) 2015-2018 Mario Stephan <mstephan@shared-files.de>
* Under MIT License (http://www.opensource.org/licenses/mit-license.php)
*/

/* global ftui:true, Modul_widget:true */

"use strict";

var Modul_reload = function () {

    function init_attr(elem) {

        elem.initData('get-on', 'on');
        elem.initData('set-off', 'off');

        // init base attributes
        base.init_attr.call(me, elem);
    }

    function init_ui(elem) {}

    function update(dev, par) {
        me.elements.filterDeviceReading('get', dev, par)
            .each(function (index) {
                var elem = $(this);
                var state = elem.getReading('get').val;
                if (elem.matchingState('get', state) === 'on') {
                    elem.data('set', elem.data('set-off'));
                    elem.transmitCommand();
                    location.reload();
                }
            });
    }


    // public
    // inherit all public members from base class
    var parent = new Modul_widget();
    var base = {
        init_attr: parent.init_attr,
    };
    var me = $.extend(parent, {
        //override or own public members
        widgetname: 'reload',
        init_attr: init_attr,
        init_ui: init_ui,
        update: update,
    });

    return me;
};


Danke nochmals

Gruß
Isno