NEWS
PC über Alex/Raspberry Pi/ioBroker herunterfahren und starten
-
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.
-
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.
-
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.
-
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.
-
"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?
-
"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.
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) { ! } }); } !
-
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)
-
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.
-
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.
-
-
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.