手把手玩转物联网丨第二集:快速上手 Amazon IoT OTA 固件升级

物联网
Amazon IoT Device Management
0
0
{"value":"为了保证物联网设备能够保持在功能上随时更新,并且在出现问题的时候及时得到修复。小到智能手环,空气净化器,大到家用汽车,设备厂商无不是通过提供OTA(Over-The-Air)功能来提高用户满意度。而利用 Amazon Web Services IoT Device Management 中的 Jobs 组件,可以帮助客户非常快速的开发出物联网设备的 OTA 功能。本文旨在帮助读者一步步的快速上手并理解 OTA 升级流程,其中会使用到 Amazon Web Services IoT Core, IoT Device Management, EC2 以及 S3 的相关功能。关于在开发过程中的具体流程可以配合参考 Amazon Web Services IoT Device SDK 文档和另外一篇官方博客。\n\n\n### **准备工作**\n\n1. 使用具有 admin 权限的用户登陆 Amazon Web Services Console。\n2. 本文中的 Amazon Web Services IoT 设备会使用一台 Amazon Linux EC2 实例模拟,Amazon Linux EC2 实例上默认安装了 Amazon Web Services 命令行工具 Amazon Web ServicesCLI,接下来的所有操作都是以 Amazon Web Services 北京区为示例。启动一台 Amazon Linux EC2 实例作为模拟的 IoT 设备,由于后面安装要安装的 rpm 包有依赖关系,这里要确保使用的是 Amazon Linux AMI 2018.03.0 (HVM)。另外为了保证网络畅通,在实验环节 Security Group 建议开放全部的 IP 和端口。\n3. 在 Amazon Web Services Console 上赋予这台 EC2 实例一个具有足够权限的 Role,测试中可以直接用 admin 权限。\n4. 登陆到 EC2 实例上使用 Amazon Web Services configure 命令配置好默认 Region 为 cn-north-1。\n\n### **操作流程**\n\n\n1. 环境准备\n2. 在 Amazon Web Services 上创建 IoT Thing\n3. 编写 Amazon Web Services IoT Jobs 文档\n4. 运行 IoT 设备端程序\n5. 使用具有 admin 权限的用户登陆 Amazon Web Services Console。\n6. 使用具有 admin 权限的用户登陆 Amazon Web Services Console。\n\n\n### **第一步 – 环境准备**\n\n1. 登陆 EC2 实例,安装 git\n\n\n![image.png](https://dev-media.amazoncloud.cn/280554548b56482b87077ab229e746a8_image.png)\n\n2. 安装 node.js\n\n![image.png](https://dev-media.amazoncloud.cn/e69f1217bc544b7b80eb0d69e04c42c0_image.png)\n\n3. 安装 Amazon Web Services IoT Device SDK – Javascript\n\n![image.png](https://dev-media.amazoncloud.cn/85221179370d4086a9a64834980c0d68_image.png)\n\n4. 下载两个不同版本的 telnet 程序包,后续模拟固件升级时使用\n\n![image.png](https://dev-media.amazoncloud.cn/36879babe46645318d17e4d00abb4aca_image.png)\n\n5. 安装旧版本 telnet 程序,后续我们会通过 OTA 完成这个程序从 telnet-0.17-48.el6.x86_64 版本到 telnet-0.17-64.el7.x86_64 版本的升级\n\n![image.png](https://dev-media.amazoncloud.cn/c85e1cc0b93348e88e0d547657558293_image.png)\n\n6. 创建一个 S3 bucket 作为新固件的存储位置,并上传新版本的 telnet 程序\n\n![image.png](https://dev-media.amazoncloud.cn/df09175a71d84e5e80f3b9526336a47a_image.png)\n\n### **第二步 – 在 Amazon Web Services 上创建 IOT thing**\n\n1. 创建 IoT thing,记录下输出中的 thingArn:\n\n\n![image.png](https://dev-media.amazoncloud.cn/64a045a2983a4defb7a35de6abd445e2_image.png)\n\n2. 下载 Amazon Web Services IoT 根证书,创建 IoT 设备证书和密钥,记录下生成的 certificateArn:\n\n\n![image.png](https://dev-media.amazoncloud.cn/5ba404f1181642fbad996d39504de00b_image.png)\n\n\n3. 创建一个 IoT Policy,挂载给证书并激活证书:\n\n![image.png](https://dev-media.amazoncloud.cn/a2ab1e57e045418085eeed8fa2660814_image.png)\n\n\n### **第三步 – 编写 Amazon Web Services IoT Jobs 文档**\n\n1. 编写一个 IoT Jobs 文档。关于文档编写的格式,请参考 http://dwz.date/3gb 。当 IoT 设备请求 IoT Jobs 文档时,Amazon Web Services IoT 会生成预签名 URL 并使用预签名 URL 替换占位符 URL。然后将 IoT Jobs 文档发送到设备,设备会通过这个预签名 URL 取得访问 S3 bucket 中固件的权限。\n\n![image.png](https://dev-media.amazoncloud.cn/b02ce730a029467caad1e9b89f0e403f_image.png)\n\n2. 上传 IoT Jobs 文档到 S3 bucket\n\n![image.png](https://dev-media.amazoncloud.cn/0a4c0c97dc834bbd8f3d8288f2cbe57f_image.png)\n\n3. 在创建使用预签名 Amazon S3 URL 的 Job 时,您必须提供一个 IAM 角色,该角色可授予 Amazon Web Services IoT 服务从 Amazon S3 存储桶中下载文件的权限。该角色还必须向 Amazon Web Services IoT 授予 assumeRole 的权限,也就是让 Amazon Web Services IoT 具有代表设备去 S3 上面下载固件的权限。\n\n![image.png](https://dev-media.amazoncloud.cn/312877d527464cf8b9fed462bf691c89_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/1c55ece15cc64e20a50f559cf6413e13_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/b7630ba374ca4006b8d758257b47864f_image.png)\n\n![image.png](https://dev-media.amazoncloud.cn/dbdd813bbc5644fd8e913e07530d5cec_image.png)\n\n### **第四步 – 运行 IoT 设备端程序**\n\n![image.png](https://dev-media.amazoncloud.cn/ff81acd339cb45f0ab243db5a09c1785_image.png)\n\n\n### **第五步 – 创建 Amazon Web Services IoT Jobs 进行固件升级**\n\n\n1. 新开一个命令行窗口到 EC2 实例,查看当前固件版本\n\n![image.png](https://dev-media.amazoncloud.cn/a36fe3c697b4464baabb77bf2e6a16d7_image.png)\n\n2. 创建 Amazon Web Services IoT Jobs\n\n![image.png](https://dev-media.amazoncloud.cn/41d71dc4c4fb41b8bb55ae353092e823_image.png)\n\n### **第六步 – 验证固件升级是否成功**\n\n\n1. 使用具有 admin 权限的用户登陆 Amazon Web Services Console。\n\n![image.png](https://dev-media.amazoncloud.cn/02e03f7794804f618415293e903efef1_image.png)\n\n2. 查看 IoT Job 状态\n\n![image.png](https://dev-media.amazoncloud.cn/cc07fd6936fc4178be61b5bd210d868a_image.png)\n\n3. 查看固件版本号\n\n![image.png](https://dev-media.amazoncloud.cn/04351111a12b41f6bf616cdd76efaccf_image.png)\n\n到此为止,通过以上几步简单的动手环节,您已成功的完成了 OTA 升级。\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","render":"<p>为了保证物联网设备能够保持在功能上随时更新,并且在出现问题的时候及时得到修复。小到智能手环,空气净化器,大到家用汽车,设备厂商无不是通过提供OTA(Over-The-Air)功能来提高用户满意度。而利用 Amazon Web Services IoT Device Management 中的 Jobs 组件,可以帮助客户非常快速的开发出物联网设备的 OTA 功能。本文旨在帮助读者一步步的快速上手并理解 OTA 升级流程,其中会使用到 Amazon Web Services IoT Core, IoT Device Management, EC2 以及 S3 的相关功能。关于在开发过程中的具体流程可以配合参考 Amazon Web Services IoT Device SDK 文档和另外一篇官方博客。</p>\n<h3><a id=\"_3\"></a><strong>准备工作</strong></h3>\n<ol>\n<li>使用具有 admin 权限的用户登陆 Amazon Web Services Console。</li>\n<li>本文中的 Amazon Web Services IoT 设备会使用一台 Amazon Linux EC2 实例模拟,Amazon Linux EC2 实例上默认安装了 Amazon Web Services 命令行工具 Amazon Web ServicesCLI,接下来的所有操作都是以 Amazon Web Services 北京区为示例。启动一台 Amazon Linux EC2 实例作为模拟的 IoT 设备,由于后面安装要安装的 rpm 包有依赖关系,这里要确保使用的是 Amazon Linux AMI 2018.03.0 (HVM)。另外为了保证网络畅通,在实验环节 Security Group 建议开放全部的 IP 和端口。</li>\n<li>在 Amazon Web Services Console 上赋予这台 EC2 实例一个具有足够权限的 Role,测试中可以直接用 admin 权限。</li>\n<li>登陆到 EC2 实例上使用 Amazon Web Services configure 命令配置好默认 Region 为 cn-north-1。</li>\n</ol>\n<h3><a id=\"_10\"></a><strong>操作流程</strong></h3>\n<ol>\n<li>环境准备</li>\n<li>在 Amazon Web Services 上创建 IoT Thing</li>\n<li>编写 Amazon Web Services IoT Jobs 文档</li>\n<li>运行 IoT 设备端程序</li>\n<li>使用具有 admin 权限的用户登陆 Amazon Web Services Console。</li>\n<li>使用具有 admin 权限的用户登陆 Amazon Web Services Console。</li>\n</ol>\n<h3><a id=\"___21\"></a><strong>第一步 – 环境准备</strong></h3>\n<ol>\n<li>登陆 EC2 实例,安装 git</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/280554548b56482b87077ab229e746a8_image.png\" alt=\"image.png\" /></p>\n<ol start=\"2\">\n<li>安装 node.js</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/e69f1217bc544b7b80eb0d69e04c42c0_image.png\" alt=\"image.png\" /></p>\n<ol start=\"3\">\n<li>安装 Amazon Web Services IoT Device SDK – Javascript</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/85221179370d4086a9a64834980c0d68_image.png\" alt=\"image.png\" /></p>\n<ol start=\"4\">\n<li>下载两个不同版本的 telnet 程序包,后续模拟固件升级时使用</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/36879babe46645318d17e4d00abb4aca_image.png\" alt=\"image.png\" /></p>\n<ol start=\"5\">\n<li>安装旧版本 telnet 程序,后续我们会通过 OTA 完成这个程序从 telnet-0.17-48.el6.x86_64 版本到 telnet-0.17-64.el7.x86_64 版本的升级</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/c85e1cc0b93348e88e0d547657558293_image.png\" alt=\"image.png\" /></p>\n<ol start=\"6\">\n<li>创建一个 S3 bucket 作为新固件的存储位置,并上传新版本的 telnet 程序</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/df09175a71d84e5e80f3b9526336a47a_image.png\" alt=\"image.png\" /></p>\n<h3><a id=\"___Amazon_Web_Services__IOT_thing_48\"></a><strong>第二步 – 在 Amazon Web Services 上创建 IOT thing</strong></h3>\n<ol>\n<li>创建 IoT thing,记录下输出中的 thingArn:</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/64a045a2983a4defb7a35de6abd445e2_image.png\" alt=\"image.png\" /></p>\n<ol start=\"2\">\n<li>下载 Amazon Web Services IoT 根证书,创建 IoT 设备证书和密钥,记录下生成的 certificateArn:</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/5ba404f1181642fbad996d39504de00b_image.png\" alt=\"image.png\" /></p>\n<ol start=\"3\">\n<li>创建一个 IoT Policy,挂载给证书并激活证书:</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/a2ab1e57e045418085eeed8fa2660814_image.png\" alt=\"image.png\" /></p>\n<h3><a id=\"___Amazon_Web_Services_IoT_Jobs__66\"></a><strong>第三步 – 编写 Amazon Web Services IoT Jobs 文档</strong></h3>\n<ol>\n<li>编写一个 IoT Jobs 文档。关于文档编写的格式,请参考 http://dwz.date/3gb 。当 IoT 设备请求 IoT Jobs 文档时,Amazon Web Services IoT 会生成预签名 URL 并使用预签名 URL 替换占位符 URL。然后将 IoT Jobs 文档发送到设备,设备会通过这个预签名 URL 取得访问 S3 bucket 中固件的权限。</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/b02ce730a029467caad1e9b89f0e403f_image.png\" alt=\"image.png\" /></p>\n<ol start=\"2\">\n<li>上传 IoT Jobs 文档到 S3 bucket</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/0a4c0c97dc834bbd8f3d8288f2cbe57f_image.png\" alt=\"image.png\" /></p>\n<ol start=\"3\">\n<li>在创建使用预签名 Amazon S3 URL 的 Job 时,您必须提供一个 IAM 角色,该角色可授予 Amazon Web Services IoT 服务从 Amazon S3 存储桶中下载文件的权限。该角色还必须向 Amazon Web Services IoT 授予 assumeRole 的权限,也就是让 Amazon Web Services IoT 具有代表设备去 S3 上面下载固件的权限。</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/312877d527464cf8b9fed462bf691c89_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/1c55ece15cc64e20a50f559cf6413e13_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/b7630ba374ca4006b8d758257b47864f_image.png\" alt=\"image.png\" /></p>\n<p><img src=\"https://dev-media.amazoncloud.cn/dbdd813bbc5644fd8e913e07530d5cec_image.png\" alt=\"image.png\" /></p>\n<h3><a id=\"___IoT__86\"></a><strong>第四步 – 运行 IoT 设备端程序</strong></h3>\n<p><img src=\"https://dev-media.amazoncloud.cn/ff81acd339cb45f0ab243db5a09c1785_image.png\" alt=\"image.png\" /></p>\n<h3><a id=\"___Amazon_Web_Services_IoT_Jobs__91\"></a><strong>第五步 – 创建 Amazon Web Services IoT Jobs 进行固件升级</strong></h3>\n<ol>\n<li>新开一个命令行窗口到 EC2 实例,查看当前固件版本</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/a36fe3c697b4464baabb77bf2e6a16d7_image.png\" alt=\"image.png\" /></p>\n<ol start=\"2\">\n<li>创建 Amazon Web Services IoT Jobs</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/41d71dc4c4fb41b8bb55ae353092e823_image.png\" alt=\"image.png\" /></p>\n<h3><a id=\"___102\"></a><strong>第六步 – 验证固件升级是否成功</strong></h3>\n<ol>\n<li>使用具有 admin 权限的用户登陆 Amazon Web Services Console。</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/02e03f7794804f618415293e903efef1_image.png\" alt=\"image.png\" /></p>\n<ol start=\"2\">\n<li>查看 IoT Job 状态</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/cc07fd6936fc4178be61b5bd210d868a_image.png\" alt=\"image.png\" /></p>\n<ol start=\"3\">\n<li>查看固件版本号</li>\n</ol>\n<p><img src=\"https://dev-media.amazoncloud.cn/04351111a12b41f6bf616cdd76efaccf_image.png\" alt=\"image.png\" /></p>\n<p>到此为止,通过以上几步简单的动手环节,您已成功的完成了 OTA 升级。</p>\n"}
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭