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. JavaScript
  5. if Problem

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    864

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

if Problem

Geplant Angeheftet Gesperrt Verschoben JavaScript
5 Beiträge 3 Kommentatoren 346 Aufrufe 2 Watching
  • Ä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.
  • J Offline
    J Offline
    jones1975
    schrieb am zuletzt editiert von
    #1

    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?

    paul53P CodierknechtC 2 Antworten Letzte Antwort
    0
    • J jones1975

      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?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @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.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      J 1 Antwort Letzte Antwort
      0
      • paul53P 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 Offline
        J Offline
        jones1975
        schrieb am zuletzt editiert von jones1975
        #3

        @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.

        paul53P 1 Antwort Letzte Antwort
        0
        • J 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.

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @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.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          1 Antwort Letzte Antwort
          0
          • J jones1975

            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?

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

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

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            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

            759

            Online

            32.6k

            Benutzer

            82.1k

            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