NEWS

Script zum Schalten eines HM Aktors zu verschiedenen Zeiten geht nicht…


  • Liebe Leute,

    anbei ein Script um unsere Weihnachtsbeleuchtung gesteuert ein und aus zu schalten - die ersten beiden Teile funktionieren, nur seit ich den Teil "EIN bei Weckzeit" drinnen hab, bleibt JavaScript komplett hängen und kein Script läuft mehr - reload JavaScript und vorher dieses Script deaktivieren und es gehen die anderen Scripts wieder…

    // Zuordnung Klartextnamen - Datenpunkte
    var SteckdoseGartenhuetteState = 'hm-rpc.0.LEQ1319363.2.STATE';
    
    // EIN bei Dämmerung
    on ({astro: "goldenHour", shift: 0}, function () { // shift bleibt für spätere Aktionen drinnen, aber auf 0
        setState (SteckdoseGartenhuetteState, true);
    });
    
    // AUS um 20:15 Uhr
    on ({time: {hour: 20, minute: 15}}, function () {
        setState (SteckdoseGartenhuetteState, false);
    });
    
    // EIN bei Weckzeit
    var weckzeit = getState("hm-rega.0.6791").val;
    weckzeit = weckzeit + ":00";
    weckstunde = weckzeit.slice(0,2);
    weckminute = weckzeit.slice(3,5);
    
    summe = weckstunde + weckminute;
    
    log(weckzeit + " XX " + weckstunde + " XX " + weckminute + " SUMME: " + summe);
    
    on({time: {hour: 'weckstunde', minute: 'weckminute'}}, function () {
        setState (SteckdoseGartenhuetteState, true);
    });
    
    

    Was stimmt da nicht?

    Nicht beirren lassen - ich hab da auch ein paar Versuche mit den Variablen drinnen, die mit dem Schalten nix zu tun haben…

    Grüße

    etv

  • Developer

    Kommentier doch mal deine slice Funktion aus und mach da konstanten daraus.

    Eventuell solltest du da auch bei der Deklaration der variablen darauf achten das var davor steht sonst sind die global was probleme verursachen kann. Außer du brauchst sie global, dann passt das.


  • ..danke!

    Ich hab nun das Script Zeile für Zeile aus- und wieder einkommentiert - der Fehler ist, dass weckstunde und weckminute Strings sind und keine Zahl!!

    Das ist das Problem, weil mit

    var testh = 9;
    var testm = 51;
    on({time: {hour: testh, minute: testm}}, function () {
        log("-----------------------------------------------------------------------------------------gelaufen");
    });
    

    funktioniert es!

    D.h. is muss die Strings irgendwie in eine Zahl konvertieren, eigentlich eh logisch, aber darauf bin ich gestern Abend nicht mehr gekommen.

    Grüße

    etv


  • Hallo,

    in dieser Zeile ist definitiv ein Fehler:

    on({time: {hour: 'weckstunde', minute: 'weckminute'}}, function () {
    

    weckstunde und weckminute werden durch das Hochkomma als String gewertet. Diese musst Du definitiv weg lassen.

    Versuche es mal mit:

    on({time: {hour: weckstunde, minute: weckminute}}, function () {
    

    Wahlweise kannst Du die beiden Variablen vor dem Aufruf mit parseInt umwandeln. z.B.:

    weckstunde = parseInt(weckstunde);
    

  • …ja so ist es! Ich hab es mit parseInt umgewandelt und die Hochkomma gelöscht und nun läuft es ohne Probleme, danke dir!

    Ja, JavaScript is noch nicht ganz meines 😄

    Just 4 Info - noch zu JavaScript:

    Nach dem Aufhängen gestern von JavaScript sind mir die Prozesse im Raspi trotz JavaScript restart hängen geblieben.....

    ...hab ich heute gesehen, als die CPU Last auf 70% oben war 😮

    Ich hab die Prozesse mit kill (aber mit -s 64! weil default kill ging nicht) verabschiedet und nun läuft's wieder rund!

    Was ich mich noch frage und im Forum noch nicht gefunden habe, wo ich die gesetzten schedules und subscriptions sehe - wird jedoch ein eigener Thread werden - das wird mehrere interessieren denke ich...

    --> der Link zum neuen Thread in dieser Frage: http://forum.iobroker.net/viewtopic.php … 798#p15334

    Grüße

    etv

Suggested Topics

  • 1
  • 9
  • 5
  • 5
  • 3
  • 4
  • 8
  • 2

1.8k
Online

38.3k
Users

43.7k
Topics

611.0k
Posts