Roxy in MATLAB Answers
Last activity on 7 May 2023

I am trying to collect battery voltage data from arduino parts and upload it from arduino into my Thingspeak channel. So far, I have troubleshot the hardware/wiring aspect, and that doesn't seem to be the issue. At this point, I am assuming the issue is with the code or the Thingspeak channel. Since my arduino board (elegoo arduino Uno R3) is hooked up to my computer using a USB cord, I tried using an HTTP GET request in order to send the information to the Thingspeak channel. I am under a time crunch and am unable to access any kind of Wifi or Ethernet shield, so that is why I am using the USB cord. I could be completely wrong in using the HTTP GET request --I am quite the novice here! Here is the code so far: #include <SoftwareSerial.h> SoftwareSerial Serial1(2, 3); // RX, TX // Define variables float voltage; unsigned long previousMillis = 0; const long interval = 60000; // Upload interval (in milliseconds) String apiKey = "P5LPXSRJT0G4K7VA"; String field = "field1"; String server = "api.thingspeak.com"; String channelID = "2131761"; void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { // Read voltage from sensor voltage = analogRead(A0) * 0.0049; // convert analog reading to voltage (0-5V) voltage = voltage * 5.17; // adjust the voltage to reflect the actual voltage // Print voltage to serial monitor Serial.print("Voltage: "); Serial.print(voltage); Serial.println(" V"); // Get current timestamp unsigned long currentMillis = millis(); // Check it's time to upload to ThingSpeak if (currentMillis - previousMillis >= interval) { // Update timestamp previousMillis = currentMillis; // Construct HTTP GET request String getRequest = "GET /update?api_key="; getRequest += apiKey; getRequest += "&"; getRequest += field; getRequest += "="; getRequest += String(voltage); getRequest += "&"; getRequest += "field2=Times"; getRequest += " HTTP/1.1\r\n"; getRequest += "Host: "; getRequest += server; getRequest += "\r\n"; getRequest += "Connection: close\r\n\r\n"; getRequest += "X-THINGSPEAK-CLIENT: arduino\r\n"; getRequest += "Content-Type: application/x-www-form-urlencoded\r\n"; getRequest += "Content-Length: "; getRequest += String(voltage); getRequest += "\r\n"; getRequest += "Host: api.thingspeak.com\r\n"; getRequest += "User-Agent: Arduino/1.0.0\r\n"; getRequest += "\r\n"; getRequest += "\r\n"; getRequest += channelID; // Send HTTP GET request to ThingSpeak via serial communication Serial1.println(getRequest); // Print response from ThingSpeak to serial monitor while (Serial1.available()) { Serial.write(Serial1.read()); } Serial.println(); } delay(1000); } Again, I really have no clue what I am doing here, so I am not surprised if what I have is entirely wrong. Any feedback is greatly appreciated!
Prajna Bhat in MATLAB Answers
Last activity on 11 Feb 2023

The ThingSpeak API provides the possibility to embed the chart with historical values of a channel in a web page. Now I would also like to show the last value of a channel as a number on this page. I looked into some of the answers. But I could not understand. Can someone please share the JavaScript code OR the HTML code? I am new to ThingSpeak and Web Development. Please help me out!! Thank you, Prajna Bhat
Pete Shepherd in Discussions
Last activity on 18 Aug 2022

I have an ESP32 that has 5 values (solarW, batteryV, pumpW, pumpRPM and pumpLPM) that I'm writing to 5 fields on a Thingspeak channel. if ((millis() - fifteenTstart) > 15000){ Serial.println("Updating Thingspeak...."); ThingSpeak.setField(1, solarW); ThingSpeak.setField(2, batteryV); ThingSpeak.setField(3, pumpW); ThingSpeak.setField(4, pumpRPM); ThingSpeak.setField(5, pumpLPM); int x = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); if(x == 200){ Serial.println("Channel update successful."); } else{ Serial.println("Problem updating channel. HTTP error code " + String(x)); } } It works fine when there's a good connection to the internet and Thingspeak, but there's a 10 second or so delay when Thingspeak is unavailable (WiFi, internet or website non-connectivity). I would like the code to recognise that there's no ThingSpeak connection musch faster (1 second or less woud be good, but I'll take two!). Or, if it's possible to just send the data out without the code waiting for a confirmation back (I only need the data to go OUT from the ESP32 to Thingspeak, nothing needs to come back). Need faster Thingspeak connection timeout in ESP32 code MQTT is more of a fire and forget routine that you can use with ThingSpeak, though you may still have some connection delay. Our REST interface requires your client to wait for the response from the server. If you disconnect before the response with the REST interface, your data wont be posted. I've also been able to get paralell processes running on an ESP32, here is one tutorial I've used. Thanks Christopher. Looks like the parallel prcoessing route will be a good solution. I didn't know the ESP32 had dual core processing, definitely worth learning about! Multi threading is fun, but it does add some serious complexity to debugging. I would still recomend MQTT for this purpose and do the multi threads for learning sake. Good luck either way. thingspeak esp32 updating speed delay faster code connection
Aniket Manjare in MATLAB Answers
Last activity on 30 Sep 2021

I can succesfulkly run the code on Matlab but ,it shows error while running on ThingSpeak. I really dont understan whats wrong, can you help me error i am getting on Thingspeak Matlab Analysis Warning: While loading an object of class 'linearDegradationModel': Unrecognized field name "AlphaLevel". > In MATLABAnalysis>getValues (line 50) In MATLABAnalysis (line 34) Error using rulModel/predictRUL (line 269) Operands to the logical and (&&) and or (||) operators must be convertible to logical scalar values. Error in MATLABAnalysis>getValues (line 62) [estTTS, CITTS, pdfTTS] = predictRUL(T.mdl{failureMode},[-NaN healthIndicator],threshold); Error in MATLABAnalysis (line 34) [estTTS,healthIndicator,threshold,EmailAlertFlag] = getValues(features, out,dropBoxAccessToken, IFTTTURL, secondChID,thresholdTTS,labels,secondReadAPIKey) %Get the others values to be written on second channel
Adam in MATLAB Answers
Last activity on 19 May 2021

I modified the WriteMultipleFields example to include a MAX31855 which measures the board temp and a K-type thermocouple. I seem to be getting the "Problem updating channel. HTTP error code -401" in my seriel monitor however it seems to updating my channel properly. I copied and pasted my API so I dont think there is a typo, especially since it updates the channel. Any ideas on how to fix this? or can it be left alone since it still works? Also, can you change the timezone in the visualization from GMT to a different zone? I updated my profile but that didn't do it I am using an Arduino Nano 33 IoT
seda buse Can in MATLAB Answers
Last activity on 18 May 2018

i have to send command from android studio to thingspeak and then control esp32, but i couldnt connect them.How can i solve this problem?? help

About ThingSpeak

The community for students, researchers, and engineers looking to use MATLAB, Simulink, and ThingSpeak for Internet of Things applications. You can find the latest ThingSpeak news, tutorials to jump-start your next IoT project, and a forum to engage in a discussion on your latest cloud-based project. You can see answers to problems other users have solved and share how you solved a problem.