Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Einen PI3 durch ioBroker herunterfahren?

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    292

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

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

Einen PI3 durch ioBroker herunterfahren?

Scheduled Pinned Locked Moved Praktische Anwendungen (Showcase)
87 Posts 10 Posters 8.2k Views 9 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • mickymM mickym

    @Kusi plex.sh ist ein Shell-Script - das kannst Du Dir auf Deinem NAS mit

    cat /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh
    

    anschauen und da siehst Du dann was gestartet wird. Ggf. kannst das auch hier posten - aber wie gesagt ich bin auch kein JAVA/Linux oder Shell-Script Guru, um das zu verstehen.

    mickymM Offline
    mickymM Offline
    mickym
    Most Active
    wrote on last edited by mickym
    #57

    gelöscht

    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

    1 Reply Last reply
    0
    • K Kusi

      @mickym Bin auch mit den Foren-Funktionen noch nicht so vertraut, aber mit dem Spoiler habe ich wohl die richtige Funktion angewählt...
      Folgendes wird mir auf cat share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh angezeigt:


      #!/bin/sh

      #########################################################################

      Plex Media Server init-script used to control start and stop.

      Maintainer: Plex Build Team

      Credit: Initial work and ongoing feedback by Dane22

      #########################################################################

      Location of QPKG conf file.

      CONF=/etc/config/qpkg.conf

      Name of Plex Media Server install directory.

      QPKG_NAME="PlexMediaServer"

      Grab Plex Media Server install directory, regardless of disk layout.

      QPKG_DIR=$(getcfg -f $CONF $QPKG_NAME Install_path)

      PID_FILE="${QPKG_DIR}/Library/Plex Media Server/plexmediaserver.pid"

      case "$1" in
      start)

      # Is PMS enabled in QTS App Center?
      ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
      if [ "$ENABLED" != "TRUE" ]; then
          echo "$QPKG_NAME is disabled."
          exit 1
      fi
      
      # Is PMS already running?
      if [ -f "$PID_FILE" ]; then
      
        # Pid file was present, but sadly QNAP does a very brutal kill when shutti                                                                                                                  ng down.
        # Verify we only have a stray PID file (no active processes).
        ProcessCount=$(ps -ef | grep plex | wc -l)
        if [ $ProcessCount -gt 1 ]; then
          logMsg="Plex Media Server is currently running or hasn't been shutdown p                                                                                                                  roperly. Please stop it from QNAP AppCenter and start it again."
          echo $logMsg
          /sbin/log_tool -t 2 -a "$logMsg"
          exit 0
        fi
      fi
      
      # Obtain list and count of all installed GPUs.
      if [ -e /sbin/gpuhal_app ]; then
        TEMPFILE=/tmp/PMS.GPU.$$.TMP
        /sbin/gpuhal_app -l > $TEMPFILE
        GPU_COUNT=$(wc -l $TEMPFILE | awk '{print $1}')
      
        # Start with the first GPU we find.
        CURRENT_GPU=1
      
        # False until we find a supported, and properly configured GPU.
        SUPPORTED_GPU=0
      
        # Loop through the list of GPUs, starting with the first, until one first                                                                                                                   found -or- none found.
        while [ $CURRENT_GPU -le $GPU_COUNT ]
        do
      
          # Test this card, get the entire line
          CANDIDATE=$(head -$CURRENT_GPU $TEMPFILE | tail -1)
      
          # Test if NVIDIA card installed
          NVIDIA=$(echo $CANDIDATE | grep NVIDIA | wc -l)
          if [ $NVIDIA -gt 0 ]; then
      
            # Extract GPU_ID from candidate info, and get status.
            GPU_ID=$(echo $CANDIDATE | awk -F: '{print $1}')
            GPU_STATUS=$(/sbin/gpuhal_app -s $GPU_ID)
      
            # Are the GPU Drivers installed?
            if [ $(echo $GPU_STATUS | grep driver_installed=1 | wc -l) -gt 0 ]; th                                                                                                                  en
      
              # Is the GPU in QTS mode?
              if [ $(echo $GPU_STATUS | grep real_status=2 | wc -l) -gt 0 ]; then
      
                # Get the QPKG package name.
                GPU_QPKG=$(echo $GPU_STATUS | sed -e 's/^.*driverqpkg=//' | sed -e                                                                                                                   's/,.*$//')
      
                # Get NVIDIA driver-env.sh information. (where all the variables a                                                                                                                  re)
                GPU_SH=$(/sbin/getcfg $GPU_QPKG Install_Path -f /etc/config/qpkg.c                                                                                                                  onf)/driver-env.sh
      
                # Translate the name to avoid collision and resolve absolute paths                                                                                                                  .
                DRIVER_ROOT="$(grep DRIVER_ROOT= $GPU_SH | awk -F= '{print $2}')"
                DRIVER_ROOT="$(echo $DRIVER_ROOT | sed -e s+\${QPKG_NAME}+$GPU_QPK                                                                                                                  G+)"
      
                GPU_LD_PATH=$(grep LD_LIBRARY_PATH= $GPU_SH | awk '{print $2}' | a                                                                                                                  wk -F= '{print $2}' | sed -e 's/:$LD_LIBRARY_PATH//')
                GPU_LD_PATH="$(echo $GPU_LD_PATH | sed -e s+\${DRIVER_ROOT}+$DRIVE                                                                                                                  R_ROOT+g)"
      
                # We have a viable GPU.
                SUPPORTED_GPU=1
      
              else
      
                # Log at INFO level that card is not in QTS mode an unable to be u                                                                                                                  sed by PMS.
                # User may not want PMS using it and/or user may already have a QS                                                                                                                  V-compatible CPU.
                log_tool -t 0 -a  "NVIDIA GPU detected and the drivers are install                                                                                                                  ed.  Please switch card to 'QTS' mode for PMS to access it."
      
              fi
            else
      
              # GPU detected but no Driver is installed.
              log_tool -t 0 -a "NVIDIA GPU detected but the drivers are not instal                                                                                                                  led.  Please install the NVIDIA drivers to use this card with Plex Media Server.                                                                                                                  "
      
            fi
      
            # Do we have a viable GPU to use?
            if [ $SUPPORTED_GPU -eq 1 ]; then
      
              # Yes, we are done.
              break;
            fi
          fi
      
          # Default to an unsupported GPU, resetting flags along the way.
          SUPPORTED_GPU=0
      
          unset GPU_LD_PATH;  unset GPU_ID;  unset DRIVER_ROOT;
          unset QPKG_SH;      unset DRV_NAME
      
          # Set next candate.
          CURRENT_GPU=$(( $CURRENT_GPU + 1 ))
      
        done
      
        # Remove GPU temp file.
        rm -f $TEMPFILE
      
      fi
      
      # Verify PlexData share exists. Create if not.
      PlexDataDir=""
      [ -e /share/PlexData ] && PlexDataDir="/share/$(readlink /share/PlexData)"
      
      # Add if not found
      if [ "$PlexDataDir" = "" ]; then
      
        # It does not,  Create it
        PlexPkgVolume="$(echo ${QPKG_DIR} | cut -d/ -f 1-3)"
        PlexDataDir="$PlexPkgVolume/PlexData"
      
        addshare "PlexData" "$PlexDataDir"
      
        # Creation error? (should not happen)
        if [ $? -ne 0 ]; then
      
          logMsg="WARNING:  Could not create PlexData share.  Further assistance i                                                                                                                  s available in our Support Forums. Continuing without."
          echo $logMsg ; /sbin/log_tool -t 2 -a "$logMsg"
      
          # We can't use this location
          PlexData=""
        fi
      fi
      
      # If PlexData still valid, use and update link for File Station.
      if [ "$PlexDataDir" != "" ]; then
        rm -f "$PlexDataDir/Plex Media Server"
        ln -s "${QPKG_DIR}/Library/Plex Media Server" "$PlexDataDir/Plex Media Ser                                                                                                                  ver"
      fi
      
      
      logMsg="Starting Plex Media Server..."
      echo $logMsg
      /sbin/log_tool -t 0 -a "$logMsg"
      
      export PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6
      export LC_ALL=en_US.UTF-8
      export LANG=en_US.UTF-8
      export LANGUAGE=en_US.UTF-8
      export PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR="${QPKG_DIR}/Library"
      export TMPDIR="${QPKG_DIR}/Library/tmp"
      export LD_LIBRARY_PATH="${QPKG_DIR}/lib"
      export PLEX_MEDIA_SERVER_DEFAULT_PREFERENCES="HardwareAcceleratedCodecs=true                                                                                                                  &TranscoderCanOnlyRemuxVideo=false"
      
      # Set identification variables
      export PLEX_MEDIA_SERVER_INFO_VENDOR=QNAP
      export PLEX_MEDIA_SERVER_INFO_DEVICE="$(getsysinfo model)"
      export PLEX_MEDIA_SERVER_INFO_MODEL="$(uname -m)"
      export PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="QTS $(getcfg system version)                                                                                                                  .$(getcfg system Number)"
      
      # Append GPU Library path to LD_LIBRARY_PATH
      if [ "$GPU_LD_PATH" != "" ]; then
        export  LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GPU_LD_PATH}
      fi
      
      # Wait a bit, since new firmware seems to cause a race condition.
      sleep 5
      ulimit -s 3000
      cd ${QPKG_DIR}
      ./Plex\ Media\ Server &
      

      ;;

      stop)
      if [ -f "$PID_FILE" ]; then
      logMsg="Stopping Plex Media Server..."
      echo $logMsg
      /sbin/log_tool -t 0 -a "$logMsg"
      kill $(cat "$PID_FILE")
      sleep 5

        # If pid file is a leftover from not shutting down properly, remove it now                                                                                                                  .
        if [ -f "$PID_FILE" ]; then
          rm "$PID_FILE"
        fi
      
      else
        logMsg="Plex Media Server hasn't been enabled or started..."
        echo $logMsg
        /sbin/log_tool -t 0 -a "$logMsg"
        exit 0
      fi
      

      ;;

      restart)
      $0 stop
      sleep 5
      $0 start
      ;;

      *)
      echo "Usage: $0 {start|stop|restart}"
      exit 1
      esac

      exit 0

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      wrote on last edited by mickym
      #58

      @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

      ProcessCount=$(ps -ef | grep plex | wc -l)

      Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

      Gib halt mal:

      systemctl status plex
      

      ein und schau ob das was mit Active: active (running) enthalten ist

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      K 1 Reply Last reply
      0
      • mickymM mickym

        @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

        ProcessCount=$(ps -ef | grep plex | wc -l)

        Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

        Gib halt mal:

        systemctl status plex
        

        ein und schau ob das was mit Active: active (running) enthalten ist

        K Offline
        K Offline
        Kusi
        wrote on last edited by
        #59

        @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

        @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

        ProcessCount=$(ps -ef | grep plex | wc -l)

        Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

        Gib halt mal:

        systemctl status plex
        

        Resultat ist immer

        -sh: systemctl: command not found
        
        mickymM 1 Reply Last reply
        0
        • K Kusi

          @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

          @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

          ProcessCount=$(ps -ef | grep plex | wc -l)

          Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

          Gib halt mal:

          systemctl status plex
          

          Resultat ist immer

          -sh: systemctl: command not found
          
          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          wrote on last edited by
          #60

          @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

          @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

          @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

          ProcessCount=$(ps -ef | grep plex | wc -l)

          Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

          Gib halt mal:

          systemctl status plex
          

          Resultat ist immer

          -sh: systemctl: command not found
          

          Probier mal

          service plex status
          

          Glaub dieser init.d war der Vorgänger

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          K 1 Reply Last reply
          0
          • mickymM mickym

            @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

            @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

            @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

            ProcessCount=$(ps -ef | grep plex | wc -l)

            Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.

            Gib halt mal:

            systemctl status plex
            

            Resultat ist immer

            -sh: systemctl: command not found
            

            Probier mal

            service plex status
            

            Glaub dieser init.d war der Vorgänger

            K Offline
            K Offline
            Kusi
            wrote on last edited by
            #61

            @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

            service plex status
            

            Glaub dieser init.d war der Vorgänger

            Dasselbe Resultat.

            mickymM 1 Reply Last reply
            0
            • K Kusi

              @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

              service plex status
              

              Glaub dieser init.d war der Vorgänger

              Dasselbe Resultat.

              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              wrote on last edited by
              #62

              @Kusi Dann muss man es wohl so machen wie in dem Script.

              Gib mal

              ps -ef | grep plex | wc -l
              

              ein. Da sollte dann bei laufendem System eine Zahl > 1 rauskommen.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              K 1 Reply Last reply
              0
              • mickymM mickym

                @Kusi Dann muss man es wohl so machen wie in dem Script.

                Gib mal

                ps -ef | grep plex | wc -l
                

                ein. Da sollte dann bei laufendem System eine Zahl > 1 rauskommen.

                K Offline
                K Offline
                Kusi
                wrote on last edited by
                #63

                @mickym Wenn Plex läuft, dann kommt eine 2, ansonsten eine 1.

                mickymM 1 Reply Last reply
                0
                • K Kusi

                  @mickym Wenn Plex läuft, dann kommt eine 2, ansonsten eine 1.

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  wrote on last edited by
                  #64

                  @Kusi Genau . so überprüft dass das Script auch.

                  so nun brauchen wir wahrscheinlich Hilfe ;) - aber im Grunde sieht es nun so aus.

                  Du führst vom iobroker aus:

                  exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });
                  

                  Statt 'Datenpunkte.0.Dienststatus' gibst halt einen Datenpunkt ein, den Du unter 0_userdata.0 selbst angelegt hast.

                  Dann sollte im iobroker nach ausführen in dem Datenpunkt 1 oder 2 stehen. ;)

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  mickymM K 2 Replies Last reply
                  0
                  • mickymM mickym

                    @Kusi Genau . so überprüft dass das Script auch.

                    so nun brauchen wir wahrscheinlich Hilfe ;) - aber im Grunde sieht es nun so aus.

                    Du führst vom iobroker aus:

                    exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });
                    

                    Statt 'Datenpunkte.0.Dienststatus' gibst halt einen Datenpunkt ein, den Du unter 0_userdata.0 selbst angelegt hast.

                    Dann sollte im iobroker nach ausführen in dem Datenpunkt 1 oder 2 stehen. ;)

                    mickymM Offline
                    mickymM Offline
                    mickym
                    Most Active
                    wrote on last edited by mickym
                    #65

                    Statt in einen Datenpunkt was zu schreiben - kannst stdout natürlich auch direkt auf 1 oder 2 überprüfen und irgendwas programmieren. ;) - zum Beispiel einen Eintrag in das iobroker-Log schreiben oder was Du willst. ;)

                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                    1 Reply Last reply
                    0
                    • mickymM mickym

                      @Kusi Genau . so überprüft dass das Script auch.

                      so nun brauchen wir wahrscheinlich Hilfe ;) - aber im Grunde sieht es nun so aus.

                      Du führst vom iobroker aus:

                      exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });
                      

                      Statt 'Datenpunkte.0.Dienststatus' gibst halt einen Datenpunkt ein, den Du unter 0_userdata.0 selbst angelegt hast.

                      Dann sollte im iobroker nach ausführen in dem Datenpunkt 1 oder 2 stehen. ;)

                      K Offline
                      K Offline
                      Kusi
                      wrote on last edited by Kusi
                      #66

                      @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                      exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });

                      Hier fehlen doch noch ein paar Gänsefüsschen?
                      Ich habe diese eingefügt, ein Fehler wird nicht angezeigt, aber der Datenpunkt wird nicht gefüllt.

                      exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l', function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); }");
                      

                      Wozu ist denn die function mit error, stdout und stderr?

                      mickymM 1 Reply Last reply
                      0
                      • K Kusi

                        @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                        exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });

                        Hier fehlen doch noch ein paar Gänsefüsschen?
                        Ich habe diese eingefügt, ein Fehler wird nicht angezeigt, aber der Datenpunkt wird nicht gefüllt.

                        exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l', function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); }");
                        

                        Wozu ist denn die function mit error, stdout und stderr?

                        mickymM Offline
                        mickymM Offline
                        mickym
                        Most Active
                        wrote on last edited by mickym
                        #67

                        @Kusi

                        exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
                        

                        Probiere es mal so - unter javascript soll man glaub keine Datenpunkte anlegen - aber egal - geht schon.

                        Ich hab die Gänsefüsschen mal korrigiert.

                        ggf. auch noch so, wenn das oben nicht funktioniert.

                        exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
                        

                        Diese Funktion ist eine sogenannte Callback Funktion, die aufgerufen wird, nachdem der Befehl auf dem Zielsystem ausgeführt wurde. Das Linuxsystem kennt grundsätzlich in jeder Shell 3 Ausgabekanäle.

                        error = meist nur eine Fehlernr. oder 0 wenn alles OK
                        stdout = die Standardausgabe, die Du sonst auf dem Bildschirm siehst - also 1 oder 2 in Deinem Fall
                        stderr = Fehlerkanal mit Fehler in Textform

                        Also liefert unser Befehl, den Du auf der Kommandozeile ausgeführt hast 1 oder 2 und füllt die Variable stdout. Diese wird mit setState dann geschrieben.

                        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                        K 1 Reply Last reply
                        0
                        • mickymM mickym

                          @Kusi

                          exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
                          

                          Probiere es mal so - unter javascript soll man glaub keine Datenpunkte anlegen - aber egal - geht schon.

                          Ich hab die Gänsefüsschen mal korrigiert.

                          ggf. auch noch so, wenn das oben nicht funktioniert.

                          exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
                          

                          Diese Funktion ist eine sogenannte Callback Funktion, die aufgerufen wird, nachdem der Befehl auf dem Zielsystem ausgeführt wurde. Das Linuxsystem kennt grundsätzlich in jeder Shell 3 Ausgabekanäle.

                          error = meist nur eine Fehlernr. oder 0 wenn alles OK
                          stdout = die Standardausgabe, die Du sonst auf dem Bildschirm siehst - also 1 oder 2 in Deinem Fall
                          stderr = Fehlerkanal mit Fehler in Textform

                          Also liefert unser Befehl, den Du auf der Kommandozeile ausgeführt hast 1 oder 2 und füllt die Variable stdout. Diese wird mit setState dann geschrieben.

                          K Offline
                          K Offline
                          Kusi
                          wrote on last edited by
                          #68

                          @mickym Bei beiden Codes erscheint "compile failed".

                          mickymM 1 Reply Last reply
                          0
                          • K Kusi

                            @mickym Bei beiden Codes erscheint "compile failed".

                            mickymM Offline
                            mickymM Offline
                            mickym
                            Most Active
                            wrote on last edited by mickym
                            #69

                            @Kusi

                            exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                            

                            oder so

                            exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                            

                            Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                            K 1 Reply Last reply
                            0
                            • mickymM mickym

                              @Kusi

                              exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                              

                              oder so

                              exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                              
                              K Offline
                              K Offline
                              Kusi
                              wrote on last edited by
                              #70

                              @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                              exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                              

                              Damit funktioniert es einwandfrei.
                              0 = Dienst gestoppt
                              1 = Dienst wird gestartet
                              2 = Dienst läuft

                              mickymM 1 Reply Last reply
                              0
                              • K Kusi

                                @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                                exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
                                

                                Damit funktioniert es einwandfrei.
                                0 = Dienst gestoppt
                                1 = Dienst wird gestartet
                                2 = Dienst läuft

                                mickymM Offline
                                mickymM Offline
                                mickym
                                Most Active
                                wrote on last edited by mickym
                                #71

                                @Kusi Na Glückwunsch - dann habe ich ja meine Schuldigkeit getan. ;)

                                und sorry - wie gesagt ich bin da auch unsicher und taste mich halt heran. ;)

                                Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                K 1 Reply Last reply
                                0
                                • mickymM mickym

                                  @Kusi Na Glückwunsch - dann habe ich ja meine Schuldigkeit getan. ;)

                                  und sorry - wie gesagt ich bin da auch unsicher und taste mich halt heran. ;)

                                  K Offline
                                  K Offline
                                  Kusi
                                  wrote on last edited by Kusi
                                  #72

                                  @mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?

                                  Sehr spannend diese Sache, jetzt müsste man nur noch alle Einzelheiten verstehen.
                                  Danke dir vielmals für deine Hilfe!!! Dürfte ich dich wieder mal anschreiben per PN wenn ich eine Frage habe?

                                  Du hast mir super geholfen, danke vielmals!
                                  Ich würde mich auch daran tasten, wenn ich alles verstehen würde...

                                  Im Log erscheinen jetzt haufenweise Warnmeldungen...


                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at Pipe.<anonymous> (net.js:674:12)
                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.EventEmitter.emit (domain.js:483:12)
                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.emit (events.js:315:20)
                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.<anonymous> (internal/child_process.js:443:11)
                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at maybeClose (internal/child_process.js:1021:16)
                                  javascript.0 2020-09-07 23:40:00.275 warn (6635) at ChildProcess.EventEmitter.emit (domain.js:483:12)
                                  javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.emit (events.js:315:20)
                                  javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.exithandler (child_process.js:294:7)
                                  javascript.0 2020-09-07 23:40:00.274 warn (6635) at script.js.Raspberry_Pi.Plex_starten_stoppen:15:99
                                  javascript.0 2020-09-07 23:40:00.274 warn (6635) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1355:20)
                                  javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn

                                  mickymM 2 Replies Last reply
                                  0
                                  • K Kusi

                                    @mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?

                                    Sehr spannend diese Sache, jetzt müsste man nur noch alle Einzelheiten verstehen.
                                    Danke dir vielmals für deine Hilfe!!! Dürfte ich dich wieder mal anschreiben per PN wenn ich eine Frage habe?

                                    Du hast mir super geholfen, danke vielmals!
                                    Ich würde mich auch daran tasten, wenn ich alles verstehen würde...

                                    Im Log erscheinen jetzt haufenweise Warnmeldungen...


                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at Pipe.<anonymous> (net.js:674:12)
                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.EventEmitter.emit (domain.js:483:12)
                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.emit (events.js:315:20)
                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.<anonymous> (internal/child_process.js:443:11)
                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at maybeClose (internal/child_process.js:1021:16)
                                    javascript.0 2020-09-07 23:40:00.275 warn (6635) at ChildProcess.EventEmitter.emit (domain.js:483:12)
                                    javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.emit (events.js:315:20)
                                    javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.exithandler (child_process.js:294:7)
                                    javascript.0 2020-09-07 23:40:00.274 warn (6635) at script.js.Raspberry_Pi.Plex_starten_stoppen:15:99
                                    javascript.0 2020-09-07 23:40:00.274 warn (6635) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1355:20)
                                    javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn

                                    mickymM Offline
                                    mickymM Offline
                                    mickym
                                    Most Active
                                    wrote on last edited by mickym
                                    #73

                                    @Kusi Klar gerne - Du kannst zwar auch mit PN schreiben - aber ein eigener Thread ist besser - da man im PN System Code - Screenshots etc. nicht so richtig posten kann. Und auch wenn ich mich hier vielleicht dumm anstelle und mich wie gesagt herantaste, da ich kein JAVA Mensch bin sondern meine Logik mit Node-RED mache.

                                    Du kannst ja die Warnmeldungen posten - aber da werde ich wahrscheinlich nicht helfen können.

                                    Na den letzten schon:

                                    javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn
                                    

                                    Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

                                    Bei den anderen Warnungen - wie gesagt müssen hier die Java-Gurus ran. Vielleicht kann @paul53 helfen - der ist hier glaub ich bei Javascript Fragen der Guru.

                                    Vielleicht darf man keine Pipes | nutzen - dann kann man den Befehl ggf. in eine sh- Datei stecken, aber wie gesagt ich kenne mich mit den Warnungen bei javascript nicht aus. Ansonsten nutze auch NodeRED - da ist das einfacher. ;)

                                    Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                    K 1 Reply Last reply
                                    0
                                    • K Kusi

                                      @mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?

                                      Sehr spannend diese Sache, jetzt müsste man nur noch alle Einzelheiten verstehen.
                                      Danke dir vielmals für deine Hilfe!!! Dürfte ich dich wieder mal anschreiben per PN wenn ich eine Frage habe?

                                      Du hast mir super geholfen, danke vielmals!
                                      Ich würde mich auch daran tasten, wenn ich alles verstehen würde...

                                      Im Log erscheinen jetzt haufenweise Warnmeldungen...


                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at Pipe.<anonymous> (net.js:674:12)
                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.EventEmitter.emit (domain.js:483:12)
                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.emit (events.js:315:20)
                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at Socket.<anonymous> (internal/child_process.js:443:11)
                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at maybeClose (internal/child_process.js:1021:16)
                                      javascript.0 2020-09-07 23:40:00.275 warn (6635) at ChildProcess.EventEmitter.emit (domain.js:483:12)
                                      javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.emit (events.js:315:20)
                                      javascript.0 2020-09-07 23:40:00.274 warn (6635) at ChildProcess.exithandler (child_process.js:294:7)
                                      javascript.0 2020-09-07 23:40:00.274 warn (6635) at script.js.Raspberry_Pi.Plex_starten_stoppen:15:99
                                      javascript.0 2020-09-07 23:40:00.274 warn (6635) at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1355:20)
                                      javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn

                                      mickymM Offline
                                      mickymM Offline
                                      mickym
                                      Most Active
                                      wrote on last edited by
                                      #74

                                      @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

                                      mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?

                                      Grundsätzlich ja - aber da gibt es sicher auch Adapter die sowas machen. Ich habe da aber auch noch Probleme und nutze im Moment noch Funktionen von FHEM bei der Analyse von entfernten Linux Systemen

                                      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                      1 Reply Last reply
                                      0
                                      • mickymM mickym

                                        @Kusi Klar gerne - Du kannst zwar auch mit PN schreiben - aber ein eigener Thread ist besser - da man im PN System Code - Screenshots etc. nicht so richtig posten kann. Und auch wenn ich mich hier vielleicht dumm anstelle und mich wie gesagt herantaste, da ich kein JAVA Mensch bin sondern meine Logik mit Node-RED mache.

                                        Du kannst ja die Warnmeldungen posten - aber da werde ich wahrscheinlich nicht helfen können.

                                        Na den letzten schon:

                                        javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn
                                        

                                        Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

                                        Bei den anderen Warnungen - wie gesagt müssen hier die Java-Gurus ran. Vielleicht kann @paul53 helfen - der ist hier glaub ich bei Javascript Fragen der Guru.

                                        Vielleicht darf man keine Pipes | nutzen - dann kann man den Befehl ggf. in eine sh- Datei stecken, aber wie gesagt ich kenne mich mit den Warnungen bei javascript nicht aus. Ansonsten nutze auch NodeRED - da ist das einfacher. ;)

                                        K Offline
                                        K Offline
                                        Kusi
                                        wrote on last edited by
                                        #75

                                        @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                                        Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

                                        Warnmeldungen sind alle weg.

                                        Vielleicht kannst du mir noch bei einer anderen Meldung helfen...
                                        Es hat immer funktioniert und seit ein paar Wochen bekomme ich folgende Info:
                                        (6635) script.js.Test.test_Kopieren: undefined

                                        var Uhrzeit, letzte_aenderung, Test;
                                        
                                        schedule("*/5 * * * *", function () {
                                          if ((function () {var v = getDateObject(getState("deconz.0.Sensors.10.lastupdated").lc); return v.getHours() * 60 + v.getMinutes();})() < (function () {var v = new Date(); return v.getHours() * 60 + v.getMinutes();})() - 300) {
                                            letzte_aenderung = 'Aquara: letzte Änderung war  ' + String(getState("deconz.0.Sensors.10.lastupdated").lc);
                                          }
                                          console.log(letzte_aenderung);
                                        });
                                        

                                        b17daf3e-e117-4f58-b509-80ce16d10ae5-image.png

                                        Hier geht es darum, wenn die letzte Änderung länger als 300 Minuten her ist, dann erscheint ein Debug. Dieser ist aber Undefined, siehe oben.

                                        mickymM 1 Reply Last reply
                                        0
                                        • K Kusi

                                          @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

                                          Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

                                          Warnmeldungen sind alle weg.

                                          Vielleicht kannst du mir noch bei einer anderen Meldung helfen...
                                          Es hat immer funktioniert und seit ein paar Wochen bekomme ich folgende Info:
                                          (6635) script.js.Test.test_Kopieren: undefined

                                          var Uhrzeit, letzte_aenderung, Test;
                                          
                                          schedule("*/5 * * * *", function () {
                                            if ((function () {var v = getDateObject(getState("deconz.0.Sensors.10.lastupdated").lc); return v.getHours() * 60 + v.getMinutes();})() < (function () {var v = new Date(); return v.getHours() * 60 + v.getMinutes();})() - 300) {
                                              letzte_aenderung = 'Aquara: letzte Änderung war  ' + String(getState("deconz.0.Sensors.10.lastupdated").lc);
                                            }
                                            console.log(letzte_aenderung);
                                          });
                                          

                                          b17daf3e-e117-4f58-b509-80ce16d10ae5-image.png

                                          Hier geht es darum, wenn die letzte Änderung länger als 300 Minuten her ist, dann erscheint ein Debug. Dieser ist aber Undefined, siehe oben.

                                          mickymM Offline
                                          mickymM Offline
                                          mickym
                                          Most Active
                                          wrote on last edited by mickym
                                          #76

                                          @Kusi Oh je - Du machst mich ja nun doch noch zum Java Mensch.

                                          Aber ich sag es mal so:

                                          In dem Fall, ist die letzte_aenderung ja NUR dann definiert, wenn die if Funktion WAHR ist, anderenfalls ist die Variable deshalb nicht definiert = undefined. ;)

                                          Insofern würde ich einfach am Anfang die Variable initialisieren!

                                          letzte_aenderung="Keine Änderung seit mehr als 300 Minuten";
                                          

                                          also so:

                                           var Uhrzeit, letzte_aenderung, Test;
                                          letzte_aenderung="Keine Änderung seit mehr als 300 Minuten";
                                           
                                           schedule("*/5 * * * *", function () {
                                           if ((function () {var v = getDateObject(getState("deconz.0.Sensors.10.lastupdated").lc); return v.getHours() * 60 + v.getMinutes();})() < (function () {var v = new Date(); return v.getHours() * 60 + v.getMinutes();})() - 300) {
                                               letzte_aenderung = 'Aquara: letzte Änderung war  ' + String(getState("deconz.0.Sensors.10.lastupdated").lc);
                                           }
                                             console.log(letzte_aenderung);
                                           });
                                          

                                          alternativ kannst natürlich auch einen ELSE Zweig definieren- Ich weiß aber nicht wie das im Blockly heißt - sonst oder anderenfalls.

                                          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                                          K 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          326

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe