NEWS
UNSOLVED View bei Nacht umschalten
-
Ich suche für ein kleines Problem eine Lösung.
Ich möchte bei Nacht die View umschalten und dann tagsüber wieder zurück.
Also ab xx Uhr auf den View "uhr" und ab 5 Uhr wieder auf den View "Info"
Dazu habe ich aber auch dieses Script laufen:// ******************************************************************************************************* // // Seitenwechsel-Script // Autor: Peoples // // // Funktionen: 1. Bei Viewwechsel wird geprüft ob eine andere View als Home gewählt ist // wenn das der Fall ist wird ein Timer gesetzt nach dessen Ablauf wieder zurück // auf Home gewechselt wird. // 2. Wenn die Alarmanlage eingeschalten ist wird die PinEingabeView angezeigt. // 3. Bei SystemView läuft kein Timer // // // v2.0.0 - 30.09.2018 Neue Version - Grundaufbau geändert // v2.0.1 - 09.03.2019 Slideshow aller gewünschen Views integriert // v2.0.2 - 23.03.2019 Zusatzfunktion zum steuern der Sonderdatenpunkte eingebaut // v2.0.3 - 28.03.2019 Zahlenwerte durch parseInt konvertiert // ******************************************************************************************************* // ----------------------------------------------------------------------------- // allgemeine Variablen // ----------------------------------------------------------------------------- var logging = true; // Logging on/off var instanz = 'javascript.0'; instanz = instanz + '.'; // // var pfad0 = 'System.Iobroker'; pfad0 = pfad0 + '.'; // Pfad innerhalb der Instanz var timerTout; var timerAutoSV; var DefaultView = 'Info'; // Standard-View // Aus Datenpunkt vis.0.control.data entnehmen // der Teil vor dem Slash ist der Projektname: // "Wandtablet/Home" var project = "Neu"; project = project + '/'; // Name des Vis-Projekts var DisplayTime = '25'; // Darstellungszeit der Views bei Autowechsel var startView = 1; // Startview bei Autowechsel //Alle vorhandenen Views var VisViews = [ /* View Name */ /* Anzeigezeit in Sek. */ /* In Slideshow anzeigen? */ /* ohne Projekt */ /* 0 = kein Auto Wechsel */ /* In Slideshow anzeigen? */ {'view':'Alexa', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Aquarium', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Ausgang', 'SWSec':60, 'ShowIAV':'no'}, {'view':'BadHeiz', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Diagramme', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Heizung', 'SWSec':60, 'ShowIAV':'yes'}, {'view':'JuliaHeiz', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Licht', 'SWSec':60, 'ShowIAV':'yes'}, {'view':'MartinHeiz', 'SWSec':60, 'ShowIAV':'no'}, {'view':'News', 'SWSec':120, 'ShowIAV':'no'}, {'view':'Programm', 'SWSec':120, 'ShowIAV':'yes'}, {'view':'Programm_Tips', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Schlafheiz', 'SWSec':60, 'ShowIAV':'no'}, {'view':'Info', 'SWSec':0, 'ShowIAV':'yes'}, {'view':'System', 'SWSec':60, 'ShowIAV':'yes'}, {'view':'Tuer', 'SWSec':60, 'ShowIAV':'yes'}, {'view':'Uhr', 'SWSec':120, 'ShowIAV':'yes'}, {'view':'Wett', 'SWSec':60, 'ShowIAV':'no'}, {'view':'WohnHeiz', 'SWSec':60, 'ShowIAV':'no'}, ]; // ----------------------------------------------------------------------------- // Objekte // ----------------------------------------------------------------------------- // Objekt für Alle Automatischen Abläufe createState(pfad0 + 'Timer_View_Switch', {def: '0',type: 'number',name: 'Timer für Wechsel auf DefaultView'}); createState(pfad0 + 'Auto_Switch_View', {def: 'false',type: 'boolean',name: 'Alle Views durchlaufen lassen'}); if(logging)log("Total "+Object.keys(VisViews).length+" entries"); // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ // ############################################################################# // # # // # Funktion zum automatischen Viewwechsel nach Timerablauf # // # # // ############################################################################# function switchToHomeView() { timerTout = setTimeout(function () { var timer = parseInt(getState(pfad0 + 'Timer_View_Switch').val, 10); if (timer > 1) { setState(pfad0 + 'Timer_View_Switch',timer - 1); switchToHomeView(); } else{ setState(pfad0 + 'Timer_View_Switch', 0); setState('vis.0.control.instance', 'FFFFFFFF'); //getState("vis.0.control.instance").val/*Control vis*/); setState('vis.0.control.data', project + DefaultView); setState('vis.0.control.command', 'changeView'); } }, 1000); } // ############################################################################# // # # // # Funktion zum automatisch umlaufenden Viewwechsel # // # # // ############################################################################# function autoSwitchView(dspTime,i) { if(i === '') i = 0; log(i); if(i < Object.keys(VisViews).length){ if(VisViews[i].ShowIAV == 'yes'){ timerAutoSV = setTimeout(function () { var timer = parseInt(getState(pfad0 + 'Timer_View_Switch').val, 10); if (timer > 1) { setState(pfad0 + 'Timer_View_Switch', timer - 1); autoSwitchView(dspTime, i); } else{ setState(pfad0 + 'Timer_View_Switch', 0); if(getState(pfad0 + 'Auto_Switch_View').val === true) switchView(project+VisViews[i].view); startAutoSwitchView(dspTime,(i+1)); } }, 1000); } else{ startAutoSwitchView(dspTime,(i+1)); } } else{ startAutoSwitchView(dspTime,startView); } } // ############################################################################# // # # // # Funktion zum Starten und Stoppen des automatischen Viewwechsel # // # # // ############################################################################# function startAutoSwitchView(dspTime,i){ if(getState(pfad0 + 'Auto_Switch_View').val === true){ if(dspTime !== ''){ setState(pfad0 + 'Timer_View_Switch',parseInt(dspTime, 10)); } else{ setState(pfad0 + 'Timer_View_Switch',15); } autoSwitchView(dspTime,i); } else{ if(timerTout) clearTimeout(timerTout); switchView(project + DefaultView); setStateDelayed(pfad0 + 'Timer_View_Switch',0,2000); } } // // Beobachten des View Datenpunktes on({id:"javascript.0.System.Iobroker.Auto_Switch_View", change: "ne"}, function (dp) { startAutoSwitchView(DisplayTime,startView); }); // ############################################################################# // # # // # Funktion zum Scriptbasierten Viewwechsel # // # # // ############################################################################# function switchView(view){ setState('vis.0.control.instance', 'FFFFFFFF'); setState('vis.0.control.data', view); setState('vis.0.control.command', 'changeView'); } // ############################################################################# // # # // # Funktion zum Prüfen der Wunsch View und zum auslesen der Darstellzeit # // # # // ############################################################################# function checkView(wishView){ if(logging) log('View to check:'+wishView); if(getState(pfad0 + 'Auto_Switch_View').val === false ){ for(var i = 0; i < Object.keys(VisViews).length; i++) { if(project+VisViews[i].view == wishView) { if(logging) log('View found in:' + i); if(timerTout) clearTimeout(timerTout); setState(pfad0 + 'Timer_View_Switch', 0); if(VisViews[i].SWSec !== 0){ setState(pfad0 + 'Timer_View_Switch', VisViews[i].SWSec); switchToHomeView(); } } } } } // Beobachten des View Datenpunktes für Auswertung on({id:"vis.0.control.data", change: "ne"}, function (dp) { checkView(dp.state.val); });
Lässt sich das irgendwie in dem Script mit einbauen?
Oder sollte das als eigenes Script laufen und ich nehme den View "Uhr" aus dem anderen Script aus? -
Hallo,
ich empfehle dir, einen Datenpunkt in einem separaten Skript zu erstellen. Den nennst du zB Nachtview (mit true/false).
In dem Skript reagierst du dann auch auf die Änderung des Datenpunktes mit on() und führst mit setState(vis.0.control....) aus.
Der Datenpunkt ist somit auch jederzeit über einen Knopf in VIS oder sonstwie (Szenen, Taster, etc) schaltbar.
In dem Seitenwechsel Skript stellst du dann nur den Datenpunkt um. Ausserdem kannst du noch eine Abfrage in die Funktion switchView() einbauen, die zB bei Nacht keine automatischen Viewwechsel zulässt.
Pix
-
Danke für die schnelle Antwort.
Ich bin zwar noch dabei Bahnhof zu erfassen, aber ich werde al einen Versuch machen.