NEWS
UNSOLVED [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit
-
Hallo,
villeicht kann mir jemand kurz auf die Sprünge helfen. Ich möchte, daß nach einer bestimmten Zeit Inaktivität meine Vis-Anzeige wieder auf den Hauptview wechselt. Dazu habe ich diesen Beitrag gefunden: https://forum.iobroker.net/topic/2175/gelöst-zurück-zum-homeview/14
Irgendwie blicke ich auf Grund der neuen Formatierung aber nicht mehr durch, wer was zitiert und sehe nicht, was nun zu tun ist.Ich denke, daß ich ein widget auf jede einzelne view packen muß, welches eine Toucheingabe registriert.
Dann muß ich noch ein skript laufen lassen, welches das auswertet bzw. zur Hauptview zurückschaltet. Welches Skript ist das und wo passe ich es an?
Welches die "Hauptview" ist lege ich doch mit default fest, oder?
![Bild Text]( Bild Link)Danke und Grüße Andreas
-
Hallo, hilft zwar nicht direkt bei deinem Problem aber vielleicht trotzdem interessant.
Ich habe mein VIS anders aufgebaut... da ich immer Probleme hatte, das das Menü zuverlässig auf allen Seiten angezeigt wurde...
Ich habe eine einzelne "Hauptseite" mit Menüs und allen statischen Elementen und wechsel die Inhalte mit einem View-in-Widget-Widget... da die Anzeige dort über einen Datenpunkt gesteuert wird, kann ich dort ganz einfach auswerten, wann der Wert zuletzt geändert wurde und setze ihn nach 2 Minuten Inaktivität wieder auf den Wert für meine Standardansicht zurück...
-
-
Hallo Andreas,
wie man auf Inaktivität prüft kann ich Dir nicht sagen. Ich schalte meine Views immer nach einer bestimmten Zeit zurück.
Dazu nutze ich folgendes Script:on( {id: "vis.0.control.data"} , function (obj){ // Nach 60 Sekunden, zeige wieder index View setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "index"}'); }, 300000); });
Zur Erklärung:
Ich prüfe mit den "on" Befehl ob sich die Variable vis.0.control.data geändert hat. Dort wird gespeichert welcher View gerade angezeigt wird.
Nach 60 Sekunden wird dann mit dem setState Befehl die Variable vis.0.control.command neu gesetzt. Dabei bezieht sich die "instance" mit FFFFFF auf alle Instanzen/Geräte auf denen eine Visualisierung läuft. Der Befehl "command" mit "changeView" ist denke ich klar. Mit "data" wird dann der anzuzeigende View genannt. Bei mir "index" Bei Dir "Flur_Hauptseite".Grüße,
Balu -
@Balu1973
Danke schön. Das werde ich mal probieren. Ich muß mir erst nochmal anschauen, wad das mit den Instanzen, hier den FFFFFF auf sich hat. So ganz ist mir das noch nicht klar. Wo stellt man eigentlich die 60 Sekunden ein? Ich würde die Zeit gern höher setzen.
Sorry für die doofen Fragen. Ich bin Skript-Analphabet.
Grüße Andreas -
@weimaraner sagte in [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit:
@Balu1973
Danke schön. Das werde ich mal probieren. Ich muß mir erst nochmal anschauen, wad das mit den Instanzen, hier den FFFFFF auf sich hat.....Wenn du mit einem Gerät eine Vis-View betrachtest hat dieses Gerät im Normalfall eine "vis-Instanz" die du abfragen, auswerten oder was auch immer könntest. Wenn du das FFFFFF nutzt wechseln alle Instanzen auf denen Vis läuft zurück auf die eingestellte Seite.
Die Zeit änderst du in dem Codeschnipsel wenn du die 300000 änderst da die Zeit hier in Millisekunden angegeben wird.
-
Da war mir eine Minute wohl auch zu kurz. 300000ms sind ja 5 Minuten und nicht 60s. Da hab ich meinen Kommentar offenbar nicht angepasst.
Grüße,
Balu -
@Balu1973
Alles klar. ich konnte mir denken, daß die 300000 was damit zu tun haben, konnte mir aber die "Umrechnung" in 60 Sekunden nicht erschließen.
Danke dir.
Grüße Andreas -
@Balu1973 sagte in [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit:
Da war mir eine Minute wohl auch zu kurz. 300000ms sind ja 5 Minuten und nicht 60s. Da hab ich meinen Kommentar offenbar nicht angepasst.
Hallo Balu!
Danke für dein Script.
Ich hab es für mich angepasst, aber er schaltet mal nach 15s, mal nach 7s, 1m, usw. ganz willkürlich zurück.Eingestellt hätte ich 300000ms, also 5 Minuten.
An was könnte das liegen?
on( {id: "vis.0.control.data"} , function (obj){ // Nach 5 Minuten, zeige wieder index View setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "001_Home"}'); }, 300000); });
Ich habe gerade bemerkt, dass sich vis.0.control.data auch dann ändert und einen neuen Wert schreibt, wenn die View auch schon auf 001_Home steht.
Kann man das im VIS-Editor auch irgendwo einstellen?
-
@Negalein said in [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit:
000
ungetestet, aber setze doch beim Trigger die Bedingung das der Wert nicht dem alten entspricht.
Gruß
Christianvar timeout; on( {id: "vis.0.control.data", change: "ne"} , function (obj){ // Nach 5 Minuten, zeige wieder index View (function () {if (timeout) {clearTimeout(timeout); timeout = null;}})(); timeout = setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "001_Home"}'); }, 300000); });
-
@stimezo sagte in [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit:
ungetestet, aber setze doch beim Trigger die Bedingung das der Wert nicht dem alten entspricht.
Danke, funktioniert!
Hab es mehrmals getestet. Schaltet jetzt brav nach 5 Minuten zurück! -
@stimezo sagte in [Frage] Skript zum Wechsel auf Hauptview nach bestimmter Zeit:
ungetestet, aber setze doch beim Trigger die Bedingung das der Wert nicht dem alten entspricht.
Gruß
ChristianHabe es jetzt auch drin und funktioniert 1A, vielen Dank
-
ich hab dieses Script einfach bei der Home view in Scripte eingefügt
function checkHome() {
if (vis.actualView !== 'Start') {
if (window.____timeout) clearTimeout(window.____timeout);
window.____timeout = setTimeout(function () {
window.____timeout = null;
vis.changeView('Home');
}, 60000);
}
}
if (!vis.editMode && !window.___installed) {
window.___installed = true;
$(document).on('click touchstart',checkHome);
checkHome(); // start timer
} -
@Andre-R
Erfüllt das dann den gleichen Zweck wie das skript von @stimezo und ist nur ein anderer Weg oder ist hier noch eine weitere Funktion drin? Ich bin leider skrip-Analphabet und kann mit dem Code nichts anfangen. Muß ich dann nur in Zeile 6 "Home" durch meinen view-Namen ersetzen?
Danke und Grüße
Andreas -
einmal ein beispiel mit blockly - falls dir das besser liegt - kommt eine whatsapp - wird die vis umgeschaltet - habe ich diese am handy oder in der vis gelesen wird wieder zurückgeschalten
whatsappcheck ist der steuerpunkt für das ganze
-
@liv-in-sky Ah, cool! Blockly ist eher "lesbar" für mich. Danke schön!
-
war der post davor - der mich dazu animiert hat