Hello, in a ThingSpeak channel, I am reading every one second the information of two current signals (I have the licensed application).
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 = 123;readAPIKey = 'XXX';writeChannelID = 123;writeAPIKey = 'YYY';%%%%%%%%%%%%%%%%%%%%%% 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;endCorriente = 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;enddisplay (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;endEnergia = [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);
OUTPUT:
Corriente = 3.4000
Voltaje = 116
Potencia = 394
Energia = 0.0040
Best Answer