Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. View bei Nacht umschalten

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    989

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

View bei Nacht umschalten

Geplant Angeheftet Gesperrt Verschoben Ungelöst Skripten / Logik
javascript
3 Beiträge 2 Kommentatoren 397 Aufrufe 4 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ChaotC Offline
    ChaotC Offline
    Chaot
    schrieb am zuletzt editiert von Jey Cee
    #1

    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?

    ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      pix
      schrieb am zuletzt editiert von
      #2

      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

      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

      1 Antwort Letzte Antwort
      0
      • ChaotC Offline
        ChaotC Offline
        Chaot
        schrieb am zuletzt editiert von
        #3

        Danke für die schnelle Antwort.
        Ich bin zwar noch dabei Bahnhof zu erfassen, aber ich werde al einen Versuch machen.

        ioBroker auf NUC unter Proxmox; VIS: 12" Touchscreen und 17" Touch; Lichtsteuerung, Thermometer und Sensoren: Tasmota (39); Ambiente Beleuchtung: WLED (9); Heizung: DECT Thermostate (9) an Fritz 6690; EMS-ESP; 1 Echo V2; 3 Echo DOT; 1 Echo Connect; 2 Echo Show 5; Unifi Ap-Ac Lite.

        1 Antwort Letzte Antwort
        0
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        424

        Online

        32.6k

        Benutzer

        82.3k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe