Compare commits

..

No commits in common. "master" and "0.0.1" have entirely different histories.

2 changed files with 31 additions and 44 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "Divera Status", "name": "Divera Status",
"version": "0.0.2", "version": "0.0.1",
"description": "Übernehmen des Status aus der Divera App in Alarmiator", "description": "Übernehmen des Status aus der Divera App in Alarmiator",
"main": "base.js", "main": "base.js",
"service": "service.js", "service": "service.js",

View File

@ -238,54 +238,41 @@ async function onStateChange(consumer_id, status_id){
} }
} }
function sleep(ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms);
});
}
async function startAPI() { async function startAPI() {
while(true){ let _auth = await auth()
try{ if(_auth){
let _auth = await auth() global.logger.info('auth OK')
if(_auth){ var _pulled_data = await pull()
global.logger.info('auth OK') while(_pulled_data !== null){
var _pulled_data = await pull() if(_pulled_data !== null){
while(_pulled_data !== null){ if(_pulled_data.success){
if(_pulled_data !== null){ var d = _pulled_data.data
if(_pulled_data.success){ if('cluster' in d){
var d = _pulled_data.data pulled_data['consumer'] = d['cluster']['consumer']
if('cluster' in d){ pulled_data['status'] = d['cluster']['status']
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 )
}
});
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
}
}
} }
_pulled_data = await pull() if('monitor' in d){
if(_pulled_data === null){ var m = d['monitor'][config.MONITOR_ID]
global.logger.debug('_pulled_data === null, reauth') Object.entries(m).forEach(([key, value]) => {
_auth = await auth() // wenn 'monitor' nicht in pulled_data ist das der erste pull, dann alle status in ALARMiator abgleichen (betrifft hautsächlich den EB/NEB status)
_pulled_data = await pull() if(!('monitor' in pulled_data) || ('monitor' in pulled_data && value.status !== pulled_data['monitor'][key]['status'])){
if(_pulled_data === null){ onStateChange(value.id,value.status )
global.logger.debug('_pulled_data === null after reauth, EXIT!!') }
} });
pulled_data['monitor'] = d['monitor'][config.MONITOR_ID]
} }
} }
} }
}catch(err){ _pulled_data = await pull()
console.error(err); 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!!')
}
}
} }
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??')
} }