Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. PC an/aus | wenn/dann Skript | Szenenkonfiguration

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    531

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.6k

PC an/aus | wenn/dann Skript | Szenenkonfiguration

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
17 Beiträge 3 Kommentatoren 3.3k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #5

    Hallo,

    on({
        id: "ping.0.PC.192_168_0_3" ,
        change:'ne' // besser "ne" (not equal, also Änderung) als "any" (jeder neue Wert)
    }, function (obj) {
        if (!obj.state.val) { // getState nicht nötig, da ja durch on schon abgeholt; das Ausrufezeichen ist hier Kurzschreibweise von if not
            log('PC wecken'); // Debug Logausgabe
            exec('javascript.0.PCWOL');
        } else { 
            log('PC Shutdown'); // Debug Logausgabe
            exec('javascript.0.PCShutdown'); 
        }    
    });
    
    

    Versuch mal so. Die Kommentare sollte ausreichend erklären. Eine Logausgabe hilft oft, den Fehler zu finden.

    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • S Offline
      S Offline
      samsungfreak
      schrieb am zuletzt editiert von
      #6

      Hallo pix,

      funktioniert leider noch nicht. Hier die entsprechende Ausgabe vom LOG.

      javascript.0	2017-07-23 19:53:34.757	info	script.js.Wenn/dann.test2: registered 1 subscription and 0 schedules
      javascript.0	2017-07-23 19:53:34.757	info	script.js.Wenn/dann.test2: subscribe: {"pattern":{"id":"ping.0.PC.192_168_0_3","change":"ne"},"name":"script.js.Wenn/dann.test2"}
      javascript.0	2017-07-23 19:53:34.757	info	Start javascript script.js.Wenn/dann.test2
      javascript.0	2017-07-23 19:53:34.700	info	Stop script script.js.Wenn/dann.test2
      
      

      An welche Stelle fragt er den Wert in deinem Skript ab (false/true)?

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        pix
        schrieb am zuletzt editiert von
        #7

        Hallo,

        zuerst zum Skript:

        Das Skript besteht im Wesentlichen aus einer Subscription/Überwachung. Es überwacht den Datenpunkt ping.0.PC.192_168_0_3 und löst aus, wenn dieser sich ändert (change: 'ne'). Nach der Auslösung kann man den Datenpunkt - grob gesagt - über "obj" abfragen. Das heißt zum Beispiel, das der neue Status über obj.state.val abrufbar ist. Der alte Status wär unter obj.oldState.val abrufbar, den brauchen wir aber nicht.

        Einer if-Abfrage````
        if (!obj.state.val) {

        
        jetzt zur Logik:
        
        Ich habe einfach nur din obiges Skript umgebaut. Wie es scheint, ist aber die Subscription auf den Ping falsch. Wenn ich das richtig vermute, liefert der Ping den Zusatnd des PC, der ja geweckt werden soll, oder nicht? Das produziert dann eine Schleife: Wenn PC aus, dann einschalten. Wenn eingeschaltet, dann ausschalten. Und wieder von vorn....
        
        Antowrte bitte kurz, bevor ich weiter spekuliere :lol:
        
        Gruß
        
        Pix

        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

        1 Antwort Letzte Antwort
        0
        • S Offline
          S Offline
          samsungfreak
          schrieb am zuletzt editiert von
          #8

          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?

          1 Antwort Letzte Antwort
          0
          • BuZZyB Offline
            BuZZyB Offline
            BuZZy
            schrieb am zuletzt editiert von
            #9

            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?

            1 Antwort Letzte Antwort
            0
            • S Offline
              S Offline
              samsungfreak
              schrieb am zuletzt editiert von
              #10

              @BuZZy:

              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");
                  }
              
              );
              
              1 Antwort Letzte Antwort
              0
              • BuZZyB Offline
                BuZZyB Offline
                BuZZy
                schrieb am zuletzt editiert von
                #11

                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.

                1 Antwort Letzte Antwort
                0
                • S Offline
                  S Offline
                  samsungfreak
                  schrieb am zuletzt editiert von
                  #12

                  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
                  
                  1 Antwort Letzte Antwort
                  0
                  • BuZZyB Offline
                    BuZZyB Offline
                    BuZZy
                    schrieb am zuletzt editiert von
                    #13

                    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.

                    1 Antwort Letzte Antwort
                    0
                    • S Offline
                      S Offline
                      samsungfreak
                      schrieb am zuletzt editiert von
                      #14

                      @BuZZy:

                      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?

                      1 Antwort Letzte Antwort
                      0
                      • BuZZyB Offline
                        BuZZyB Offline
                        BuZZy
                        schrieb am zuletzt editiert von
                        #15

                        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.

                        1 Antwort Letzte Antwort
                        0
                        • S Offline
                          S Offline
                          samsungfreak
                          schrieb am zuletzt editiert von
                          #16

                          @BuZZy:

                          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:

                          2122_szene.png

                          Status der Skripte nach dem ausführen der Szene:

                          2122_skripte.png

                          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.

                          1 Antwort Letzte Antwort
                          0
                          • S Offline
                            S Offline
                            samsungfreak
                            schrieb am zuletzt editiert von
                            #17

                            Hat hier jemand zufällig noch eine Idee?

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            753

                            Online

                            32.5k

                            Benutzer

                            81.8k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe