NEWS

Wert der Variable? Ich stehe auf dem Schlauch


  • skorpil sagte:

    „false“ oder „inaktiv"

    Das war auch zum Zeitpunkt des Skriptstarts der Fall ? Die SV wird nur ausgewertet, wenn das Skript gestartet wird. Ergänze es mal durch einen Trigger und schau im Log nach, ob auf Änderung der SV reagiert wurde.

    on('hm-rega.0.30304', function(dp) {
       log('dea: ' + dp.state.val);
    });
    

  • paul53 Danke, mache ich. Melde mich morgen. Gute Nacht m Paul, und vielen Dank.


  • paul53 sagte in Wert der Variable? Ich stehe auf dem Schlauch:

    on('hm-rega.0.30304', function(dp) { log('dea: ' + dp.state.val); });

    Gerade getestet:

    javascript.0	2019-03-25 22:51:44.194	info	script.js.common.Test.Test: dea: false
    javascript.0	2019-03-25 22:50:14.150	info	script.js.common.Test.Test: dea: true
    

    Es wird reagiert!


  • skorpil sagte:

    Es wird reagiert!

    Dann ist doch alles in Ordnung.


  • paul53

    ich habe den Eindruck, dass das Script bei Scriptstart NICHT reagiert. Erst bei einer Änderung der Variablen und tracking mit "on" ,reagiert das Script. Ist das ein bug?


  • skorpil sagte:

    das Script bei Scriptstart NICHT reagiert

    Das glaube ich nicht. Wie sieh das komplette Skript jetzt aus ? Wenn es nur den Trigger enthält, passiert beim Skriptstart nichts.


  • paul53

    //bei Skriptstart Cron Job starten, wenn Automower ein
    schedule('27,50 14-18 * * *', function () {
    
    if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) {
    

    Ausgangspunkt meiner ganzen Tests war folgendes: Ich wollte erreichen, dass eine Funktion zu den definierten cron Zeitpunkten nur aufgerufen wird, wenn die Variable hm-rega.0.30304 auf true steht. Nun habe ich aber im log gesehen, dass die Funktion zu den Zeitpunkten gestartet wird, obwohl ja der Wert der Variablen auf false stand.

    Sehr merkwürdig


  • skorpil zur Sicherheit hier nochmal das komplette Sript:

    // ##################################################################
    //         Regen ermitteln und in Wetter Regen schreiben     
    // ##################################################################
    function regen_ermitteln() {
        
    //Definitionen
    var idOpenWeater = 'openweathermap.0.forecast.current.state'/*Actual state*/;
    var idVariable = 'hm-rega.0.32978'/*Wetter Regen*/
    
    //Wetterdaten auslesen 
    wetterdaten = getState(idOpenWeater).val;
    
    //finde regen oder niesel
    var regen = wetterdaten.lastIndexOf('Regen')+1;
    var niesel = wetterdaten.lastIndexOf('Niesel')+1;
    var Regen = wetterdaten.lastIndexOf('regen')+1;
    var Niesel = wetterdaten.lastIndexOf('niesel')+1;  
    
    // wenn gefunden dann
    if (regen + niesel + Regen + Niesel > 0) {
        regen = true;
        } else
        {regen = false;}
        log(regen);
    
    //Variable setzen
    setState(idVariable, regen);
     };
    
    
    
    //bei Skriptstart Cron Job starten
    schedule('0 13 * * *', function () {
    
    if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val = true) {
        regen_ermitteln();
    };
    
    });
    
    //bei Skriptstart: Start
    //regen_ermitteln();
    
    
    

  • skorpil sagte:

    das komplette Sript:

    Nur um 13:00 Uhr wird ermittelt, ob es regnet. In der Abfrage steht eine Zuweisung und kein Vergleich. Richtig:

    schedule('0 13 * * *', function () {
       if(getState('hm-rega.0.30304'/*Automower Daemon Modus*/).val == true) regen_ermitteln();
    });
    

  • paul53 ahhhh, okay. Wiederum vielen mitternächtlichen Dank.

    JavaScript hat es in sich. Ich bin froh, dass es gut Lehrer gibt.

Suggested Topics

2.0k
Online

34.7k
Users

40.8k
Topics

558.5k
Posts