Thingspeak update with error code 211 from Arduinos

Hello, I have been encountering several times a day for a few weeks an error when updating my data stored on Thingspeak (computerized hive parameters).
The return code of my Arduinos is 211!
But I can't find the meaning of this code anywhere...
Does anyone know more?
Here is one of my hives: https://thingspeak.mathworks.com/channels/1289244
Thanks
PS: The update continues to be done but it seems to be missing points (those that return the error 211)

2 commentaires

The 211 is the HTTP status code returned from the server. I can't say why you're getting that without knowing the sketch.

Can you share the snippet of code that sets up the connection to ThingSpeak? Specifically what address is being used to connect to the ThingSpeak API server?

It will also be useful to know when you started to see this, given your channel is many years old, and what might have changed on your end around the time you noticed the issue.

Connectez-vous pour commenter.

Réponses (9)

Gilles
Gilles le 11 Fév 2025

1 vote

Hello, I have just finished putting my test hive (hive 6) back into service. It currently does not update my server but it updates Thingspeak on the public channel 2159981.
I put the same program as my other hives: I would like to be sure to be able to reproduce the error code 211 before any modifications... If necessary I would create a test hive in my server in case the error code does not occur!
You can access my server from the following address:
https://gilles54.no-ip.info:9443/
Thank you
Hello, thank you for your interest in my problem.
Here is what you asked me (extract from my hive program)
I have "normally" not changed anything in my Thingspeak update chain...
Can you tell me what you call the address to connect to the ThingSpeak API server?
Thank you
void thingspeak(float t, float h, float units, int lum, float TempInt, byte eau)
{
unsigned long myChannelNumber= 00000000;
const char * myWriteAPIKey= "XYZ";
/* sets Thingspeak fields with data */
ThingSpeak.setField(1, t); // assigns the value of field 1 to the outside temperature
ThingSpeak.setField(2, h); // assigns the value of field 2 to the outdoor humidity
ThingSpeak.setField(3, units); // assigns the value of field 3 to the weight
if (PresenceCapteurLuminosite == 1 ){ThingSpeak.setField(4, lum);} // assigns the value of field 4 to the exterior brightness
if (PresenceCapteurTemperatureInterieure == 1 ) {ThingSpeak.setField(5,TempInt);} // assigns the value of field 6 to the indoor temperature
if ( PresenceCapteurPluie == 1 ) {ThingSpeak.setField(6, eau); } // assigns the value of field 6 to rain
ThingSpeak.setStatus(F("Update 2 successful!")); // assigns the Status field with the message Update successful:
/* writing fields in ThingSpeak */
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // we actually write the pre-filled fields above
ecritureJdB(rtc.now(), "We are in ThingSpeak:",'0', x , "=return code"); // send to the log writing function on the SD
Serial.print(F("return code things: "));
Serial.println(x);
if(x == 200)
{ // if it went well
reboot = 0; //we have an internet connection so we reinitialize reboot
} // end of ThingSpeak update error step
else {err(6,x); } // if error we go to the error management function
} // end of ThingSpeak function
/* the error code handling function is: */
void err(byte code, byte x)
{
char tY[5]; // character array for outdoor temperature conversion
String tY1; // character string for outdoor temperature conversion
char hygY[5]; // character array for hygrometry conversion
String hygY1; // character string for hygrometry conversion
switch (code)
{
case 6 :{
reboot = reboot + 1; // we store a non-update
testconnexion(); // we test the internet connection via google
CompteAlertServT = CompteAlertServT + 1; // we increment to trigger the sending of a daily email to report the ThingSpeak update problem
if (AlerteThingSpeak == 1 && OKThingSpeak == 0 && CompteAlertServT >= NbAvantAlerteServeur)
{
envoimail(rtc.now(),11,String(x),nbessai); // send the daily email on the malfunction
if (soustraitancemail == 1)
{
FTPMoi(0); // send to the FTP server
}
if (retourmail == 0)
{
OKThingSpeak = 1; CompteAlertServT = 0;
} // if the email sending went well, we set it to send only once a day
}
ecritureJdB(rtc.now(), "retourmail = ",retourmail, OKThingSpeak , " = OKThingSpeak"); // send to the function for writing the logbook on the SD
commentaires = F("Pb ThingSpeak");
break; // we exit!
} // end of error code 6
}
}
/* and the error management that sends me an alert email after 5 failures per day is: */
/* Email sending function */
boolean envoimail(DateTime now,char quel,String NomFichierMonsuel,int nbessai)
{ //nomfichier mensuel contains either the IP address or the name of the monthly file to send depending on the needs...
EMailSender::EMailMessage message; // structure defined in EmailSender.h
/* Definition of email recipients*/
const char* arrayOfEmail[] = {"mail@laposte.net","mail@gmail.com","rolande.mangin@wanadoo.fr","messagerie@orange.fr" }; // email address of your recipients
byte nb_Destinaire_Mail=3; // number of recipients of the mails (count the email addresses of the line above!
String msgsujet1 = F("Hi, this is hive No. "); // assign a default value
String msgcorps1 = F("Hello, this is hive No. "); // assign a default value
String msgcorps6 = F("<br> Sending mail of the day on ");
String msgcorps7 = F(" H");
String msgcorps8 = F(" Mn");
String msgcorps9 = F(" s.");
String msgcorps10 = F(" to ");
switch (which one)
{ // test to know which email to send
case 11 :
{ // send message pb updating ThingSpeak...
piecejointe = 0;
String msgsujet2 = F(". There is a problem updating ThingSpeak");
message.subject = msgsujet1 + numRuche + msgsujet2;
String msgcorps2 = F(".<br>The error code of ThingSpeak is: ");
String msgcorps3 = F(".<br>A problem updating ThingSpeak occurred today!<br> We must check if it is just a fleeting problem or if the problem is long-lasting.");
message.message = msgcorps1 + numRuche + msgcorps2 + NomFichierMonsuel + msgcorps3 + msgcorps6 + now.day() + msgcorps10
+ now.hour() + msgcorps7 + now.minute() + msgcorps8 +now.second() + msgcorps9 ; // here I use nomfichiermensuel to transmit the return error code of ThingSpeak
break;
} // we exit the test
}
......
}

8 commentaires

PS: I just got error code 208 for the first time on one of my hives...
Thanks for sharing the code snippet. ThingSpeak servers doesn't send the 211 or 208 status codes.
Can you please confirm your devices are using the latest version of this library? If you are using the library, all ThingSpeak writes are sent to api.thingspeak.com
Also, can you please descibe how your devices are connected to the internet? via ethernet cable, GSM card, or wifi? If GSM card, what GSM network are you using?
I am connected to the internet via Ethernet (shield w5500 on Arduino)
And I use the library Thingspeak by MathWorks version 2.01. This seems to be the latest version available...
Thanks
You're using the latest version of the library. If you look at the possible return codes, you don't see any 211 or 208. Looking at the HTTP status code, those seem like they could be from an FTP server.
Can you please double check where you're getting that code from?
Hello, first of all for information although I have not touched my programs (5 Arduinos with the same problems) for a few days I no longer receive an alert about the bad update of ThingSpeak...
The return code comes from this line of code:
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
the error code is the integer x if equal to 200 it is OK otherwise...
Thanks
Hello, error 211 returned today on 2 hives already (4:09 p.m. and 4:42 p.m.) knowing that I am only alerted by email for the 6th problem in 24 hours...
Thanks
Hello, on February 4, 25 between 0 and 5 errors (email alert not received so less than 6 errors) for the 5 hives. But today alert email for the 5 hives between 2:12 p.m. and 8:13 p.m....
Thanks

There have been no changes on the ThingSpeak server side in over a week. There have been no other reports like this from other users either. If there has been no change on the device end, we might have to consider something in the connectivity later - i.e., your Internet provider or router. Any changes in that?

Connectez-vous pour commenter.

Gilles Mangin-Voirin
Gilles Mangin-Voirin le 7 Fév 2025

0 votes

No change of internet service provider, nor cabling, nor box,... The connection works very well at the level of sending my emails (FTP and Email Senders) the update of my personal server (on raspberry) also works well (every 4 minutes)...
And that does not explain the error code 211 either... it is indeed a return value from ThingSpeak...
Thanks

3 commentaires

If you're open to an experiment where you turn off the sending to your FTP and leave everything else, do you still see the 211?

Hello, I need FTP because otherwise no more emails, no more updates to my server...
AND this version of the Arduino program has been in place since the beginning of 2024 and I have only had these errors for a maximum of 1 month, roughly since 2025...
Thanks
Vinod
Vinod le 10 Fév 2025

Can you try inserting some ethernet.flush() immediately after you send any data over FTP? I think that will point us in the right direction.

Connectez-vous pour commenter.

Gilles
Gilles le 10 Fév 2025

0 votes

yes I can do that, and but in the return of the function:
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
x is a local variable of the thingspeak update function (not a global variable...)
I will tonight or tomorrow go back to my development hive in my office and see while connected to a portal PC on the serial monitor if I already get the same errors...
I will get back to you as soon as this is done
Thanks
PS: I have a specific Thingspeak channel for this test model...

1 commentaire

Vinod
Vinod le 10 Fév 2025
Modifié(e) : Vinod le 10 Fév 2025
Thank you. I suspect that the network stack is unintentionally crossing information between requests. An FTP request's response is being used by the method inside writeFields() to get the status code. Calling a flush() should commit the network stack and prevent this.

Connectez-vous pour commenter.

Gilles
Gilles le 12 Fév 2025

0 votes

Hello, I have just finished putting my test hive (hive 6) back into service. It currently does not update my server but it updates Thingspeak on the public channel 2159981.
I put the same program as my other hives: I would like to be sure to be able to reproduce the error code 211 before any modifications... If necessary I would create a test hive in my server in case the error code does not occur!
You can access my server from the following address:
https://gilles54.no-ip.info:9443/
Thank you

3 commentaires

Vinod
Vinod le 12 Fév 2025
Modifié(e) : Vinod le 12 Fév 2025
Thanks, @Gilles. I did some basic analysis of the data in channel 2159981 using the below MATLAB code:
[a,t] = thingSpeakRead(2159981,DateRange=[dateshift(datetime('now'),'start','day','previous'),datetime('now')])
plot(t(2:end), medfilt1(seconds(diff(t)),1))
axis tight
It looks like since 10:21 US ET on Feb 12th, your device has been consistently sending data every 5 minutes (+/- 2 seconds.) At least based on the data in the channel, since this time, every response should have been a 200 status code.
Hello, yes indeed since the reactivation of my hive 6 on channel 2159981 no worries only codes 200! But currently I no longer receive alerts on my other channels either (in any case less than 6 errors per 24 hours... since no more alert emails.
I give you a real channel that led me to contact you about this error: 1633674.
I tried to create it myself by pasting your code into the page:
https://thingspeak.mathworks.com/apps/matlab_analyses/360798/edit
but I get an error:
Cannot use MATLAB visualization code 'plot(t(2:end), medfilt1(seconds(diff(t)),1))' in the MATLAB Analysis app. You must create a <a target='_blank' rel="nofollow noopener noreferrer" href='/apps/matlab_visualizations/templates'>MATLAB Visualization</a>.
I was not able (I am new to math lab) to create the template of visualization...
Thanks
Vinod
Vinod le 13 Fév 2025
You can click the "Open in MATLAB Online" button above and execute the code directly in MATLAB.

Connectez-vous pour commenter.

Gilles
Gilles le 14 Fév 2025

0 votes

Hello, I put your expression in matlab basic, we extract the data from the chain over the last 2 days but it does not display if there were error codes (211 or 208...). You have to manually check if we have a regular update of the chain...
And for several days no more errors on my 5 hives in operation....
I continue my research I will go update my hive 5 with a new sketch of error tracking log... It works well on my test hive!
A+
Thanks
Gilles
Gilles le 18 Fév 2025

0 votes

Hello, I finally found the origin of error 211 which is actually a -301 error....
This error does not occur often at the moment so I had trouble tracking it down.
I modified a few days ago my hive 5 (operational) and the test hive 6 both sent me around 1:20-1:21 (French time) an error code -301 (which appeared as error code 211 in my emails because my error management and mail sending function converted the integer into a byte... (programming error on my part, sorry)
However I did not find an error code -301 on the list of possible errors of ThingSpeak!
Thanks

14 commentaires

Vinod
Vinod le 18 Fév 2025
Modifié(e) : Vinod le 18 Fév 2025
Thanks for confirming the 211 is not coming from ThingSpeak. Likewise the 301 is not from the ThingSpeak server, but from somewhere along the network chain between your Arduino and the ThingSpeak server.
A 301 status code is typically seen when the request is made to a server instance that forwards the request to the right place. This can happen if there is a stale DNS cache entry, most likely upstream of your Arduino. Typically these auto-resolve. You can force an it to resolve by disconnecting the Arduino client and reconnecting it when you get a 301.
Hello, the 2 hives equipped with the ThingSpeak update error tracking version actually had the same error "-301" at almost the same time.
And indeed it only lasted on one point then everything returned to "normal (code 200)" I sometimes have several days without a problem then sometimes more than 6 errors (hence my alert emails) in 24 hours and often all the hives...
By doing nothing the problem resolves itself, at first I was looking for how to prevent these errors.
Thank you
Vinod
Vinod le 18 Fév 2025
The reason all hives see the issue at the same time is the DNS cache is likely shared - likely at your router/internet gateway. If they share the same internet connection, any one of them disconnecting and reconnecting the client should fix the issue for all hives.
Yes the internet connection is unique (a single site with the same Ethernet switch and behind the same router) Can we force the disconnection and reconnection of the client? (via Arduinos) like if(X == -301) { do this :}
Thanks
Vinod
Vinod le 19 Fév 2025
Modifié(e) : Vinod le 19 Fév 2025
You should be able to do something like this. The next execution of ThingSpeak.writeFields() should automatically re-connect to the server and hopefully reset the stale DNS cache.
if (X== -301) {
client.flush();
client.stop();
}
I initialize thingSpeak like this: (in the setup)
EthernetClient client; //this class is used for several functions
ThingSpeak.begin(client);
But the client class is also used for other functions:
eg: list the files contained on the remote SD in order to offer a web page to download or delete files,
update my server,
call a server page to trigger the sending of mail,
test the network status (google connection test),...
Sending via FTP uses objects named:
EthernetClient dclient;
EthernetClient clientserveur;
Of course at the end of each function calling client I have a client.stop(); (no flush) except for ThingSpeak which is initialized in the setup and that's it.
Wouldn't it be better to dedicate an EthernetClient class only to ThingSpeak?
Thanks
Vinod
Vinod le 20 Fév 2025
Not knowing what other constraints you have with regard to memory footprint of your compiled code, heap space availability, etc. If you can have it, I'd recommend a separate client for the ThingSpeak, and indeed for each of your separate network connections to avoid hard-to-identify issues related to network packets being consumed by the wrong handler.
I will try to create a specific client for ThingSpeak, because normally I have enough memory on the Arduino Mega since I discovered and worked around a bug in the Arduino memory management:
If instead of putting the functions directly in the loop we put in a call to the function the amount of memory used and extremely lower ex:
loop {
thingspeak(t, h, units, lum, TempInt, eau);
}
void thingspeak(float t, float h, float units, int lum, float TempInt, byte eau)
{
// check consistency units before updating Thingspeak
wdt_enable(WDTO_4S); // activation of the watchdog we leave 4 seconds max to query the scale otherwise reboot
if (units + SecurisationMesurePoids < tableaumemoirepoids[i] )
{
if (monitor == 1){Serial.println(F("We will redo a reading of the ThingSpeak weight"));}//we have just lost more than 6 kg since the last stored point it is weird so we reread the weight
if ( Debug == 1 && SDOK == 1)
{
String tableau = "";
for (int i=0; i<=4; i++) // we retrieve the weights in a string
{
tableau = tableau + tableaumemoirepoids[i] + " Kg "; // conversion char to string
}
ecritureJdB(rtc.now(), Mois, 21 , units ,tableau );
} // end of the if debug
// so we re-read the scale to try to no longer have aberrant weights
units = balance.get_units(20),10; //get_units(n)reading and averaging of n "raw" values, minus the tare value, then scaling
if (remise_zero == 0) // if we do not want to reset the scale, we correct the slight difference to try to keep the true weight following a power outage
{
units = units-correction; //correction due to the absence of taring in the event of a power outage with the hive on the scale
}
} // end of the if units+...
wdt_reset(); // reset the watchdog counter
wdt_disable(); // turn off the watchdog
/* sets the Thingspeak fields with the data */
ThingSpeak.setField(1, t); // assigns the value of field 1 to the outdoor temperature
ThingSpeak.setField(2, h); // assigns the value of field 2 to the outdoor humidity
ThingSpeak.setField(3, units); // assigns the value of field 3 to the weight
if (PresenceSensorLuminosite == 1 ){ThingSpeak.setField(4, lum);} // assigns the value of field 4 to the outdoor brightness
if (PresenceSensorTemperatureInterior == 1 ) {ThingSpeak.setField(5,TempInt);} // assigns the value of field 6 to the indoor temperature
if (PresenceSensorPluie == 1 ) {ThingSpeak.setField(6, eau); } // assigns the value of field 6 to rain
ThingSpeak.setStatus(F("Update 2 successful!")); // assigns the Status field with the message Update successful:
/* writing fields in ThingSpeak */
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // we actually write the fields prefilled above
String infos2 = F("=ThingSpeak return code");
ecritureJdB(rtc.now(), Mois ,units, x ,infos2 ); // send to the function for writing the logbook on the SD
Serial.print(F("things return code: "));
Serial.println(x);
if(x == 200)
{ // if it went well
if (monitor == 1){Serial.println(F("ThingSpeak update successful.")); } // maybe hidden
reboot = 0; //we have an internet connection so we reinitialize reboot
} // end of the ThingSpeak update error step
else {
err(6,x);
if (AlerteThingSpeak == 1 && OKThingSpeak == 0 && CompteAlertServT >= NbAvantAlerteServeur)
{
envoimail(rtc.now(),lequel,String(x),nbessai); // send the daily email on the malfunction
if (soustraitancemail == 1)
{
FTPMoi(0); // send to the FTP server
}
if (retourmail == 0)
{
OKThingSpeak = 1; CompteAlertServT = 0;
} // if the email sending went well we position to send only once a day
}
} // if error we go to the error management function
} // end of the ThingSpeak function
this way of coding consumes much less memory than:
loop {
// check consistency units before updating Thingspeak
wdt_enable(WDTO_4S); // activation of the watchdog we leave 4 seconds max to query the scale otherwise reboot
if (units + SecurisationMesurePoids < tableaumemoirepoids[i] )
{
if (monitor == 1){Serial.println(F("We will redo a reading of the ThingSpeak weight"));}//we have just lost more than 6 kg since the last stored point it is weird so we reread the weight
if ( Debug == 1 && SDOK == 1)
{
String tableau = "";
for (int i=0; i<=4; i++) // we retrieve the weights in a string
{
tableau = tableau + tableaumemoirepoids[i] + " Kg "; // conversion char to string
}
ecritureJdB(rtc.now(), Mois, 21 , units ,tableau );
} // end of the if debug
// so we re-read the scale to try to no longer have aberrant weights
units = balance.get_units(20),10; //get_units(n)reading and averaging of n "raw" values, minus the tare value, then scaling
if (remise_zero == 0) // if we do not want to reset the scale, we correct the slight difference to try to keep the true weight following a power outage
{
units = units-correction; //correction due to the absence of taring in the event of a power outage with the hive on the scale
}
} // end of the if units+...
wdt_reset(); // reset the watchdog counter
wdt_disable(); // turn off the watchdog
/* sets the Thingspeak fields with the data */
ThingSpeak.setField(1, t); // assigns the value of field 1 to the outdoor temperature
ThingSpeak.setField(2, h); // assigns the value of field 2 to the outdoor humidity
ThingSpeak.setField(3, units); // assigns the value of field 3 to the weight
if (PresenceSensorLuminosite == 1 ){ThingSpeak.setField(4, lum);} // assigns the value of field 4 to the outdoor brightness
if (PresenceSensorTemperatureInterior == 1 ) {ThingSpeak.setField(5,TempInt);} // assigns the value of field 6 to the indoor temperature
if (PresenceSensorPluie == 1 ) {ThingSpeak.setField(6, eau); } // assigns the value of field 6 to rain
ThingSpeak.setStatus(F("Update 2 successful!")); // assigns the Status field with the message Update successful:
/* writing fields in ThingSpeak */
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // we actually write the fields prefilled above
String infos2 = F("=ThingSpeak return code");
ecritureJdB(rtc.now(), Mois ,units, x ,infos2 ); // send to the function for writing the logbook on the SD
Serial.print(F("things return code: "));
Serial.println(x);
if(x == 200)
{ // if it went well
if (monitor == 1){Serial.println(F("ThingSpeak update successful.")); } // maybe hidden
reboot = 0; //we have an internet connection so we reinitialize reboot
} // end of the ThingSpeak update error step
else {
err(6,x);
if (AlerteThingSpeak == 1 && OKThingSpeak == 0 && CompteAlertServT >= NbAvantAlerteServeur)
{
envoimail(rtc.now(),lequel,String(x),nbessai); // send the daily email on the malfunction
if (soustraitancemail == 1)
{
FTPMoi(0); // send to the FTP server
}
if (retourmail == 0)
{
OKThingSpeak = 1; CompteAlertServT = 0;
} // if the email sending went well we position to send only once a day
}
} // if error we go to the error management function
....
} // end ofl oop
On the other hand, with a client specific to ThingSpeak that is started in the setup via
EthernetClient ClientThingSpeak;
setup {
ThingSpeak.begin(ClientThingSpeak);
}
we will limit the risk of error -311 appearing or should we add in the function
void ThingSpeak a ClientThingSpeak.stop(); at the end of the function and at the beginning of the function a ClientThingSpeak.open();
?
Vinod
Vinod le 20 Fév 2025
Modifié(e) : Vinod le 20 Fév 2025
There is an overhead with calling a client.stop(), so I would only recommend it if you get a 301. The ThingSpeak.writeFields() should re-open the connection using the client if needed.
If I were to write the firmware for your device, I would initialize the client in the setup, and in the loop() I would do a writeFields() and if I get a 301, then stop() the client and retry the write with a 1s delay between each attempt. I'd do this 3 times and log an error if the write failed 3 times in a row. I would use this pattern for every web service my device uses. That way my device would be robust to web services not being available, for example.
Ok thanks I will test that (it will take time because the error appears less often at the moment...) I will keep you informed as soon as I have news.
Thanks again
I just added this piece of code in my sketch at the level of the ThingSpeak function
if(x == -301)
{
clientThingSpeak.stop(); // we stop the ThingSpeak EThertnet client
delay(1000); // we wait 1 second
/* writing fields in ThingSpeak */
int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); // we actually write the prefilled fields above
String infos3 = F("We just reinitialized ThingSpeak");
ecritureJdB(rtc.now(), Mois ,units, x ,infos3 ); // send to the function for writing the log on the SD
}
Hello in my error tracking this time I had a code -304 (Timeout waiting for server to respond) on my test hive on 05/23/25 at 3:56 a.m. French time....
A+
Vinod
Vinod le 26 Fév 2025
A 304 means the value is the same as it was last time it was requested. This typically happens when the device may be updating the channel at a rate higher than allowed and intermediate values are dropped until the next time the channel is eligible to be updated, OR, latency in the internet resulted in two writes, though being sent at appropriate intervals, are actually only hitting the server very close to each other, making it appear at the server as them exceeding the rate limit. I think it is safe to ignore this unless it happens very frequently.

Connectez-vous pour commenter.

Gilles
Gilles le 26 Fév 2025

0 votes

Hello, yesterday 02/25/25 I had a lot of -301 errors on all my hives, so my test hive too.
So I have on this hive a specific Ethernet client for ThingSpeak, I detected 10 -301 errors between 9:44 p.m. and 11:16 p.m. (French time)
When this error occurred I stopped the Thingspeak client, waited 1 second then tried to rewrite the ThingSpeak fields on the 10 errors.
Only 3 returned a 200 code after stopping and restarting the ThingSpeak client (is this due to chance or to this action?...)
Sometimes between 2 failures I had an OK update normally then an error again, this gives this:
9:44 p.m. -301, reset then -301
9:51 p.m. -301, reset then -301
9:56 p.m. 200
10:02 p.m. -301, reset then -301
10:07 p.m. -301, reset then -301
22:13 -301, reset then -301
22:15 200
22:24 200
22:29 200
22:34 -301, reset then 200
22:55 -301, reset then -301
23:00 -301, reset then -301
23:06 200
23:11 -301, reset then 200
23:16 -301, reset then 200
the rest all OK (200)
What do you think?
Knowing that my 5 operational hives presented the same update problem at the same times...
Thanks
Gilles
Gilles le 10 Mar 2025

0 votes

Hello, I finally (or unfortunately) got an error code -301 on my test hive today at 6:49 PM
10/3/2025 6:43:53 PM 7, 200, =ThingSpeak return code
6, 10/3/2025 6:49:10 PM 7, -301, =ThingSpeak return code
6, 10/3/2025 6:49:26 PM 7, -301, We just reset ThingSpeak
6, 10/3/2025 6:49:43 PM 7, -301, We just reset ThingSpeak
6, 10/3/2025 6:49:59 PM 7, -301, We just reset ThingSpeak
6, 10/3/2025 18:50:15 7, -301, We just reinitialized ThingSpeak
6, 10/3/2025 18:56:10 7, 200, =ThingSpeak return code
When the error -301 appears even stopping the client dedicated to ThingSpeak, waiting a second and then trying again does not seem to change anything...
Thanks

2 commentaires

Vinod
Vinod le 10 Mar 2025
Modifié(e) : Vinod le 10 Mar 2025
Did it autoresolve on its own? if not, what did you need to do to resolve it? Did all your hives see a 301, or just a few?
Only hives 1, 2 and 6 hive 4 nothing this month. 3 and 5 nothing today.
The problem solves itself later (but not by cutting and the client dedicated to ThingSpak, see logbook extract of hive 6 in the previous message)
They are all on the same ethernet network.

Connectez-vous pour commenter.

Communautés

Plus de réponses dans  ThingSpeak Community

Catégories

En savoir plus sur Read Data from Channel dans Centre d'aide et File Exchange

Produits

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by