NEWS
if Problem
-
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 codelet 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?
-
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 codelet 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?
@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.
-
@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.
-
@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.
@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.
-
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 codelet 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?
@jones1975
Vergleiche werden in JS mit==notiert ... wie in @paul53 's Beispielen schön zu sehen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden