WIFI模块开发教程之W600网络篇7:微信小程序AP配网①

前言

本文研究如何使用微信小程序对模块进行配网,采用业界公认配网率最高,几乎100%的配网方式:softAP配网。

一、理论基础

1.softAP配网原理

softAP方式,IoT设备工作与AP模式,手机直连IoT设备,将目标路由器的SSID/Password传过去。该方式是最传统的配网方式,不考虑终端兼容性问题,配网成功率100%。

缺点是用户操作复杂。用户需要连接IoT设备热点,然后手动输入SSID/Password。

softAP配网总体流程如下:

  (1)  热点命名
    softAP方式配网,模块起来一个热点LED-XXXX (XXXX为MAC地址后四位)
    
  (2) 热点配置:
    local_ip: 192.168.10.1
    Net_mask: 255.255.255.0
    Gateway: 192.168.10.1
    udp_port: 20032
    
  (3) 设备热点配网:
    APP--------->Device
    {
      "ssid":"xxxx",
      "passwd":"xxxx"
    }
  
  (4) 设备配网结果通知:
    Device--------->APP
    {
      "status":"xxxx",
      "mac":"xxxx",
      "type":"xxxx"   //产品类型
    }

2.微信小程序基本开发

· 微信小程序有四种类型的文件

js  -------- JavaScrip文件
json ------- 项目配置文件,负责窗口颜色等等
wxml ------- 类似HTML文件
wxss ------- 类似CSS文件

在根目录下用app来命名的这四中类型的文件,就是程序入口文件。

a. app.json

必须要有这个文件,如果没有这个文件,IDE会报错,因为微信框架把这个作为配置文件入口,你只需创建这个文件,里面写个大括号就行,以后我们会在这里对整个小程序的全局配置。记录了页面组成,配置小程序的窗口 背景色,配置导航条样式,配置默认标题。

b. app.js

必须要有这个文件,没有也是会报错!但是这个文件创建一下就行 什么都不需要写,以后我们可以在这个文件中监听并处理小程序的生命周期函数、声明全局变量。

c. app.wxss

这个文件不是必须的。因为它只是个全局CSS样式文件

d. app.wxml

这个也不是必须的,而且这个并不是指主界面哦~因为小程序的主页面是靠在JSON文件中配置来决定的

· 微信小程序组件开发

组件开发请参考微信官方介绍:

https://developers.weixin.qq.com/miniprogram/dev/component/

二、使用实例

1.程序分析

1.1 配网界面

  <view class="section">
    <input  class="config" bindinput="bindKeyInputSsid" placeholder="请输入ssid"/>
    <input  class="config" bindinput="bindKeyInputPwd" password type="text" placeholder="请输入密码"/>

    <button class="section__title" type="primary" bindtap="startConfig"> 开始配网 </button>

    <textarea class="res_text" name="textarea">{{config_res}}</textarea>
  </view>

以上代码具体效果如下:
在这里插入图片描述

1.2 js配网函数

  startConfig: function(e) {
    console.log("start config");
    const udp = wx.createUDPSocket()
    const locationPort = udp.bind()
    var object = {};
    var that = this;
    object['ssid'] = that.data.ssid;
    object['password'] = that.data.password;

    var json = JSON.stringify(object);//JSON.stringify()

    udp.send({
      address: '192.168.1.255',
      port: 20032,
      message: json
    })

    // receive
    udp.onListening(function(res){
      console.log('监听中...')
      console.log(res)
    })

    udp.onMessage(function(res){
      console.log(res)
      let unit8Arr = new Uint8Array(res.message.data);
      let encodedString = String.fromCharCode.apply(null, unit8Arr),
      decodedString = decodeURIComponent(escape((encodedString)));//没有这一步中文会乱码

      console.log('str===' + decodedString)
      that.setData({
        config_res: decodedString
      })

    })
  }

小程序配网页面点击配网后,会调用微信提供的UDP Socket接口进行配网。

微信官网示例如下:

  const udp = wx.createUDPSocket()
  udp.bind()
  udp.send({
    address: '192.168.193.2',
    port: 8848,
    message: 'hello, how are you'
  })

· createUDPSocket()创建udp socket

· bind()绑定本地接口,这个接口是随机的,暂时不支持设置port

· send()发送数据到20032端口,本文使用网络调试助手代替实际设备

3.下载网络调试助手

下载地址:http://soft.onlinedown.net/soft/971066.htm

三、运行

1.设置网络调试助手

打开网络调试助手,绑定20032端口,具体设置如下所示:
在这里插入图片描述

2.小程序配网

设置路由器名字和密码
在这里插入图片描述
网络助手收到小程序下发的信息后,发送{“status”:“ok”,“type”:“led”}。

四、结语

1.总结:

本节完,实际操作过程中需要注意的地方有如下几点:

(1) 电脑需要屏蔽其他网卡

2.资料获取

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

公众号:物联网客栈,扫码关注,回复w600即可。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值