Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Cloud Dienste
    4. PC über Alex/Raspberry Pi/ioBroker herunterfahren und starten

    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

    PC über Alex/Raspberry Pi/ioBroker herunterfahren und starten

    This topic has been deleted. Only users with topic management privileges can see it.
    • Jey Cee
      Jey Cee Developer last edited by

      http://forum.iobroker.net/viewtopic.php?t=1848

      Gesendet von Unterwegs

      1 Reply Last reply Reply Quote 0
      • E
        eXTreMe last edited by

        Ich nutze ein simples Script zum an und ausschalten meines PCs per Wake on lan bzw net rpc Befehl.

        Folgende Pakete müssen auf dem RasPi installiert sein

        apt-get install samba-common

        npm install node-wol

        Im Bios bzw den Netzwerkkarteneinstellungen unter Windows muss Wake on Lan eingeschaltet sein.

        var wol = require('wake_on_lan');         // in den Adaptereinstellungen vom javascript adapter muss bei zusätzliche npm-module "node-wol" eingetragen sein und Erlaube das Kommando "exec" muss aktiviert sein
        var myPC1 = "MAC-Adresse des PCs";         // MAC Adresse deiner Netzwerkkarte
        
        on('javascript.0.Computer.on', function (obj) { // hier deinen erstellten Datenpunkt angeben.
        
        current_state = getState("javascript.0.Computer.on").val;
        
        if (current_state === true)
            {
                wol.wake(myPC1);
                log("Computer: AN", "info");
            }
        else
            {
                exec('net rpc -S 192.168.xx.xx -U Username%Passwort shutdown -t0 -f'); // Hier IP, Username und Passwort vom PC/Windows Account eingeben
                log("Computer: AUS", "info");
            }
        });
        

        Falls man für seinen Windows PC kein Passwort verwendet, kann man einfach einen weiteren Windows-Administator Account erstellen und diesem dann sämtliche rechte bis auf das recht zum herunterfahren entziehen.

        wenn man das recht zur lokalen anmeldung entzieht dann ist der neu erstellte nutzeraccount auch nicht im anmeldebildschirm sichtbar. hat man also nur einen windows account ohne passwort dann bootet der pc so auch direkt auf den desktop

        mehr dazu hier: https://stackoverflow.com/questions/993 … x-terminal

        1 Reply Last reply Reply Quote 1
        • A
          Arnulf last edited by

          danke für die super Zusammenfassung.

          Shutdown hatte ich schon hin bekommen. So, wie du es auch beschrieben hattest.

          Bin jetzt allerdings auf ein Problem getroffen.

          Mein DELL-PC hat die Option WOL im BIOS deaktiviert und es ist nicht zum Aktivieren auswählbar.

          Beim Googeln im Internet bin ich an mehreren Stellen auf etwas gestoßen, das wahrscheinlich der Grund sein könnte:

          Ab Windows 8 funktioniert WOL nur noch, wenn der PC in der Hybernate geschaltet wurde.

          Seit Windows 10 geht das sogar nur noch, wenn er maximal im Sleep-Modus ist.

          (Stichwort S3-S5)

          Das ist besonders doof, weil ich ja danach auch den Strom abschalten wollte und das im Sleep eher doof ist.

          Auch Boot on Power Up habe ich im BIOS nicht aktivieren können.

          Ich habe einen DELL XPS 8390.

          Wenn einer dazu eine Idee hat, wäre ich dankbar.

          Erstens, wie man das BIOS überlisten könnte oder wie man den PC zumindest remote in den Sleep schickt.

          1 Reply Last reply Reply Quote 0
          • N
            Nikoxx last edited by

            Also ich habe einen Win10 Rechner hier stehen und denn kann ich über WOL starten auch wenn er komplett aus ist. Denke das hat eher was mit der verbauten Hardware zu tun.

            1 Reply Last reply Reply Quote 0
            • E
              eXTreMe last edited by

              ich habe bei meinem Desktop PC mal gemessen (mit einer TP-Link HS110 Funksteckdose mit Verbrauchsmesser): wenn er ausgeschaltet ist verbraucht er ca 2,5 Watt (Das ist genausoviel wie ein Raspberry unter Volllast) . Das macht Stromkosten in höhe von ca. 6 Euro im Jahr. Mal davon abgesehen, dass eine Funksteckdose selber auch Strom zieht und auch Anschaffungskosten hat. Ich glaube das lohnt sich nicht da den Strom noch auszuschalten und dafür auf WoL zu verzichten.

              Da rechnet sich sogar eher noch die Anschaffung eines Mini PCs mit geringem Stromverbrauch. Denn mein Desktop PC verbraucht bei wenig Auslasung (z.B. surfen) ganze 110-130 Watt.

              Wenn WoL von deiner Hardware nicht unterstützt wird dann kauf dir einfach eine Netzwerkkarte zum einbauen, gibts für ein paar Euro.

              1 Reply Last reply Reply Quote 0
              • R
                rh1212 last edited by

                @eXTreMe:

                Ich nutze ein simples Script zum an und ausschalten meines PCs per Wake on lan bzw net rpc Befehl.

                Folgende Pakete müssen auf dem RasPi installiert sein

                apt-get install samba-common

                npm install node-wol

                Im Bios bzw den Netzwerkkarteneinstellungen unter Windows muss Wake on Lan eingeschaltet sein.

                var wol = require('wake_on_lan');         // in den Adaptereinstellungen vom javascript adapter muss bei zusätzliche npm-module "node-wol" eingetragen sein und Erlaube das Kommando "exec" muss aktiviert sein
                var myPC1 = "MAC-Adresse des PCs";         // MAC Adresse deiner Netzwerkkarte
                
                on('javascript.0.Computer.on', function (obj) { // hier deinen erstellten Datenpunkt angeben.
                
                current_state = getState("javascript.0.Computer.on").val;
                
                if (current_state === true)
                    {
                        wol.wake(myPC1);
                        log("Computer: AN", "info");
                    }
                else
                    {
                        exec('net rpc -S 192.168.xx.xx -U Username%Passwort shutdown -t0 -f'); // Hier IP, Username und Passwort vom PC/Windows Account eingeben
                        log("Computer: AUS", "info");
                    }
                });
                

                Falls man für seinen Windows PC kein Passwort verwendet, kann man einfach einen weiteren Windows-Administator Account erstellen und diesem dann sämtliche rechte bis auf das recht zum herunterfahren entziehen.

                wenn man das recht zur lokalen anmeldung entzieht dann ist der neu erstellte nutzeraccount auch nicht im anmeldebildschirm sichtbar. hat man also nur einen windows account ohne passwort dann bootet der pc so auch direkt auf den desktop

                mehr dazu hier: https://stackoverflow.com/questions/993 … x-terminal `

                Danke für dein Skript.

                Leider hat das bei mir nicht funktioniert, bist jetzt nutze ich nur ein Skript damit ich mein PC über WOL einschalten kann, wenn ich Dein Skript in meine skripte hinzufüge und dann das auf false ändere passiert nichts.

                Das ist auch nicht mein Bereich, es kann sein das ich das ganze falsch verstanden habe oder falsch gemacht, bin ich trotzdem für Deine/Eure Hilfe sehr dankbar.

                1 Reply Last reply Reply Quote 0
                • E
                  eXTreMe last edited by

                  "geht nicht" ist immer eine aussage bei der man gut weiterhelfen kann…..

                  was hast du bisher gemacht?

                  hast du alle hinweise beachtet? die notwendigen pakete installiert?

                  was geht genau nicht? nur das runterfahren?

                  datenpunkt richtig erstellt. bzw im script den richtigen pfad angegeben?

                  1 Reply Last reply Reply Quote 0
                  • R
                    rh1212 last edited by

                    @eXTreMe:

                    "geht nicht" ist immer eine aussage bei der man gut weiterhelfen kann…..

                    was hast du bisher gemacht?

                    hast du alle hinweise beachtet? die notwendigen pakete installiert?

                    was geht genau nicht? nur das runterfahren?

                    datenpunkt richtig erstellt. bzw im script den richtigen pfad angegeben? `

                    mit GetAdmin habe ich mein Problem gelöst.

                    viewtopic.php?t=1848

                    Skript Änderung damit das für mich passt:

                    ! createState('GetAdmin.cmd', ''); createState('GetAdmin.Host', ''); createState('GetAdmin.Port', ''); var request = require('request'); ! on({id: 'javascript.0.GetAdmin.cmd', change: 'any'}, function (obj) { if(obj.newState.val !== '' || typeof obj.newState.val !== "undefined"){ var host = getState('javascript.0.GetAdmin.Host').val; var port = getState('javascript.0.GetAdmin.Port').val; sendCmdGetAdmin(obj.newState.val,host,port); sendKeyGetAdmin(obj.newState.val,host,port); log('Отправляем команду GetAdmin - cmd: '+ obj.newState.val); log('Отправляем команду GetAdmin - key: '+ obj.newState.val); }else{log('GetAdmin. Не задана команда.');} }); /***************************************************************************************/ function sendCmdGetAdmin(value, host, port){ var options = { url: 'http://'+host+':'+port+'/?cmd='+value }; log('Отправляем команду GetAdmin - ' +options.url); request(options, function (error, response, body) { log('Ответ от сервера - '+response.statusCode); if (!error && response.statusCode == 200) { ! } }); } ! function sendKeyGetAdmin(value, host, port){ var options = { url: 'http://'+host+':'+port+'/?key='+value }; log('Отправляем команду GetAdmin - ' +options.url); request(options, function (error, response, body) { log('Ответ от сервера - '+response.statusCode); if (!error && response.statusCode == 200) { ! } }); } !

                    1 Reply Last reply Reply Quote 0
                    • E
                      el-lutschi last edited by

                      Hallo,

                      ich habe das Ganze mit etherwake und net rpc gelöst.

                      etherwake: http://www.sonoya.com/anleitung-wakeonl … chten.html

                      net rpc: http://c64-online.com/?p=1471

                      Hier mein Blockly Skript

                      ! ````
                      <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="RTKmr6aH.kGo7~LdfyZL" x="238" y="13"><field name="OID">javascript.0.Eigene_Variablen.Computer_Steuerung.Computer</field>
                      <field name="CONDITION">ne</field>

                      <statement name="STATEMENT"><block type="controls_if" id="lJ.z9C}XK)TGc*@eT_]:"><mutation elseif="1"></mutation>
                          <value name="IF0"><block type="logic_compare" id="j2meMpIh_+fIx#S?MZkj"><field name="OP">EQ</field>
                              <value name="A"><block type="get_value" id="|eO0yQORo{:0LILb9%O}"><field name="ATTR">val</field>
                                  <field name="OID">javascript.0.Eigene_Variablen.Computer_Steuerung.Computer</field></block></value> 
                              <value name="B"><block type="logic_boolean" id="VzrUj,=,d*Gla?CuRypb"><field name="BOOL">TRUE</field></block></value></block></value> 
                          <statement name="DO0"><block type="exec" id="Jd.]J]Dp0[7GCw,}2zUJ"><mutation with_statement="false"></mutation>
                              <field name="WITH_STATEMENT">FALSE</field>
                              <field name="LOG">log</field>
                              <value name="COMMAND"><shadow type="text" id="1c2%luqw`IxJ^g%7]4l7"><field name="TEXT">sudo etherwake MACADRESSE</field></shadow></value></block></statement> 
                          <value name="IF1"><block type="logic_compare" id=":88VcrB}yVEv:K+2wa27"><field name="OP">EQ</field>
                              <value name="A"><block type="get_value" id="lcI4AG-zHl_)%|j_R73t"><field name="ATTR">val</field>
                                  <field name="OID">javascript.0.Eigene_Variablen.Computer_Steuerung.Computer</field></block></value> 
                              <value name="B"><block type="logic_boolean" id="Z7riQ%`,tT/F22E6t5t%"><field name="BOOL">FALSE</field></block></value></block></value> 
                          <statement name="DO1"><block type="exec" id="?MgGT%{twh?k+dlvpC.h"><mutation with_statement="false"></mutation>
                              <field name="WITH_STATEMENT">FALSE</field>
                              <field name="LOG">log</field>
                              <value name="COMMAND"><shadow type="text" id="!U@GsvYzqK!~I4yvdeH~"><field name="TEXT">sudo net rpc -S 10.22.22.221 -U user%pw shutdown -t 30</field></shadow></value></block></statement></block></statement></block></xml> 
                      
                      [3950_pc.png](/assets/uploads/files/3950_pc.png)
                      1 Reply Last reply Reply Quote 0
                      • A
                        Arnulf last edited by

                        @Arnulf:

                        danke für die super Zusammenfassung.

                        Shutdown hatte ich schon hin bekommen. So, wie du es auch beschrieben hattest.

                        Bin jetzt allerdings auf ein Problem getroffen.

                        Mein DELL-PC hat die Option WOL im BIOS deaktiviert und es ist nicht zum Aktivieren auswählbar.

                        Beim Googeln im Internet bin ich an mehreren Stellen auf etwas gestoßen, das wahrscheinlich der Grund sein könnte:

                        Ab Windows 8 funktioniert WOL nur noch, wenn der PC in der Hybernate geschaltet wurde.

                        Seit Windows 10 geht das sogar nur noch, wenn er maximal im Sleep-Modus ist.

                        (Stichwort S3-S5)

                        Das ist besonders doof, weil ich ja danach auch den Strom abschalten wollte und das im Sleep eher doof ist.

                        Auch Boot on Power Up habe ich im BIOS nicht aktivieren können.

                        Ich habe einen DELL XPS 8390.

                        Wenn einer dazu eine Idee hat, wäre ich dankbar.

                        Erstens, wie man das BIOS überlisten könnte oder wie man den PC zumindest remote in den Sleep schickt. `

                        Kaum zu glauben, aber wahr. Ich habe tatsächlich die Lösung gefunden….

                        Ich hatte für mich selbst noch einmal dieses alte Thema heraus gefischt, weil es mich genervt hat (aus Prinzip), weil ich zwar den PC aus- aber nicht einschalten konnte.

                        Es scheiterte ja eigentlich daran, dass die Option WOL im BIOS deaktiviert und ausgegraut war. Damit hat auch Win 10 die entsprechende Einstellung der Netzwerkkarte verweigert.

                        Die Lösung ist eigentlich ganz einfach: Es gibt auf der gleichen Seite der BIOS-Einstellungen einen Eintrag für das "Deep Sleep Management". Ich hatte immmer gedacht, man müsste hier S4 und/oder S5 einstellen. Eine Deaktivierung wäre hier ganz falsch,

                        Weit gefehlt.

                        Hier MUSS gerade dektiviert werden. Denn dann kann man plötzlich WOL im BIOS aktivieren und damit auch der Neztwerkkarte unter Windows einen entsprechenden Haken machen (wenn nötig. Bei mir war er bereits gesetzt)

                        Tadaaaa... jetzt startet auch der Computer, wenn ich es Alexa sage.

                        🙂

                        1 Reply Last reply Reply Quote 0
                        • J
                          josef.steinergmx.de last edited by

                          Hallo zusammen,

                          ich hätte noch eine Frage zu diesem Thema:

                          Ich habe mir mit Hilfe dieses Forums ein skript zusammengebastelt mit dem ich meinen PC über wol starten und auch in den sleep modus schicken kann. so oft ich will (kein shutdown) Ich nutze außerdem noch ein zusätzliches tool das auf meinem Rechner installiert ist.

                          Im iobroker werden zwei neue Objekte im OrdnerJavascriptmenu erzeugt.

                          javascript.0.PCstarten und javascript.0.PCherunterfahren

                          Suche ich nun mit der Alexa app neue Geräte so finde ich zwei neue Geräte mit genau diesen Namen.

                          Ich kann die Geräte umbenennen in PC ON in PC OFF

                          Beide "Geräte" haben einen ON und OFF button. Ich kann im jeweiligen skript mit dem ON button den Befehl ausführen einmal für ON und einmal für OFF…Funzt top.

                          Leider funktioniert die Sprachsteuerung hier nicht da Alexa meckert weil der Name PC doppelt vergeben ist und ich sagen soll WELCHEN ich meine.

                          Man könnte das ganze mit einer Routinesteuerung umgehen -> funktioniert aber ist eigentlich unsauber gelöst.

                          Ich hätte aber gerne nur ein "Gerät" bzw Objekt mit einem ON button für starten und OFF button für herunterfahren.

                          Welche Möglichkeiten habe ich?

                          • dieses Skript hier ändern

                          • ein "skript für ein skript" z.b. blockly erstellen

                          Ich bitte um Hilfe

                          Danke!

                          Hier mein Skript

                          createState("javascript.0.PCstarten",{

                          type: 'boolean',

                          def: false

                          });

                          createState("javascript.0.PCherunterfahren",{

                          type: 'boolean',

                          def: true

                          });

                          var wol = require('wake_on_lan');

                          var myPC = "MEINE MAC ADRESSE";

                          on("javascript.0.PCstarten", function (obj) {

                          if (obj.state.val) {

                          wol.wake(myPC);

                          setState("javascript.0.PCstarten", true);

                          setState("javascript.0.PCherunterfahren", false);

                          log("Script WOL - PC aufgeweckt", "info");

                          }

                          });

                          on("javascript.0.PCherunterfahren", function (obj) {

                          if (obj.state.val) {

                          console.log('curl -L http://192.168.0.56:7760/hibernate');

                          exec('curl -L http://192.168.0.56:7760/hibernate');

                          setState("javascript.0.PCherunterfahren", true);

                          setState("javascript.0.PCstarten", false);

                          log("PC wird in 10 sec. heruntergefahren", "info");

                          }

                          });

                          Ja ich weiß 🙂 ich muss noch testen ob es der console.log oder der exec Befehl ist, welcher wirklich den Befehl für herunterfahren/Standby ausführt.

                          1 Reply Last reply Reply Quote 0
                          • J
                            josef.steinergmx.de last edited by

                            ich muss dazu sagen ich habe die Logik des skripts nicht ganz verstanden:

                            z.B.

                            setState("javascript.0.PCstarten", true);

                            setState("javascript.0.PCherunterfahren", false);

                            ich muss immer den darauffolgenden Befehl auf "false" setzten damit ich diesen mit der Alexa app auf TRUE bzw auf ON setzen kann.

                            Ist die zweite Zeile nicht im skript muss ich in der App zuerst manuell den OFF button drücken und dann geht erst der ON button.

                            und weiter:

                            createState("javascript.0.PCherunterfahren",{

                            type: 'boolean',

                            def: true

                            Was definiere ich mit type und def?

                            ich hätte gedacht:

                            on("javascript.0.PCstarten", function (obj) {

                            on("javascript.0.PCherunterfahren", function (obj) {

                            Ich ändere hier einfach um in:

                            OFF("javascript.0.PCherunterfahren", function (obj) {

                            und belege dann den OFF button mit der folgenden Funktion.

                            mir fehlt hier irgendwie eine "if else" Funktion also WO definiere ich die ON und OFF buttons in diesem virtuellen Geräte und welche Anweisungen stecken dann dahinter. Das kann ich irgendwie nicht wirklich erkennen.

                            Bin in programmieren leider nur Laie.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            821
                            Online

                            31.9k
                            Users

                            80.1k
                            Topics

                            1.3m
                            Posts

                            12
                            19
                            6872
                            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