在icoolpy的SDK编程上修改,对主要程序进行了标注。大家如果建议在后面留言。
/*
Power By Coolpy
Site:http://icoolpy.com
This example code is in the public domain.
*/
#include <SPI.h>
#include <Ethernet.h>
#include <dht11.h>
dht11 DHT11;
//DHT11 接到arduino8脚
#define DHT11PIN 8
byte mac[6];
//服务器域名或IP地址(根据历程1里面的ip修改)
char server[] = "10.50.3.90";
//服务器端口号(根据历程1里面的端口修改)
int port = 6543;
//UserKey用户密钥(根据历程3里UKEY修改)
char ukey[] = "74fc3fd1-dc64-468f-ba29-e3a4209de2ff";
//Hub ID(根据历程3里枢纽ID修改)
char hub[]="9";
//Node ID(根据历程3里节点ID修改,如上次多个数据在此将使用ID标齐)
String node[]={"14","15"};
//定义上传数据
float senddata[10];
//定义 定义网络为客户模式
EthernetClient client;
void setup() {
//定义串口通信方式
Serial.begin(9600);
//使用随机函数获得mac码,放置网络内mac重码
mac[0]=random(1, 254);
mac[1]=random(1, 254);
mac[2]=random(1, 254);
mac[3]=random(1, 254);
mac[4]=random(1, 254);
mac[5]=random(1, 254);
//网络自动获取ip
if (Ethernet.begin(mac) == 0) {
for(;;)
;
}
//打印获取的网络ip
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
delay(1000);
}
void loop()
{
//获取dht11的温度、湿度值
int chk = DHT11.read(DHT11PIN);
senddata[0]=DHT11.temperature;
senddata[1]=DHT11.humidity;
//采用循环方式,上传数据,如果一个数值可以直接使用。
for(int a=0;a<2;a++)
{Post(node[a],senddata[a]);}
delay(2000);
}
/*定义发送数据函数第一个参数:节点ID ;第二个参数:上传数据
POST /api/hub/1/node/5/datapoints HTTP/1.1
User-Agent: Fiddler
Host: 10.50.3.90:6543
Content-Length: 12
U-ApiKey: 33c0cb47-c7ae-4f55-bf86-31c4d28c6b67
{"Value":13}
*/
void Post(String PostNode,float PostData)
{
char buffer[25];
String json="";
json += String("{\"Value\":") + dtostrf(PostData, 5, 2, buffer) + String("}");
// if you get a connection, report back via serial:
if (client.connect(server, port)) {
// Make a HTTP request:
client.print("POST /api/hub/");
client.print(hub);
client.print("/node/");
client.print(PostNode);
client.println("/datapoints HTTP/1.1");
client.print("Host:");
client.println(server);
client.println("Content-Type:application/json");
client.print("U-ApiKey:");
client.println(ukey);
client.println("Connection: close");
client.print("Content-Length: ");
client.println(json.length()+1);
client.println();
client.println(json);
Serial.print("Send Data:");
Serial.print(PostNode);
Serial.println(json);
client.stop();
}
}