Tablet Refresh auslösen durch FHEM

Begonnen von Isnogud0815, 20 September 2019, 08:07:38

Vorheriges Thema - Nächstes Thema

Isnogud0815

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

darkness

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ß

Isnogud0815

Hi,

aber genau so herum wollte ich es nicht.

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

Gruß
Isno

Wernieman

Wie soll ein Server über eine http-Verbindung, die von Client zum Server läuft, ein refresh auslösen können?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Thorsten Pferdekaemper

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
FUIP

Isnogud0815

#5
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