云平台部署:基于Arduino与机智云的家居环境远程系统设计

基于arduino与机智云的家居环境远程监控系统具备协议简单、成本低、功耗低、组网容易等优势。在智慧家居实现的同时,可以根据其它控制领域的需要,进行需求的移植,具有很强的延伸性和可移植性,提高开发效率。同时当前环境也存在这样的需求也有硬件基础保障。通过该项目的制作,也让我了解到远程家电控制并不是什么神奇的东西的,只要每一个人肯去尝试,肯去面对不同的困难,并通过自己的思考和向他人请求帮助,每一个过程都是很奇妙的,往往在这个过程中,你会获得许多意想不到的收获。
本项目分成三部分——工程实施、云平台部署、app开发,本次分享云平台部署部分。
一、创建项目
1.1 登陆机智云开发者中心dev.gizwits.com,创建新产品
1.2 进入项目,查看产品的基本信息
二、添加数据点
2.1 根据产品功能定义数据点
三、进行虚拟设备调试
3.1 创建好数据点后,进行虚拟设备调试
3.2 在机智云app能够观察机智云平台模拟的数据
根据系统的需要添加或修改数据点信息
四、下载mcu代码包
4.1 在确定数据点无误后,点击mcu开发
4.2 添加库文件,进行代码移植
生成代码包后,把代码包导入arduino ide开发环境的libraries文件中,libraries是arduino的库文件,包含自带的库文件和用户添加的外部库文件
把networkconfig.ino的配网代码移植到simpletry.ino,把串口打印的代码注释起来,可参考“史上最详细的arduino uno r3接入机智云教程”
https://club.gizwits.com/thread-6728-1-1.html
然后根据要求修改代码,以下仅供参考:
                                                                                                                                                                                                                                                                                                #include #include #include #include int con_ledpin = 13; //成功连接网络,13引脚低电平int smokepin = 2;int movepin = 3;int alarmpin = 4;int ledpin = 5;int relaypin1 = 8;int relaypin2 = 9;int firepin = a0;int lightpin = a1;int beeppin = 10;int temhumpin = 11;bool alarmflag = 0;dht mydht_11;softwareserial myserial(a2, a3); // a2 -> rx, a3 -> txgizwits mygizwits;#define key1 6#define key2 7#define key1_short_press 1#define key1_long_press 2#define key2_short_press 4#define key2_long_press 8#define no_key 0#define key_long_timer 3#define alarm_short_press 16#define alarm_long_press 32unsigned long last_keytime = 0;
unsigned long gokit_time_s(void){ return millis() / 1000;}char gokit_key1down(void){ unsigned long keep_time = 0; if (digitalread(key1) == low) { delay(100); if (digitalread(key1) == low) { keep_time = gokit_time_s(); while (digitalread(key1) == low) { if ((gokit_time_s() - keep_time) > key_long_timer) { last_keytime = gokit_time_s(); return key1_long_press; } } //until open the key if ((gokit_time_s() - last_keytime) > key_long_timer) { return key1_short_press; } return 0; } return 0; } return 0;}char gokit_key2down(void){ unsigned long keep_time = 0; if (digitalread(key2) == low) { delay(100); if (digitalread(key2) == low) { delay(100); if (digitalread(key2) == low) { keep_time = gokit_time_s(); while (digitalread(key2) == low) //until open the key { if ((gokit_time_s() - keep_time) > key_long_timer) { last_keytime = gokit_time_s(); return key2_long_press; } } if ((gokit_time_s() - last_keytime) > key_long_timer) { return key2_short_press; } return 0; } return 0; } return 0;}//室内报警监测char gokit_alarmdown(void){ unsigned long keep_time = 0; if (digitalread(alarmpin) == low) { delay(100); if (digitalread(alarmpin) == low) { keep_time = gokit_time_s(); while (digitalread(alarmpin) == low) //until open the key { if ((gokit_time_s() - keep_time) > key_long_timer) { last_keytime = gokit_time_s(); return alarm_long_press; } } if ((gokit_time_s() - last_keytime) > key_long_timer) { return alarm_short_press; } return 0; } return 0; } return 0;}char gokit_keydown(void){ char ret = 0; ret |= gokit_alarmdown(); ret |= gokit_key2down(); ret |= gokit_key1down(); return ret;}void key_handle(void){ /* press for over than 3 second is long press */ switch (gokit_keydown()) { case key1_short_press: mygizwits.setbindmode(wifi_production_test); break; case key1_long_press: mygizwits.setbindmode(wifi_reset_mode); break; case key2_short_press: mygizwits.setbindmode(wifi_softap_mode); //soft ap mode break; case key2_long_press: mygizwits.setbindmode(wifi_airlink_mode); //airlink mode break; case alarm_short_press: alarmflag = ((alarmflag == 0) ? 1 : 0); if (alarmflag) { digitalwrite(beeppin, low); } else { digitalwrite(beeppin, high); } break; case alarm_long_press: digitalwrite(ledpin, high); //设置为高电平 digitalwrite(relaypin1, high); //设置为高电平 digitalwrite(relaypin2, high); //设置为高电平 break; default: break; }}//获取温度数据int dht_11_gettemperature() { int chk = mydht_11.read11(temhumpin); int value = mydht_11.temperature; return value;}//获取湿度数据int dht_11_gethumidity() { int chk = mydht_11.read11(temhumpin); int value = mydht_11.humidity; return value;}/** serial init , gizwits init @param none @return none*/void setup() { // put your setup code here, to run once: myserial.begin(115200); pinmode(key1, input_pullup); pinmode(key2, input_pullup); pinmode(smokepin, input); //设置为数字输入模式 pinmode(movepin, input); pinmode(alarmpin, input_pullup); pinmode(firepin, input); pinmode(lightpin, input); //模拟量为输入模式 pinmode(beeppin, output); //设置为数字输出模式 pinmode(ledpin, output); pinmode(relaypin1, output); pinmode(relaypin2, output); pinmode(con_ledpin, output); digitalwrite(beeppin, high); //设置为高电平 mygizwits.begin();}void wifistatushandle(){ if (mygizwits.wifihasbeenset(wifi_con_router)) { digitalwrite(con_ledpin, high); //设置为低电平 digitalwrite(ledpin, high); //设置为高电平 digitalwrite(relaypin1, high); //设置为高电平 digitalwrite(relaypin2, high); //设置为高电平 }}/** arduino loop @param none @return none*/void loop() { //configure network //if(xxx) //trigger condition //mygizwits.setbindmode(0x02); //0x01:enter ap mode;0x02:enter airlink mode bool varw_alarm = alarmflag;//add sensor data collection mygizwits.write(value_alarm, varw_alarm); unsigned long varw_fire = analogread(firepin);//add sensor data collection mygizwits.write(value_fire, varw_fire); unsigned long varw_move_test = digitalread(movepin);//add sensor data collection mygizwits.write(value_move_test, varw_move_test); unsigned long varw_tem = dht_11_gettemperature();//add sensor data collection mygizwits.write(value_tem, varw_tem); unsigned long varw_hum = dht_11_gethumidity();//add sensor data collection mygizwits.write(value_hum, varw_hum); unsigned long varw_light = analogread(lightpin);//add sensor data collection mygizwits.write(value_light, varw_light); bool varr_led_onoff = 0; if (mygizwits.hasbeenset(event_led_onoff)) { mygizwits.read(event_led_onoff, &varr_led_onoff); //address for storing data if (varr_led_onoff == 0) { digitalwrite(ledpin, high); } else { digitalwrite(ledpin, low); } } bool varr_relay_1 = 0; if (mygizwits.hasbeenset(event_relay_1)) { mygizwits.read(event_relay_1, &varr_relay_1); //address for storing data if (varr_relay_1 == 0) { digitalwrite(relaypin1, high); } else { digitalwrite(relaypin1, low); } } bool varr_relay_2 = 0; if (mygizwits.hasbeenset(event_relay_2)) { mygizwits.read(event_relay_2, &varr_relay_2); //address for storing data if (varr_relay_2 == 0) { digitalwrite(relaypin2, high); } else { digitalwrite(relaypin2, low); } } bool varr_beep = 0; if (mygizwits.hasbeenset(event_beep)) { mygizwits.read(event_beep, &varr_beep); //address for storing data if (varr_beep == 0 ) { digitalwrite(beeppin, high); } else { digitalwrite(beeppin, low); } } key_handle(); wifistatushandle(); mygizwits.process();}
五、下载android开发代码包
5.1 在应用开发生成app代码包
通过android studio软件导入项目进行编译,因版本问题需要修改关键词,compile 均替换为implementation,testcompile均替换为testimplementation,可参考以下代码:
                                               apply plugin: 'com.android.application'
android { compilesdkversion 25 buildtoolsversion '28.0.2' uselibrary 'org.apache.http.legacy' defaultconfig { applicationid com.gizwits.opensource.appkit minsdkversion 16 targetsdkversion 25 versioncode 1 versionname 2.5.1.072715 multidexenabled true } buildtypes { release { minifyenabled false proguardfiles getdefaultproguardfile('proguard-android.txt'), 'proguard-rules.pro' } }}
dependencies { implementation filetree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support.constraint1.1.0' testimplementation 'junit4.12' implementation 'com.android.support24.2.1' implementation files('libs/bleasyconfig.jar') implementation files('libs/easylink2.0.jar') implementation files('libs/gizwifisdk.jar') implementation files('libs/jpush-android-2.1.5.jar') implementation files('libs/lark7618sdk_noudp1606031910_0101.jar') implementation files('libs/libammsdk.jar') implementation files('libs/libforeelink.jar') implementation files('libs/lsfsk_1.0.jar') implementation files('libs/ltlink2.jar') implementation files('libs/mta-sdk-1.6.2.jar') implementation files('libs/oneshotconfig.jar') implementation files('libs/open_sdk_r5756.jar') implementation files('libs/pushservice-5.6.0.30.jar') implementation files('libs/simpleconfigwizardlib.jar') implementation files('libs/xutils-2.6.14.jar') implementation files('libs/zxing.jar') implementation 'com.android.support25.3.0' implementation 'com.yanzhenjie1.0.5'}
同时可参考“基于机智云aiot平台的android开源app修改教程”https://www.sohu.com/a/476083681_486728
使项目成功编译
原文地址:https://blog.csdn.net/a6662580/category_11596658.html

多种多样的便携式充电器
Fnality公司正在利用区块链技术开创数字金融市场时代
芯片供应短缺,福特表示将优先为利润率最高的汽车配备芯片
2018年亿邦未来零售大会 互联网资讯
我国航空发动机事业的发展情况探讨
云平台部署:基于Arduino与机智云的家居环境远程系统设计
苹果汽车 iCar 外观曝光,特斯拉拜拜了!
PY32F002A开发板,32 位 ARM® Cortex®-M0+内核,开发简单
两段式状态机不可能完成的任务
全新升级|才茂双5G模块千兆路由器CM520-37FS重磅发布!
什么是短路保护
蓝牙耳机什么牌子好,听歌最好的蓝牙耳机
半导体市场的复苏全靠5G?今年恐怕没戏
宝马Vision iNEXT:一款全面互联、提供高度自动驾驶功能的纯电动汽车
西门子博途:SCL中FB模块的结构
2022骨科手术机器人的进展如何
对于ANY数据类型及参数传递的详细解析
纯电动汽车优缺点 纯电动汽车的组成
汇顶科技聘任胡煜华女士为公司总裁 负责公司整体运营管理
一文解析FCC的卫星标准