NEWS
[gelöst]Vergleich String mit State.val fehlerhaft
-
Hallo Community,
ich habe ein Problem mit einem Vergleich eines State.val mit einem String.
Hier der Skriptteil, der nicht so funktioniert wie ich mir das vorstelle:function checkCommand (ZwayId, ZwayCommand){ if(!existsState(ZwayId + '.id')){ log('setDevices: ZwayId nicht vorhanden'); return false; }else{ let DeviceType = getState(ZwayId + '.deviceType'); log('setDevices: typeof: ' + typeof(DeviceType.val)); log('setDevices: Wert: ' + DeviceType.val); log('setDevices: Kommando: ' + ZwayCommand); if(DeviceType.val == 'switchBinary'){ log('setDevices: Typ switchBinary erkannt'); if (!regexSwitchBinary.test(ZwayCommand)){ log('setDevices: ZwayCommand nicht erlaubt'); return false; }else{ log('setDevices: ZwayCommand erlaubt'); return true; } } } return false; }Der if in Zeile 11 wird nicht true, obwohl typeof(DeviceType.val) 'string' im Log ausgibt und der Wert auch 'switchBinary' ist.
Wo ist mein Denkfehler?
Bin für jeden Tipp dankbar...Gruß
nordstern -
Hallo Community,
ich habe ein Problem mit einem Vergleich eines State.val mit einem String.
Hier der Skriptteil, der nicht so funktioniert wie ich mir das vorstelle:function checkCommand (ZwayId, ZwayCommand){ if(!existsState(ZwayId + '.id')){ log('setDevices: ZwayId nicht vorhanden'); return false; }else{ let DeviceType = getState(ZwayId + '.deviceType'); log('setDevices: typeof: ' + typeof(DeviceType.val)); log('setDevices: Wert: ' + DeviceType.val); log('setDevices: Kommando: ' + ZwayCommand); if(DeviceType.val == 'switchBinary'){ log('setDevices: Typ switchBinary erkannt'); if (!regexSwitchBinary.test(ZwayCommand)){ log('setDevices: ZwayCommand nicht erlaubt'); return false; }else{ log('setDevices: ZwayCommand erlaubt'); return true; } } } return false; }Der if in Zeile 11 wird nicht true, obwohl typeof(DeviceType.val) 'string' im Log ausgibt und der Wert auch 'switchBinary' ist.
Wo ist mein Denkfehler?
Bin für jeden Tipp dankbar...Gruß
nordstern@nordstern19_72
Sieht alles richtig aus. Log ? -
@nordstern19_72
Sieht alles richtig aus. Log ?@paul53
Ja, keine (roten) Fehler.Skript aktuell:
function checkCommand (ZwayId, ZwayCommand){ if(!existsState(ZwayId + '.id')){ log('setDevices: ZwayId nicht vorhanden'); return false; }else{ let DeviceType = getState(ZwayId + '.deviceType'); if(getState('ZwayDebug').val==1){ log('setDevices: typeof: ' + typeof(DeviceType.val)); log('setDevices: Wert: ' + DeviceType.val); log('setDevices: Kommando: ' + ZwayCommand); } //if(DeviceType.val == 'switchBinary'){ if(DeviceType.val == DeviceType.val){ if(getState('ZwayDebug').val==1){ log('setDevices: Typ switchBinary erkannt'); } if (!regexSwitchBinary.test(ZwayCommand)){ log('setDevices: ZwayCommand nicht erlaubt'); return false; }else{ if(getState('ZwayDebug').val==1){ log('setDevices: ZwayCommand erlaubt'); } return true; } } } return false; }Log:
javascript.0 2020-01-22 19:52:35.856 info (12468) script.js.common.setDevice: setDevices: Command: Ok: 200 javascript.0 2020-01-22 19:52:35.708 info (12468) script.js.common.setDevice: setDevices: ZwayCommand erlaubt javascript.0 2020-01-22 19:52:35.708 info (12468) script.js.common.setDevice: setDevices: Typ switchBinary erkannt javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: Kommando: on javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: Wert: switchBinary javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: typeof: string javascript.0 2020-01-22 19:52:32.041 info (12468) script.js.common.setDevice: registered 2 subscriptions and 0 schedules javascript.0 2020-01-22 19:52:32.037 info (12468) Start javascript script.js.common.setDeviceHabe das if mal 'gebrückt' für ein komplettes Log und um zu sehen, ob sonst alles funktioniert.
-
@paul53
Ja, keine (roten) Fehler.Skript aktuell:
function checkCommand (ZwayId, ZwayCommand){ if(!existsState(ZwayId + '.id')){ log('setDevices: ZwayId nicht vorhanden'); return false; }else{ let DeviceType = getState(ZwayId + '.deviceType'); if(getState('ZwayDebug').val==1){ log('setDevices: typeof: ' + typeof(DeviceType.val)); log('setDevices: Wert: ' + DeviceType.val); log('setDevices: Kommando: ' + ZwayCommand); } //if(DeviceType.val == 'switchBinary'){ if(DeviceType.val == DeviceType.val){ if(getState('ZwayDebug').val==1){ log('setDevices: Typ switchBinary erkannt'); } if (!regexSwitchBinary.test(ZwayCommand)){ log('setDevices: ZwayCommand nicht erlaubt'); return false; }else{ if(getState('ZwayDebug').val==1){ log('setDevices: ZwayCommand erlaubt'); } return true; } } } return false; }Log:
javascript.0 2020-01-22 19:52:35.856 info (12468) script.js.common.setDevice: setDevices: Command: Ok: 200 javascript.0 2020-01-22 19:52:35.708 info (12468) script.js.common.setDevice: setDevices: ZwayCommand erlaubt javascript.0 2020-01-22 19:52:35.708 info (12468) script.js.common.setDevice: setDevices: Typ switchBinary erkannt javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: Kommando: on javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: Wert: switchBinary javascript.0 2020-01-22 19:52:35.707 info (12468) script.js.common.setDevice: setDevices: typeof: string javascript.0 2020-01-22 19:52:32.041 info (12468) script.js.common.setDevice: registered 2 subscriptions and 0 schedules javascript.0 2020-01-22 19:52:32.037 info (12468) Start javascript script.js.common.setDeviceHabe das if mal 'gebrückt' für ein komplettes Log und um zu sehen, ob sonst alles funktioniert.
@nordstern19_72
Ergänze mallog('setDevices: Länge: ' + DeviceType.val.length);Vielleicht hängt noch ein unsichtbares Zeichen dran ?
-
Tatsächlich...
javascript.0 2020-01-22 20:18:14.246 info (12468) script.js.common.setDevice: setDevices: Länge: 13Ich probiere mal .trim()
Edit:
Funktioniert...Danke!
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