求助:Arduino+w5100+yeelink多数据无法上传的问题
本人2013年开始玩yeelink,那个时候上传数据很简单,只要把按照官网上的lm35的代码修改一下就可以了,之后一两年没有碰yeelink了,现在项目需要,重新搞起,我加了GY2P1010烟雾传感器、DHT11温湿度、MQ-2和MQ-135可燃气体传感器,代码调试没有任何问题,也可以串口显示数据,但就是上传不了。代码如下:#include <dht.h>
#include <Ethernet.h>
#include <WiFi.h>
#include <SPI.h>
#include <yl_data_point.h>
#include <yl_device.h>
#include <yl_w5100_client.h>
#include <yl_wifi_client.h>
#include <yl_messenger.h>
#include <yl_sensor.h>
#include <yl_value_data_point.h>
#include <yl_sensor.h>
yl_device ardu(68115);//此处替换为你的设备编号
yl_sensor therm_1(85670, &ardu);//此处替换为你的传感器编号-湿度传感器DHT11
yl_sensor therm_2(88737, &ardu);//此处替换为你的传感器编号-温度传感器DHT11
yl_sensor therm_3(88886, &ardu);//此处替换为你的传感器编号-粉尘烟雾传感器GP2Y1010
yl_sensor therm_4(88889, &ardu);//此处替换为你的传感器编号-可燃性气体传感器MQ-2
yl_sensor therm_5(88890, &ardu);//此处替换为你的传感器编号-特殊气体传感器MQ-135
//replace first param value with ur u-apikey
yl_w5100_client client;
yl_messenger messenger(&client, "5d24faf1294fd321a9acbf999155cba6", "api.yeelink.net"); //此处替换为你自己的API KEY
dht DHT;
#define DHT11_PIN 7
int dustPin=0;
float dustVal=0;
int ledPower=2;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
int gas1_din=4;
int gas1_ain=A1;
int ad1_value;
int gas2_din=5;
int gas2_ain=A2;
int ad2_value;
void setup()
{
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
pinMode(dustPin, INPUT);
pinMode(gas1_din,INPUT);
pinMode(gas1_ain,INPUT);
pinMode(gas2_din,INPUT);
pinMode(gas2_ain,INPUT);
//Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
byte mac[] = {0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};
Ethernet.begin(mac);
}
void loop()
{
//Serial.print("DHT11, \t");
int chk = DHT.read11(DHT11_PIN);//读取数据
switch (chk)
{
case DHTLIB_OK:
// Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
//Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
// Serial.print("Time out error,\t");
break;
default:
// Serial.print("Unknown error,\t");
break;
}
// 显示数据
Serial.print("Humidity(%):");
Serial.println(DHT.humidity, 1);
yl_value_data_point dp1(DHT.humidity);
therm_1.single_post(messenger, dp1);
Serial.print("Temperature(C):");
Serial.println(DHT.temperature, 1);
yl_value_data_point dp2(DHT.temperature);
therm_2.single_post(messenger, dp2);
//ledPower is any digital pin on the arduino connected to Pin 3 on the sensor
digitalWrite(ledPower,LOW);//power on the LED
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin); // read the dust value via pin 5 on the sensor
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH);//turn the LED off
delayMicroseconds(offTime);
Serial.print("dust(mg/m3):");
Serial.println((float(dustVal/1024)-0.0356)*120000*0.035);
yl_value_data_point dp3((float(dustVal/1024)-0.0356)*120000*0.035);
therm_3.single_post(messenger, dp3);
ad1_value=analogRead(gas1_ain);
Serial.print("Gas1(mg/l):");
Serial.println(ad1_value);
yl_value_data_point dp4(ad1_value);
therm_4.single_post(messenger, dp4);
ad2_value=analogRead(gas2_ain);
Serial.print("Gas2(mg/l):");
Serial.println(ad2_value);
yl_value_data_point dp5(ad2_value);
therm_5.single_post(messenger, dp5);
delay(1000);
}
yl_value_data_point dp5(ad2_value);
therm_5.single_post(messenger, dp5);
上传数据的应该是这两行代码,只要把数值放到dp5里就好了,但不知道为什么,网上说API改了,但我看了官网新版本的API,现在yeelink没有再给出最新的例程,本人水平实在有限,头都大了,希望大家能帮忙看下,或者给我一下新版的代码参考一下,指点我一下吧感激不尽
串口显示: yeelink最近频出问题,我也两个月没用了 用的uno还是?可否将相关库分享一下 suoma 发表于 2015-6-26 21:20 static/image/common/back.gif
用的uno还是?可否将相关库分享一下
我改用乐联了,也是一个物联网开源平台,这个很好用 孙坚12 发表于 2015-7-5 16:24 static/image/common/back.gif
我改用乐联了,也是一个物联网开源平台,这个很好用
我听说过
页:
[1]