I would recommend doing a few updates in a batch, rather than every time there is a new entry.

For example, you could read one minute of data or five minutes of data and then update the whole minute of data. ]]>

I currently have a MATLAB Analysis routine that adds those two signals and writes, on the same channel, the result of that sum. In the routine I can check that effectively if the sum of the two channels is being done.

I do that now with a good result but my problem is that the channel is not updated except when I run MATLAB Analysis.

How can I make the channel automatically update every second?

-------------------------------------------------------------------------------

This is my routine:

readChannelID = 757632;

readAPIKey = '5SVF05OWH2SVJW4F';

writeChannelID = 757632;

writeAPIKey = 'UY7YXVEC9TID63A1';

%%%%%%%%%%%%%%%%%%%%%% CALCULO DE CORRIENTE %%%%%%%%%%%%%%%%%%%%%%

[Cte1, timeStamp] = thingSpeakRead(readChannelID,'Fields',1,'numPoints', 2, 'ReadKey', readAPIKey);

anyMissingValues = sum(isnan(Cte1));

if sum(anyMissingValues) > 0

missingValueIndex = find(~sum(isnan(Cte1),2));

cleanCte1 = Cte1(missingValueIndex, :);

cleanTimeStamps = timeStamp(missingValueIndex);

else

cleanCte1 = Cte1;

cleanTimeStamps = timeStamp;

end

[Cte2, timeStamp] = thingSpeakRead(readChannelID,'Fields',4,'numPoints', 2, 'ReadKey', readAPIKey);

anyMissingValues = sum(isnan(Cte2));

if sum(anyMissingValues) > 0

missingValueIndex = find(~sum(isnan(Cte2),2));

cleanCte2 = Cte2(missingValueIndex, :);

cleanTimeStamps = timeStamp(missingValueIndex);

else

cleanCte2 = Cte2;

cleanTimeStamps = timeStamp;

end

Corriente = round([cleanCte1 + cleanCte2],1);

display (Corriente, 'Corriente')

%%%%%%%%%%%%%%%%%%%%%% VOLTAJE %%%%%%%%%%%%%%%%%%%%%%

[Voltaje, timeStamp] = thingSpeakRead(readChannelID,'Fields',2,'numPoints', 2, 'ReadKey', readAPIKey);

anyMissingValues = sum(isnan(Voltaje));

if sum(anyMissingValues) > 0

missingValueIndex = find(~sum(isnan(Voltaje),2));

cleanVoltaje = Voltaje(missingValueIndex, :);

cleanTimeStamps = timeStamp(missingValueIndex);

else

cleanVoltaje = Voltaje;

cleanTimeStamps = timeStamp;

end

display (cleanVoltaje, 'Voltaje')

%%%%%%%%%%%%%%%%%%%%%% CALCULO DE POTENCIA %%%%%%%%%%%%%%%%%%%%%%

Potencia = round([Corriente * cleanVoltaje],0)

%%%%%%%%%%%%%%%%%%%%%% CALCULO DE ENERGIA %%%%%%%%%%%%%%%%%%%%%%

[Energia1, timeStamp] = thingSpeakRead(readChannelID,'Fields',3,'numPoints', 2, 'ReadKey', readAPIKey);

anyMissingValues = sum(isnan(Energia1));

if sum(anyMissingValues) > 0

missingValueIndex = find(~sum(isnan(Energia1),2));

cleanEnergia1 = Energia1(missingValueIndex, :);

cleanTimeStamps = timeStamp(missingValueIndex);

else

cleanEnergia1 = Energia1;

cleanTimeStamps = timeStamp;

end

[Energia2, timeStamp] = thingSpeakRead(readChannelID,'Fields',5,'numPoints', 2, 'ReadKey', readAPIKey);

anyMissingValues = sum(isnan(Energia2));

if sum(anyMissingValues) > 0

missingValueIndex = find(~sum(isnan(Energia2),2));

cleanEnergia2 = Energia2(missingValueIndex, :);

cleanTimeStamps = timeStamp(missingValueIndex);

else

cleanEnergia2 = Energia2;

cleanTimeStamps = timeStamp;

end

Energia = [cleanEnergia1 + cleanEnergia2];

display (Energia, 'Energia')

%%%%%%%%%%%%%%%%% Write the results in fields 6, 7 and 8 of the same channel %%%%%%%%%%%%%%%%%%%%

thingSpeakWrite(writeChannelID, 'Fields', [6,7,8], 'Values',...

[Corriente, Potencia, Energia],'WriteKey',writeAPIKey);