基于OneNET平台实现开机盒子,并使用和物安卓APP控制
最近OneNET平台更新以后可以使用配套的和物安卓APP来控制了,免开发只需要配置APP模板,变得非常方便。所谓开机盒子,就是可以控制电脑远程开机的一个小盒子,需要电脑支持支持以太网唤醒(Wake On Lan)。首先登陆OneNET平台,在控制台里的产品管理添加一个新产品,产品品类会影响可以使用的APP模板,这里选择排插,模板里面有开关类控件可以用于控制电脑开机。然后在产品物模型里面配置,添加3
所谓开机盒子,就是可以控制电脑远程开机的一个小盒子,需要电脑支持支持以太网唤醒(Wake On Lan)。目前比较新的台式机主板和笔记本电脑一般都支持。但有的型号可能需要在BIOS里面先开启。
小盒子使用OpenWRT系统,MIPS架构。使用etherwake命令来唤醒电脑,命令格式如下:
etherwake -i eth0 00:11:22:33:44:55
需要盒子和电脑在一个局域网内。主要是思路是,使用MQTT协议连接到OneNET平台,进行远程控制。最近OneNET平台更新以后可以使用配套的和物安卓APP来控制了,免开发只需要配置APP模板,变得非常方便。
首先登陆OneNET平台,在控制台里的产品管理添加一个新产品,产品品类会影响可以使用的APP模板,这里选择排插,模板里面有开关类控件可以用于控制电脑开机。
联网方式选择以太网,WIFI方式默认需要配网,也就是设置wifi密码的过程,这里不需要。
然后在产品物模型里面配置,添加3个MAC地址,3个开关,一共可以控制3个设备。
接着在交互配置里面配置APP模板,配置完成可以用和物APP扫码预览。
配置好的效果如图:
这边产品的配置就完成了。
然后在产品的设备开发界面下载SDK放在设备上。
接着在设备管理界面创建一个设备。在详情的设备信息里面记录下生成的设备id和设备密钥以及刚刚创建的产品名称。
接着进行SDK开发,SDK解压之后修改代码。
修改examples/things_model/main.c文件,在里面填写设备id和设备密钥以及产品名称。并添加开机自动上报MAC:
/** 设备登录*/
ret = tm_login(TM_PRODUCT_ID, TM_DEVICE_NAME, TM_ACCESS_KEY, TM_EXPIRE_TIME, 3000);
CHECK_EXPR_GOTO(ERR_OK != ret, _END, "ThingModel login failed!");
logi("ThingModel login ok");
tm_prop_mac1_notify(NULL,NULL,0,200);
tm_prop_mac2_notify(NULL,NULL,0,200);
tm_prop_mac3_notify(NULL,NULL,0,200);
while (1) {
if (0 != (ret = tm_step(200))) {
logi("ThingModel tm_step failed,ret is %d",ret);
break;
}
time_delay_ms(50);
}
然后修改examples/things_model/tm_user.c文件,在里面添加读写MAC地址及响应平台命令调用etherwake的一些代码,如:
int save_mac() {
FILE* fp=fopen(CONFIG_FILE,"w");
if(fp) {
fprintf(fp,"%s\r\n%s\r\n%s\r\n",mac[0],mac[1],mac[2]);
fclose(fp);
}
return 1;
}
int execute_wake(int n) {
check_init();
char cmd[64]={0};
sprintf(cmd,"etherwake -i %s %s",ETH_INTERFACE,mac[n-1]);
system(cmd);
return 0;
}
编译完成之后,运行产生的程序,然后在设备调试界面扫码添加盒子。
就可以在和物APP上使用了。MAC地址会保存在盒子的配置文件里,并与平台自动同步。APP上每拨动一次唤醒设备开关,盒子就会发送一次唤醒命令。运行效果如下:
更多推荐
所有评论(0)