NEWS
PC an/aus | wenn/dann Skript | Szenenkonfiguration
-
Hallo Pix,
danke für das ausführliches Feedback.
Korrekt, der Ping überprüft ob der PC eingeschaltet oder ausgeschaltet ist und soll dann entsprechend die Javaskripte starten (WOL/Shutdown).
Aber wieso ergibt das Ganze eine Schleife? Jede 6000ms überprüft der PING Adapter die Systeme und trägt entsprechend die Werte ein (true/false). Wenn das Skript startet ließt es aus meiner Sicht einmal den Wert aus (true/false) und schaltet dann entsprechend die Javaskripte (WOL/Shutdown). Oder sehe ich das falsch?
-
Deswegen sagte ich du sollst einen Datenpunkt erstellen (PCStatus) den du über die Scene auf 1 oder 0 stellst. Wenn der PC angeschaltet werden soll muss er auf 1 stehen, wenn du dann über die Scene den PC ausschalten willst muss der Datenpunkt auf 0 gestellt werden. Dann brauchst du nur ein Script welches überwacht ob der PCStatus 1 oder 0 ist und dann entsprechend den PC hoch fährt oder halt runter fährt.
Wie sehen deine Scripte (Das Skript PCWOL und PCShutdown die du erstellt hast) aus um den PC hoch zu fahren und runter zu fahren?
-
Deswegen sagte ich du sollst einen Datenpunkt erstellen (PCStatus) den du über die Scene auf 1 oder 0 stellst. Wenn der PC angeschaltet werden soll muss er auf 1 stehen, wenn du dann über die Scene den PC ausschalten willst muss der Datenpunkt auf 0 gestellt werden. Dann brauchst du nur ein Script welches überwacht ob der PCStatus 1 oder 0 ist und dann entsprechend den PC hoch fährt oder halt runter fährt.
Wie sehen deine Scripte (Das Skript PCWOL und PCShutdown die du erstellt hast) aus um den PC hoch zu fahren und runter zu fahren? `
Einen Datenpunkt mit "PCStatus" habe ich jetzt erstellt und entsprechend wie von dir beschrieben in der Szene hinterlegt (setzen= 1 | setzten bei false=0)
Mein WOL Skript:
var wol = require('wake_on_lan'); // Lädt von ioBroker die das nötige Paket var PC= "MACADRESSE"; // MAC definieren // Ab hier automatisch on({id: "javascript.0.PCWOL", change: 'any'}, function (obj) { wol.wake(PC); log("WOL für PC ausgefuehrt", "info"); } );
Mein Shutdown Skript:
on({id: "javascript.0.PCShutdown", change: 'any'}, function (obj) { exec('net rpc shutdown -s -t 0-f -C "Der PC wird ausgeschaltet" -I IPADRESSE -U USER%PASSWORD') log("PC wurde ausgeschaltet", "info"); } );
-
Dann probier mal dieses Script:
Starte das Script und schalte mal die Scene an, dann müsste der PC hochfahren.
(vor dem Testen noch in Zeile 1 und 2 den "hier.pfad.0.PCStatus" korrigieren auf den Datenpunkt den du erstellt hast, welcher durch die Scene auf 1 oder 0 geschaltet wird. Außerdem die MAC Adresse für den PC im WOL abschnitt eintragen, sowie Username und Password für den Shutdown.)
on({id: "hier.pfad.0.PCStatus" ,change:'any'}, function (obj) { current_state = getState("hier.pfad.0.PCStatus").val; if (current_state == 1) { var wol = require('wake_on_lan'); var PC= "MACADRESSE"; wol.wake(PC); log("WOL für PC ausgefuehrt", "info"); } else { exec('net rpc shutdown -s -t 0-f -C "Der PC wird ausgeschaltet" -I IPADRESSE -U USER%PASSWORD'); log("PC wurde ausgeschaltet", "info"); } });
EDIT: Fehlendes ; hinter dem Shutdownbefehl hinzugefügt.
-
Funktioniert leider nicht. Gleiches Problem das er hier in die Schleife geht (PC an, PC aus, PC an, PC aus).
Gibt es keine Möglichkeit das Skript zu beenden nachdem es einmal die Schleife/Anweisung durchlaufen ist?
Ich habe gerade was anderes ausprobiert:
- Das Skript zum starten welches ich entsprechend in die Szene eingebaut habe und "setzten" aktiviert haben
Das Skript zum herunterfahren welches ich entsprechend in die Szene eingebaut habe und "setzten bei false" aktiviert haben.
Bei den beiden Skripten arbeite ich mit der "if" Abfrage von dem PING des PCs. Das Funktioniert auch soweit nur startet das Skript den PC ca. 10 mal via WOL bis der Wert vom Ping entsprechend auf true gesetzt wurde (logisch der Bootvorgang). Gleiches gilt für das Shutdown Skript.
Leider konnte ich keine Lösung finden, wie ein Java Skript beendet wird nachdem es den Befehl ausgeführt hat.
Das "Start/WOL" Skript:
on({id: "ping.0.PC.192_168_0_3" ,change:'any'}, function (obj) { current_state = getState("ping.0.PC.192_168_0_3").val; if (current_state === false) var wol = require('wake_on_lan'); // Lädt von ioBroker die das nötige Paket var PC = "MAC"; // MAC definieren wol.wake(PAHTPC); log("WOL für PC ausgefuehrt", "info"); exit });
Das Shutdown Skript:
on({id: "ping.0.PC.192_168_0_3" ,change:'any'}, function (obj) { current_state = getState("ping.0.PC.192_168_0_3").val; if (current_state === true) exec('net rpc shutdown -s -t 0-f -C "Der PC wird ausgeschaltet" -I 192.168.0.3 -U USER%PASSWORD') log("PC wurde ausgeschaltet", "info"); });
Im Log sieht das dann wie folgt aus. Funktionieren tut es jetzt wie ich es mir gewünscht habe allerdings noch nicht ganz sauber aufgrund der Fehlermeldung im Log und der 10 fachen Ausführung von den Skripten bis sich der Ping Status auf "true" oder "false" geändert hat.
javascript.0 2017-07-23 23:07:20.076 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:07:09.060 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:58.042 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:47.028 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:36.010 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:24.990 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:13.976 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:06:02.960 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:05:53.942 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:05:44.929 info script.js.Wenn/dann.aus: PC wurde ausgeschaltet javascript.0 2017-07-23 23:05:36.561 info script.js.Wenn/dann.aus: registered 1 subscription and 0 schedules javascript.0 2017-07-23 23:05:36.561 info Start javascript script.js.Wenn/dann.aus javascript.0 2017-07-23 23:05:36.526 info Stop script script.js.Wenn/dann.an javascript.0 2017-07-23 23:05:35.904 error TypeError: Cannot read property 'wake' of undefined at Object. (script.js.Wenn/dann.an:8:7) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:132 javascript.0 2017-07-23 23:05:35.904 error message ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:05:35.904 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843935902,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} javascript.0 2017-07-23 23:05:26.886 error TypeError: Cannot read property 'wake' of undefined at Object. (script.js.Wenn/dann.an:8:7) at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:132 javascript.0 2017-07-23 23:05:26.886 error message ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:05:26.886 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843926884,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} TypeError: 2017-07-23 23:05:17.868 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) TypeError: 2017-07-23 23:05:17.868 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) TypeError: 2017-07-23 23:05:17.868 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) TypeError: 2017-07-23 23:05:17.868 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) TypeError: 2017-07-23 23:05:17.868 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) TypeError: 2017-07-23 23:05:17.868 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) TypeError: 2017-07-23 23:05:17.868 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) TypeError: 2017-07-23 23:05:17.868 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 TypeError: 2017-07-23 23:05:17.868 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) TypeError: 2017-07-23 23:05:17.868 error at Object. (script.js.Wenn/dann.an:8:7) TypeError: 2017-07-23 23:05:17.868 error Cannot read property 'wake' of undefined message 2017-07-23 23:05:17.868 error ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:05:17.867 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843917867,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} TypeError: 2017-07-23 23:05:08.849 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) TypeError: 2017-07-23 23:05:08.849 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) TypeError: 2017-07-23 23:05:08.849 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) TypeError: 2017-07-23 23:05:08.849 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) TypeError: 2017-07-23 23:05:08.849 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) TypeError: 2017-07-23 23:05:08.849 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) TypeError: 2017-07-23 23:05:08.849 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) TypeError: 2017-07-23 23:05:08.849 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 TypeError: 2017-07-23 23:05:08.849 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) TypeError: 2017-07-23 23:05:08.849 error at Object. (script.js.Wenn/dann.an:8:7) TypeError: 2017-07-23 23:05:08.849 error Cannot read property 'wake' of undefined message 2017-07-23 23:05:08.849 error ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:05:08.849 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843908848,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} TypeError: 2017-07-23 23:04:59.832 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) TypeError: 2017-07-23 23:04:59.832 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) TypeError: 2017-07-23 23:04:59.832 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) TypeError: 2017-07-23 23:04:59.832 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) TypeError: 2017-07-23 23:04:59.832 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) TypeError: 2017-07-23 23:04:59.832 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) TypeError: 2017-07-23 23:04:59.832 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) TypeError: 2017-07-23 23:04:59.832 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 TypeError: 2017-07-23 23:04:59.832 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) TypeError: 2017-07-23 23:04:59.832 error at Object. (script.js.Wenn/dann.an:8:7) TypeError: 2017-07-23 23:04:59.832 error Cannot read property 'wake' of undefined message 2017-07-23 23:04:59.832 error ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:04:59.831 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843899831,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} TypeError: 2017-07-23 23:04:50.815 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) TypeError: 2017-07-23 23:04:50.815 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) TypeError: 2017-07-23 23:04:50.815 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) TypeError: 2017-07-23 23:04:50.815 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) TypeError: 2017-07-23 23:04:50.815 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) TypeError: 2017-07-23 23:04:50.815 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) TypeError: 2017-07-23 23:04:50.815 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) TypeError: 2017-07-23 23:04:50.815 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 TypeError: 2017-07-23 23:04:50.815 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) TypeError: 2017-07-23 23:04:50.815 error at Object. (script.js.Wenn/dann.an:8:7) TypeError: 2017-07-23 23:04:50.815 error Cannot read property 'wake' of undefined message 2017-07-23 23:04:50.814 error ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:04:50.814 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843890813,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} TypeError: 2017-07-23 23:04:41.797 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) TypeError: 2017-07-23 23:04:41.797 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) TypeError: 2017-07-23 23:04:41.797 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) TypeError: 2017-07-23 23:04:41.797 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) TypeError: 2017-07-23 23:04:41.797 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) TypeError: 2017-07-23 23:04:41.797 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) TypeError: 2017-07-23 23:04:41.797 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) TypeError: 2017-07-23 23:04:41.797 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 TypeError: 2017-07-23 23:04:41.797 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) TypeError: 2017-07-23 23:04:41.797 error at Object. (script.js.Wenn/dann.an:8:7) TypeError: 2017-07-23 23:04:41.797 error Cannot read property 'wake' of undefined message 2017-07-23 23:04:41.796 error ping.0.PC.192_168_0_3 [object Object] Cannot read property 'wake' of undefined javascript.0 2017-07-23 23:04:41.796 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":true,"ack":true,"ts":1500843881795,"q":0,"from":"system.adapter.ping.0","lc":1500843881795} ReferenceError: 2017-07-23 23:04:32.782 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) ReferenceError: 2017-07-23 23:04:32.782 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) ReferenceError: 2017-07-23 23:04:32.782 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) ReferenceError: 2017-07-23 23:04:32.782 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) ReferenceError: 2017-07-23 23:04:32.782 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) ReferenceError: 2017-07-23 23:04:32.782 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) ReferenceError: 2017-07-23 23:04:32.782 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) ReferenceError: 2017-07-23 23:04:32.782 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 ReferenceError: 2017-07-23 23:04:32.782 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) ReferenceError: 2017-07-23 23:04:32.782 error at Object. (script.js.Wenn/dann.an:11:1) ReferenceError: 2017-07-23 23:04:32.782 error exit is not defined message 2017-07-23 23:04:32.782 error ping.0.PC.192_168_0_3 [object Object] exit is not defined javascript.0 2017-07-23 23:04:32.781 info script.js.Wenn/dann.an: WOL für PC ausgefuehrt javascript.0 2017-07-23 23:04:32.781 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":false,"ack":true,"ts":1500843872780,"q":0,"from":"system.adapter.ping.0","lc":1500843619351} ReferenceError: 2017-07-23 23:04:21.765 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) ReferenceError: 2017-07-23 23:04:21.765 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) ReferenceError: 2017-07-23 23:04:21.765 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) ReferenceError: 2017-07-23 23:04:21.765 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) ReferenceError: 2017-07-23 23:04:21.765 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) ReferenceError: 2017-07-23 23:04:21.765 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) ReferenceError: 2017-07-23 23:04:21.765 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) ReferenceError: 2017-07-23 23:04:21.765 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 ReferenceError: 2017-07-23 23:04:21.765 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) ReferenceError: 2017-07-23 23:04:21.765 error at Object. (script.js.Wenn/dann.an:11:1) ReferenceError: 2017-07-23 23:04:21.765 error exit is not defined message 2017-07-23 23:04:21.764 error ping.0.PC.192_168_0_3 [object Object] exit is not defined javascript.0 2017-07-23 23:04:21.764 info script.js.Wenn/dann.an: WOL für PC ausgefuehrt javascript.0 2017-07-23 23:04:21.764 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":false,"ack":true,"ts":1500843861763,"q":0,"from":"system.adapter.ping.0","lc":1500843619351} ReferenceError: 2017-07-23 23:04:10.753 error at Socket.Emitter.emit (/opt/iobroker/node_modules/iobroker.js-controller/node_modules/socket.io-client/node_modules/component-emitter/index.js:133:20) ReferenceError: 2017-07-23 23:04:10.753 error at Socket. (/opt/iobroker/node_modules/iobroker.js-controller/lib/states/statesInMemClient.js:45:30) ReferenceError: 2017-07-23 23:04:10.753 error at Object.that.states.States.change (/opt/iobroker/node_modules/iobroker.js-controller/lib/adapter.js:2866:37) ReferenceError: 2017-07-23 23:04:10.753 error at Object.utils.adapter.stateChange (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:253:17) ReferenceError: 2017-07-23 23:04:10.753 error at checkPatterns (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:581:17) ReferenceError: 2017-07-23 23:04:10.753 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3229:28) ReferenceError: 2017-07-23 23:04:10.753 error at getObjectEnums (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:3210:17) ReferenceError: 2017-07-23 23:04:10.753 error at /opt/iobroker/node_modules/iobroker.javascript/javascript.js:585:48 ReferenceError: 2017-07-23 23:04:10.753 error at Object.subs.callback (/opt/iobroker/node_modules/iobroker.javascript/javascript.js:1325:48) ReferenceError: 2017-07-23 23:04:10.753 error at Object. (script.js.Wenn/dann.an:11:1) ReferenceError: 2017-07-23 23:04:10.753 error exit is not defined message 2017-07-23 23:04:10.750 error ping.0.PC.192_168_0_3 [object Object] exit is not defined javascript.0 2017-07-23 23:04:10.750 info script.js.Wenn/dann.an: WOL für PC ausgefuehrt javascript.0 2017-07-23 23:04:10.748 info script.js.Wenn/dann.an: getState(id=ping.0.PC.192_168_0_3, timerId=0) => {"val":false,"ack":true,"ts":1500843850746,"q":0,"from":"system.adapter.ping.0","lc":1500843619351} javascript.0 2017-07-23 23:04:01.485 info script.js.Wenn/dann.an: registered 1 subscription and 0 schedules javascript.0 2017-07-23 23:04:01.485 info script.js.Wenn/dann.an: subscribe: {"pattern":{"id":"ping.0.PC.192_168_0_3","change":"any"},"name":"script.js.Wenn/dann.an"} javascript.0 2017-07-23 23:04:01.456 info Start javascript script.js.Wenn/dann.an
-
Das kann eigentlich nicht sein dass es in die Schleife geht solange die Scene nicht geändert wird.
Da hängt es irgendwo anders bei dir..
Ist schwer zu sagen.. Alle Scripte die irgendwas mit dem WOL oder Shutdown zu tun haben sollten deaktiviert werden und dann nur das Script starten welches die Scene bzw. den Datenpunkt der durch die Scene geschaltet wird überwacht.. Wenn die Scene auf 1 geht, dann anschalten, wenn die Scene auf 0 geht, dann ausschalten.. Da dürfte dann keine Schleife entstehen solange du nicht die ganze Zeit die Scene an und aus schaltest.
Wenn du mit dem Ping arbeitest anstatt mit dem manuellen Datenpunkt ist es klar dass eine Schleife entsteht. Lass den Ping komplett raus und nimm nur das Script für den manuellen Datenpunkt.
Wie gesagt, wenn du statt Ping mit dem manuellen Datenpunkt arbeitest sollte es keine Probleme geben.
-
Das kann eigentlich nicht sein dass es in die Schleife geht solange die Scene nicht geändert wird.
Da hängt es irgendwo anders bei dir..
Ist schwer zu sagen.. Alle Scripte die irgendwas mit dem WOL oder Shutdown zu tun haben sollten deaktiviert werden und dann nur das Script starten welches die Scene bzw. den Datenpunkt der durch die Scene geschaltet wird überwacht.. Wenn die Scene auf 1 geht, dann anschalten, wenn die Scene auf 0 geht, dann ausschalten.. Da dürfte dann keine Schleife entstehen solange du nicht die ganze Zeit die Scene an und aus schaltest.
Wenn du mit dem Ping arbeitest anstatt mit dem manuellen Datenpunkt ist es klar dass eine Schleife entsteht. Lass den Ping komplett raus und nimm nur das Script für den manuellen Datenpunkt.
Wie gesagt, wenn du statt Ping mit dem manuellen Datenpunkt arbeitest sollte es keine Probleme geben. `
Hallo BuZZy,
meine Anforderung an sich ist erfüllt bzw. ich habe das Ziel erreicht. Der Nachteil ist jetzt natürlich das mit das Log vollgeschrieben wird. Warum würde ich das gerne mit dem "Ping" umsetzten. Ich würde die Szene gerne auf andere Geräte ausweiten und hier kann es sein das ich einen PC auch mal nicht über Alexa bzw. IOBroker starte. Der Ping ist daher dynamisch und nicht statisch wie der Status vom Datenpunkt PCStatus.
Allerdings bin ich noch nicht zur Lösung von den Javaskripten gekommen wie ich die "Schleifen" beenden kann. Vielleicht kann mir hier jemand noch weiterhelfen?
-
Du kannst über eine Variable gehen (wenn der erste Befehl abgesendet wurde zum Starten vom PC setzt du diese auf 1)
und vor dem Starten prüfst du: wenn die Variable = 1 dann nicht starten.
Nach 60 Sekunden setzt du die Variable dann wieder auf 0..
Zeig mal dein komplettes Script wie es jetzt aussieht.
-
Du kannst über eine Variable gehen (wenn der erste Befehl abgesendet wurde zum Starten vom PC setzt du diese auf 1)
und vor dem Starten prüfst du: wenn die Variable = 1 dann nicht starten.
Nach 60 Sekunden setzt du die Variable dann wieder auf 0..
Zeig mal dein komplettes Script wie es jetzt aussieht. `
Hallo BuZZy,
mein WOL/Start Skript vom HTPC in der Szene: (Skriptname ist momentan noch "an"):
on({id: "ping.0.Broker.192_168_0_2" ,change:'any'}, function (obj) { current_state = getState("ping.0.Broker.192_168_0_2").val; if (current_state === false) var wol = require('wake_on_lan'); var HTPC = "MEINEMAC"; wol.wake(HTPC); log("WOL für HTPC ausgefuehrt", "info"); return });
mein Shutdown Skript vom HTPC in der Szene: (Skriptname ist momentan noch "aus"):
on({id: "ping.0.Broker.192_168_0_2" ,change:'any'}, function (obj) { current_state = getState("ping.0.Broker.192_168_0_3").val; if (current_state === true) exec('net rpc shutdown -s -t 0-f -C "Der HTPC wird ausgeschaltet" -I 192.168.0.3 -U USER%PASSWORD') log("HTPC wurde ausgeschaltet", "info"); return });
Und hier meine Szene dazu:
Status der Skripte nach dem ausführen der Szene:
Ich bin eigentlich zu frieden mit den Skripten und würde gerne die Statusabfrage via PING drin lassen statt einer Variable da ich dadurch flexibler bleibe wie ein PC eingeschaltet wurde (per Hand, IOBroker etc.)
Ich habe mich schon mit dem Befehl "break" im Skritp versucht. Allerdings erhalte ich dann die Meldung "unexpected break". Aber es muss doch eingentlich eine Möglichkeit geben die Schleife/Abfrage zu unterbrechen/abzubrechen.
-
Hat hier jemand zufällig noch eine Idee?