多个传感器数据在同一频道的截止字段上同时上传

8次意见(过去30天)
Fariha伊斯兰教
Fariha伊斯兰教 2021年8月23日
我已经为3个传感器数据创建了3个字段(gsr传感器,dht22温度和湿度传感器)。但是这些值不会同时更新到它们各自的字段中。我已经写了如下代码,如果有人能帮助我就太好了。谢谢你!
#include
# include < SoftwareSerial.h >
dht dht;
#define dht11_pin 12.
#define rx 2.
#define tx 3.
const int gsr = a2;
int sensorvalue = 0;
int gsr_average = 0;
String AP = "XXXXXXXXXXX";/ /美联社的名字
字符串通过=“xxxxxxxxxxxxx”;// ap密码
String API = "YYYYYYYYYYYY";//写入API KEY
String HOST = "api.thingspeak.com";
String PORT = "80";
//字符串字段= "field1";
int countTrueCommand;
int countTimeCommand;
Boolean found = false;
// int valsensor = 1;
Softwareserial ESP8266(RX,TX);
void setup(){
Serial.begin (9600);
esp8266.begin (115200);
Sendcommand(“AT”,5,“OK”);
sendcommand(“+ cwmode = 1”,5,“确定”);
sendcommand(“+ cwjap = \”“+ ap +”\“,\”+ pass +“\”“,20,”确定“);
无效循环(){
/ / valSensor = getSensorData ();
sendtoServer ();
字符串getTemperatureValue () {
int chk = DHT.read22(DHT11_PIN);
float t = dht.temperature;
系列。打印(“温度(C) = ");
serial.println(dht.temperature);
延迟(50);
返回字符串(t);
字符串getHumidityValue () {
// int chk = DHT.read22(DHT11_PIN);
浮动h = DHT.humidity;
Serial.print(“湿度=”);
以DHT.humidity);
延迟(50);
返回字符串(h);
字符串getGSRValue () {
长= 0;
for(int i=0;i<10;i++) //对10个测量值进行平均,以消除故障
sensorValue = analogRead (GSR);
+ = sensorValue总和;
延迟(5);
gsr_average =总和/ 10;
serial.println(gsr_average);
返回字符串(gsr_average);
空白sendtoServer () {
String getData = "GET /update? "api_key="+ API +"&field1="+ getGSRValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData.length() + 4), 4,“>”);
esp8266.println (getData);延迟(1000);countTrueCommand + +;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
String getData2 = "GET /update? "api_key="+ API +"&field2="+ getTemperatureValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData2.length() + 4), 4,“>”);
esp8266.println (getData2);延迟(500);countTrueCommand + +;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
String getData3 =“get /更新?api_key =”+ API +“&Field3 =”+ GethumityValue();
sendcommand(“+ cipmux = 1”,5,“确定”);
sendCommand(“在+ CIPSTART = 0, \“TCP \”,\“+主机+“\”、“+端口,15日“OK”);
sendCommand (+ CIPSEND = 0, +字符串(getData3.length() + 4), 4,“>”);
esp8266.println(getdata3);延迟(250); counttruecommand ++;
sendCommand(“+ CIPCLOSE = 0”5“OK”);
void sendCommand(String command, int maxTime, char readReplay[]) {
serial.print(counttruecommand);
并同时”。在命令=> ");
并同时(命令);
系列。打印(" ");
而(countTimeCommand < (maxTime * 1))
esp8266.println(命令);/ / + cipsend
如果(esp8266.find (readReplay)) / /好吧
发现=真;
打破;
counttimecommand ++;
如果(发现== true)
以“OYI”);
countTrueCommand + +;
countTimeCommand = 0;
如果发现= = false)
以“失败”);
countTrueCommand = 0;
countTimeCommand = 0;
发现= false;

答案(1)

vinod.
vinod. 2021年8月23日
编辑:vinod. 2021年8月24日
这可能是因为您试图从多个传感器更新同一频道,而与频道更新的频率发生冲突。请使用这个例子作为起点: https://github.com/mathworks/thingspeak-arduino/tree/master/examples/ESP8266/via%20AT%20commands/WriteMultipleFields 每个设备使用一个单独的通道。
1评论
克里斯托弗Stapels.
克里斯托弗Stapels. 2021年8月30日
您可以同时更新连接到同一设备的三个传感器,但不再推荐使用三个设备到一个通道。此外,还没有推荐在同一时间发送三个传感器到同一频道。

登录评论。

社区

更多答案请参阅截图社区

s manbetx 845


释放

R2018A

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!