博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。


一、前言


     作为一个全栈开发者,不能没一些前端技术,包括热门的 vue 、AngularJS 、react 三大前端框架,好吧!坦白说,我只对第一个熟悉,后面2个也只是了解;

     其中的今天介绍的笔记京东微联·小京鱼的控制面板H5开发的语法框架都是基于vue 的,所以,甚是熟悉,也可以自定义组件,下面,我带大家编译一个公版的前端控制界面;


二、为何 京东微联接入务必写控制面板?


     接触最多的是类似涂鸦、机智云或alios这种一站式开发,生成固件生成app,直接使用就可以了。其实,他是可以在云端编辑界面,可以为组件做一些美化,比如颜色修改,组件替换,到最后才生成页面;

     我觉得我是最早接触这种一站式开发的一批人员了,之前的2017年阿里智能(阿里小智)平台,也是可以自定义控制面板,因为阿里智能app是原生+H5方案构成的,怎么理解?就是里面是个跨平台的框架,可能是 react native框架,具体我没去琢磨;这样,就可以在ios和Android上公用一个代码了,这样大大减少开发周期;之前的公司任职 Android开发的我,就要求学这个开发,但是由于某些原因此项目不做了;但是利用这种 云端编辑控制面板,然后无需更新ios和Android端,即可打开此设备的控制面板,这种技术是非常火热的!

     京东微联的 小京鱼app 也是一种跨平台方案,就是部分是原生开发的,而一部分是 前端h5 页面,官方说了,这种跨平台技术是 vue 框架;

     前端配置是通过H5的方式在小京鱼APP中生成设备控制页面,让用户实现远程控制设备的功能。无论您的产品是空调、净化器、冰箱、洗衣机等等,都可以通过我们提供的JS SDK和前端规范开发相应的界面。

在这里插入图片描述


三、环境搭建开发流程


     上面说了,这样的H5通用模版方案是为了功能目标:减少厂商开发H5时间

     当前支持品类:插座,空调,灯,风扇,扫地机器人,取暖器,加湿器,空气净化器,电饭煲,电视,微波炉,电烤箱,多位开关,电水壶,养生壶,净水器,电热水器,洗衣机

3.1 开发环境搭建

     支持系统:macOS,Windows x64,Linux x64

     目前的前端三大框架都是依赖Node.js ,所以这是必装软件:安装Node.js 官网,根据操作系统下载,一路傻瓜式安装,之后查看是否安装成功,我的 win10 Node环境是 10.14.1

C:\Users\87018>node -v
v10.14.1

     安装IED (推荐VS Code) 根据操作系统下载;至此,环境搭建完毕,是不是非常简单!!


3.2 下载公用H5面板;


      这里务必提醒一下,个人开发者只能用公用H5面板,而企业开发者可以根据公用H5面板自行修改页面!

在这里插入图片描述


3.3 修改 welinkconfig.json

      在项目根目录中有一个 welinkconfig.json 文件

{
  "jd.nsng.smart.url": "https://sbappgw.jd.com",
  "authenticationTokenKey": "0882741796_91900007_15012345698977754_c0b963d6",
  "staticPath": "project"
}
  • jd.nsng.smart.url 可以配置沙箱或线上地址,默认沙箱地址。

    • 沙箱:https://sbappgw.jd.com
    • 线上:https://gw.smart.jd.com
  • authenticationTokenKey 需要在微联开发者中心获得(必填),是 H5 本地调试工具的令牌。虚拟设备或真实设备通过小京鱼 APP 绑定到开发者账号下才会生成 authenticationTokenKey

  • staticPath 要调试的HTML5项目目录(必填)。

3.4 如何找到 authenticationTokenKey ?

      1. 登录到小京鱼服务平台
join

      2. 进入控制台
在这里插入图片描述

      备注:authenticationTokenKey 有效期 24 小时,如果失效,需要从新登陆小京鱼服务平台获取。

3.5 项目启动

      在压缩包根目录下 bash 安装依赖操作。

# 安装依赖
npm install

# 在loaclhost:8082 启动服务
npm run dev

# 打包并压缩生产环境文件
npm run build


四、文件夹以及文件说明


     因为我做的是 灯具类产品,下面的全部说明都是基于灯具类阐述!


├── dist                  // npm run build 打包后生成的文件
├── src
|   ├── assets            // 存放业务图片资源
|   ├── comppnents        // 存放业务组件
|   ├── pages             // 存放 router 页面
|   ├── router            // 配置 router 跳转路径
|   ├── store             // 存放定义操作数据
|   ├── timer             // 封装的定时组件
|   ├── utils             // 存放工具
|   └── App.vue           // 入口页面

4.1 标准模板

标准模板包括: 头图、设备开关、亮度设置、色温设置、色彩设置、节能、定时设置;

主页面 src/pages/index.vue

标准模板包含如下控件:

<template>
    <div>
      <Header />
      <Power />
      <Mode />
      <BrightLED />
      <ColorTemp />
      <Color />
      <Economy />
      <TimeTask />
    </div>
</template>

设备开启状态

4.1.1标准参数:

参数名称streamIdValue是否可控
开关Power0: 关闭, 1: 开启可控
模式设置Mode0 无模式,1 阅读模式,2 观影模式,4 睡眠模式,11 浪漫模式,12 节能模式,8 休 息模式可控
亮度设置BrightLED数值调节,最小值为 0,最大值为 255,用户可调节其中任意整数值可控
色温设置ColorTemp最小值为 3000,最大值为 6500;色温步长为 500可控
色彩设置Color0:红色,1:橙色,2:蓝色,3:紫色,4:绿色可控
节能Economy0: 关闭, 1: 开启可控
定时设置TimeTask可控

其他参数

参数名称streamIdValue是否可控
氛围灯AmbientLight0: 关, 1: 开可控
氛围灯亮度AmbientBright最小值为 0%,最大值为 100%,用户可调节其中任意整数值。 设备端存储亮度为 0 到 255,转换公式为:设备存储值/2.55 等于亮度可控
氛围灯色彩HumanSense0:红色,1:橙色,2:蓝色,3:紫色,4:绿色可控
夜灯SleepLight0: 关, 1: 开可控

组件介绍及使用

  • 业务组件 路径:src/components/

Header

智能灯品类头图,可以直接使用,无需修改

Power

设备开关,无需修改,直接使用。
设备开启时,显示其他控件,关闭状态时,其他控件隐藏;

Mode

该组件是对应模式类组件, 该组件数据格式为:

streamId: 'Mode',
title: '模式设置',
modeDescription: [],
list: [
  {
    text: '自定义',
    icon: 'icon-defined',
    id: 0,
  },
  {
      text: '阅读',
      icon: 'icon-read',
      id: 1,
  },
  {
      text: '观影',
      icon: 'icon-film',
      id: 2,
  },
  ...
],

说明:

  1. streamId: 表示该组件可控制的stream_id;
  2. title: 表示组件的标题;
  3. list: 表示组件显示的选项的数据,一个对象代表一个模式类型; (有超过12个类型时需要在pages文件夹下创建二级页面);
  4. modeDescription: 当list数组中对象为2时,组件下方出现的说明行文案,该属性只包含两个元素,每个元素字数最长限制为25个中文字符;
  5. value: 表示当前选中 id;
  6. iconPosition: ‘top’ 表示 模式组件 icon 在 text 上面;
  7. PowerOn: 当 Power 为关时隐藏控制字段;

AmbientLight

氛围灯开关,无需修改,直接使用。
开启时,氛围灯亮度设置和氛围灯色彩设置功能显示;氛围灯关闭时,氛围灯亮度设置和氛围灯色彩设置功能不显示;

AmbientBright

氛围灯亮度设置,组件数据格式为:

data() {
  return {
    streamId: 'AmbientBright',
    streamName: '氛围灯亮度',
    rangeDesc: '0%',
    min: 0,
    max: 255,
    tooltip() {
      return null;
    },
    dots: [
      {
        icon: 'light-low',
      },
      {
        icon: 'light-high',
      },
    ],
  };
},

说明:

  1. streamId: 表示该组件可控制的stream_id;
  2. streamName: 表示组件的标题;
  3. min: 滑杆最小值;
  4. max: 最大值;
  5. tooltip: 滑动时,提示;
  6. dots: 无极滑杆两端的图标或文字提示;
  7. rangDesc: 副标题显示的当前值,如此项为设置则显示滑杆当前值;

AmbientColor

氛围灯色彩设置,无需修改,直接使用。

BrightLED

亮度设置,组件数据格式为:

data() {
  return {
    streamId: 'BrightLED',
    streamName: '亮度设置',
    min: 0,
    max: 255,
    tooltip() {
      return null;
    },
    dots: [
      {
        icon: 'light-low',
        text: ''
      },
      {
        icon: 'light-high',
        text: ''
      },
    ],
  };
},

说明:

  1. streamId: 表示该组件可控制的stream_id;
  2. streamName: 表示组件的标题;
  3. min: 滑杆最小值;
  4. max: 最大值;
  5. tooltip: 滑动时,提示;
  6. dots: 无极滑杆两端的图标或文字提示;

Color

色彩设置,无需修改,直接使用。

ColorTemp

色温设置,组件使用数据格式为:

data() {
  return {
    streamId: 'ColorTemp',
    title: '色温设置',
    minObj: {
      value: 3000,
      text: '3000',
      icon: '',
    },
    maxObj: {
      value: 6500,
      text: '6500',
      icon: '',
    },
    stepLength: 500,
    tooltip: () => '',
  };
},

说明:

  1. streamId: 表示该组件可控制的stream_id;
  2. title: 表示组件的标题;
  3. minDesc: 滑杆最小值时,副标题显示的文字;
  4. minObj: 表示滑杆的最小值
  5. maxObj: 表示滑杆的最大值
  6. stepLength: 表示滑杆的步长值
  7. tooltip: 表示 滑动到节点时的提示;。

SleepLight

夜灯开关,无需修改,直接使用。

Economy

节能开关,无需修改,直接使用。

TimeTask

定时设置,无需修改,直接使用。


四、其他


     正确编译之后,webpack会开启一个本地服务器,比如下面的提示,根据提示访问提示的链接,之后浏览器开发者模式,便可看到真正的移动端效果;

     那么如何在真机看到效果呢?打开小京鱼app,打开设备控制面板即可看到效果啦!

Child html-webpack-plugin for "index.html":
         Asset      Size  Chunks  Chunk Names
    index.html  1.36 MiB       0
    Entrypoint undefined = index.html
    [./node_modules/html-webpack-plugin/lib/loader.js!./index.html] 1.28 KiB {0} [built]
    [./node_modules/lodash/lodash.js] 528 KiB {0} [built]
    [./node_modules/webpack/buildin/global.js] (webpack)/buildin/global.js 472 bytes {0} [built]
    [./node_modules/webpack/buildin/module.js] (webpack)/buildin/module.js 497 bytes {0} [built]
i 「wdm」: Compiled with warnings.
> Listening at http://localhost:8083/index.html

在这里插入图片描述

另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转esp8266带你飞、加群付费QQ群,不喜的朋友勿喷勿加:434878850
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有回必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!