Main Content

Results for

Need some guidance on how to model the mutual inductance model from Simscape. The secondary side does not receive the voltage.
Hi,
I'm trying to communicate with my channel ohowever it looks like I'm missing something as my data doesn't appear in the feeds. Below is my code:
#define SW_VERSION " ThinkSpeak.com" // SW version will appears at innitial LCD Display
#define TINY_GSM_MODEM_SIM900
#include <TinyGsmClient.h>
#define SerialAT Serial
TinyGsm modem(SerialAT);
TinyGsmClient client(modem);
/* ESP12-E & Thinkspeak*/
const char apn[] = "xxxxx";
const char user[] = "";
const char pass[] = "";
const char server[] = "api.thingspeak.com";
const int port = 80;
const char* TS_SERVER = "api.thingspeak.com";
String TS_API_KEY ="xxxxx";
int sent = 0;
/* TIMER */
#include <SimpleTimer.h>
SimpleTimer timer;
/* OLED */
#include <ACROBOTIC_SSD1306.h> // library for OLED: SCL ==> D1; SDA ==> D2
#include <SPI.h>
#include <Wire.h>
/* DHT22*/
#include "DHT.h"
#define DHTPIN D3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float hum = 0;
float temp = 0;
/* Soil Moister */
#define soilMoisterPin A0
#define soilMoisterVcc D4 //not used. LM393 VCC connect to 3.3V
int soilMoister = 0;
/* DS18B20 Temperature Sensor */
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 14 // DS18B20 on NodeMCU pin D5 corresponds to GPIO 014 on Arduino
float soilTemp;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
void setup()
{
Serial.begin(115200);
delay(10);
Serial.println(".... Starting Setup");
SerialAT.begin(115200);
delay(3000);
// Restart takes quite some time
// To skip it, call init() instead of restart()
Serial.println("Initializing modem...");
modem.init();
pinMode(soilMoisterVcc, OUTPUT);
Serial.begin(115200);
delay(10);
oledStart();
dht.begin();
DS18B20.begin();
timer.setInterval(2000L, getDhtData);
timer.setInterval(7000L, getSoilMoisterData);
timer.setInterval(9000L, getSoilTempData);
timer.setInterval(19000L, sendDataTS);
digitalWrite (soilMoisterVcc, LOW);
}
void loop()
{
displayData();
timer.run(); // Initiates SimpleTimer
}
/***************************************************
* Start OLED
**************************************************/
void oledStart(void)
{
Wire.begin();
oled.init(); // Initialze SSD1306 OLED display
clearOledDisplay();
oled.clearDisplay(); // Clear screen
oled.setTextXY(0,0);
oled.putString(" ");
}
/***************************************************
* Get DHT data
**************************************************/
void getDhtData(void)
{
float tempIni = temp;
float humIni = hum;
temp = dht.readTemperature();
hum = dht.readHumidity();
if (isnan(hum) || isnan(temp)) // Check if any reads failed and exit early (to try again).
{
Serial.println("Failed to read from DHT sensor!");
temp = tempIni;
hum = humIni;
return;
}
}
/***************************************************
* Get Soil Moister Sensor data
**************************************************/
void getSoilMoisterData(void)
{
soilMoister = 0;
digitalWrite (soilMoisterVcc, HIGH);
delay (500);
int N = 3;
for(int i = 0; i < N; i++) // read sensor "N" times and get the average
{
soilMoister += analogRead(soilMoisterPin);
delay(150);
}
digitalWrite (soilMoisterVcc, LOW);
soilMoister = soilMoister/N;
Serial.println(soilMoister);
soilMoister = map(soilMoister, 689, 274, 0, 100);
}
/***************************************************
* Get SoilTemp sensor data
**************************************************/
void getSoilTempData()
{
DS18B20.requestTemperatures();
soilTemp = DS18B20.getTempCByIndex(0);
int newData = ((soilTemp + 0.05) * 10); //fix soilTemp value to 1 decimal place.
soilTemp = (newData / 10.0);
}
/***************************************************
* Display data at Serial Monitora & OLED Display
**************************************************/
void displayData(void)
{
Serial.print(" Temperature: ");
Serial.print(temp);
Serial.print("oC Humidity: ");
Serial.print(hum);
Serial.println("%");
Serial.print("SoilTemp: ");
Serial.print(soilTemp);
Serial.print("oC");
oled.setTextXY(1,0); // Set cursor position, start of line 2
oled.putString("TEMP: " + String(temp) + " oC");
oled.setTextXY(3,0); // Set cursor position, start of line 2
oled.putString("HUM : " + String(hum) + " %");
oled.setTextXY(5,0); // Set cursor position, start of line 2
oled.putString("Tsoil:" + String(soilTemp) + " oC");
oled.setTextXY(7,0); // Set cursor position, start of line 2
oled.putString("Hsoil: " + String(soilMoister) + " %");
}
/***************************************************
* Clear OLED Display
**************************************************/
void clearOledDisplay()
{
oled.setFont(font8x8);
oled.setTextXY(0,0); oled.putString(" ");
oled.setTextXY(1,0); oled.putString(" ");
oled.setTextXY(2,0); oled.putString(" ");
oled.setTextXY(3,0); oled.putString(" ");
oled.setTextXY(4,0); oled.putString(" ");
oled.setTextXY(5,0); oled.putString(" ");
oled.setTextXY(6,0); oled.putString(" ");
oled.setTextXY(7,0); oled.putString(" ");
oled.setTextXY(0,0); oled.putString(" ");
}
/***************************************************
* Sending Data to Thinkspeak Channel
**************************************************/
void sendDataTS(void)
{
if (client.connect(TS_SERVER, 80))
{
String postStr = TS_API_KEY;
postStr += "&field1=";
postStr += String(temp);
postStr += "&field2=";
postStr += String(hum);
postStr += "&field3=";
postStr += String(soilMoister);
postStr += "&field4=";
postStr += String(soilTemp);
postStr += "\r\n\r\n";
client.print("POST /update HTTP/1.1\n");
client.print("Host: api.thingspeak.com\n");
client.print("Connection: close\n");
client.print("X-THINGSPEAKAPIKEY: " + TS_API_KEY + "\n");
client.print("Content-Type: application/x-www-form-urlencoded\n");
client.print("Content-Length: ");
client.print(postStr.length());
client.print("\n\n");
client.print(postStr);
delay(1000);
}
sent++;
client.stop();
}
First I get this on my serial monitor:
After some time:
And after some more time:
With my limited knowledge on the subject I can't figure it out.
Any help would be appreciated.
Thanks.
Not able to display password by copying to clipboard or by clicking the unhide icon - have tried multiple computers.
Anyone else had this problem with mqtt?
I am sending my sensor readings to thingspeak channel using raspberrry pi board but i dont know how can we send some instruction back to the raspberry pi board to control an LED or Motor or some other things. Can anyone provide some information about this?
can't connect using the following setting in MQTT explorer
should i modify thiem or it's a must to use MQTTX
please advice
I note that there is a limit of 12 TimeControls per user. Is that only for free and Home users, or for Commercial users too? If the latter, that will put a dent in my plans. I basically want to calculate daily averages and send customers an SMS once per day with their summary data.
I have this message "You have a React with similar Test Frequency, Action, and Option settings. Delete that React to save this one."
But that's not true. It's another channel, another field that must trigger another matlab analysis...........
Any idea on how to unblock this issue?
Thank you
hi, my tracker using A9G always giving incorrect coordinates 999.00.please help

My learning is progressing well. I borrow heavily on examples given on this site. I need to know the correct commands for coding in Matlab analysis. For a simple example, what is the correct code symbol for multiplication? Yes, I know it is (a)*(b). But, is there a glossary of all such? For another example, I tried to generate a random number in Matlab analysis by writing: mu = 1; sigma = 5; rannum = Random (‘Normal’, mu, sigma)

But when I run this code I get the following error message: .....

“random” requires access to one of the following...

Sim Biology or

Statistics & Machine Learning Toolbox...

So, in summary, does my subscription allow such access and/or how do I learn the syntax Matlab requires for code operations?

Thanks.

In the Matlab analysis option on my Thingspeak channel I chose to experiment with the example in the title regarding humidity average. It works fine but only works once. How can I keep it updating every 5 minutes or so?

I am very happy with ThingSpeak. I have a prototype Pico W project that it working well.
I tried 6 other IOT platforms and ThingSpeak was the BEST!
I wrote about my experience here:
Hi all,
I am wondering whats the total cost to use MATLAB for algo trading. The transparent part is of coz the price of matlab and the toolboxes. But I was shocked to find out the APIs to connect to Interactive Brokers are not free (costly in fact!). Is there free API to connect to IB? What other hidden costs are there? I saw the X Trader in the Automated Trading with MATLAB video. Is this XTrader software part of MATLAB toolbox? Do we need to pay additional to Trading Technologies (to use X_Trader). Also what data feed is the most cost effecient? Is there any additional hidden cost that I am not aware of?
Thanks!
Hi
I used to have the following daily max, min and mean code working. But, this week it seems to work for max and mins but not means. Any idea what's going on?
writeAPIKey = 'xxxxxx';
% Define date range of 1 day
end1 = datetime('now')
start=datetime('today')
% Read Weight data from Field1 for last 24 hrs
[Weight, time] = thingSpeakRead(xxxxxx,'DateRange', [start,end1], 'Fields', [1]);
Wtmax = max(Weight); % Get 24hr Max
Wtmin = min(Weight); % Get 24hr Min
Wtav = mean(Weight); % Get 24hr Av
% display results
display(Wtmax, 'Wt_max'), display(Wtmin, 'Wt_min'), display(Wtav, 'Wtav');
Output:
end1 =
datetime
30-Jan-2023 14:00:35
start =
datetime
30-Jan-2023
Wt_max =
-0.0685
Wt_min =
-0.5190
Wtav =
NaN
Good morning,
I am trying to receive a long number in thingspeak and convert it to a string. However, when I receive it, it converts it to a number using scientific notation. I have tried changing the format to long g and others and was able to get rid of the scientific notation part.
After doing so, I have used commands such as num2str, mat2str, and compose to represent the number as a string, but I keep getting results that are off. An example is a message i am sending as:
field1=100630000553400000000
using an MQTT desktop client. However, when I receive it and print the result, I get:
0100630000553399992320
The numbers are close but the right one. Is there something I am missing?
Thanks in advance!
Pedro Ch.
I want to import data from a .cvs with the requested format but constantly the same error comes out : "The uploaded file was not imported because it is missing timestamps."
My data is in this format:
created_at,field1,field2,field3
1600064881,50.818,0,0
Could someone help me fix it?
Thank you
I want to understand this from the scratch, i will appreciate help and guidance very much.
Pedro
Pedro
Last activity on 25 Jan 2023

Hi, what would be the best approach to use the gauge widget to display calculated data? I have a channel that displays a value that needs some math applied to it to give a correct value. I have a matlab visualization that converts this value into what I need and plots it. However, i believe a gauge is more appropriate than a plot and it seems the matlab "uigauge" object does not work for thingspeak.
Is there a way for the gauge widget to show my data coming out of the matlab script?
Thanks!
When solving problems over on Cody, I can almost always view all solutions to a problem after submitting a correct solution of my own. Very rarely, however, this is not the case, and I instead get the following message:
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.
You may solve another problem from Community group to unlock all the solutions to this problem.
If this happens, then again, I can almost always rectify this by submitting a (correct) solution to a different problem (I take it that the Community group is the implicit group of all problems on Cody --- is it?). But sometimes that, too, fails.
So my question is, why? What are the criteria that determine when all solutions are, in fact, unlocked?
(There is a related question here, but I feel the posted answer does not answer the question.)
Louis
Louis
Last activity on 6 Jan 2023

Accidentally clicked on the "X" and field 1 chart disappeared. How do I recall the chart ?

Hi,
I'm trying to send data from a LoRa Node to the dragino Lg01-N gateway and then to the thinkspeak platform. Actually, the data arrives to the gateway and i get the following result read from the gateway
but the value does not reach the thingspeak platform.
on the other side i tried to send the data manually from the gateway using the following command
and the data is written successfully at the thingspeak. In this link we set the topic -t as channels/XXXXX/publish. but at the first figure the topic which is sent automatically from the gateway to the thingspeak is channels/XXXXX/publish/APIkey
i think the problem is here. i don't know how to change the form of the topic received by the gateway and sent to the thingspeak...is it possible to modify that? i tried to modify the mqtt_process.sh file, but all my changes do not make anny effect on the received packet from the lora node.
could you help me please to resolve this problem?
thank you in advance