Hallo Zusammen,
mit folgendem beispielhaften Code kann man das RPC Limit umgehen. Die RPCs werden in eine Warteschlange eingereiht und über einen Timer nacheinander abgearbeitet. Eventuell kann es jemand auf seine Bedürfnisse anpassen.
Gruß Martin
Code
let rpcQueue = [];
let rpcQueueIntervall = 5 * 1000;
let rpc = {
shutterIndex: 0,
shutterAction: 'NoAction'
};
function rpcQueuePush(shutterIndex,shutterAction) {
let newrpc = Object.create(rpc);
newrpc.shutterIndex = shutterIndex;
newrpc.shutterAction = shutterAction;
rpcQueue.push(newrpc);
}
function rpcQueueShift() {
if (rpcQueue.length > 0) {
let nextrpc = rpcQueue.splice(0,1);
print(nextrpc[0].shutterIndex,nextrpc[0].shutterAction);
/*
Call Shelly ...
*/
}
}
rpcQueuePush(1,'adjustShutterOnShutterClosePosition');
rpcQueuePush(2,'adjustShutterOnShutterOpenPosition');
rpcQueuePush(3,'getShutterTimespec');
// Empty rpcQueue
Timer.set(rpcQueueIntervall, true, function () {
rpcQueueShift();
});
Alles anzeigen