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. ioBroker Allgemein
  4. Display via ssh steuern

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.2k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.5k

Display via ssh steuern

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
4 Beiträge 3 Kommentatoren 345 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.
  • G Offline
    G Offline
    garbleflux
    schrieb am zuletzt editiert von garbleflux
    #1

    Hallo in die Runde,

    ich nutze mehrere Raspberrys zur Steuerung individueller Infoboards/TV-Screens, ähnlich dem Projekt MagicMirror. Zur Energieeinsparung möchte ich jedoch nur ein aktives Display haben, wenn sich eine Person im Raum befindet.

    Die Präsenz ermittle ich mit einem Radar-Sensor (funktioniert übrigens phantastisch und sehr schnell) über den ioBroker Tuya - Adapter. Auf die Raspberrys habe ich Zugriff via SSH, ich steuere den Monitor (on/off) über CEC (Consumer Electronics Control).

    Übergeben muss ich zum Ausschalten des TV folgenden Befehl: echo "standby f.f.f.f" | cec-client -s -d 1 (und zum Anschalten 'echo "on f.f.f.f" | cec-client -s -d 1'

    Ich bin leider nicht der begnadete Blockly-Programmierer, vielleicht kann mir dennoch jemand den richtigen "Schubs" geben, wo es gerade hängt.
    Die RPi's haben zur Sicherheit eigene User und Passwörter. Wie kann ich die Befehle zum An- und Ausschalten der Monitore ordnungsgemäß an die kleinen Rechenknechte übertragen bzw. wo müssen die Zugangsdaten hinterlegt werden?

    Anbei mein Blockly-Versuch (habe ich auch hier aus dem Forum zusammengeklickt) .

    Screenshot 2024-08-28 at 21-07-13 javascript - me-nuc.png

    c<xml xmlns="https://developers.google.com/blockly/xml">
      <block type="on_ext" id="RoOer}|h_)FD-PCG;*Pq" x="13" y="38">
        <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
        <field name="CONDITION">ne</field>
        <field name="ACK_CONDITION"></field>
        <value name="OID0">
          <shadow type="field_oid" id="Terd]Gb@K3@$6@vmm^k.">
            <field name="oid">tuya.0.bf6ddf30e3470f76a3domw.1</field>
          </shadow>
        </value>
        <statement name="STATEMENT">
          <block type="controls_if" id="#cbqp!R+iTB16EL_#O[z">
            <value name="IF0">
              <block type="logic_compare" id="wQ6bIybi8v(|Gv;y+kT}">
                <field name="OP">EQ</field>
                <value name="A">
                  <block type="get_value" id="Vii;mGts6OXmT+g$Tm^V">
                    <field name="ATTR">val</field>
                    <field name="OID">tuya.0.bf6ddf30e3470f76a3domw.1</field>
                  </block>
                </value>
                <value name="B">
                  <block type="logic_boolean" id="%3qzkpVva9im+^O,)3-{">
                    <field name="BOOL">TRUE</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="comment" id="F9fYL:ox!)97!BS=in3K">
                <field name="COMMENT">schalte Monitor aus&amp;#10;</field>
                <next>
                  <block type="exec" id="/hP+;?cEzpn]1I9qi*LQ">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                    <field name="WITH_STATEMENT">FALSE</field>
                    <field name="LOG"></field>
                    <value name="COMMAND">
                      <shadow type="text" id="*|V44Z;l8nvL!Kj}|Xt=">
                        <field name="TEXT">ssh 192.168.160.109 echo "standby f.f.f.f" | cec-client -s -d 1</field>
                      </shadow>
                    </value>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </statement>
      </block>
    </xml>ode_text
    
    CodierknechtC BananaJoeB 2 Antworten Letzte Antwort
    0
    • G garbleflux

      Hallo in die Runde,

      ich nutze mehrere Raspberrys zur Steuerung individueller Infoboards/TV-Screens, ähnlich dem Projekt MagicMirror. Zur Energieeinsparung möchte ich jedoch nur ein aktives Display haben, wenn sich eine Person im Raum befindet.

      Die Präsenz ermittle ich mit einem Radar-Sensor (funktioniert übrigens phantastisch und sehr schnell) über den ioBroker Tuya - Adapter. Auf die Raspberrys habe ich Zugriff via SSH, ich steuere den Monitor (on/off) über CEC (Consumer Electronics Control).

      Übergeben muss ich zum Ausschalten des TV folgenden Befehl: echo "standby f.f.f.f" | cec-client -s -d 1 (und zum Anschalten 'echo "on f.f.f.f" | cec-client -s -d 1'

      Ich bin leider nicht der begnadete Blockly-Programmierer, vielleicht kann mir dennoch jemand den richtigen "Schubs" geben, wo es gerade hängt.
      Die RPi's haben zur Sicherheit eigene User und Passwörter. Wie kann ich die Befehle zum An- und Ausschalten der Monitore ordnungsgemäß an die kleinen Rechenknechte übertragen bzw. wo müssen die Zugangsdaten hinterlegt werden?

      Anbei mein Blockly-Versuch (habe ich auch hier aus dem Forum zusammengeklickt) .

      Screenshot 2024-08-28 at 21-07-13 javascript - me-nuc.png

      c<xml xmlns="https://developers.google.com/blockly/xml">
        <block type="on_ext" id="RoOer}|h_)FD-PCG;*Pq" x="13" y="38">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="Terd]Gb@K3@$6@vmm^k.">
              <field name="oid">tuya.0.bf6ddf30e3470f76a3domw.1</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="controls_if" id="#cbqp!R+iTB16EL_#O[z">
              <value name="IF0">
                <block type="logic_compare" id="wQ6bIybi8v(|Gv;y+kT}">
                  <field name="OP">EQ</field>
                  <value name="A">
                    <block type="get_value" id="Vii;mGts6OXmT+g$Tm^V">
                      <field name="ATTR">val</field>
                      <field name="OID">tuya.0.bf6ddf30e3470f76a3domw.1</field>
                    </block>
                  </value>
                  <value name="B">
                    <block type="logic_boolean" id="%3qzkpVva9im+^O,)3-{">
                      <field name="BOOL">TRUE</field>
                    </block>
                  </value>
                </block>
              </value>
              <statement name="DO0">
                <block type="comment" id="F9fYL:ox!)97!BS=in3K">
                  <field name="COMMENT">schalte Monitor aus&amp;#10;</field>
                  <next>
                    <block type="exec" id="/hP+;?cEzpn]1I9qi*LQ">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                      <field name="WITH_STATEMENT">FALSE</field>
                      <field name="LOG"></field>
                      <value name="COMMAND">
                        <shadow type="text" id="*|V44Z;l8nvL!Kj}|Xt=">
                          <field name="TEXT">ssh 192.168.160.109 echo "standby f.f.f.f" | cec-client -s -d 1</field>
                        </shadow>
                      </value>
                    </block>
                  </next>
                </block>
              </statement>
            </block>
          </statement>
        </block>
      </xml>ode_text
      
      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #2

      @garbleflux
      Versuchs mal ohne das ssh 192.168.160.109 vorweg.
      Du willst ja vom ioBroker keine SSH-Verbindung öffnen, sondern lediglich einen Konsolenbefehl absetzen. SSH brauchst Du nur, um vom PC auf den Pi zu kommen. Wenn Du schon dort bist, braucht's kein SSH.

      Übrigens: Wenn Du den Trigger in "ist größer als letztes" änderst, kannst Du Dir das "Falls" sparen.
      Der feuert dann nur beim Wechsel von false auf true.

      Ein bisschen Lesestoff: https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps

      Edit
      Hab' jetzt erst geblickt, dass zentral vom ioBroker die einzelnen Pi's angesprochen werden.
      Dann so wie @BananaJoe es vorschlägt.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      1 Antwort Letzte Antwort
      0
      • G garbleflux

        Hallo in die Runde,

        ich nutze mehrere Raspberrys zur Steuerung individueller Infoboards/TV-Screens, ähnlich dem Projekt MagicMirror. Zur Energieeinsparung möchte ich jedoch nur ein aktives Display haben, wenn sich eine Person im Raum befindet.

        Die Präsenz ermittle ich mit einem Radar-Sensor (funktioniert übrigens phantastisch und sehr schnell) über den ioBroker Tuya - Adapter. Auf die Raspberrys habe ich Zugriff via SSH, ich steuere den Monitor (on/off) über CEC (Consumer Electronics Control).

        Übergeben muss ich zum Ausschalten des TV folgenden Befehl: echo "standby f.f.f.f" | cec-client -s -d 1 (und zum Anschalten 'echo "on f.f.f.f" | cec-client -s -d 1'

        Ich bin leider nicht der begnadete Blockly-Programmierer, vielleicht kann mir dennoch jemand den richtigen "Schubs" geben, wo es gerade hängt.
        Die RPi's haben zur Sicherheit eigene User und Passwörter. Wie kann ich die Befehle zum An- und Ausschalten der Monitore ordnungsgemäß an die kleinen Rechenknechte übertragen bzw. wo müssen die Zugangsdaten hinterlegt werden?

        Anbei mein Blockly-Versuch (habe ich auch hier aus dem Forum zusammengeklickt) .

        Screenshot 2024-08-28 at 21-07-13 javascript - me-nuc.png

        c<xml xmlns="https://developers.google.com/blockly/xml">
          <block type="on_ext" id="RoOer}|h_)FD-PCG;*Pq" x="13" y="38">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="Terd]Gb@K3@$6@vmm^k.">
                <field name="oid">tuya.0.bf6ddf30e3470f76a3domw.1</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="controls_if" id="#cbqp!R+iTB16EL_#O[z">
                <value name="IF0">
                  <block type="logic_compare" id="wQ6bIybi8v(|Gv;y+kT}">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="get_value" id="Vii;mGts6OXmT+g$Tm^V">
                        <field name="ATTR">val</field>
                        <field name="OID">tuya.0.bf6ddf30e3470f76a3domw.1</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="logic_boolean" id="%3qzkpVva9im+^O,)3-{">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="comment" id="F9fYL:ox!)97!BS=in3K">
                    <field name="COMMENT">schalte Monitor aus&amp;#10;</field>
                    <next>
                      <block type="exec" id="/hP+;?cEzpn]1I9qi*LQ">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                        <field name="WITH_STATEMENT">FALSE</field>
                        <field name="LOG"></field>
                        <value name="COMMAND">
                          <shadow type="text" id="*|V44Z;l8nvL!Kj}|Xt=">
                            <field name="TEXT">ssh 192.168.160.109 echo "standby f.f.f.f" | cec-client -s -d 1</field>
                          </shadow>
                        </value>
                      </block>
                    </next>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </xml>ode_text
        
        BananaJoeB Online
        BananaJoeB Online
        BananaJoe
        Most Active
        schrieb am zuletzt editiert von
        #3

        @garbleflux also, der Befehl ssh an sich lässt keine Angabe / Übergabe des Passwortes zu.

        Lösung 1 (vermutlich die schlechtere, aber diese funktioniert) wäre sshpass was du auf dem ioBroker-System nachinstallieren müsstest.

        Dann kannst du per

        sshpass -p 'deinpasswort' ssh benutzername@192.168.160.109 echo ...
        

        Benutzernamen und Passwort übergeben => man schreibt den Benutzernamen einfach mit benutzername@ vor die IP-Adresse (oder Hostnamen).

        Lösung 2 ist das du dem iobroker Benutzer (unter diesem wird ja der Befehl ausgeführt) erlaubst dich ohne Passwort an dem anderem System anzumelden.
        Dazu meldest du dich am besten auf deinem ioBroker-System per SSH an (du brauchst eine Shell / Eingabeaufforderung / Terminal) und wechselst zu Benutzer iobroker:

        sudo -u iobroker /usr/bin/bash
        cd  ~
        

        Der 2. Befehl - dann schon als Benutzer iobroker, wechselt in dess Heimatverzeichnis.
        Mit

        ssh-keygen -t ecdsa
        

        erzeugts du nun einen privaten und öffentlichen SSH-Key für diesen Benutzer. Wenn er nach einem Passwort fragt, einfach nur Enter/Return drücken (also keines vergeben).
        Danach kannst du den öffentlichen Schlüssel auf das Zielsystem kopieren:

        ssh-copy-id benutzername@192.168.160-190
        

        Er fragt nach dem Passwort und kopiert den Schlüssel drüben in das richtige Verzeichnis.
        Danach solltest du dich per

        ssh benutzername@192.168.160.190
        

        an dem anderen System ohne Passwort und sonstige Rückfragen direkt anmelden können.
        In deinem Blockly müsstest du halt noch das benutzername@ ergänzen.

        Lösung 3 wäre ein Skript welches die Befehle ausführt, als Dienst, was du auf deinen Raspi laufen lässt und welches z.B. per MQTT mit dem ioBroker verbindest. Dann könntest du es leicht per Datenpunkte steuern. Hast du gerade nur Bahnhof verstanden, nimm Lösung 1 oder 2

        Tipp: vermutlich weißt du das schon: Den Befehl bei exec im Blockly kannst du auch aus Textbausteinen und Variablen zusammenbauen.

        ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

        G 1 Antwort Letzte Antwort
        0
        • BananaJoeB BananaJoe

          @garbleflux also, der Befehl ssh an sich lässt keine Angabe / Übergabe des Passwortes zu.

          Lösung 1 (vermutlich die schlechtere, aber diese funktioniert) wäre sshpass was du auf dem ioBroker-System nachinstallieren müsstest.

          Dann kannst du per

          sshpass -p 'deinpasswort' ssh benutzername@192.168.160.109 echo ...
          

          Benutzernamen und Passwort übergeben => man schreibt den Benutzernamen einfach mit benutzername@ vor die IP-Adresse (oder Hostnamen).

          Lösung 2 ist das du dem iobroker Benutzer (unter diesem wird ja der Befehl ausgeführt) erlaubst dich ohne Passwort an dem anderem System anzumelden.
          Dazu meldest du dich am besten auf deinem ioBroker-System per SSH an (du brauchst eine Shell / Eingabeaufforderung / Terminal) und wechselst zu Benutzer iobroker:

          sudo -u iobroker /usr/bin/bash
          cd  ~
          

          Der 2. Befehl - dann schon als Benutzer iobroker, wechselt in dess Heimatverzeichnis.
          Mit

          ssh-keygen -t ecdsa
          

          erzeugts du nun einen privaten und öffentlichen SSH-Key für diesen Benutzer. Wenn er nach einem Passwort fragt, einfach nur Enter/Return drücken (also keines vergeben).
          Danach kannst du den öffentlichen Schlüssel auf das Zielsystem kopieren:

          ssh-copy-id benutzername@192.168.160-190
          

          Er fragt nach dem Passwort und kopiert den Schlüssel drüben in das richtige Verzeichnis.
          Danach solltest du dich per

          ssh benutzername@192.168.160.190
          

          an dem anderen System ohne Passwort und sonstige Rückfragen direkt anmelden können.
          In deinem Blockly müsstest du halt noch das benutzername@ ergänzen.

          Lösung 3 wäre ein Skript welches die Befehle ausführt, als Dienst, was du auf deinen Raspi laufen lässt und welches z.B. per MQTT mit dem ioBroker verbindest. Dann könntest du es leicht per Datenpunkte steuern. Hast du gerade nur Bahnhof verstanden, nimm Lösung 1 oder 2

          Tipp: vermutlich weißt du das schon: Den Befehl bei exec im Blockly kannst du auch aus Textbausteinen und Variablen zusammenbauen.

          G Offline
          G Offline
          garbleflux
          schrieb am zuletzt editiert von
          #4

          @bananajoe
          Danke für den ausführlichen Hinweis - werde es so umsetzen und mit sshpass probieren.
          VG Michael

          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
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          511

          Online

          32.5k

          Benutzer

          81.7k

          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