NEWS
CreateStateAsync erzeugt Fehlermeldung
-
HI,
ich will eines meiner Scripte auf Async umbauen, um mir setTimeout zu ersparen. Leider bekomme ich immer einen Fehler aber mir ist nicht klar warum.
Ich habe gelesen dass das Problem daher rührt dass i anfangs einen Wert von 0 hat.Aber warum ist das ein Problem und wie kann ich dieses beheben / umgehen?
Mache ich anstelle von createStateAsync nur createState funktioniert alles
Hier das Script:
// ******************************************************************************************************* // // SchaltUhr // // // v1.0 - 10.02.2022 init // // // ******************************************************************************************************** // ----------------------------------------------------------------------------- // allgemeine Variablen // ----------------------------------------------------------------------------- var loglevel = 2; // Loglevel 0 = kein Logging / 1 -3 Logging wird genauer var debugging = false; // Debugging on/off - Bei On werden keine Aktoren geschalten nur Log-Ausgaben var Systemlog = true; // Systemmeldungen anlegen ja/nein var instanz = '0_userdata.0'; instanz = instanz +'.'; var pfad0 = 'DeviceSwitchingTimers'; pfad0 = pfad0 +'.'; const devices = [ /*Device ID */ /*Device Name für Datenpunkt */ /*Device Typ (state / level) */ /*Doppelfenster Küche - Steckdose rechts - rechts*/ {'deviceID':'shelly.0.xxxxxxx', 'deviceName':'Steckdose_Kueche_Doppelfenster_rechts-rechts', 'deviceType':'state'}, /*Doppelfenster Küche rechts - Steckdose rechts - links*/ {'deviceID':'shelly.0.xxxxxxx', 'deviceName':'Steckdose_Kueche_Doppelfenster_rechts-links', 'deviceType':'state'}, /*Doppelfenster Küche - Steckdose links - rechts*/ {'deviceID':'hm-rpc.0.xxxxxxx', 'deviceName':'Steckdose_Kueche_Doppelfenster_links-rechts', 'deviceType':'state'}, /*Doppelfenster Küche - Steckdose links - links*/ {'deviceID':'hm-rpc.0.xxxxxxx', 'deviceName':'Steckdose_Kueche_Doppelfenster_links-links', 'deviceType':'state'} ]; async function createDeviceStates(){ try { for(var i = 0; i < Object.keys(devices).length; i++) { await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.switchingAutomatic', {name: 'Automatisches Schalten', type:'boolean', def:false, read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.onTime1', {name: 'Einschaltzeit 1', type:'string', def:'00:00', read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.onTime2', {name: 'Einschaltzeit 2', type:'string', def:'00:00' , read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.offTime1', {name: 'Ausschaltzeit 1', type:'string', def:'23:59' , read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.offTime2', {name: 'Ausschaltzeit 2', type:'string', def:'23:59' , read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.reactOnSleepingMode', {name: 'Einschaltzeit 1', type:'boolean', def:false , read:true, write:true}); // Unterscheidung Typen (state / level) switch(devices[i].deviceType){ case 'state': // Gerätetyp State await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.stateSleepingModeOn', {name: 'Gerätestatus bei Schlafmodus ein', type:'boolean', def:false , read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.stateSleepingModeOff', {name: 'Gerätestatus bei Schlafmodus aus', type:'boolean', def:true , read:true, write:true}); break; case 'level': // Gerätetyp Level await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.levelSleepingModeOn', {name: 'Gerätelevel bei Schlafmodus ein', type:'number', def:0 , read:true, write:true}); await createStateAsync(instanz + pfad0 + devices[i].deviceName + '.levelSleepingModeOff', {name: 'Gerätelevel bei Schlafmodus aus', type:'number', def:100 , read:true, write:true}); break; } } } catch (error) { log(`Unexpected error - ${error}`, 'error'); } } createDeviceStates(); /* on({id: devices[i].sensorID, change:'any'}, function (dp) { }); */
Hier die Fehlermeldung:
2022-02-10 14:23:27.808 - warn: javascript.0 (694436) State "0_userdata.0.DeviceSwitchingTimers.Steckdose_Kueche_Doppelfenster_links-rechts.switchingAutomatic" not found 2022-02-10 14:23:27.808 - warn: javascript.0 (694436) at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1967:33) 2022-02-10 14:23:27.808 - warn: javascript.0 (694436) at processImmediate (internal/timers.js:466:21) 2022-02-10 14:23:27.808 - error: javascript.0 (694436) script.js.Wandtablet.Schaltuhr: Unexpected error - Error: State "0_userdata.0.DeviceSwitchingTimers.Steckdose_Kueche_Doppelfenster_links-rechts.switchingAutomatic" not found
Hat hier jemand eine Idee?
-
@peoples sagte in CreateStateAsync erzeugt Fehlermeldung:
*/Also bei mir hat er nur beim allerersten Start den Fehler gebracht, bei einem Restart / Neustart ging es ohne Fehler.
Er bringt es ja auch nur beim 3. ElementSteckdose_Kueche_Doppelfenster_links-rechts
wobei er den State noch anlegt.Merkwürdig
-
@peoples sagte in CreateStateAsync erzeugt Fehlermeldung:
Mache ich anstelle von createStateAsync nur createState funktioniert alles
Mach doch mal ein Issue im Adapter auf. Eigentlich sollte createStateAsync nur ein Wrapper um createState sein.
-
@alcalzone
Alles klar das mach ich morgen. Finde es auch komisch aber hatte da schon einen Beitrag aus 2020 gefunden der selbiges umschreibt.
Such ich Mal raus und ergänze ihn hier dann -
Issue erstellt:
https://github.com/ioBroker/ioBroker.javascript/issues/955