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
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ß
Hi,
aber genau so herum wollte ich es nicht.
Ich würde gerne vom FHEM Server dies auslösen können
Gruß
Isno
Wie soll ein Server über eine http-Verbindung, die von Client zum Server läuft, ein refresh auslösen können?
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
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