diff --git a/manifest.json b/manifest.json index d727405..7e79b18 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { "name": "Divera Status", - "version": "0.0.1", + "version": "0.0.2", "description": "Übernehmen des Status aus der Divera App in Alarmiator", "main": "base.js", "service": "service.js", diff --git a/service.js b/service.js index 1972a98..cf630db 100644 --- a/service.js +++ b/service.js @@ -238,41 +238,54 @@ async function onStateChange(consumer_id, status_id){ } } +function sleep(ms) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); +} + async function startAPI() { - let _auth = await auth() - if(_auth){ - global.logger.info('auth OK') - var _pulled_data = await pull() - while(_pulled_data !== null){ - if(_pulled_data !== null){ - if(_pulled_data.success){ - var d = _pulled_data.data - if('cluster' in d){ - pulled_data['consumer'] = d['cluster']['consumer'] - pulled_data['status'] = d['cluster']['status'] - } - if('monitor' in d){ - var m = d['monitor'][config.MONITOR_ID] - Object.entries(m).forEach(([key, value]) => { - // wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status) - if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){ - onStateChange(value.id,value.status ) + while(true){ + try{ + let _auth = await auth() + if(_auth){ + global.logger.info('auth OK') + var _pulled_data = await pull() + while(_pulled_data !== null){ + if(_pulled_data !== null){ + if(_pulled_data.success){ + var d = _pulled_data.data + if('cluster' in d){ + pulled_data['consumer'] = d['cluster']['consumer'] + pulled_data['status'] = d['cluster']['status'] } - }); - pulled_data['monitor'] = d['monitor'][config.MONITOR_ID] + if('monitor' in d){ + var m = d['monitor'][config.MONITOR_ID] + Object.entries(m).forEach(([key, value]) => { + // wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status) + if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){ + onStateChange(value.id,value.status ) + } + }); + pulled_data['monitor'] = d['monitor'][config.MONITOR_ID] + } + } + } + _pulled_data = await pull() + if(_pulled_data === null){ + global.logger.debug('_pulled_data === null, reauth') + _auth = await auth() + _pulled_data = await pull() + if(_pulled_data === null){ + global.logger.debug('_pulled_data === null after reauth, EXIT!!') + } } } } - _pulled_data = await pull() - if(_pulled_data === null){ - global.logger.debug('_pulled_data === null, reauth') - _auth = await auth() - _pulled_data = await pull() - if(_pulled_data === null){ - global.logger.debug('_pulled_data === null after reauth, EXIT!!') - } - } + }catch(err){ + console.error(err); } + await sleep(10000); + global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??') } - global.logger.info('auth mit API_KEY war nicht erfolgreich. Service ist gestoppt und startet nicht mehr automatisch??') } \ No newline at end of file