Results for
Hello guys:
I am having a problem with something I'm doing, I don't know whether it is something related to thingspeak or to my program. I am using Curl library in c to make Get requests to send data to my channel, those data are are measurments of my Analog Discovery 2 device and they are instantaneous, (using the AD2 SDK library which was uploaded recently, and in it they use thingspeak to send the measurments too) . However, the updating to my channel is happenning very slowly (every new sample update happens each 15 seconds). What do you think is causing the problem? is the updating to the channels is usually slow and you can't do thing kind of fast uploading? or is it something that my code fails to communicate with the channel properly. I attached a photo to my program which shows the status of the Curl Get requests (which demonstrates the connectivity problem). Appreciating any help.
Hello, I see a difference in the number of elements returned by: https://api.thingspeak.com/channels/1389063/status.json?offset=0&results=2500&api_key=XXXXXXXXXXXXXX and https://api.thingspeak.com/channels/1389063/feeds.json?offset=0&results=2500&status=true&api_key=XXXXXXXX The first returns only 271 elements, the second 2500 as requested. Why is that?
I am working with an Arduino nodemcu board and a Tmp36 sensor. My channel updates fine if I use my browser with the following: https://api.thingspeak.com/update?api_key=xxxxxxxxx&field1=71, but does not update with the following sketch, although the serial monitor shows the commands are executed:
//Source code to the Temperature Sensor and ThingSPeak Server Blog String ssid = "XXX"; // SSID to connect to String password = "XXX"; // Our virtual wifi has no password (so dont do your banking stuff on this network) String host = "api.thingspeak.com"; // Open Weather Map API const int httpPort = 443; String uri = "/update?api_key=XXXX&field1=";
int setupESP8266(void) {
// Start our ESP8266 Serial Communication
Serial.begin(115200); // Serial connection over USB to computer
Serial.println("AT"); // Serial connection on Tx / Rx port to ESP8266
delay(10); // Wait a little for the ESP to respond
if (!Serial.find("OK")) return 1;
// Connect to 123D Circuits Simulator Wifi
Serial.println("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"");
delay(10); // Wait a little for the ESP to respond
if (!Serial.find("OK")) return 2; // Open TCP connection to the host:
Serial.println("AT+CIPSTART=\"TCP\",\"" + host + "\"," + httpPort);
delay(50); // Wait a little for the ESP to respond
if (!Serial.find("OK")) return 3;return 0; }
void anydata(void) {
int temp = map(analogRead(A0),20,358,-40,125);
// Construct our HTTP call
String httpPacket = "GET " + uri + String(temp) + " HTTP/1.1\r\nHost: " + host + "\r\n\r\n";
int length = httpPacket.length(); // Send our message length
Serial.print("AT+CIPSEND=");
Serial.println(length);
delay(10); // Wait a little for the ESP to respond if (!Serial.find(">")) return -1; // Send our http request
Serial.print(httpPacket);
delay(1000); // Wait a little for the ESP to respond
if (!Serial.find("SEND OK\r\n")) return;}
void setup() {
setupESP8266();
}
void loop() {
anydata();
delay(10000); }
hello, i have done my iot project using thingspeak as the monitoring source and its working well and good.But now i need get text message to a mobile when the field value gets reached to given threshold value and i have to get a alert text message.Is there any way to resolve my problem from thigspeak data to alert text message.
Thankyou.
Hi,
I am using Ublox SARA-R410M to send (cellular) data to ThingSpeak cloud. I found in the Ublox manual that AT+UHTTPC (POST data command) can do the job. The link below is the location which my data will be saved on ThingSpeak (field1):
"https://api.thingspeak.com/update?api_key=WRITE_API_KEY&field1="
Note that the "WRITE_API_KEY" is 16 characters (combination of letters and numbers).
AT command: AT+UHTTPC=<profile_id>,5, path,<filename>,<data>,<HTTP_content_type>
Based on the information above, which items should I use for path and filename? And how can I use this command in Arduino code?
I appreciate any help in advance.
Abbas
Hi,
I am using a Sparkfun LTE Shield with a SARA-R410M-02B-01 cellular module, an Arduino UNO, and an AT&T simcard to send data to ThingSpeak. I used "AT+UDNSRN" on Arduino code (below) to find IP address of "api.thingspeak.com". I found two different IPs using this command: "3.224.210.136","3.213.58.187" (also, nslookup command on CMD Windows gives me these IPs). Moreover, I found that some websites report "184.106.153.149" as ThingSpeak's IP. I used the "AT+USOCO" on Arduino code (below) for TCP connection using these three IPs:
Example of the Arduino codes:
lteSerial.println("AT+UDNSRN=0,\"api.thingspeak.com\""); //Find IP address
lteSerial.println("AT+USOCO=0,\"184.106.153.149\",\"80\""); //TCP Connection to ThingSpeak using IP address
But I got this error (for "AT+USOCO" command):
+CME ERROR: Operation not allowed
Any idea regarding which IP address should I use for "api.thingspeak.com"?
I appreciate any help in advance.
Abbas
I visualise my data with ThingSpeak (data from The Thing Network) and I would like to have something like a button to send a command (downlink). I can send downlink with the thing network but I would like : The thing speak (for interface) -> the thing network (for lora gateway management) -> my device I see talkback and some example with wifi node but it is not my case... Thank you for your reply
I have a fish feeder project running on an Arduino esp 32, it checks various parameter and feeds according to temperature. Unfortunately it has stopped, it no-longer talks to thingspeak and hence cannot upload data. I believe I have a free licence (according to thingspeak) I was only using 1 channel, hence 4 sufficient at this moment. How can I get it working again, ps feeding starts May!. I have googled and understand notice may have been given. Help please- relatively new to Arduino's and first project to us thingspeak. at the moment wireless communication appears more reliable.
If you are interested in live script lecture notes in the following areas, take a look at the short course ( Advanced MATLAB for Scientific Computing ) developed at Stanford. You can also download the required data for the examples from the course GitHub page.
- MATLAB Fundamentals
- Graphics and Data Visualization
- Efficient Code Writing
- System and File Manipulation
- Big Data Handling
- Numerical Linear Algebra
- Numerical Optimization
- Symbolic Toolbox, ODE, and PDE
- Statistical and Machine Learning
- Deep Learning
- Object-Oriented Programming
- Using MATLAB with Other Programming Languages
- Image Processing, Computer Vision, and Image Acquisition
- Signal Processing, Audio, and DSP System
Hola, mi proyecto es con NodeMcu ESP8266, en el puerto serial obtengo datos cada 2 minutos asi esta programado, en la grafica salta datos y algunas veces durante una hora o mas, Qoe podria hacer?
In many universities, introductory programming is taught as a foundation course. Students from different departments are usually brought together to learn to program in these foundation courses. Their home departments may have a programming language preference and that preference may change from department to department. Some universities either strictly teach one language in a single course, some of them teach multiple languages in the same course and give students the flexibility to choose their language for the assignments and projects. How can we make students multilingual when it comes to programming? Is there a way to teach multiple languages in a fair light, side by side without creating a new course or sacrificing one language to teach the other one? Dr. Nathan Kutz from the University of Washington found a creative way to teach MATLAB and Python side by side in his AMATH 301 course. This course is an introductory programming course at the University of Washington and almost all engineering students take it. Do you wonder how Dr. Kutz taught this course? Check out these recordings and course resources! They can be utilized in an in-person or a distance learning setting:
I'm monitoring a temp and humidity sensor outside of my house using a ESP32. I have it update every 15 minutes. On my channel I have a chart and numeric readout. The readout shows me that it is updating every 15 minutes but the chart's last update was 2 hours ago. This was working until I went into the properties of the chart and changed the time base from daily to 12 hours. I have tried refreshing the page, signing out and back in as well as reboot the computer, still 2 hours behind. Is there something else I have to do to reestablish the chart?
Thanks John
If you are a student or researcher looking for a project idea, have a look at the MathWorks Excellence in Innovation site. There is at least one IoT-based project for a Smart watering system, and a project with a Digital twin of a pneumatic system. If you ask me, most of the other projects could also be enhanced with an IoT based component shared on ThingSpeak!
#include <Keypad.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> #include <SoftwareSerial.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); SoftwareSerial ESP01(2, 3);
const byte ROWS = 4; // four rows
const byte COLS = 3; // three columns
char keys[ROWS][COLS] = { // keypad labels
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {12, 7, 8, 10}; //connect to keypad pins 12, 7, 8, 10
byte colPins[COLS] = {11, 13, 9}; // connect to keypad pins 11, 13, 9 column pinouts
Keypad customKeypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define Password_Length 5 #define DEBUG true #define IP "184.106.153.149"
// define pin numbers int buzzer = 5; // buzzer is connected to pin 5 int PIR = 6; // PIR is connected to pin 6
// intruder alarm password char Data[Password_Length]; char Master[Password_Length] = "1234"; byte data_count = 0, master_count = 0; bool Pass_is_good; char customKey; int val = 0;
// thingspeak & WiFi String apiKey = "xxxxxxxxxxxxxxxx"; // thingspeak API key
void setup() {
lcd.init();
lcd.backlight();
pinMode(buzzer, OUTPUT);
pinMode(PIR, INPUT);
Serial.begin(9600);
while (!Serial){
}
Serial.println("Starting...");
ESP01.begin(9600);
// Reset ESP8266, put it into mode 1 i.e. STA only, make it join hotspot / AP,
// establish single connection
ESP01.println();
sendData("AT+RST\r\n",2000,DEBUG);
sendData("AT+CWMODE=1\r\n",2000,DEBUG);
sendData("AT+CWJAP=\"AiPhone\",\"123889\"\r\n",20000,DEBUG);
sendData("AT+CIPMUX=0\r\n",4000,DEBUG);
// Make TCP connection String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += "184.106.153.149"; // Thingspeak.com's IP address cmd += "\",80\r\n"; sendData(cmd,4000,DEBUG);
// Read PIR sensor value val = digitalRead(PIR); // check if there was a state transition
String val1 = String(val);
if (val == HIGH)
{
Serial.println("Motion detected!");
delay(10);
Serial.println(val1);
}
else
{
Serial.println("Asleep");
delay(10);
//String val1 = String(val);
Serial.println(val1);
}
//String val1 = String(val);
//Serial.println(val1);//Prepare GET string String getStr = "GET /update?api_key="; getStr += apiKey; getStr += "&field1="; getStr += val1; getStr +="\r\n";
// Send data length & GET string
ESP01.print("AT+CIPSEND=");
ESP01.println (getStr.length());
Serial.print("AT+CIPSEND=");
Serial.println(getStr.length());
delay(500);
if(ESP01.find (">"))
{
Serial.print(">");
sendData(getStr, 2000, DEBUG);
}
//Close connection, wait a while before repeating
sendData("AT+CIPCLOSE", 16000, DEBUG); // 15 seconds delay between updates
}
if true
% code
endvoid loop() {
if (digitalRead(PIR) == HIGH)
{
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Enter Password: ");
customKey = customKeypad.getKey();
if (customKey)
{
Data[data_count] = customKey;
lcd.setCursor(data_count, 1);
lcd.print(Data[data_count]);
data_count++;
} if (data_count == Password_Length - 1)
{
lcd.clear(); if (!strcmp(Data, Master))
{
lcd.print("OK");
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
delay(200);
digitalWrite(buzzer, HIGH);
delay(200);
digitalWrite(buzzer, LOW);
}
else
{
lcd.print("Wrong Password");
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
} lcd.clear();
clearData();
}
}
else
{
lcd.noBacklight(); // turn backlight off
lcd.clear(); // clear display
delay(250);
}
}String sendData(String command, const int timeout, boolean debug)
{
String response = "";
ESP01.print(command);
long int time = millis();
while( (time+timeout) > millis())
{
while(ESP01.available())
{
// "Construct" response from ESP01 as follows
// - this is to be displayed on Serial Monitor.
char c = ESP01.read(); // read the next character.
response+=c;
}
} if(debug)
{
Serial.print(response);
}return (response); }
void clearData() {
while (data_count != 0)
{
Data[data_count--] = 0;
}
return;
}
I built a safe entry mechanism and i would like the matlab to send an email alert when arduino is not communicating or sending any data to thingspeak. How do i write the program to detect system down and to send email alert?
Hi, I want to send an alert to multiple email ids when a channel event occurs(for example:sensor temperature exceeds a threshold value).How can I do it?Help is highly appreciated. Thanks in Advance!
EL TERMÓMETRO QUEDO CLAVADO EN -127°, LO RESETEE PERO AUN NO FUNCIONA, POSRA SER LA ZONDA Y SI FUESE ASÍ COMO ADQUIRIRLA-
Are you looking for ways to keep your students engaged in a virtual setting? Would you like to spice up your courses with hands-on projects? Using Arduino Engineering Kit, you can achieve these. Due to COVID-19, many instructors started to look for creative ways of giving students a lab experience. Some of them chose to create virtual labs, some of them designed hardware projects with low-cost hardware or integrated hardware projects kits to their curriculum. If you are interested in how Dr. Azadi from San Francisco State University used Arduino Engineering Kit during the pandemic to teach his Mechatronics course, check out these articles:
Hello, in the free usage of ThingSpeak, minimum data rate is 15 s. I have received a message that I will run messages in a month, and I would like to reduce the data rate, but I cannot find information of neither which is the current data rate that it's established in my channels, nor how might I modify it. I would like to reduce the rate at which I send data, as I actually do not need this rate to be high, but I cannot figure out how to do it. I am afraid I know little of how to "program" thingspeak, for creating my channels I followed the tutorials on "getting started with Thingspeak", and it worked quite well, but I have no idea which is the data rate that is being used or how to modify it. I will be really greatful if somebody may help me to learn how to do this.
Just getting started with Thingspeak, I'm reading temperature, humidity and pressure from a BME280 connected to a ESP32. I have both a chart and numeric display on my channels, works great.
Can I resize the visualizations to get more on the monitor at a time? Or can I add a numeric readout that will show the last value added to the chart? Both the chart and readout use the same field info. I do see that if I hover my mouse over a point on the chart I get the value but wanted to be displayed.
Thanks for any help John