actions: {
updateTemperature: assign(({ context, event }: { context: TemperatureContext; event: TemperatureEvent }) => {
return {
temperature: (() => {
console.log('temperature', event['value']);
return event['value'];
})(),
recentTemperatures: (() => {
console.log('called');
const recentTemperatures = context.recentTemperatures;
recentTemperatures.push(event['value']);
if (recentTemperatures.length > context.smoothingFactor) {
recentTemperatures.shift();
}
console.log('recentTemperatures', recentTemperatures);
return recentTemperatures;
})(),
updateAveragedTemperature: (() => {
const averagedTemperature = context.recentTemperatures.reduce((acc, temp) => acc + temp, 0) / context.recentTemperatures.length;
console.log('averagedTemperature', averagedTemperature);
return averagedTemperature;
})(),
entryTimestamp: (() => {
const entryTimestamp =
context.averagedTemperature >= context.lowerThreshold && context.averagedTemperature <= context.upperThreshold
? (context.entryTimestamp ?? Date.now())
: null;
console.log('entryTimestamp', entryTimestamp);
return entryTimestamp;
})(),
};
}),
},
These are being called, but as I can tell by the log the actors context are mixed...
recentTemperatures (5) [29.76, 220.18, 29.59, 220.2, 29.8]
(I know only one device is turned on with temp ~220), so it should look something like
recentTemperatures (5) [220.10, 220.18, 220.31, 220.21, 220.14]