esp8266对接天猫精灵(8)开发者网关地址

2023-05-16

洋洋洒洒六七千字已经搭进去了,终于把服务器篇写的差不多了,当然小狂不是专业的写手,有些东西写的凑合看吧,只是说明过程,并不修饰言辞,看的舒服就点个赞,不舒服就当学东西了吧。这篇文章我们将完成天猫精灵服务器与我们服务器的对接,进行真机测试,返回我们当前的设备,用以调试。并且能拿到当前的天猫精灵解析的数据,把这篇做完如果要是有相应的硬件知识的话,就可以控制自己的智能设备了。这篇文章的结构将会按照创建一个天猫精灵的智能设备的需求去写。希望大家看的畅快淋漓。

这篇文章主要参考了这两篇文章https://bbs.hassbian.com/forum.p ... B%E7%B2%BE%E7%81%B5和https://bbs.hassbian.com/thread-1900-1-1.html。

对于不熟悉PHP开发的亲们来说,小狂提供一个PHP语法和函数的查询网站,挺好用的http://php.net/manual/zh/function.md5.php。


我们在天猫精灵的一项设置里需要填写开发者网管地址,那个是天猫精灵在得到第三方硬件平台认证后,post协议的地址,由此我们就根据POST的协议,拿到控制信息以及返回响应信息。我们在/var/www/html中建一个gate.php文件,用于解析POST过来的协议,先放一个天猫精灵的协议地址,http://doc-bot.tmall.com/docs/do ... Id=107454&docType=1,然后小狂会一点一点解析gate.php中的内容。


在文件的开头,每次获得执行这段文本前就会生成一个独一无二的uuid,这个就是协议文本中的


用于天猫平台跟踪返回指令用的,在最后也会告诉你这个,然后出错通过提供messageID进行天猫精灵服务端的判别



图中1标号是用来获取POST过来的数据,这个是PHP获取http POST获取到的数据的一种方式,当然还有其他方式,大概有3种吧,感兴趣的可以去查一下。图的2标号是把获得到的数据进行json解码放到obj中,json是http传送的一种格式。3标号是获取本次请求的messageID值,会回传到天猫服务器的。


这一段代码用来回复天猫服务器我们的设备都有哪些,我们可以参考一下天猫精灵的协议说明,这一段代码是天猫服务器POST后要响应的数据。


所有表格中要求返回的数据都必须返回,有一个不对,都会导致天猫精灵控制的时候找不到对应的设备。所以一定要好好填。图中1标号中说明经协议是设备发现协议,2中的东西基本都固定了,%s那个会在后边利用sprintf来实现messeid的复制,3标号中的乱码是因为我用的是中文,不用管,直接用了别人的设备信息,所以设备信息没有改,协议中有说明不再解释,主要说说5,在图上5可以看出设备支持全部信息查询,温度查询、湿度查询和开关状态查询,这个是固定的,由协议指定,可以是操作类中的属性也可以是查询类中的属性,这个不能乱填,决定了天猫精灵语义识别后返回的信息,填写的时候一定要慎重。再放一个灯具的设备返回信息。


下图所示为设备控制协议的详细内容和解析,只截出打开指令协议的详细内容,其他的协议内容于此类似



图中标号1说明天猫云服务器发送的是控制指令,标号3返回正确的响应,标号4返回错误的响应,这些参数都是有device_control解析处理后传回来,标号2用来解析控制指令,device_control在aligenies_request.php中就是对发送过来的设备名,设备动作,查看天猫POST过来的数据包是否正确,如果正确给出正确的响应,如果不正确给出错误的响应,不再列举具体的解析协议,只给出处理的过程。

1是返回错误指令的设备名等信息,标号2把正确控制信息进行json格式化,标号3是把这些信息POST发送给另外一个php文件用于保存给硬件设备进行获取,标号4返回正确指令的设备名等信息,这些信息用于格式化输出POST响应数据。

下图为设备响应指令的详细协议以及协议的解析和响应




协议的解析和设备控制协议的解析采用的思想差不多,只不过查询和控制这两个过程是正好相反的。过程控制是主动存储数据,然后又硬件设备读取,查询是硬件设备返回数据存储到服务器上在查询的时候读取。就这样,具体的代码看aligenies_request.php中的内容吧,这里会调用存储读取的具体PHP,这个URL存储在homeassistant_conf.php中,这个可以改成各位URL,密码我自己测试没有用到,所以没写,有需要的可以写上密码,然后比较安全


到这里所有的文件部署完毕,我们现在天猫精灵上新建一个智能家居,用于真机测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

esp8266对接天猫精灵(8)开发者网关地址 的相关文章

  • 多线程的优点和缺点?什么场景适合使用多线程?

    由于多线程应用程序将程序划分成多个独立的任务 xff0c 因此可以在以下方面显著提高性能 xff1a 1 多线程技术使程序的响应速度更快 xff0c 因为用户界面可以在进行其它工作的同时一直处于活动状态 2 当前空闲的任务可以将处理器时间让
  • 相机内参和畸变参数进行校正程序

    当相机校正完成后 xff0c 会得到相机的外参 内参 畸变参数 通过内参和畸变参数可以得到相机校正后的图像 两种方法 xff0c 程序如下 xff1a include lt opencv2 opencv hpp gt include lt
  • (根据关键词)查找论文的一些途径

    以下方式都是在查找机器学习 深度学习相关的论文而发现的 目录 一 https arxiv org search cs 二 semanticscholar xff1a https www semanticscholar org search
  • Detected problems with api compatibility

    今天遇到了这个问题 xff0c 看来还是不要升到Android9 0了 xff01 待测试 xff1a https www cnblogs com qinxiaofei p 10075320 html
  • 在 Win10 系统下安装 JDK 及配置环境变量的方法

    首先 xff0c 在官网下载 JDK xff1a Oracle 官网 如上图所示 xff0c 在 Oracle 官网下载 JDK xff0c 有一点需要注意 xff0c 那就是在我们下载合适的 JDK 之前 xff0c 需要先点击 标记 1
  • APM 路径规划笔记

    20180711 xff1a 类名 xff1a AC WPNav 功能 xff1a 完成Auto Loiter Abmode模式中的路径规划 为计算方便设置默认值 xff0c 实际值有可能又变化 wp accel cms 61 100 wp
  • 程序员5大热门发展行业,就业迷茫的同学注意啦!

    信息化时代 xff0c 程序员成为各行业中的香饽饽岗位 xff0c 发展空间大 xff0c 薪资福利高 xff0c 因此最近几年转向程序员岗位的小伙伴越来越多 xff0c 不过因为这种 青睐 xff0c 使得程序员岗的竞争也越发大了 xff
  • Jetson TX2 初体验

    阅读原文请点击 摘要 xff1a 0 简介 Jetson TX2 1 是基于 NVIDIA Pascal 架构的 AI 单模块超级计算机 xff0c 性能强大 xff08 1 TFLOPS xff09 xff0c 外形小巧 xff0c 节能
  • 写毕业论文期间的一些收获和感想

    已经有好几天没有学Python了 xff0c 这几天一直在赶论文的进度 xff0c 虽然说拖延症害死人 xff0c 但毕竟写论文这件事在我心里的重要性实在无法排到很靠前的位置 xff0c 造成这些日子突击写论文的结果也是情理之中吧 而在写论
  • C/C++Linux服务器开发/后台架构师知识体系整理

    1 xff1a 精进基石 1 1 数据结构与算法 1 1 1 随处可见的红黑树 红黑树的应用场景 进程调度cfs xff0c 内存管理 红黑树的数学证明与推导 手撕红黑树的左旋与右旋 红黑树添加的实现与添加三种情况的证明 红黑树删除的实现与
  • Java 进口管制限制解除

    版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 由于国外的进出口限制 xff0c 对Java密码算法体系进行了一些限制 xff0c 为了解除限制 x
  • turtlebot3仿真例子(二)----SLAM仿真实现

    turtlebot3地图构建 1 启动turtlebot3的world xff1a roslaunch turtlebot3 gazebo turtlebot3 world launch 2 启动slam导航包并配置方法 xff1a Kar
  • ros 节点话题重映射和命名空间(以turtlesim为例)

    由于ROS必须有唯一的名称 xff0c 不论是节点还是话题都是如此 xff0c 简单地两次执行相关节点将导致之前执行的节点终止 但是我们可以在运行时更改节点的名称 xff0c 而不需要运行额外的程序或更改源代码 方法包括命名空间 names
  • Markdown中插入图片

    前言 xff1a 企业中产品手册少不了图片的插入 xff0c 那如果用markdown维护手册的话 xff0c 怎么插入图片呢 xff1f 今天介绍以下几种方法 xff1a xff08 一 xff09 插入本地图片 xff08 二 xff0
  • 通过VScode进行git的版本管理

    前言 xff1a 作为测试 xff0c 我们写的自动化脚本和产品手册也是需要使用git进行版本管理起来的 xff0c 本次我们介绍怎么通过git进行版本管理 目录 xff08 一 xff09 搭建本地仓库 xff08 二 xff09 将服务
  • 教你使用stm32接收串口的一帧数据!

    stm32支持接受单个数据或者一帧数据 xff0c 若配置单个数据接收中断的话 xff0c 会出现接收包丢包 xff0c 数据不完整的情况 xff01 因此在stm32的串口中断中 xff0c 还有一个IDLE中断 xff0c 用来产生串口
  • APM-3.5.2-EKF2笔记(未完待续)

    20180704 xff1a 一 EKF2 InitialiseFilter 全过程 1 记录开始时间 xff0c 预期步长时间 frameTimeUsec 61 2500 xff0c 每次融合读取IMU次数 framesPerPredic
  • 在K8s上部署Go服务

    目标 镜像名 xff1a foxliang go v 镜像内容 xff1a 二进制文件 xff0c 跑起来是个http服务 xff0c 监听8080端口 xff0c 接到请求会打印 This is version v running in
  • Java中可以直接调用类中静态方法,不用实例化

    先说结论 xff1a 可以不实例化一个类的情况 xff0c 使用一个类中的静态方法静态方法里 xff0c 只能调用静态方法 先通俗的分析下 xff0c 我们把类看作是一个房子 房子里面有家具 xff0c 桌椅板凳之类的 xff0c 房子里面
  • 【Linux】深入理解线程(线程同步、互斥量mutex、死锁、读写锁、条件变量、信号量)

    一 同步概念 1 线程同步 xff1a 同步即协同步调 xff0c 按预定的先后次序运行 线程同步 xff0c 只一个线程发出某一功能调用时 xff0c 在没有得到结果之前 xff0c 该调用不返回 同时 xff0c 其他线程为保证数据一致

随机推荐

  • pytorch得到模型的计算量和参数量

    文章目录 方法1 自带方法2 编写代码方法3 thop方法4 torchstat方法5 ptflops方法6 torchsummary 方法1 自带 pytorch自带方法 xff0c 计算模型参数总量 total span class t
  • slam、高精地图、定位之间的关系

    高精度地图一般都是指slam 43 卫惯共同制作的区域地图 xff0c 只有卫惯只能得到位置信息 xff0c 没办法得到地物信息 卫惯给绝对位置 xff0c slam给地物 地形信息和相对距离 xff0c 然后融合制作等 2 使用激光雷达或
  • 慕课《如何写好科研论文》期末考试题及答案

    多选 论文写作前的积累包括哪些 实验细节 Idea 专业知识 讲座学术论文质量标准包括 形式标准 内容标准和学术期刊打交道的最大好处是 编辑部聘请的审稿人的专业意见 编辑部提出的技术方面的建议什么情况下 xff0c 应果断放弃一些题目 已经
  • docker学习笔记(七)docker-swarm

    目录 搭建Swarm环境 swarm基本操作 swarm实战 docker swarm服务发布模式 docker stack 官网 https docs docker com swarm overview Docker Swarm is n
  • 【前端】ajax 接口返回图片文件流,将图片保存至自己服务器,并展示该图片

    一 解决前 1 1 问题描述 ajax 调用第三方接口 xff0c 接口没有返回图片链接 xff0c 直接返回的图片 现在要将文件保存至服务器 xff0c 并返回自身的链接 span class token comment 解决前的代码 s
  • http请求带用户名和密码验证

    发送http请求往往需要带用户名和密码 xff0c 服务端进行授权验证 实现方式是将将用户名和密码放到请求头里面 xff0c 采用Basic Authentication Scheme xff0c 译为基本授权方案 xff0c 想要了解的可
  • 【TPM2.0原理及应用指南】 1-3章

    码字不易 xff0c 求求点个赞呗 第一章 TPM的历史 可信平台模块 xff08 TPM xff09 是一种加密协处理器 可信计算组织 xff08 TCG xff09 直接匿名认证 DAA 认证可迁移密钥 xff08 Certified
  • QGC通过网络连接飞控(树莓派+ROS桥接MavLink)

    1 为树莓派刷ubuntu 因为无界面的ubuntu在连接无线 设置自动登录等方面的设置比较复杂 我经过各种百度尝试后 均没有成功 所以我放弃了 转而又刷了ubuntu mate 带界面 然后连接了无线 设置了自动登录 静态IP 自此树莓派
  • 大厂大数据岗位面试随笔

    大厂面试简要记录 1 腾讯2 阿里 1 腾讯 腾讯PCG事业部 大数据开发岗 问题回忆 xff1a spark数据分发机制Hadoop集群高可用机制阐述Spark Streaming给个具体视频应用场景阐述开发思路及任务架构 xff08 期
  • 南京邮电大学C++实验三(多态性实验)

    文章目录 一 实验目的和要求二 实验环境 实验设备 三 实验原理及内容 xff08 一 xff09 实验题目1 xff1a 1 题目2 代码3 程序运行结果 4 实验解答过程 xff1a 1 类Point的构造函数 xff1a 2 用成员函
  • ROS package.xml教程

    文章目录 总览标准格式2 xff08 推荐格式 xff09 基本结构必要标签依赖元包其他标签 标准格式1 xff08 遗留格式 xff09 总览 ROS的package包使用package xml文件来描述 xff0c 该描述文件必须放置在
  • 如何从论文中实现算法复现(译)

    原文地址 xff1a http xff1a codecapsule com 2012 01 18 how to implement a paper 作者 xff1a Emmanuel Goossaert 翻译 xff1a Joseph Ar
  • CMakeList.txt

    一个视频讲解 http v youku com v show id XMjc1MjE0MjEwNA 61 61 html cmake 语法设置路径 xff0c 配置库 xff0c 编译器标记 xff1a https www cnblogs
  • GPS ROS包

    NMEA GPS数据读取 span class hljs label http span wiki span class hljs preprocessor ros span span class hljs preprocessor org
  • Arduino Atmega328P烧写bootloader及熔丝

    Arduino Atmega328P烧写bootloader及熔丝 Cc1924的博客 CSDN博客 亲测成功
  • 云服务器 搭建 AWTRIX 服务器

    Java 环境 首先检查 java 版本 如果没有 安装 openjdk 后再执行 sh脚本 yum list java 1 8 yum install java 1 8 0 openjdk y wget N https blueforce
  • esp8266对接天猫精灵(1)前言

    本系列文章小狂决定一步步来完成其他智能设备与天猫精灵的对接 xff0c 简单粗暴的目的就是使用ESP8266或者其他的wifi设备制造一个智能设备 xff0c 完成一次天猫精灵智能音箱对我们自己制造的智能设备的控制 xff0c 以来验证天猫
  • 牢记公式,ardupilot EKF2就是纸老虎(二)!

    版权声明 xff1a 本文为博主原创文章 xff0c 转载请附上博文链接 xff01 二 扩展卡尔曼滤波器 因为卡尔曼滤波器针对的是线性系统 xff0c 状态转移模型 xff08 说的白话一点就是知道上一时刻被估计量的值 xff0c 通过状
  • esp8266对接天猫精灵(3)原理

    这一篇文章主要讲解服务器端的设置 xff0c 这里我使用的是腾讯云 xff0c 当时学生价1块钱一个月买的 xff0c 现在的学生价涨到了10块 xff0c 为我当时的机智点赞 为什么一定要使用服务器呢 xff0c 这个是因为天猫精灵协议的
  • esp8266对接天猫精灵(8)开发者网关地址

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