NEWS
[gelöst] Script für Seitenwechsel funktioniert nur in altem Vis-Adapter
-
Hi Leute,
ich habe heute meinen Vis-Adapter von Version 0.10.15 auf die 0.15.0 "geupdated".
In der alten Version nutzte ich folgendes Script für automatische Seitenwechsel initiert durch Sensoren oder Scripte:
! ````
//Bei aktiver Alarmanlage auf Pin-View umschalten
on("hm-rega.0.3676", function (dp) {/Alarmsystem/
if(dp.state.val){
setState("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Alarmanlage_code"}');
}
else{
setState("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Home"}');
}
});
! //Bei Bewegung auf Kamerabild umschalten
on("hm-rpc.0.NEQxxxxxxxx.1.MOTION", function (dp) {
if(dp.state.val){
setState("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Kamera_Garage"}');
}
});
! on("vis.0.control.data", function (dp){
if(dp.state.val != "Wandtablet/Alarmanlage_code"){
setStateDelayed("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Home"}', 60000);
}});
! ````
Nun nach dem Update funktioniert das nicht mehr und ich bekomme die Meldung dass der View nicht existiert.
Interessanter Weise wird eine falsche URL. im Browser generiert die wie folgt aussieht:
http://ip-meins-rasp:8082/vis/index.htm … ablet/Home
richtig wäre jedoch (was auch in der alten Version funktionierte)
http://ip-meins-rasp:8082/vis/index.htm … ablet#Home
Wenn ich nun den Aufruf im Script bspw. in:
.... setStateDelayed("vis.0.control.command", '{"instance": "*", "command": "changeView", "data": "Home"}', 60000); ...
ändere funktioniert es zwar jedoch wird beim "umschalten" erst einmal knapp 10 Sekunden eine weisse Seite angezeigt und erst dann die gewünschte View.
Nun die Frage, die ich mir stelle: Hat sich durch die Version auch der Befehl zum aufrufen der Wunsch-Seite geändert bzw. muss ich was ergänzen um den weissen Bildschirm nicht zu bekommen oder ist das evtl. noch ein Bug. Laut Github sollte es anscheinend noch passen.
Ich habe nun längere Zeit rum probiert, war aber letzendlich nur durch ein downgrad auf die alte Version erfolgreich.
Ich hoffe jemand von euch hat eine Ahnung und kann mir hier weiterhelfen.
Vielen Dank schonmal
Peoples
-
Hallo,
hatte das Problem auch. Du musst die Parameter jetzt in separate Befehle packen:
http://forum.iobroker.net/viewtopic.php?t=3537#p32914
Gruß
Pix
-
Wiedermal tausend Dank Pix!
-
Jetzt muss ich aber doch nochmal nachhacken, ich habe es jetzt wie beschrieben geändert und das "Umschalten" funktioniert.
Doch wenn ich über ein "setTimeout" nach 30 Sekunden in die Hauptview zurück schalte oder initiiert durch einen Bewegungsmelder habe ich nach wie vor einen weissen Bildschirm für die genannten ca. 10 Sekunden.
Ich habe es wie folgt gemacht:
on("vis.0.control.data", function (dp){ if(dp.state.val != "Wandtablet/Alarmanlage_code"){ // Alt ---- setStateDelayed("vis.0.control.command", '{"instance": "*", "command": "changeView", "data": "Wandtablet/Home"}', 60000); setTimeout(function(){ setState('vis.0.control.instance', 'FFFFFFFF'); setState('vis.0.control.data', 'Home'); setState('vis.0.control.command', 'changeView'); }, 20000); } });
Ich habe gerade die Vermutung dass evtl. mein Raspberry nicht mehr genug Leistung hat für das neue Vis. Kann das sein?
Und gibt es Probleme wenn ich den alten Adapter behalten würde oder läuft da die Kompatibilität irgendwann aus.
-
Ich muss das Thema nochmal aufgreifen, da ich nun erneut das Problem habe dass Iobroker den automatischen Seitenwechsel nicht mehr richtig umsetzt.
Ich hatte auf die Vis Version 0.10.15 "downgeradet" meinen Raspberry stromlos gemacht und erneut das Update 0.15.3 installiert und es lief alles problemlos.
Kurz darauf sah ich dann dass es eine 0.15.4 gibt und habe das Update gleich nachgeschoben und siehe da das gleiche Problem wieder auch nach dem Downgrade auf 0.15.3.
Erst die Version 0.10.15 löst das Problem wieder.
Der Vollständigkeit halber hier nochmal ein Bild mit der fehlermeldung und das aktuelle Script, vielleicht hat sich ja doch irgendwo der Fehlerteufel eingeschlichen.
! ````
//Bei aktiver Alarmanlage auf Pin-View umschalten
on("hm-rega.0.xxxxx", function (dp) {/Alarmsystem/
if(dp.state.val){
// setState("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Alarmanlage_code"}');
setState('vis.0.control.instance', 'FFFFFFFF');
setState('vis.0.control.data', 'Wandtablet/Alarmanlage_code');
setState('vis.0.control.command', 'changeView');
}
else{
// setState("vis.0.control.command", '{"instance": "", "command": "changeView", "data": "Wandtablet/Home"}');
setState('vis.0.control.instance', 'FFFFFFFF');
setState('vis.0.control.data', 'Wandtablet/Home');
setState('vis.0.control.command', 'changeView');
}
});
! //Bei Bewegung auf Kamerabild umschalten
on("hm-rpc.0.NEQxxxxxxxxx.1.MOTION", function (dp) {
if(dp.state.val){
// alt setState("vis.0.control.command", '{"instance": "*", "command": "changeView", "data": "Wandtablet/Kamera_Garage"}');
setState('vis.0.control.instance', 'FFFFFFFF');
setState('vis.0.control.data', 'Wandtablet/Kamera_Garage');
setState('vis.0.control.command', 'changeView');}
});
! on("vis.0.control.data", function (dp){/Data for control vis/
if(dp.state.val != "Wandtablet/Alarmanlage_code"){
// alt setStateDelayed("vis.0.control.command", '{"instance": "*", "command": "changeView", "data": "Wandtablet/Home"}', 60000);
setTimeout(function () {setState('vis.0.control.instance', 'FFFFFFFF'); setState('vis.0.control.data', 'Wandtablet/Home'); setState('vis.0.control.command', 'changeView'); }, 60000); }
});
Wenn jemand eine Idee hat werde ich diese gerne Dankend ausprobieren Peoples
-
Hallo peoples,
ich kann dein Problem nicht rekonstruieren.
Allerdings fällt mir auf, dass du zu Strukturierung deiner Views den Slash ("/") verwendest. Das ist eine unglückliche Wahl, denn der Slash hat im URL ja eine eigene Bedeutung (Order).
Die Struktur ist ja
SERVER_IP:PORT/vis/index.html?PROJEKT#VIEW
Wenn jetzt VIEW auch Slashes enthält, könnte es doch Probleme geben. Nutze stattdessen einen Unterstrich.
Gruß
Pix
-
Hi,
die View heißt nicht "Wandtablet/Home" das "Wandtablet" ist der Projektname und das "Home" ist der Viewname.
Diese habe ich damals aus den Objekten -> vis.0 -> data entnommen und hat auch immer funktioniert (bis jetzt).
Nun habe ich den Projektnamen weggelassen, und nur das "Home" bzw. "Kamera_Garage" verwendet und die Weiterleitung funktioniert, jedoch wird dann eine "weisse Seite" (eine Seite ohne Inhalt) mit der richtigen Browseradresse aufgerufen. Wenn ich dann im Anschluss in die Adresszeile meines Browsers klicke und die dort bereits hinterlegte Adresse durch drücken von Enter bestätige, läd er die gewünscht View, sonst leider nicht.
Es scheint als wäre das Problem dass ich die View auf meinem Tablet (im Fully Browser) darstelle und zeitgleich zum testen eine View am PC in Chrome offen habe jedoch war das beim alten Vis egal. Vieleicht wegen den Instanzen?
Edit
Also es ist tatsächlich so dass der doppelte Browseraufruf der Views anscheinend den automatischen Seitenwechsel beeinflusst. Sobald einer der beiden Browser geschlossen wird besteht das Problem nicht mehr.
Gruß
Peoples