ESA2GJK1DH1K基础篇: Android实现SmartConfig简单Demo
下载源码去
百度安信可








导入源码


等待加载完


我的提示更新下软件 ,我就更新下


安装完成以后重新导入工程
安装到手机


注意,由于Android 9.0 以后的获取WIFI名称需要打开GPS,所以如果提示下图

需要自己手动打开GPS

输入密码,然后测试

测试准备工作
一,下载单片机程序
"测试APP使用SmartConfig绑定Wi-Fi 设备通过MQTT控制设备"

二,调整波动开关位置,STM32和Wi-Fi通信

三,短接STM32的PB2和Wi-Fi模块的RST引脚(为了做项目稳定可靠,请使用单片机硬件复位Wi-Fi)

开始测试
一.长按PB5大约4S,等待指示灯快闪,松开PB5,Wi-Fi模块进入配网状态

二.点击APP的"确认"按钮,开始搜索设备,配网成功以后,会获取到WIFI的MAC地址信息,还有WI-Fi当前分配的IP地址信息

结语
SmartConfig呢,就是控制WI-Fi连接上路由器,同时获取到WI-Fi的MAC地址信息
有些人可能会问,为什么需要WI-Fi的MAC地址.
我的单片机程序订阅的主题是这样的

我单片机
订阅的主题是: user/WI-Fi的MAC地址
发布的主题是:device/WI-Fi的MAC地址
而APP在SmartConfig的时候获取到了这个MAC地址
我设置的APP订阅的主题是:device/WI-Fi的MAC地址
APP发布的主题是:user/WI-Fi的MAC地址
这样APP和设备就完成了数据通信了...
有人又会问,自己指定不可以吗???你自己想想会出什么问题吧!
太麻烦了.......APP怎么做到动态绑定呢!!!!!!!
我说说现在用MAC的好处.
第一: 每个设备订阅和发布的主题唯一,各个设备不会冲突(MAC地址全球唯一)
第二: 设备端的程序只需要程序获取MAC然后设置订阅和发布的主题就可以了
第三: APP在SmartConfig的时候获取到设备的MAC,然后设置订阅和发布的主题就可以了
现在厂商都是利用MAC地址绑定.....
ESA2GJK1DH1K基础篇: Android实现SmartConfig简单Demo的更多相关文章
- ESA2GJK1DH1K基础篇: Android连接MQTT简单的Demo
题外话 我老爸也问我物联网发展的趋势是什么!!!!!! 我自己感觉的:(正在朝着 "我,机器人" 这部电影的服务器方向发展) 以后的设备都会和服务器交互,就是说本地不再做处理,全部 ...
- ESA2GJK1DH1K基础篇: Android实现MQTT封装源码使用说明
说明 这一节说明一下基础篇APP源码里面MyMqttCilent.java这个文件的使用 新建工程 安装MQTT的jar包 implementation 'org.eclipse.paho:org.e ...
- Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步
Java入门到精通——基础篇之多线程实现简单的PV操作的进程同步 一.概述 PV操作是对信号量进行的操作. 进程同步是指在并发进程之间存在一种制约关系,一个进程的执行依赖另一个进程的消 ...
- ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目
前言: 说明两个地方 1.点击按钮启动SmartConfig的地方 2.最终跳转的地方 说明 这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程 我要把所有的全部拿出来讲,让 ...
- ESA2GJK1DH1K基础篇: 测试APP使用SmartConfig绑定Wi-Fi 设备并控制设备
前言 实现功能概要 STM32控制WI-Fi模块以AT指令TCP透传方式连接MQTT服务器, 实现MQTT通信控制. 测试准备工作(详细下载步骤请参考 硬件使用说明 ) 一,下载单片机程序 二,安装A ...
- Android SQLite最简单demo实现(增删查改)
本来不太想写这篇博客的,但是看到网上的关于android数据库操作的博文都讲得很详细,对于像我这样的新手入门了解SQLite的基本操作有一定难度,所以我参考了网上的一些博客文章,并自己亲自摸索了一遍, ...
- ESA2GJK1DH1K基础篇: 移植官方MQTT包,让TCP实现MQTT功能(以GPRS模块为例)
前言 这节代码将在这一节的基础上实现 拷贝第一节测试里面的MQTT文件夹到当前工程 当前工程建个MQTT的文件夹,用于存放那个MQTT文件夹里面的内容 添加文件到里面 注意:::: 实际源码拷贝位置 ...
- ESA2GJK1DH1K基础篇: 来吧! 彻底了解一下MQTT
首先你需要知道MQTT并不是什么高大上的事物,它只是一个软件,对就是一个软件.其实就是个TCP服务器 一,既然是TCP服务器,这个TCP服务器和咱平时做的有什么不一样呢. 首先,平时的时候咱做的TCP ...
- [Android 性能优化系列]内存之基础篇--Android怎样管理内存
大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 原文地 ...
随机推荐
- Vue.js+vue-element
Vue.js+vue-element搭建属于自己的后台管理模板:什么是Vue.js?(一) Vue.js+vue-element搭建属于自己的后台管理模板:Vue.js是什么?(一) 前言 本教程 ...
- golang语言特性
1. 垃圾回收 a. 内存⾃动回收,再也不需要开发⼈员管理内存 b. 开发人员专注业务实现,降低了心智负担 c. 只需要new分配内存,不需要释放 2. 天然并发 a. 从语⾔层面⽀持并发,⾮常简 ...
- 向github项目push代码后,Jenkins实现其自动构建
配置Jenkins(添加Github服务器) 1.进入[系统管理] --> [系统设置] ,找到[Github] 2.添加Github服务器 这里需要github提供一个密钥文本,我们去gith ...
- PhpStorm注册使用方法
解压 sudo tar -zvxf PhpStorm-2019.3.tar.gz -C /usr/local 屏蔽hosts # Phpstorm 0.0.0.0 account.jetbrains. ...
- HttpRuntime.Cache 与 HttpContext.Current.Cache
1.HttpRuntime.Cache是应用程序级别的, 2.而HttpContext.Current.Cache是针对当前WEB上下文定义的. 3.这二个都是调用的同一个对象,不同的是:HttpRu ...
- 互联网基础知识------OSI七层网络模型梗概
OSI七层模型 七层网络结构: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层 一般也作五层 应用层.传输层.网络层.数据链路层.物理层(实体层) 引申问题:TCP/IP协议与http协议 ...
- KVM学习
获取镜像目前大小 # qemu-img info debian.img 添加额外的10G空间到镜像中 # qemu-img resize -f raw debian.img +10GB 注意:并不是所 ...
- 数据库IN查询参数化改造的方法
// 批量查询的 2019-05-14 if (!string.IsNullOrWhiteSpace(Request["userCodes"])) { string userCod ...
- HttpClient到底该不该using?
HttpClient实例是否应该释放掉? 从源代码中可以的看到httpClient类最上层实现了IDisposable接口,看到该接口我们下意识就是要用using(自动释放)代码块包含起.或者自己手动 ...
- mvc视图双下拉框联动
html部分的代码 <tr class="trs"> <td class="item1"><div class="ite ...