Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Blockly
  5. HDMI ausgang am Raspberry Pi 5 schalten per exec

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    1.7k

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    703

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.2k

HDMI ausgang am Raspberry Pi 5 schalten per exec

Geplant Angeheftet Gesperrt Verschoben Blockly
10 Beiträge 5 Kommentatoren 311 Aufrufe 6 Beobachtet
  • Ä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.
  • J Offline
    J Offline
    Jannik1808
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich komme gerade leider nicht weiter mein Display, das an dem Raspi angeschlossen ist, auf dem auch iobroker läuft per exec an und abzuschalten. ich benutze die Befehle <WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --on> und <WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off> die in der Konsole am Raspi oder per ssh (putty) auch funktionieren. beim starten des Scripts mit dem exec-Block in iobroker passiert allerdings einfach nichts. Ich habe Blockly dafür genutzt. kann mir hier jemand weiterhelfen?

    Thomas BraunT 1 Antwort Letzte Antwort
    0
    • J Jannik1808

      Hallo zusammen,

      ich komme gerade leider nicht weiter mein Display, das an dem Raspi angeschlossen ist, auf dem auch iobroker läuft per exec an und abzuschalten. ich benutze die Befehle <WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --on> und <WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off> die in der Konsole am Raspi oder per ssh (putty) auch funktionieren. beim starten des Scripts mit dem exec-Block in iobroker passiert allerdings einfach nichts. Ich habe Blockly dafür genutzt. kann mir hier jemand weiterhelfen?

      Thomas BraunT Online
      Thomas BraunT Online
      Thomas Braun
      Most Active
      schrieb am zuletzt editiert von
      #2

      @Jannik1808 sagte:

      auch funktionieren.

      Funktionieren die auch, wenn der user 'iobroker' diese Befehle ausführt?

      Linux-Werkzeugkasten:
      https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
      NodeJS Fixer Skript:
      https://forum.iobroker.net/topic/68035/iob-node-fix-skript
      iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

      J 1 Antwort Letzte Antwort
      0
      • Thomas BraunT Thomas Braun

        @Jannik1808 sagte:

        auch funktionieren.

        Funktionieren die auch, wenn der user 'iobroker' diese Befehle ausführt?

        J Offline
        J Offline
        Jannik1808
        schrieb am zuletzt editiert von
        #3

        @Thomas-Braun ich hatte es schon mal mit dem sudo -u iobroker versucht, da kam allerdings ein Fehler raus. Müsste noch mal morgen abend schauen welcher genau. Es hat aber eher das sudo die Probleme gemacht. Ich hatte auch einfach mal ein sudo vor die oben beschriebenen Befehle in der Konsole gehängt und es kam der selbe Fehler raus. Hat sich also nicht nach einem Berechtigungsproblem angehört (wie gesagt, morgen mehr dazu).

        Grundsätzlich bin ich sonst auch für andere Lösungen offen mein Display zu schalten. Eine schaltbar Steckdose ist jedoch keine Option für mich.

        Gruß
        Jannik

        1 Antwort Letzte Antwort
        0
        • J Offline
          J Offline
          Jannik1808
          schrieb am zuletzt editiert von
          #4

          Also jetzt noch mal mit dem Update: sowohl
          sudo WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off
          als auch
          sudo -u iobroker WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off
          liefern beide den Fehler:
          error: XDG_RUNTIME_DIR is invalid or not set in the environment.
          failed to connect to display
          Wie schon beschrieben, funktioniert es nur ohne das Sudo über SSH oder direkt am Pi, aber nicht über iobroker. Leider bin ich noch blutiger Anfänger was die Befehle am Pi oder auch iobroker betrifft.

          M 1 Antwort Letzte Antwort
          0
          • J Jannik1808

            Also jetzt noch mal mit dem Update: sowohl
            sudo WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off
            als auch
            sudo -u iobroker WAYLAND_DISPLAY="wayland-0" wlr-randr --output HDMI-A-1 --off
            liefern beide den Fehler:
            error: XDG_RUNTIME_DIR is invalid or not set in the environment.
            failed to connect to display
            Wie schon beschrieben, funktioniert es nur ohne das Sudo über SSH oder direkt am Pi, aber nicht über iobroker. Leider bin ich noch blutiger Anfänger was die Befehle am Pi oder auch iobroker betrifft.

            M Online
            M Online
            mrjeschke
            schrieb am zuletzt editiert von
            #5

            @Jannik1808
            In meiner Doku habe ich ein Script gefunden.
            Habe es aber nie gebraucht. Weiß also nicht ob es funktioniert.

            #!/bin/bash
            export XDG_RUNTIME_DIR=/run/user/1000
            WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off
            
            
            1 Antwort Letzte Antwort
            0
            • J Offline
              J Offline
              Jannik1808
              schrieb am zuletzt editiert von
              #6

              @mrjeschke
              Leider das selbe Erfgebnis. In Putty funktioniert es, sobald ich jedoch ein Javascript ausführe über IObroker passiert gar nichts. Hier noch der Code den ich ins Script gepackt habe:

              exec('export XDG_RUNTIME_DIR=/run/user/1000');
              exec('WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off');

              noch zur info: der Javascript Instanz habe ich selbstverständlich "Kommando "setObject" erlauben" und "Kommando "exec" erlauben" aktiviert. Hat noch jemand eine Idee?

              icebearI OliverIOO 2 Antworten Letzte Antwort
              0
              • J Jannik1808

                @mrjeschke
                Leider das selbe Erfgebnis. In Putty funktioniert es, sobald ich jedoch ein Javascript ausführe über IObroker passiert gar nichts. Hier noch der Code den ich ins Script gepackt habe:

                exec('export XDG_RUNTIME_DIR=/run/user/1000');
                exec('WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off');

                noch zur info: der Javascript Instanz habe ich selbstverständlich "Kommando "setObject" erlauben" und "Kommando "exec" erlauben" aktiviert. Hat noch jemand eine Idee?

                icebearI Offline
                icebearI Offline
                icebear
                schrieb am zuletzt editiert von
                #7

                @Jannik1808

                Ich mach das bei mir mit raspi 5 und wayland über den linux-control adapter mit den Befehlen:

                export WAYLAND_DISPLAY=wayland-0; export XDG_RUNTIME_DIR=/run/user/1000; wlopm --on HDMI-A-1
                

                und

                export WAYLAND_DISPLAY=wayland-0; export XDG_RUNTIME_DIR=/run/user/1000; wlopm --off HDMI-A-1
                

                linux_control.png

                und per Typescript mit einem Hue Motion Detector:

                // Konfiguration der Datenpunkte
                const idMotion = "hue.0.Motion_Stairs.presence";
                const idDisplayOn = "linux-control.0.raspi2.Display_On";
                const idDisplayOff = "linux-control.0.raspi2.Display_Off";
                
                // Konfiguration der Zeiten
                const lockDuration = 3 * 60 * 1000;      // 3 Minuten an
                const periodicInterval = 30 * 60 * 1000; // Alle 30 Minuten
                
                // Interne Variablen für die Steuerung
                let isLocked: boolean = false;
                let periodicTimer: any = null;
                let offTimer: any = null;
                
                /**
                 * Hauptfunktion zum Einschalten des Displays
                 * @param reason Grund für das Einschalten (für das Log)
                 */
                function activateDisplay(reason: string) {
                    if (isLocked) return;
                
                    log(`Display wird eingeschaltet (Grund: ${reason})`);
                    isLocked = true;
                    setState(idDisplayOn, true);
                
                    // Falls noch ein alter Off-Timer läuft, löschen
                    if (offTimer) clearTimeout(offTimer);
                
                    // Timer für das Ausschalten nach 3 Minuten
                    offTimer = setTimeout(() => {
                        log("3 Minuten um: Schalte Display AUS.");
                        setState(idDisplayOff, true);
                        isLocked = false;
                        offTimer = null;
                    }, lockDuration);
                
                    // Wichtig: Den periodischen 30-Minuten-Timer neu starten
                    startPeriodicInterval();
                }
                
                /**
                 * Startet oder resettet den 30-Minuten-Timer
                 */
                function startPeriodicInterval() {
                    if (periodicTimer) {
                        clearTimeout(periodicTimer);
                    }
                
                    periodicTimer = setTimeout(() => {
                        activateDisplay("Periodische Aktivierung (30min)");
                    }, periodicInterval);
                }
                
                // Event-Handler: Bewegungsmelder
                on({ id: idMotion, change: "ne", val: true }, (obj) => {
                    if (!isLocked) {
                        activateDisplay("Bewegung erkannt");
                    } else {
                        log("Bewegung ignoriert, da Display bereits aktiv ist.", "debug");
                        // Optional: Auch bei Bewegung während das Display an ist, 
                        // könnte man den Timer resetten, damit die 30min erst danach starten.
                        startPeriodicInterval(); 
                    }
                });
                
                // Initialer Start des periodischen Timers beim Script-Start
                startPeriodicInterval();
                
                log("Display-Steuerung mit Anti-Burn-In (30min Intervall) gestartet.");
                

                Funktioniert bei mir einwandfrei

                1 Antwort Letzte Antwort
                0
                • J Jannik1808

                  @mrjeschke
                  Leider das selbe Erfgebnis. In Putty funktioniert es, sobald ich jedoch ein Javascript ausführe über IObroker passiert gar nichts. Hier noch der Code den ich ins Script gepackt habe:

                  exec('export XDG_RUNTIME_DIR=/run/user/1000');
                  exec('WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off');

                  noch zur info: der Javascript Instanz habe ich selbstverständlich "Kommando "setObject" erlauben" und "Kommando "exec" erlauben" aktiviert. Hat noch jemand eine Idee?

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von OliverIO
                  #8

                  @Jannik1808 sagte:

                  @mrjeschke
                  Leider das selbe Erfgebnis. In Putty funktioniert es, sobald ich jedoch ein Javascript ausführe über IObroker passiert gar nichts. Hier noch der Code den ich ins Script gepackt habe:

                  exec('export XDG_RUNTIME_DIR=/run/user/1000');
                  exec('WAYLAND_DISPLAY=wayland-0 wlr-randr --output HDMI-A-1 --off');

                  noch zur info: der Javascript Instanz habe ich selbstverständlich "Kommando "setObject" erlauben" und "Kommando "exec" erlauben" aktiviert. Hat noch jemand eine Idee?

                  1 zeig bitte mal die komplette Shell Ausgabe (inklusive prompt und deiner Befehlszeile) wenn du das auf der Shell machst, da funktioniert es ja wohl.
                  2) jeder einzelne exec Befehl öffnet eine eigenständige in sich geschlossene Shell, die nach Abschluss auch wieder geschlossen wird.
                  Da du 2x exec hintereinander ausführst, könnte es sein das der erste Export nicht mehr im Environment der 2. Session vorhanden ist. Entweder du verbindest beide Befehle mit && oder du erstellst ein shellscript das du dann aufrufst.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Antwort Letzte Antwort
                  0
                  • J Offline
                    J Offline
                    Jannik1808
                    schrieb am zuletzt editiert von
                    #9

                    @icebear Vielen Dank für diesen sehr hilfreichen Beitrag. Mit etwas Abwandlung hat es funktioniert (die Steuerung mach ich nun über meinen HMIP Bewegungsmelder per Blockly-Skript). Zu meinem Vorgehen:

                    Ich habe mein Raspi als Host festgelegt (nicht Iobroker) und Sudo benutzen aktiviert. anschließend habe ich meine oben genannten Befehle angelegt (mit den von dir vorgeschlagenen bekomme ich den Fehler: ERROR: Output 'HDMI-A-1' does not exist.). Somit funktioniert jetzt endlich alles wie gewünscht :)

                    icebearI 1 Antwort Letzte Antwort
                    0
                    • J Jannik1808

                      @icebear Vielen Dank für diesen sehr hilfreichen Beitrag. Mit etwas Abwandlung hat es funktioniert (die Steuerung mach ich nun über meinen HMIP Bewegungsmelder per Blockly-Skript). Zu meinem Vorgehen:

                      Ich habe mein Raspi als Host festgelegt (nicht Iobroker) und Sudo benutzen aktiviert. anschließend habe ich meine oben genannten Befehle angelegt (mit den von dir vorgeschlagenen bekomme ich den Fehler: ERROR: Output 'HDMI-A-1' does not exist.). Somit funktioniert jetzt endlich alles wie gewünscht :)

                      icebearI Offline
                      icebearI Offline
                      icebear
                      schrieb am zuletzt editiert von
                      #10

                      @Jannik1808 sagte:

                      ERROR: Output 'HDMI-A-1'

                      Freut mich wenn es jetzt funktioniert. Den 'HDMI-A-1' muß man natürlich auf sein System anpaasen, je nachdem an welchem HDMI Port das Display eingesteckt ist, entweder '0' oder '1'.

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      448

                      Online

                      32.9k

                      Benutzer

                      83.0k

                      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