NEWS
Nach Timeout bestimmte View aufrufen
-
Hallo,
weiß jemand wie ich es hinbekomme, dass nach einer gewissen Zeit (z.B. 5min) eine bestmmte View automatisch aufgerufen wird?
In VIS habe ich rund ein dutzend verschiedene Views (01_Main, 02_Lights, 03_Enegry…). Wenn die letzte Aktion z.B. in der 02_Light View durchgeführt wurde, wird ja diese View so lange angezeigt, bis man über die Navigation eine andere View aufruft. Auf der View 01_Main werden mir aber bestimmte Ereignisse angezeigt, die ich nicht sehe, wenn diese View nicht angezeigt wird. Daher würde ich mir gerne eine Funktion bauen, damit nach 5min Inaktivität die View 01_Main automatisch aufgerufen wird.
Ich habe es schon mit einem Refresh probiert, da ja 01_Main auch die Hauptseite ist - Der Refresh geht, aber VIS bleibt auf der Seite die gerade aktiv ist.
Hat jemand dazu eine Idee?
-
Hallo oberstel,
das gab es hier schon mal: http://forum.iobroker.net/viewtopic.php … 123#p22037
Habe ich auch in Benutzung und läuft sehr gut.
Suchbegriffe für andere, die sowas in der Zukunft suchen: Timer VIS View Home :idea:
Gruß
Pix
EDIT: Mit einem HTML Widget kannst du natürlich auch HTML-Code verwenden. Denke daran, die Viewbezeichnung der Zielview nach der Raute einzufügen (hier #Home):
Hier wird nach 30s die Home-View geladen. Der oben verlinkte Code ist intelligenter und zählt die Zeit ab der letzten Eingabe. -
@pix:Hallo oberstel,
das gab es hier schon mal: http://forum.iobroker.net/viewtopic.php … 123#p22037
Habe ich auch in Benutzung und läuft sehr gut.
Suchbegriffe für andere, die sowas in der Zukunft suchen: Timer VIS View Home :idea:
Gruß
Pix
EDIT: Mit einem HTML Widget kannst du natürlich auch HTML-Code verwenden. Denke daran, die Viewbezeichnung der Zielview nach der Raute einzufügen (hier #Home):
Hier wird nach 30s die Home-View geladen. Der oben verlinkte Code ist intelligenter und zählt die Zeit ab der letzten Eingabe. `Hallo pix!
Also ich probier das jetzt seit gut zwei Stunden hin zu bekommen, aber leider :?
Hab ein HTML Widget auf einem View. dort den HTML Code eingefügt, Pfad angepasst.
Aber es tut sich nichts, egal was ich probiere. :?: :?: :?:
-
Hallo,
hast du den Thread denn ganz gelesen?
http://forum.iobroker.net/viewtopic.php … 123#p22138
Importiere mal diese Widget
[{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1, "refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html": " "},"style":{"left":"721px","top":"59px"},"widgetSet":"basic"}]
auf eine View, die nach 10s weggeschaltet werden kann. Dann ändere im Widget noch DemoView auf den Namen der Zielview (zB Home)
Dann neu laden und dann sollte, nachdem du auf diese View navigiert hast und 10s keine weitere Eingabe auf dieser View machst, der Viewwechsel auf die Zielvie starten.
Pix
-
Hallo,
bei mir läuft ein einfaches Script:
// View wechseln - alle 15 Min. schedule("0,15,30,45 * * * *", function () { var Zeit1 = isTimeInRange('06:05:00', '23:05:00'); if (Zeit1 === true) { setState("vis.0.control.instance", 'FFFFFFFF'); setState("vis.0.control.data", 'Titel'); setState("vis.0.control.command", 'changeView'); log ("View auf 'Titel' gewechselt."); } else { setState("vis.0.control.instance", 'FFFFFFFF'); setState("vis.0.control.data", 'Uhr'); setState("vis.0.control.command", 'changeView'); log ("View auf 'Uhr' gewechselt."); } });
Erklärung:
Nachts soll die View "Uhr" eingeblendet werden.
Tagsüber "Titel"
Und das Script "isTimeInRange" ist das Standard Script aus der iobroker Seite.
Funktioniert seit Jahren korrekt.
mfg
-
@pix:Hallo,
hast du den Thread denn ganz gelesen?
http://forum.iobroker.net/viewtopic.php … 123#p22138
Importiere mal diese Widget
[{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1, "refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"html": " "},"style":{"left":"721px","top":"59px"},"widgetSet":"basic"}]
auf eine View, die nach 10s weggeschaltet werden kann. Dann ändere im Widget noch DemoView auf den Namen der Zielview (zB Home)
Dann neu laden und dann sollte, nachdem du auf diese View navigiert hast und 10s keine weitere Eingabe auf dieser View machst, der Viewwechsel auf die Zielvie starten.
Pix `
Danke funktioniert einwandfrei.
-
Hallo,
bei mir läuft ein einfaches Script:
// View wechseln - alle 15 Min. schedule("0,15,30,45 * * * *", function () { var Zeit1 = isTimeInRange('06:05:00', '23:05:00'); if (Zeit1 === true) { setState("vis.0.control.instance", 'FFFFFFFF'); setState("vis.0.control.data", 'Titel'); setState("vis.0.control.command", 'changeView'); log ("View auf 'Titel' gewechselt."); } else { setState("vis.0.control.instance", 'FFFFFFFF'); setState("vis.0.control.data", 'Uhr'); setState("vis.0.control.command", 'changeView'); log ("View auf 'Uhr' gewechselt."); } });
Erklärung:
Nachts soll die View "Uhr" eingeblendet werden.
Tagsüber "Titel"
Und das Script "isTimeInRange" ist das Standard Script aus der iobroker Seite.
Funktioniert seit Jahren korrekt.
mfg `
Hallo bahnuhr!
Hab dein Script ausprobiert.
Allerdings bekomme ich eine Fehlermeldung mit der ich nichts anfange
11:53:32.438 [info] javascript.0 Stop script script.js.Auto_View_Wechsel
11:53:37.910 [info] javascript.0 Start javascript script.js.Auto_View_Wechsel
11:53:37.911 [info] javascript.0 script.js.Auto_View_Wechsel: registered 0 subscriptions and 1 schedule
12:00:00.947 [error] javascript.0 at Object. (script.js.Auto_View_Wechsel:6:17)
Kannst du mir weiterhelfen.
Danke
-
Hallo,
das Skript von Bahnuhr zeigt, wie man aus JavaScript die View wechseln kann. Allerdings nimmt das Skript keine Rücksicht auf die letzte Eingabe.
Wenn man also um 14h44min45s ans Tablet tritt und etwas macht, schaltet trotzdem 15s später die View um. Das kann unter Umständen nerven.
@PapaChriLo Hast du den Namen „Titel“ auf deinen Zielview Namen geändert?
Pix
-
@pix:Hallo,
@PapaChriLo Hast du den Namen „Titel“ auf deinen Zielview Namen geändert?
Pix `
Ja hab ich.
-
Hast du das Script von der iobroker Seite als global hinterlegt?
function currentDate() { var d = new Date(); return new Date(d.getFullYear(), d.getMonth(), d.getDate()); } function addTime(strTime) { var time = strTime.split(':'); var d = currentDate(); d.setHours(time[0]); d.setMinutes(time[1]); d.setSeconds(time[2]); return d; } function isTimeInRange(strLower, strUpper) { var now = new Date(); var lower = addTime(strLower); var upper = addTime(strUpper); var inRange = false; if (upper > lower) { // opens and closes in same day inRange = (now >= lower && now <= upper) ? true : false; } else { // closes in the following day inRange = (now >= upper && now <= lower) ? false : true; } return inRange; }
mfg
-
Nein hab ich nicht werd's dann später mal ausprobieren.
Danke jedenfalls.
-
Hab die Sache nun seit gestern am laufen.
Habe die Zeit von deinem Beispiel auf eine Minute verlängert.
Allerdings wird nicht berücksichtigt wenn ich im aktuellen View gerade etwas mache,
er wechselt jetzt immer nach einer Minute in das Home View auch wenn ich gerade etwas im aktuellen View mache.
Hab ich da noch was übersehen?
-
Zeig bitte mal dein Script
Pix
-