NEWS
PC über Alex/Raspberry Pi/ioBroker herunterfahren und starten
-
das geht aberauch..
entw. mit Verzögerung sagen wir mal nach 390. sec. aus
oder du pingst den Rechner an kein ping dann aus
oder du überträgst eine Datei auf den pi und schaltest die Dose sobald die Datei abgelegt wurde..
-
Hallo stinkzor.
Das ganze funktioniert über gewisse Umwege. Ich habe mir hier einen Esp8266 zu nutze gemacht.
Auf dieses kleine Wlan Modul kann man einen Wemo Switch emulieren
https://github.com/witnessmenow/esp8266 … o-emulator
Diesen kannst du dann über ioBroker einbinden und per Alexa steuern.
Wenn ich Alexa jetzt sage "Computer an" fährt sie diesen ordnungsgemäß hoch und bei "Computer aus"
auch wieder herunter.
MFG LaGra
PS: Schreib mir wenn du willst eine PM, falls noch fragen anfallen.
-
habe auch gerade den Wunsch verspürt, auch den Rechner per ioBroker herunter zu fahren.
Wie war das aber mit der Wemo Bridge gemeint?
Brutal den Strom aus schalten, geht ja auch mit Funksteckdose.
Ich will aber den Rechner geregelt herunter fahren.
Geht das irgendwie?
Bzw. Kann man einen PC fernsteuern?
-
Hallo Zusammen,
ich habe das folgendermaßen gelöst.
"alexa, computer an"
1. meine fritzbox schaltet die steckdose fritzdect 200 (über iobroker) ein.
2. das bios meines pc ist so eineingestellt, dass bei stromzufuhr er automatisch angeht
"alexa, computer aus"
1. iobroker schickt eine mail an mich
2. mein outlook erhält diese mail und führt ein skript aus, das per regel hinterlegt ist
3. skript fährt rechner runter (klappt hervorragend … habe es mit zeitversatz von 1min gemacht, sodass ich es aufhalten kann wenn ich möchte)
4. pc ist down
5. fritzdect 200 erkennt den stromverbrauch (z.b. < 10watt) und geht nach einer bestimmten zeit (z.b. 2mins) in standby = ausschalten
ich bin begeistert
p.s.: diese steuerung "per mail an mich und dann skript ausführen" kann man auch noch für andere zwecke nutzen (z.b. programmstart: medienserver usw.)
grüße
-
weia. Hört sich kompliziert an.
Und hört sich nach einer Menge Bedingungen zum Funktionieren an.
Ich habe mal was von rpc…. shutdown.... gelesen.
Weiß aber noch nicht, wie ich das auf dem Raspi (wahrscheinlich muss ein Samba-Client installiert werden) realisieren kann.
Einschalten stelle ich mir über WOL vor.
Sicher könnte ich mir das Einschalten auch über eine Funkspeckdose vorstellen. Zumal man hier vielleicht auch gleichzeitig die Monitore mit ein-/ausschalten könnte
-
http://forum.iobroker.net/viewtopic.php?t=1848
Gesendet von Unterwegs
-
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 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.