NEWS
[gelöst] VIS fernsteuern / view automatisch wechseln
-
Hallo,
hat jemand schon mal das Scipt angewendet?
Ich bin erst am Anfang mit ioBroker, hatte mit DashUI ein Scrpit dafür, war einfach mit ScriptGUI zu machen.
-
Guten Abend,
ich hol den alten Fred mal aus dem Keller, weil ich Denke hier passt es am besten.
Das mit der View umschalten per Ereignis klappt ganz Wunderbar.
Jetzt aber die nächste Frage.
Kann ich vor dem Umschalten die aktuelle View auslesen?
Eventuell von mehreren Tablets, die dürften doch sicher eine Eindeutige-ID bekommen haben, oder?
Beste Grüße Andreas
-
da häng ich mich mal dran :geek:
-
Guten Abend Arteck,
ich habs selber heraus gefunden, nur noch nicht hier Erwähnt.
Unter Objekte findest du
vis.0.control.data
und da siehst du das letzte aufgerufene View.
Gruß Andreas
-
Guten Abend Arteck,
ich habs selber heraus gefunden, nur noch nicht hier Erwähnt.
Unter Objekte findest du
vis.0.control.data
und da siehst du das letzte aufgerufene View.
Gruß Andreas `
das letzte pro Gerät ?? oder allgemein ?? habe 3 Tablets bei mir laufen..
-
das gerät steht bei "instance"
FFFF…. bedeutet alle Geräte.
-
das ist immer die letzte View die da steht.
Da gibt es auch noch den Punkt Instanz. Wenn du kein Appl Gedöns hast steht da auch etwas sinnvolles. :mrgreen:
Das könntest du ja bei aktualisierung in Variablen speichern lassen und die letzte View dazu.
So könnte man dann jedes Tablet wieder auf die Ursprungsview zurück schalten.
-
Jain, Bluefox hat für alle Geräte jetzt das '*' spendiert.
Geht schneller
-
Moin Leute,
auch wenn der Beitrag schon etwas älter ist hoffe ich das dies Script bei jemanden läuft der mir was berichten kann.
Das Script läuft bei mir auch, aber:
-
die Instance nimmt er nur von meinem PC, das tablet an der wand hat anscheinend keine ?!
-
Bei aktivierung durch einen Taster ändert sich leider nix bei mir. Nicht mal in den Datenpunkten zeigt er eine Veränderung an.
Kann es sein das in dieser Codezeile ein Fehler ist? Klingt irgendwie nicht sinnvoll:
if (obj.newState.val === true || obj.newState.val === "true") {
-
-
Hallo galferiz,
versuch es einmal mit dieser Startzeile, natürlich auf deinen Klingeltaster gemünzt.
on({id: 'javascript.0.States.Doorbell', change: "any"}, function (obj) {
dann lass die Prüfung auf True raus.
So reicht eine Änderung des Datenpunktes. So läuft das bei mir bestens.
Die Instanz hab ich immer von Android und PC.
Und heute beim Testen sogar mal vom iGedöns :lol:
das war aber auch das erste mal, sonst unbekannt.
Gruß Andreas
-
on({id: 'hm-rpc.0.NEQ1000713.2.PRESS_SHORT', change: "any"}, function (obj) { //setState("vis.0.control.command", '{"instance": "xyz", "command": "changeView", "data": "LCars/wetter"}'); // oder setState("vis.0.control.instance", 'xyz'); setState("vis.0.control.data", 'LCars/wetter'); setState("vis.0.control.command", 'changeView'); // muss immer letzte sein // Nach 10 Sekunden, zeige wieder Start View setTimeout(function () { setState("vis.0.control.command", '{"instance": "xyz", "command": "changeView", "data": "LCars/main"}'); }, 10000); });
xyz - durch instance ersetzt.
Leider geht es nicht.
Man sieht das er kurz arbeitet, aber ohne Output auf dem Tablet.
Merkwürdig.
Wenn ich die View am Tablet wechsel steht aber im Datenpunkt immer Instanze - notdefined, die View wird aber richtig angezeigt.
Eventuell hängt das damit zusammen?!
Die Instance kann man ja im VIs-Editor erzeugen, aber woher weis ich welche der Tabletbrowser nutzt ?
Hier denke ich, könnte mein Fehler liegen.
-
Ok, wer lesen kann ist klar im vorteil.
control Instanz auf "FFFFFFF" geändert, was dank der guten Doku von Rainer super beschrieben ist,
und schon geht es
Danke Andreas
-
Moin,
wollte mich da gerade auch mal reinarbeiten.
Leider steht bei mir unter objekte vis nur vis.0.app und vis.0.command sonst nix.
Unter Zustände habe ich sowas aber nicht unter Objekte.
vis.0.control.data vis.0 vis.0.control.data Home/page2 true web.0
-
HI,
ich das script unter common abgelegt und auch unter vis.o control erscheint der entsprechende Eintrag.
Nur die View wechselt am Tablett bzwe an beiden nicht.
Muss in der VIS App etwas angepasst werden ??
Oder habe ich in dem Script was falsch eingestellt?
Danke
Tobias
! on({id: 'hm-rpc.0.NEQXXX6446.1', change: "any"}, function (obj) {
! //setState("vis.0.control.command", '{"instance": "f3.ff055", "command": "changeView", "data": "main/Kameras"}');
! // oder
! setState("vis.0.control.instance", 'f3.ff055');
! setState("vis.0.control.data", 'main/Kameras');
! setState("vis.0.control.command", 'changeView'); // muss immer letzte sein
! // Nach 10 Sekunden, zeige wieder Start View
! setTimeout(function () {
! setState("vis.0.control.command", '{"instance": "f3.ff055", "command": "changeView", "data": "main/Kameras"}');
! }, 10000);
! }); -
Hallo,
ich hatte das gleiche Problem wie tobih83.
Die View-Einträge im Objekt-tree wechselten sich, nur am Tablett tat sich in der Visu nichts.
Lösung war bei mir, den aktiven Vis-Editor zu schließen, danach wechselte die View auch auf dem Tablett.
Gruß
Frank
-
Guten morgen zusammen,
ich möchte auch, dass bei mir auf dem Tablet nach einem Timeout die bestimmte View angezeigt wird. Ich habe das Script aus dem Post #2 im VIS Editor bei dieser View unter "Scripte" eingefügt, passiert nichts. Gibt es ein Script nur auf Timeout und soll es im VIS Editor eingesetzt werden oder bei Admin unter Scripte?
Vielen Dank im Voraus,
Ole
-
Das Script muss als Script im Javascript Adapter angelegt werden. Nicht im VIS Editor!
-
Hat eigentlich schon jemand eine Lösung für das Problem gefunden,
daß jedes gerät in den zuletzt verwendeten View zurückspringt nachdem die Zeit abgelaufen ist ?
-
Hallo, kann mich mal jemand bei der Hand nehmen?
ich bin absoluter Anfänger und versuche mit dem Script den View zu wechseln. Ich habe das wie folgt gemacht:
on("Doorbell ID '1' pressed", function (obj){ if (Doorbell ID '1' pressed === true || Doorbell ID '1' pressed === "true) { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Test"}'); // oder //setState("vis.0.control.instance", 'FFFFFFFF'); //setState("vis.0.control.data", 'DemoView'); //setState("vis.0.control.command", 'changeView'); // muss immer letzte sein // Nach 10 Sekunden, zeige wieder Start View setTimeout(function () { setState("vis.0.control.command", '{"instance": "FFFFFFFF", "command": "changeView", "data": "Hauptseite"}'); }, 10000); } });
ich geh mal davon aus, dass ich da noch was gewaltig falsch mache.
Das sind die Meldungen:
20:15:44.291 [info] javascript.0 Stop script script.js.common.Skript1
20:15:44.323 [info] javascript.0 Start javascript script.js.common.Skript1
20:15:44.324 [error] javascript.0 script.js.common.Skript1 compile failed: at script.js.common.Skript1:2
javascript.0 2018-12-03 19:15:44.320 error at Object.createScript (vm.js:56:10)
javascript.0 2018-12-03 19:15:44.320 error SyntaxError: Unexpected identifier
javascript.0 2018-12-03 19:15:44.319 error ^^
javascript.0 2018-12-03 19:15:44.318 error if (Doorbell ID '1' pressed === true || Doorbell ID '1' pressed === "true) {
javascript.0 2018-12-03 19:15:44.318 error at script.js.common.Skript1:2
javascript.0 2018-12-03 19:15:44.318 error script.js.common.Skript1 compile failed:
ich such mir schon seit Tagen nen Wolf
-
Ich krame den alten Thread nochmal wieder raus, weil ich gerade nicht weiß wie ich das realisieren soll.
Ich möchte einen Screen Wechsel im VIS haben, sobald es an der Haustür klingelt. Mein Problem ist, das der Datenpunkt für das Klingelsignal IMMER auf True steht. Beim Klingeln ändert sich nur der Zeitstempel
Wie kann ich das im Skript Abfrage technisch mit einbauen, das hier auf den sich ändernden Zeitstempel reagiert wird?
Vielen Dank für Eure Unterstützung
function seitenwechsel(){ setState('vis.0.control.instance', 'FFFFFFFF'); setState('vis.0.control.data', '200_Webcam'); // 200_Webcam steht für den Namen der View die du anzeigen willst wenn was passiert setState('vis.0.control.command', 'changeView'); } // Abfragen des gewünschen Sensors // wenn der Status auf true wechselt wird 200_Webcam angezeigt on("rflink.0.channels.Byron_1.SWITCH_05", function(dp) { if(dp.state.val) seitenwechsel(); });