Skip to content

Commit

Permalink
Avoid crash within async function, improve #237 & #238
Browse files Browse the repository at this point in the history
  • Loading branch information
DutchmanNL committed Oct 27, 2023
1 parent 4bb8e92 commit 718efab
Showing 1 changed file with 69 additions and 60 deletions.
129 changes: 69 additions & 60 deletions main.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,78 +151,87 @@ class Discovergy extends utils.Adapter {
await request(requestUrl, async (error, response, body) => {

if (!error && response.statusCode === 200) {

// we got a response

this.log.debug(`[doDiscovergyMeter] Data : ${JSON.stringify(body)}`)
const data = JSON.parse(body);
try {

this.log.debug(`[doDiscovergyMeter] Data : ${JSON.stringify(body)}`)
const data = JSON.parse(body);

for (const attributes in data) {
for (const attributes in data) {

if (data.time){
await this.doStateCreate(stateName + '.timestamp', 'Timestamp of last value update', data.time);
}
if (data.time){
await this.doStateCreate(stateName + '.timestamp', 'Timestamp of last value update', data.time);
}

for (const values in data[attributes]) {
for (const values in data[attributes]) {

if (stateAttr[values] === undefined) {
this.log.error(`State type : ${values} unknown, send this information to the developer ==> ${values} : ${JSON.stringify(data[attributes][values])}`);
} else {
if (stateAttr[values] === undefined) {
this.log.error(`State type : ${values} unknown, send this information to the developer ==> ${values} : ${JSON.stringify(data[attributes][values])}`);
} else {

if (stateAttr[values].type !== undefined) {

switch (values) {
case 'power':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_Consumption', 'Power_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_Delivery', 'Power_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_Delivery', 'Power_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_Consumption', 'Power_Consumption', 0);
}

break;

case 'power1':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T1_Consumption', 'Power_T1_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T1_Delivery', 'Power_T1_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T1_Delivery', 'Power_T1_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T1_Consumption', 'Power_T1_Consumption', 0);
}

if (stateAttr[values].type !== undefined) {

switch (values) {
case 'power':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_Consumption', 'Power_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_Delivery', 'Power_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_Delivery', 'Power_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_Consumption', 'Power_Consumption', 0);
}

break;

case 'power1':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T1_Consumption', 'Power_T1_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T1_Delivery', 'Power_T1_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T1_Delivery', 'Power_T1_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T1_Consumption', 'Power_T1_Consumption', 0);
}

break;

case 'power2':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T2_Consumption', 'Power_T2_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T2_Delivery', 'Power_T2_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T2_Delivery', 'Power_T2_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T2_Consumption', 'Power_T2_Consumption', 0);
}

break;

case 'power3':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T3_Consumption', 'Power_T3_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T3_Delivery', 'Power_T3_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T3_Delivery', 'Power_T3_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T3_Consumption', 'Power_T3_Consumption', 0);
}

break;

default:

await this.doStateCreate(stateName + '.' + values, values, data[attributes][values]);
break;

case 'power2':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T2_Consumption', 'Power_T2_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T2_Delivery', 'Power_T2_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T2_Delivery', 'Power_T2_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T2_Consumption', 'Power_T2_Consumption', 0);
}

break;

case 'power3':
if (data[attributes][values] > 0) {
await this.doStateCreate(stateName + '.Power_T3_Consumption', 'Power_T3_Consumption', data[attributes][values]);
await this.doStateCreate(stateName + '.Power_T3_Delivery', 'Power_T3_Delivery', 0);
} else {
await this.doStateCreate(stateName + '.Power_T3_Delivery', 'Power_T3_Delivery', Math.abs(data[attributes][values]));
await this.doStateCreate(stateName + '.Power_T3_Consumption', 'Power_T3_Consumption', 0);
}

break;

default:

await this.doStateCreate(stateName + '.' + values, values, data[attributes][values]);

}
}
}
}
}

} catch (e) {
this.log.error('[doDiscovergyMeter Response] Error retrieving information for : ' + meterId);
this.setState('info.connection', false, true);
isConnected = false
}

this.setState('info.connection', true, true);
Expand Down

0 comments on commit 718efab

Please sign in to comment.