天猫精灵智能家居对接,及天猫iot官网配置图文讲解(二)

天猫精灵智能家居对接,及天猫iot官网配置图文讲解(二)

2、天猫精灵设备对接

2-1、介绍

​ 上一章里,我已经讲了天猫精灵的技能配置设备创建登录验证这三个部分做了,此次篇文章就讲之后的设备查询,设备信息上报,以及获取开发权限

文章地址

天猫精灵智能家居对接,及天猫iot官网配置图文讲解(一)

2-2、设备查询请求

​ 在之前的文章中,最后面写的登录验证。在用户走到这一步时,会向服务器发送请求,请求内容在官方文档中很详细了。这里可以用一个类封装这些数据,格式是固定的

请添加图片描述

​ 用spring方法体中的@RequestBody,路径方法中接收参数,具体代码可以使用fastjson jar包,将字符串转成JSONObject格式的类之后,下一步就是执行具体的业务了。

​ 启动项目,开始测试,可以看到,下面的图片是接收到的请求路径和它所携带的数据。内容和官方提供的是一致的。

请添加图片描述

​ 之后对代码进行处理,代码的功能主要还是看header中的namespace和name这两个标签,访问返回中,namespace不用修改,但是要修改的是name。messageId保留不动,在此之前要了解一下设备发现中返回的设备协议。这边对设备进行封装。代码如下,构造方法,get,set和toString也是由读者自己生成。

public class Device {/*** 设备id*/private String deviceId;/*** 设备别名*/private String deviceName;/*** 设备英文名*/private String deviceType;/*** 设备品牌*/private String brand;/*** 产品型号*/private String model;/*** 位置,这里是指厨房,客厅这些*/private String zone;/*** 设备状态*/private JSONObject status;/*** 设备的扩展信息*/private JSONObject extensions;
}

​ 这里面的一些信息介绍

  1. deviceId,由开发者自己定义,长度不限,

  2. deviceName,设备被别名,也是由用户自己定义,开发者保存

  3. deviceType,这里不能随便填写,要和阿里精灵平台中的产品品类一致,但是不用填写中文,填写outlet就可以了

  4. brand,也是要和途中的产品品牌一致,这里是填写:“中文名·英文名”(图片这里有复制按钮)

  5. model,这里是开发者自己定义的代码数据了内容和产品型号是一致的

请添加图片描述

  1. zone,产品所在的位置,例如厨房,客厅,办公室这些。

    这个值,只会在第一次设备发现的时候提交有用,之后重复提交,都不会修改这个值,唯一有效的就是设备更新,告诉官方服务器设备已经被删除,然后再提交一次,这样就是一个新设备了。

  2. status,设备属性,这里的属性暂时只设置有开关两个,子参数为powerstate:1

  3. extensions,设备扩展信息

    ​ 下面创建一个类,模拟设备,内容如下

请添加图片描述

​ 路径映射方法如下

    @RequestMapping("getDevices")@ResponseBodypublic Map<String, Object> handler(@RequestBody String json) {Map<String, Object> map = new HashMap<>();JSONObject object = JSONObject.parseObject(json);JSONObject header = object.getJSONObject("header");JSONObject payload = object.getJSONObject("payload");if (header != null && payload != null) {String namespace = header.getString("namespace");String name = header.getString("name");//判断请求是否是属于“设备发现”if ("AliGenie.Iot.Device.Discovery".equals(namespace) && "DiscoveryDevices".equals(name)) {//创建一个数组类存储数据JSONArray array = new JSONArray();JSONObject deviceInfo = new JSONObject();deviceInfo.put("deviceId", myDevice.getDeviceId());deviceInfo.put("deviceName", myDevice.getDeviceName());deviceInfo.put("deviceType", myDevice.getDeviceType());deviceInfo.put("brand", myDevice.getBrand());deviceInfo.put("model", myDevice.getModel());deviceInfo.put("zone", myDevice.getZone());deviceInfo.put("status", myDevice.getStatus());deviceInfo.put("extensions", myDevice.getExtensions());array.add(deviceInfo);payload = new JSONObject();//数据存入payload.put("devices", array);//数据name修改header.put("name", "DiscoveryDevicesResponse");}}//数据返回map.put("header", header);map.put("payload", payload);System.out.println(map);return map;}

请添加图片描述

​ 下面就可以进行下一步了,设备的开关,点击上图中的在线调试按钮进入设备调试界面。调试界面如下,用户可以点击标准语料里的按钮,调试,在这里查询设备状态是不会发送请求的。但是设备开关和需要发送请求到开发者服务器的。

请添加图片描述

2-3设备状态设置

​ 能够查询设备状态了,之后就要进行设备的状态设置。依旧是判断name和namespace这两个参数。之后进行数据的设置及返回。这里的代码如下,判断请求是否属于属性设置,之后遍历发送来的设备列表,按照params的内容进行设置。并返回。res的内容设置,可以参考设备控制响应协议格式,返回数据使用的是deviceResponseList这个key值。

if (header != null && payload != null) {String namespace = header.getString("namespace");String name = header.getString("name");//判断请求是否是属于“设备发现”if ("AliGenie.Iot.Device.Discovery".equals(namespace) && "DiscoveryDevices".equals(name)) {...} else if ("AliGenie.Iot.Device.Control".equals(namespace) && "thing.attribute.set".equals(name)) {JSONArray array = payload.getJSONArray("deviceIds");if (myDevice.getDeviceId().equals(array.get(0))) {//这里的params是有多个参数的,这里只接收开关状态请求,其他请求忽略int set = payload.getJSONObject("params").getInteger("powerstate");myDevice.getStatus().put("powerstate", set);//请求返回JSONObject res = new JSONObject();res.put("deviceId", array.get(0));res.put("errorCode", "SUCCESS");res.put("message", "SUCCESS");JSONArray resArr = new JSONArray();resArr.add(res);payload = new JSONObject();payload.put("deviceResponseList", resArr);}}
}

​ 去调试界面看看,点击打开插座和关闭插座,得到如下反馈

请添加图片描述

如需代码,请联系博主

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49387.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天猫精灵智能设备对接(5) SSL https设置

至于什么是SSL证书具体有什么用&#xff0c;想了解的自行百度吧&#xff0c;再不行谷歌&#xff0c;百度出来的东西比我这个外行巴拉巴拉说半天来的痛快&#xff0c;本来腾讯云是送免费一年的SSL证书的&#xff0c;但是我赶得非常不巧&#xff0c;在我做测试那几天腾讯的ssl服务…

天猫精灵智能设备对接(8) 开发者网关地址

洋洋洒洒六七千字已经搭进去了&#xff0c;终于把服务器篇写的差不多了&#xff0c;当然小狂不是专业的写手&#xff0c;有些东西写的凑合看吧&#xff0c;只是说明过程&#xff0c;并不修饰言辞&#xff0c;看的舒服就点个赞&#xff0c;不舒服就当学东西了吧。这篇文章我们将…

springboot项目接入天猫精灵

springboot项目接入天猫精灵 最近工作需要使用到天猫精灵的语音功能&#xff0c;大体是通过呼叫对应的“调用词”实现携带参数&#xff0c;然后调用我项目中的接口&#xff0c;以实现对应的业务。所以在此简单的记录下使用过程 实际上&#xff1a;天猫精灵的官方文档记录的也很…

天猫精灵智能家居对接,及天猫iot官网配置图文讲解(一)

天猫智能家居对接 1-1、介绍 这篇文章主要是介绍&#xff0c;如何使用java对接天猫精灵智能家居提供的api。这么做的好处就是能让用户通过天猫精灵发送命令到我们的服务器&#xff0c;然后操控设备执行一系列的命令&#xff0c;当然这些功能呢都是天猫精灵官方制定的协议&…

java对接天猫精灵语音助手实现对公司其下的智能设备进行控制(附上源码)

java对接天猫精灵语音助手实现对公司其下的智能设备进行控制 前言当初刚来广州 公司上一任java已经离职半年 &#xff0c;项目已经跑不动了&#xff0c;才招人的&#xff0c;所以我获得的是一个连跑都跑不起来的项目源码并且对项目一无所知&#xff0c;一年前网上并没有对接天…

天猫精灵智能设备对接(7) OAuth2.0

在开始之前先放两篇参考&#xff0c;一篇英文http://bshaffer.github.io/oauth2-server-php-docs/cookbook/&#xff0c;一篇中文https://www.cnblogs.com/endv/p/7868549.html&#xff0c;中文博客里的内容基本上是把英文官方文档翻译一遍。到这里如果你不知道OAuth2.0是啥可以…

天猫精灵对接2(OAuth 搭建)

根据 接入方式及流程 中的说明&#xff0c;可知&#xff0c;搭建过程中&#xff0c;我们需要自己整一个 OAuth 的授权平台&#xff0c;具体说明可以参考蟋蟀大哥的文章 ASP.NET WebApi OWIN 实现 OAuth 2.0 &#xff0c;我的实际代码也是基于文章给出的源码修改的。 第一步 认…

天猫精灵对接智能设备

why to do&#xff1a;   我之前一直很喜欢智能家居&#xff0c;可惜的是现在市场上成品的智能家居实在是太贵了&#xff0c;屌丝的码农是在背不起每月高额的房贷和装修费用的基础上&#xff0c;再买成品的智能设备&#xff08;像某米那样一个智能开关&#xff0c;竟然卖那么…

从零玩转系列之SpringBoot3-核心原理

一、简介 1.前置知识 ● Java17 ● Spring、SpringMVC、MyBatis ● Maven、IDEA 2.环境要求 环境&工具版本(or later)SpringBoot3.1.xIDEA2023.xJava17Maven3.5Tomcat10.0Servlet5.0GraalVM Community22.3Native Build Tools0.9.19 二、SpringBoot3-核心原理 1.事件和监听器…

SpringBoot3【⑤ 核心原理】

1. 事件和监听器 1. 生命周期监听 场景&#xff1a;监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件&#xff1b; 1.1. 编写SpringApplicationRunListener 这个接口的实现类 1.2. 在 META-INF/spring.factories …

开发必备,开源 or 免费的 AI 编程助手

AI 大模型的火热&#xff0c;让开发圈近来如虎添翼&#xff0c;各种各样基于 AI 技术的开发者工具和新范式不断涌现&#xff0c;尤其是 Github 和 OpenAI 共同推出的 Copilot X &#xff0c;更是一骑绝尘。本文推荐一些开源 or 免费的 AI 编程工具&#xff0c;不妨试着用起来。…

超过5000人的2年研究表明,这一活动破坏你的身心健康

Tips 原文作者&#xff1a;Minda Zetlin 原文出处&#xff1a;A 2-Year Study of More Than 5,000 People Shows This 1 Activity Destroys Your Emotional and Physical Health 阅读时&#xff0c;把文中的 Fackbook 换成微信。 国外主要用 Facebook&#xff1b; 国内主要是微…

申请阿里云服务器并搭建公网可支持数据上传下载的HTTP服务器

1. 前言 拥有一台自己的云服务器可以做很多事情。阿里云服务器毫无疑问是国内最好的。 阿里云服务器可以用于各种互联网应用的搭建和运行&#xff0c;提供稳定、高性能的服务。 阿里云服务器的用途&#xff0c;包括但不限于以下几个方面&#xff1a; 网站托管&#xff1a;可以将…

谷歌眼镜秀出时尚风采:对面的女孩看过来

摘要&#xff1a;在近日举办的纽约时尚周上&#xff0c;让身材火辣的模特带上谷歌的眼镜&#xff0c;行走在T台之上。主打时尚牌&#xff0c;进一步加固谷歌眼镜在大众消费阶层的印象&#xff0c;尤其是女性消费者。谷歌眼镜创始人Sebastian Thrun指出&#xff1a;谷歌眼镜特别…

学生台灯什么牌子好对眼睛好?专业护眼灯的学生台灯分享

据报告统计&#xff0c;2022年我国儿童青少年总体近视率为52.7%&#xff0c;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%&#xff0c;这些数据让人不寒而栗&#xff01; 专家表示&#xff0c;导致儿童青少年近视的因素&am…

【UGP VR眼镜排行榜】2018VR眼镜眼镜哪个好?什么VR眼镜值得买?综合推荐十大热品

科技的发展&#xff0c;高科技产品层出不穷&#xff0c;VR眼镜的出现使人们足不出户也能享受到高品质的观影感受。VR(Virtual Reality&#xff09;即虚拟现实&#xff0c;简称VR.虚拟现实头戴显示器设备&#xff0c;简称VR头显VR眼镜.现在&#xff0c;VR眼镜已不是什么稀奇的东…

《谷歌眼镜》新书作者:眼镜需要成为AR的载体吗?

近10年前&#xff0c;谷歌推出了首款AR眼镜Google Glass&#xff0c;尽管这款产品并没有如预期般取得成功&#xff0c;但它为后续AR硬件技术的发展奠定了基础。我们知道&#xff0c;从微软HoloLens开始&#xff0c;AR头显/眼镜产品更侧重于B端应用&#xff0c;面向C端发售的很少…

Karl Guttag:现有Micro LED/LCoS+光波导AR眼镜对比解析

轻量化是未来AR眼镜的发展趋势&#xff0c;为了缩减尺寸&#xff0c;AR眼镜厂商尝试了多种方案&#xff0c;长期来看Micro LED光机在小型化上更有优势&#xff0c;但现阶段LCoS光机的图像表现更好。在CES 2023期间&#xff0c;DigiLens、Lumus、Vuzix、OPPO、Avegant也展出了不…

偏光太阳镜测试图片软件,[专题]真假偏光太阳镜简单、实用辨别方法!

偏光太阳镜主要是通过镜片的平衡排列的结晶体原理&#xff0c;只让与晶体平衡的光波通过&#xff0c;而向其它角度震动的光波会一律被阻挡的方法(如同百叶窗的原理)制作而成。 正是利用这种原理&#xff0c;偏光太阳镜便可以有效地排除和滤除光束中的偏振光&#xff0c;使光线能…

智能眼镜的两种显示方式

to管理员&#xff1a;哪一个是广告&#xff0c;全是广告&#xff01;难不成网友的链接都不能给了&#xff1f;&#xff01;你们的评判标识是什么&#xff1f; 就现有的技术而言&#xff0c;受限于通讯及周边模块、电源的限制&#xff0c;眼镜只适合于作为显示器使用。 眼镜显示…