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 -
@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.setDevice
Habe 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: 13
Ich probiere mal .trim()
Edit:
Funktioniert...Danke!