Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Bildschirmschoner für Touchscreen

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Bildschirmschoner für Touchscreen

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      PeZi last edited by PeZi

      Hallo zusammen,
      ich möchte Euch meine Umsetzung eines Bildschirmschoners vorstellen.
      Zunächst mal die Ausgangssituation und die Anforderung:
      Ich habe im Wohnzimmer einen großen Touchscreen installiert, der mittels ioBroker und VIS diverse Infos über den Zustand des Hauses liefert und über den auch die Bedienung vieler Geräte erfolgt. Der Touchscreen wird ausschließlich hierfür genutzt. Des weiteren nutzen wir (die Familie) ein iPad sowie diverse weitere Geräte (Android Tablet, PCs) die in ihrer "Zweitfunktion" ebenfalls Zugriff auf die Visualisierung haben.
      Was ich brauche ist also ein Bildschirmschoner ausschließlich für den Touch Screen.
      Alle anderen Endgeräte zeigen die Visualisierung nur kurzfristig während einer gezielten Nutzung, sodass hier kein Bildschirmschoner erforderlich ist.
      Ein "allgemeiner" Bildschirmschoner wie hier...
      link text
      ...beschrieben führt zu Problemen, da dieser auf allen Geräten ausgeführt wird und es daher zu gegenseitigen Beeinflussungen kommt. Zudem ist dafür eine eigene View erforderlich, die bei Aktivierung angezeigt wird. Das hatte ich bisher so gelöst, dass der Home-Screen in eine weitere View (Screensaver) gespiegelt war und ein Skript bei Aufruf dieser Screensaver-View den Touchscreen runtergedimmt hat. Das funktioniert aber wegen der gegenseitigen Beeinflussung der Endgeräte nicht zufriedenstellend.
      Meine Umsetzung besteht aus zwei Skripten.
      Das erste läuft auf den Clients und ist in der Vis im Reiter "Skripte" einzutragen.

      /*
          Bildschirmschoner
      	
      	Anforderung: Bei Nutzung eines bestimmten Endgerätes (in meinem Fall eines fest montierten Touchscreens) sollen Ereignisse am Touchscrteen überwacht werden.
      	Bei "Nichtnutzung" wird nach einer festgelegten Zeit ein Objekt gesetzt. 
      	In Abhängigkeit davon dimmt ein weiteres JS-Script in IOBroker die Helligkeit und den Kontrast des Touchscreen runter bzw. hoch
      */
      var touchInstance ='dc.4283b'; // hier ist die Instanz des Touchscreens einzutragen
      var touchNutzung = '0_userdata.0.Visualisierung.TouchNutzung';	// Dieses Objekt muss in IOBroker angelegt werden
      var zeitBisBildschirmschoner = 90; //Hier ist die Zeit bis zur Aktivierung des Bildschirmschoners in Sekunden einzutragen 
      var debounce;
      
      var bildschirmschonerAktivierung = function() {
      	   vis.setValue('0_userdata.0.Visualisierung.TouchNutzung', false); //Bildschirm dimmen...
      	   vis.changeView('Home'); //...und Home-Seite aufrufen
      
      };
      
      var EventHandling = function() {
      	if (vis.instance == touchInstance) {
      		if (debounce) {
      			return;
      		}	
      		debounce = setTimeout(function () {
      			debounce = null;
      		}, 5000); // 5 Sekunden Debounce-Zeit zur Schonung der Ressourcen
      		vis.setValue('0_userdata.0.Visualisierung.TouchNutzung', true); // Bildschirmschoner deaktivieren
      		if (Aktivzeit) {
      			clearTimeout(Aktivzeit);
      		}
      		Aktivzeit = setTimeout(bildschirmschonerAktivierung, zeitBisBildschirmschoner * 1000); //Bei Touchnutzung Aktivzeit neu starten
      	}
      };
      
      var Aktivzeit = setTimeout(bildschirmschonerAktivierung, zeitBisBildschirmschoner * 1000); //Aktivzeit initialisieren
      
      document.addEventListener('touchmove', EventHandling);
      document.addEventListener('click', EventHandling);
      document.addEventListener('mousemove', EventHandling);
      

      Der Zweite Teil läuft im ioBroker unter Skripte:

      //Helligkeit des Touch-Screens ändern
      function helligkeit(Helligkeit, Kontrast){
          var SSH = require('simple-ssh');
          var ssh = new SSH({
          host: '192.168.xxx.yyy',  //IP-Adresse des Raspis an dem der Touchscreen angeschlossen ist
          user: 'Anmeldename',      //Anmeldename und...
          pass: 'Passwort'          //...Passwort
          });
          ssh.exec('sudo ddcutil setvcp 10 ' + Helligkeit).start();
          ssh.exec('sudo ddcutil setvcp 12 ' + Kontrast).start();
      }
      
      
      on({id: '0_userdata.0.Visualisierung.TouchNutzung', change: 'any'}, function(obj) { //Bei Nutzung/Nichtnutzung des Touchscreens
          var touchStatus = getState("0_userdata.0.Visualisierung.TouchNutzung").val; 
          if (touchStatus == false) { //"false" bei "Nichtnutzung" des Touchscreens
              helligkeit(20,20);
          } else {
              helligkeit(70,70);
          } 
      })
      

      Damit kann ich auf eine eigene Screensaver-View verzichten.
      Zur Funktion:
      Der Touchscreen zeigt normalerweise den runtergedimmten Homescreen.
      Bei Berührung des Touchscreens wird im ersten Programm ein Timer (zeitBisBildschirmschoner) gesetzt, der bei Nutzung des Touchscreens immer wieder nachgetriggert wird. Zudem wird ein Objekt in ioBroker gesetzt (0_userdata.0.Visualisierung.TouchNutzung), welches die Nutzung des Touchscreens an das zweite Programm übergibt. Findet in der "zeitBisBildschirmschoner" keine weitere Bedienung am Touchscreen statt, wird wird das Objekt zurückgesetzt.

      Das zweite Programm reagiert auf Änderungen des Objekts "0_userdata.0.Visualisierung.TouchNutzung" und steuert über die Funktion "helligkeit" Helligkeit und Kontrast des Touchscreens.
      Wenn der Bildschirmschoner aktiviert wird, wird der Touchscreen runtergedimmt und der Homebildschirm aufgerufen.

      Damit sind alle anderen Endgeräte vom Bildschirmschoner unbeeinflusst.

      Abschließend noch ein paar Details zum Dimmen und Schalten des Touchscreens:

      Anleitung Dimmen und Schalten des Touchscreens.pdf

      wendy2702 1 Reply Last reply Reply Quote 0
      • wendy2702
        wendy2702 @PeZi last edited by

        @pezi Danke für deine Beschreibung.

        Welche SW läuft auf dem PI? Bullseye, Bookworm, .....

        Verstehe ich es richtig das der Bildschirmschoner "nur" das abdunkeln des Bildschirms ist?

        P 1 Reply Last reply Reply Quote 0
        • P
          PeZi @wendy2702 last edited by

          @wendy2702
          Auf beiden Pi (IOB-Pi und Anzeige-PI des Touchscreens) läuft Bookworm.
          Und ja, der Bildschirmschoner dimmt nur Helligkeit und Kontrast des Touchscreens und ruft den Home-Screen auf.
          Mein Homescreen zeigt die (für uns) wichtigsten Infos wie Produktion der PV-Anlage, Wetterwarnungen, Wetterverhältnisse, Termine, eine unserer Außenkameras etc. an.
          Der Bildschirm wird dabei nur soweit gedimmt, dass alle Infos noch gut erkennbar sind.

          Ein Problem ist allerdings noch zu lösen:
          Gelegentlich springt der Touchscreen auf eine Vis-Seite, die auf einem der anderen Geräte angezeigt wird.
          Warum das so ist, muss ich noch ergründen...

          wendy2702 1 Reply Last reply Reply Quote 0
          • wendy2702
            wendy2702 @PeZi last edited by

            @pezi sagte in Bildschirmschoner für Touchscreen:

            Ein Problem ist allerdings noch zu lösen:
            Gelegentlich springt der Touchscreen auf eine Vis-Seite, die auf einem der anderen Geräte angezeigt wird.
            Warum das so ist, muss ich noch ergründen...

            Danke für deine Antwort.

            So ein ähnliches Problem habe ich auch. Aktuell scheint es damit gelöst zu sein das ich die Bildschirm Anzeige Frequenz fest auf 60Hz eingestellt habe. Vorher hat der PI immer das verwendet was der Monitor maximal kann (120Hz). Seit dem umstellen habe ich keine Probleme mehr.

            Vielleicht auch einen Versuch wert.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            761
            Online

            32.1k
            Users

            80.6k
            Topics

            1.3m
            Posts

            2
            4
            378
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo