Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. if Problem

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    if Problem

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jones1975 last edited by

      Hallo,
      würde gerne den Status meines Mowers in einen Datenpunkt schreiben. Nun macht mein if statement leider nicht das, was es soll. Hier der code

      let sStatus =getState('husqvarna-automower.0.2fac1184-8924-45d0-bcf1-a764b18c8bf5.mower.activity').val;
      console.log(sStatus)
      let sActiviy = "Bitte am Gerät prüfen";
      if (sStatus="PARKED_IN_CS") sActiviy ="Parkt bis auf Weiteres"
      if (sStatus = "GOING_HOME") sActiviy="Auf dem Weg in die Ladestation";
      if (sStatus = "MOWING") sActiviy = "Mäht";
      if (sStatus ="CHARGING") sActiviy="Aufladevorgang";
      if (sStatus ="LEAVING") sActiviy = "Verlässt die Ladestation";
      if (sStatus = "STOPPED_IN_GARDEN") sActiviy = "Im Garten gestoppt. Manuelles eingreifen erforderlich";
      setState('0_userdata.0.Mower.Status',sActiviy)
      console.log(sActiviy)
      console.log(sStatus)
      

      wenn ich nun das erste mal sStatus in der Console mir anzeigen lasse, kommt der richtige Wert "PARKED_IN_CS"

      Wenn ich nun das zweite mal sStatus aufrufe und auch sActivity kommt nicht wie erwartet "PARKED_IN_CS" "Parkt bis auf Weiteres"

      sondern der letzte Wert "Stopped in Garden" "Im Garten gestoppt. Manuelles eingreifen erforderlich"

      wo liegt mein Fehler?

      paul53 Codierknecht 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @jones1975 last edited by paul53

        @jones1975 sagt: wo liegt mein Fehler?

        Es fehlt ein Trigger, der auf Veränderung des Datenpunktes "...activity" reagiert.
        Mit Trigger:

        const idStatus = 'husqvarna-automower.0.2fac1184-8924-45d0-bcf1-a764b18c8bf5.mower.activity';
        
        var sStatus =getState(idStatus).val;
        
        function translate() {
            console.log(sStatus)
            let sActiviy = "Bitte am Gerät prüfen";
            if (sStatus == "PARKED_IN_CS") sActiviy ="Parkt bis auf Weiteres";
            if (sStatus == "GOING_HOME") sActiviy="Auf dem Weg in die Ladestation";
            if (sStatus == "MOWING") sActiviy = "Mäht";
            if (sStatus == "CHARGING") sActiviy="Aufladevorgang";
            if (sStatus == "LEAVING") sActiviy = "Verlässt die Ladestation";
            if (sStatus == "STOPPED_IN_GARDEN") sActiviy = "Im Garten gestoppt. Manuelles eingreifen erforderlich";
            setState('0_userdata.0.Mower.Status', sActiviy, true);
            console.log(sActiviy);
        }
        
        translate(); // Skriptstart
        on(idStatus, function(dp) { // triggert bei Wertänderung
            sStatus = dp.state.val;
            translate();
        });
        

        EDIT: Vergleiche korrigiert.

        J 1 Reply Last reply Reply Quote 0
        • J
          jones1975 @paul53 last edited by jones1975

          @paul53 vielen Dank. Klar der Trigger macht Sinn 🙂 Dachte nur nicht, dass ich eine Function dafür bräuchte. Mal schauen ob es läuft, wenn der Mäher wieder rausfährt.

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @jones1975 last edited by paul53

            @jones1975 sagte: Dachte nur nicht, dass ich eine Function dafür bräuchte.

            Wenn man auf die Übersetzung beim Skriptstart verzichtet, kommt man ohne die zusätzliche Funktion aus.

            const idStatus = 'husqvarna-automower.0.2fac1184-8924-45d0-bcf1-a764b18c8bf5.mower.activity';
            const idActivity = '0_userdata.0.Mower.Status';
            
            on(idStatus, function(dp) { // triggert bei Wertänderung
                let sStatus = dp.state.val;
                console.log(sStatus)
                let sActiviy = "Bitte am Gerät prüfen";
                if (sStatus == "PARKED_IN_CS") sActiviy ="Parkt bis auf Weiteres";
                else if (sStatus == "GOING_HOME") sActiviy="Auf dem Weg in die Ladestation";
                else if (sStatus == "MOWING") sActiviy = "Mäht";
                else if (sStatus == "CHARGING") sActiviy="Aufladevorgang";
                else if (sStatus == "LEAVING") sActiviy = "Verlässt die Ladestation";
                else if (sStatus == "STOPPED_IN_GARDEN") sActiviy = "Im Garten gestoppt. Manuelles eingreifen erforderlich";
                setState(idActivity, sActiviy, true);
                console.log(sActiviy);
            });
            

            EDIT: Vergleiche korrigiert.

            1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @jones1975 last edited by

              @jones1975
              Vergleiche werden in JS mit == notiert ... wie in @paul53 's Beispielen schön zu sehen.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              806
              Online

              31.8k
              Users

              80.0k
              Topics

              1.3m
              Posts

              3
              5
              198
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo