基于Dccduino uno 结合Dcc ethernet W5100扩张在氦氪物联网平台控制家电开关的例子,本教程实现的功能通过PC端网页服务器和手机APP的控制一个LED.
工具/原料
Arduino开发环境
成为氦氪云开发者并下载hekr移动客户端APP
Dcc ethernet W5100
设备添加
1、首先要注册新用户,注册完之后点击“用户中心”进入管理界面
2、添加新设备在我的设备中选择"添加新设备"
3、信息填写填写相应的传感器信息,注意“类型”中选择为“开关”填写完成后点击“保存”按钮
添加传感器
1、设备添加完成后我们需要添加新的传感器1、新建一个名为"LED开关"的设备2、我们为这个设备添加名为“控制开关”的开关类型传感器
2、传感器信息在开关传感器中我们可以看到传感器的一些信息,如图所示:前面红圈内代表设备编号、后面代表的是传感器编号
3、添加传感器点击“我的设备”中的“管理设备”即可,然后在传感器页面点击“增加一个传感器”
设备操作
1、接下去我们要往DCCduino上传代码#in罕铞泱殳clude#include#include#includeb烤恤鹇灭yte buff[2];// for yeelink api#define APIKEY"xxxxxxxxxxxxxxxxxxxx" // 此处替换为你自己的API KEY#define DEVICEID7003 // 此处替换为你的设备编号#define SENSORID110926 // 此处替换为你的传感器编号// assign a MAC address for the ethernet controller.byte mac[] = { 0x00, 0x1D, 0x72, 0x82, 0x35, 0x9D};// initialize the library instance:EthernetClient client ;char server[] = "api.yeelink.net";// name address for yeelink APIunsigned long lastConnectionTime = 0;// last time you connected to the server, in millisecondsboolean lastConnected = false;// state of the connection last time through the main loopconst unsigned long postingInterval = 3*1000; // delay between 2 datapoints, 30sString returnValue = "";boolean ResponseBegin = false;void setup() {pinMode(5, OUTPUT);Wire.begin();// start serial port:Serial.begin(57600);// start the Ethernet connection with DHCP:if (Ethernet.begin(mac) == 0) {Serial.println("Failed to configure Ethernet using DHCP");for(;;);}else {Serial.println("Ethernet configuration OK");}}void loop() {// if there's incoming data from the net connection.// send it out the serial port.This is for debugging// purposes only:if (client.available()) {char c = client.read();// Serial.print(c);if (c == '{')ResponseBegin = true;else if (c == '}')ResponseBegin = false;if (ResponseBegin)returnValue += c;}if (returnValue.length() !=0 && (ResponseBegin == false)){Serial.println(returnValue);if (returnValue.charAt(returnValue.length() - 1) == '1') {Serial.println("turn on the LED");digitalWrite(5, HIGH);}else if(returnValue.charAt(returnValue.length() - 1) == '0') {Serial.println("turn off the LED");digitalWrite(5, LOW);}returnValue = "";}// if there's no net connection, but there was one last time// through the loop, then stop the client:if (!client.connected() && lastConnected) {Serial.println();Serial.println("disconnecting.");client.stop();}// if you're not connected, and ten seconds have passed since// your last connection, then connect again and send data:if(!client.connected() && (millis() - lastConnectionTime > postingInterval)) {// read sensor data, replace with your code//int sensorReading = readLightSensor();Serial.print("yeelink:");//get data from servergetData();}// store the state of the connection for next time through// the loop:lastConnected = client.connected();}// this method makes a HTTP connection to the server and get data backvoid getData(void) {// if there's a successful connection:if (client.connect(server, 80)) {Serial.println("connecting...");// send the HTTP GET request:client.print("GET /v1.0/device/");client.print(DEVICEID);client.print("/sensor/");client.print(SENSORID1);client.print("/datapoints");client.println(" HTTP/1.1");client.println("Host: api.yeelink.net");client.print("Accept: *");client.print("/");client.println("*");client.print("U-ApiKey: ");client.println(APIKEY);client.println("Content-Length: 0");client.println("Connection: close");client.println();Serial.println("print get done.");}else {// if you couldn't make a connection:Serial.println("connection failed");Serial.println();Serial.println("disconnecting.");client.stop();}// note the time that the connection was made or attempted:lastConnectionTime = millis();}
2、设备接线如图接线,前提是保证你的网线是链接到路由器上面能上网的,LED的端口链接到数字端口5脚,按照设想我们是在PC端或者手机APP远程控制这个LED,好了,切换我们的设备管理器,控制我们的开关:
3、接线完成后,点击页面中的控制开关界面,点击&孥恶膈茯quot;控制操作"按钮变为"打开"状态,能够看到设备灯亮起,代表设备受控成功
4、再转化到我们的手机APP,打开应用,找到你的设备进行操作