Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Einen PI3 durch ioBroker herunterfahren?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Einen PI3 durch ioBroker herunterfahren?

    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      Kusi @mickym last edited by

      @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
      
      mickym 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Kusi last edited by

        @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 1 Reply Last reply Reply Quote 0
        • K
          Kusi @mickym last edited by

          @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

          service plex status
          

          Glaub dieser init.d war der Vorgänger

          Dasselbe Resultat.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @Kusi last edited by

            @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 1 Reply Last reply Reply Quote 0
            • K
              Kusi @mickym last edited by

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

              mickym 1 Reply Last reply Reply Quote 0
              • mickym
                mickym Most Active @Kusi last edited by

                @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. 😉

                mickym K 2 Replies Last reply Reply Quote 0
                • mickym
                  mickym Most Active @mickym last edited by mickym

                  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. 😉

                  1 Reply Last reply Reply Quote 0
                  • K
                    Kusi @mickym last edited by 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?

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Kusi last edited by 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 1 Reply Last reply Reply Quote 0
                      • K
                        Kusi @mickym last edited by

                        @mickym Bei beiden Codes erscheint "compile failed".

                        mickym 1 Reply Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Kusi last edited by 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 1 Reply Last reply Reply Quote 0
                          • K
                            Kusi @mickym last edited by

                            @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

                            mickym 1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @Kusi last edited by 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 1 Reply Last reply Reply Quote 0
                              • K
                                Kusi @mickym last edited by 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

                                mickym 2 Replies Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @Kusi last edited by 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 1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @Kusi last edited by

                                    @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

                                    1 Reply Last reply Reply Quote 0
                                    • K
                                      Kusi @mickym last edited by

                                      @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.

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @Kusi last edited by mickym

                                        @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.

                                        K 1 Reply Last reply Reply Quote 0
                                        • K
                                          Kusi @mickym last edited by Kusi

                                          @mickym Oder den Debug Output nur machen, falls die Variable definiert ist, so wäre es ja auch geplant gewesen... So funktioniert es nämlich einwandfrei. Ich will dies dann später in eine schöne Nachricht einfügen, damit ich sehe wenn ggfs. die Batterie so schwach ist, dass der Sensor gar keine Änderung mehr senden kann.

                                          0655019b-2b44-4357-8c1c-ec42de766649-image.png

                                          Weist du zufällig wie man bei einem Datenpunkt einstellen kann, dass anstelle der Zahl z.B. bei
                                          0 = Dienst ausgeschaltet
                                          1 = Dienst wird gestartet
                                          2 = Dienst eingeschaltet

                                          angezeigt wird? Ich bin der Meinung dies mal irgendwo gelesen zu haben, dass man dies direkt im Datenpunkt ändern kann...
                                          Natürlich könnte ich dies ganz simpel mit einem Blockly machen, aber dann müsste ich die Zahl entweder in eine Variable schreiben, oder ich hätte 2 Datenpunkte.

                                          mickym 2 Replies Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @Kusi last edited by

                                            @Kusi Genau - so geht es natürlich auch. So kann es ja nie vorkommen, dass Du auf eine nicht initialisierte Variable zugreift.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            674
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            87
                                            5047
                                            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