` 本帖最后由 lustao 于 2020-8-3 12:23 编辑
搭建一个远程控制灯的开关的系统,这也是智能家居系统中一个典型的远程开关控制场景。接上次建完本地软件环境后,
开始建立网络IOT,
打开阿里云IoT的首页 https://iot.aliyun.com/ 。点击右上角的免费注册,创建一个阿里云IoT的账号。
登录阿里云平台,点击右上角的工作台,即可进入阿里云控制台首页。
在左上角的工具栏中,选择产品与服务,在列表中找到物联网平台,点击进入物联网平台。(需要实名认证)(用chrome内核)
在
物联网平台上选IoT Studio,在右侧新建项目
下面有
解决方案市场
中有 IoT初学者开发套件(配套DFRobot阿里云IoT入门套件 )
可点图片选使用
就建立了
IoT初学者开发套件
项目
在项目管理中打开IoT初学者开发套件进入新窗口
建立一个设备
在项目管理页面左侧的功能栏点击设备,在弹出的设备页面中选择新增设备。
在弹出的窗口中,产品选择“A1智能灯_aepl”,添加方式选择自动生成,设备数量填写1。
选择功能定义 -> 自定义功能 -> 添加自定义功能 。
在设备中点批次管理点下载Excel
下载所需的参数。
到此,我们已经在阿里云平台上创建好了项目、产品和设备。
在上次安的Arduino IDE中
点击文件->示例->DFRobot_IoTAliyun->Aliyun->Bedroom_Light,如下图所示。
根据下载Excel文件更改
- /*Set WIFI name and password*/
- const char * WIFI_SSID = "911";//"WIFI_SSID";
- const char * WIFI_PASSWORD = "31698639";//"WIFI_PASSWORD";
- /*Configure device certificate information*/
- String ProductKey ="a1YXyyQ6bq"; // "you_Product_Key";
- String ClientId = "12345";/*Custom id*/
- String DeviceName = "qhyJObnPQ522Dib7h8F";//"you_Device_Name";
- String DeviceSecret = "1f3655bd25fe4cafabd4a7330e7cd4a";//"you_Device_Secret";
- /*Configure the domain name and port number*/
- String ALIYUN_SERVER = "iot-as-mqtt.cn-shanghai.aliyuncs.com";
- uint16_t PORT = 1883;
- /*Product identifier that needs to be operated*/
- String Identifier = "a1YXyyQ6bq"; //"you_Identifier"
- /*TOPIC that need to be published and subscribed*/
- const char * subTopic = "/sys/a1YXyyQ6bq/qhyJObnsPQ522Dib7h8F/thing/service/property/set";//you_sub_Topic";//****set
- const char * pubTopic = "/sys/a1YXyyQ6bq/qhyJObnsPQ522Dib7h8F/thing/event/property/post";//"you_pub_Topic";//******post
复制代码
选择正确板和com端口,验证后上传
运行下,在MQTT连接完成后,在https://studio.iot.aliyun.com/可以在设备管理界面看到设备显示在线,
后进入点在线调试
发现通讯正常但灯不亮,
看源码,
void callback(char * topic, byte * payload, unsigned int len){
Serial.print("Recevice [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < len; i++){
Serial.print((char)payload);
}
Serial.println();
StaticJsonBuffer<300> jsonBuffer;
JsonObject& root = jsonBuffer.parseObject((const char *)payload);
if(!root.success()){
Serial.println("parseObject() failed");
return;
}
const uint16_t LightStatus = root["params"][Identifier]; 发现最后是“Identifier”
去产品中更改自定义功能
标识符由LightStatus变更为"a1YXyyQ6bq"
功能正常了
web发布功能不太好用(需要自己域名)。
`
|