Sahil Posted September 16 Share Posted September 16 I get error regularly after updating the firmware executing an old running script at in function called from system08:59:18 Uncaught Error: Too many calls in progress08:59:19 at });08:59:19 ^ Script: let variables = { collectionInterval: 2000, // Time in milliseconds between data collections sendInterval: 2000, // Time in milliseconds to send data in bulk mqttTopic: 'abc', hardwareId: '08F9E0E627FC', dataBuffer: [], // Buffer to store device status data enableA: true, // Flag to enable/disable collection for device A (id: 0) enableB: true // Flag to enable/disable collection for device B (id: 1) }; function getDeviceStatus() { let commonData = { ts: new Date().toISOString() }; let collectedA = !variables.enableA; // Assume collected if A is disabled let collectedB = !variables.enableB; // Assume collected if B is disabled function checkAndPush() { if (collectedA && collectedB) { if (variables.enableA) { var dataEntryA = Object.assign({}, commonData, deviceData[0]); variables.dataBuffer.push(dataEntryA); } if (variables.enableB) { var dataEntryB = Object.assign({}, commonData, deviceData[1]); variables.dataBuffer.push(dataEntryB); } publishBulkToMQTT(); // Push data to MQTT once both devices are processed } } let deviceData = []; if (variables.enableA) { Shelly.call("EM1.GetStatus", {"id": 0}, function(responseA) { if (responseA) { Shelly.call("EM1Data.GetStatus", {"id": 0}, function(responseEmDataA) { if (responseEmDataA) { responseA['emd'] = responseEmDataA; } deviceData[0] = responseA; collectedA = true; checkAndPush(); }); } else { collectedA = true; // Mark A as processed even if no data checkAndPush(); } }); } if (variables.enableB) { Shelly.call("EM1.GetStatus", {"id": 1}, function(responseB) { if (responseB) { Shelly.call("EM1Data.GetStatus", {"id": 1}, function(responseEmDataB) { if (responseEmDataB) { responseB['emd'] = responseEmDataB; } deviceData[1] = responseB; collectedB = true; checkAndPush(); }); } else { collectedB = true; // Mark B as processed even if no data checkAndPush(); } }); } if (!variables.enableA && !variables.enableB) { return; } } function publishBulkToMQTT() { if(variables.dataBuffer.length > 0){ let mqttData = { name: variables.hardwareId, type: 'powerpro', data: variables.dataBuffer }; MQTT.publish(variables.mqttTopic, JSON.stringify(mqttData)); variables.dataBuffer = []; // Clear the buffer after sending } } Timer.set(variables.collectionInterval, true, getDeviceStatus); Timer.set(variables.sendInterval, true, publishBulkToMQTT); Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish Link to comment Share on other sites More sharing options...
Martin G Posted September 30 Share Posted September 30 I already had this kind of error in the past (with different firmware). It could be if you make too many Shelly.Call in a row. But this is not the case here because you wait for a call to complete before making a new one. In other words, the next call is embedded in the return function of the first one. I finally happened to find that : copy the entire script content, delete the script, create new empty script (can be with same name), paste the script content, save the script, made the trick, could run the script with no more error. Don't ask me why !?! Quote Translate Revert translation? English (American) Finnish French German Italian Portuguese (European) Spanish Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.