NEWS

[Gelöst] Zeitbereich als Trigger für On()


  • Hallo Zusammen,

    erstmal muss ich sagen dass das ein super Forum ist. Ich versuche gerade in die Javascript-Programmierung einzusteigen und mir fehlt an der ein oder anderen Stelle noch etwas das Verständnis.

    Ich wollte mittels Blockly ein Skript erstellen das nur getriggert wird wenn die Zeit zwischen zwei Zeiten liegt.

    2411_blockly.jpg

    Bei der Code-Prüfung ist alles ok und wenn ich das Skript starte bekomme ich folgende Meldungen wenn die Zeit außerhalb des Zeitraumes ist

    javascript.0	2017-04-13 21:15:08.605	info	script.js.ontest_Blockly: registered 1 subscription and 0 schedules
    javascript.0	2017-04-13 21:15:08.605	error	Error by subscription: empty ID defined. All states matched.
    javascript.0	2017-04-13 21:15:08.602	info	Start javascript script.js.ontest_Blockly
    javascript.0	2017-04-13 21:15:08.578	error	unsubscribe: invalid type of id - boolean
    

    Wenn sie innerhalb liegt hätte ich die Ausgabe von "Test" im Log erwartet, aber es passiert nichts.

    Kann das überhaupt funktionieren oder setzt On() zwingend eine Id voraus.

    Gruß

    Dolomiti


  • Na ja,

    dein 'Falls Object' verlangt eine ID und AktuelleZeit ist kein ID sondern eine Abfrage die nur bei einem 'normalen' falls funktioniert.


  • Hallo

    nimm den Zeitplan aus Trigger damit habe ich das auch hinbekommen.


  • @fsjoke: Also war meine Vermutung mit der Id richtig.

    @nobse: Aber der Zeitplan wird doch nur zu einem bestimmten wiederkehrend Zeitpunkt ausgeführt.

    Vielleicht zur Erklärung folgendes:

    Ziel des Ganzen soll sein dass in meinem Arbeitszimmer die Rollade runterfährt wenn ein Spiel gestartet wird. Dieses Skript funktioniert über Aufruf von Schedule() jede Minute auch soweit. Das ganze ist aber nur nötig wenn es hell draussen ist. Also wollte ich den Skriptteil innerhalb von Schedule() nur tagsüber ausführen lassen und jetzt hänge ich.

    !

    + '%" '; if (x < Spieleliste.length-1) { Abfrage += 'or '; } } ! /* Prozesse vom PC abfragen und auswerten */ schedule("*/1 * * * *", function(){ exec("wmic -Uxxx%xxx //10.20.30.40 \'SELECT Name FROM win32_process WHERE " + Abfrage + "\'", function (error, stdout, stderr) { var Prozessliste = stdout.split('\n'); var status = false; var laufendesSpiel = "Keins"; for (x = 2; x < Prozessliste.length-1; x++) { for (y=0; y < Spieleliste.length; y++) { status = (Prozessliste[x].includes(Spieleliste[y])); if (status && getState("hm-rpc.0.xxxx.LEVEL").val >= '60') { setState("hm-rpc.0.xxx.LEVEL",30); laufendesSpiel = Spieleliste[y]; //log('laufendes Spiel: ' + laufendesSpiel); break; } } } }); }); !


  • Ich habe das so gelöst
    347_skizze.png


  • D.h. es wird alle 5 Minuten geprüft ob es nach 20:00 Uhr ist und dann "SetAllCamOn" ausgeführt? Bis wann wird die Schleife denn dann durchlaufen? Bis Mitternacht?


  • genau


  • Könntest du mir evtl. noch die Codeansicht von deinem Blockly-Schnipsel zur Verfügung stellen. Ich glaube ich muss das in Javascript machen. Ich weiß nicht ob ich mein oben erwähntes Skript in Blockly realisieren kann.


  • Der Code bringt dich nicht weiter.

    Ziehe bitte dann noch aus Funktionen das Javascript_Funktion rein und hier kannst du dann dein script einstellen.

    function setAllCamOn() {
        var request = require("request");
        var url_ein = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    
        request(url_ein);
        log("20.00 Uhr CAM alle Eingeschaltet");
    }
    
    schedule("*/5 * * * *", function () {
      if (compareTime('20:00', null, ">", null)) {
        setAllCamOn();
      }
    });
    

    So jetzt ist Ostern. Muss mich ab morgen um die Enkelkinder kümmern.

    Gruß Norbert


  • Super. Vielen Dank und schöne Ostern.

    Mir ging es auch nur um den Schedule-Part. Dann werde ich mich jetzt mal ans ausprobieren begeben.

Suggested Topics

1.3k
Online

38.3k
Users

43.8k
Topics

611.8k
Posts