精华内容
下载资源
问答
  • 亚马逊iot
    2021-08-02 16:02:04

    aliyun SDK:
    1.功能
    支持协议:mqtt

    	认证:
    		支持设备证书方式对设备进行身份认证。
    		支持使用ProductKey、DeviceName、DeviceSecret来认证设备。
    
    	日志:
    		支持控制SDK内部日志输出。
    
    	基础能力:
    		发布、订阅、取消订阅、RRPC、订阅下行。
    
    	物模型:
    		实现属性上报(如上报设备状态)、事件上报(上报设备异常或错误)和服务调用(通过云端调用设备提供的服务)。	     
    		通过物模型过滤属性(事件,服务),进行上报(调用)。
    
    	配置:
    		支持主动获取配置。
    		支持订阅获取。
    
    	标签:
    		支持设备端上报标签到云端,以及删除设备标签。
    
    	子设备管理:
    		网关子设备管理提供了子设备动态注册、获取云端网关下子设备列表、添加子设备、删除子设备、子设备上线、子设备下线、监听子设备禁用和删除的消息、
    		代理子设备数据上下行的能力。要使用子设备管理功能,前提是该设备属于网关设备类型。
    
    	设备影子:
    		如果当前产品不具备物模型的能力,可以通过设备影子将当前设备的最新状态缓存到云端。
    		获取云端设备影子。
    		更新云端设备影子。
    		删除云端设备影子。
    

    aws SDK:
    1.功能
    支持协议:mqtt&&webSocket版mqtt

    	认证:
    		TLS 1.2
    		X.509 相互认证
    	
    	日志:
    		无。
    	
    	基础能力:
    		发布、订阅、取消订阅。
    
    	物模型:
    		无。
    
    	配置:
    		支持订阅获取。
    
    	标签:
    		无。
    
    	子设备管理:
    		无。
    
    	设备影子:
    		获取云端设备影子。
    		更新云端设备影子。
    		删除云端设备影子。
    

    华为云:
    1.功能
    支持协议:mqtt

    	认证:
    		 ?
    	
    	日志:
    		无。
    	
    	基础能力:
    		发布、订阅、取消订阅。
    
    	物模型:
    		支持在设备端测进行物模型的管理。
    
    	配置:
    		支持主动获取配置。
    		支持订阅获取。
    
    	标签:
    		无。
    
    	子设备管理:
    		专门提供网关的sdk来管理子设备。
    
    	设备影子:
    		无。
    

    关于物模型的概念,aliyun中区分物模型和设备影子,而aws只有设备影子,而华为只有物模型。
    关于物模型的功能,aliyun,都是在上报数据的时候,SDK通过物模型(物模型在平台配置)筛选数据,而华为和aws(设备影子),是SDK自动调用(物模型在设备端配置)。

    aws中的设备影子,看官方sdk的描述,是包含了配置,属性等(及aliyun中sdk描述的物模型和下发配置功能)。而aliyun中的设备影子 是指设备或产品不支持物模型的情况下,才有设备影子,听起来像是简化版的物模型。在这一点上,我有点摸不着头脑。
    后续还会继续研究 这两者的不同,如果有大佬看到,发现不对的地方,欢迎指正。谢谢。

    更多相关内容
  • 所谓的双向认证,即意味着 Amazon IoT 设备端需安装 IoT 设备证书,并且,该证书应该由 Amaozn IoT 平台所使用的 CA 证书进行签发,从而完成 Amazon IoT 平台对 Amazon IoT设备端的认证,反之亦然。

    背景介绍

    为了保证通信的安全性,Amazon IoT 设备与 Amazon IoT 平台的 MQTT 通信使用基于证书的 TLS 1.2双向认证体系。所谓的双向认证,即意味着 Amazon IoT 设备端需安装 IoT 设备证书,并且,该证书应该由 Amaozn IoT 平台所使用的 CA 证书进行签发,从而完成 Amazon IoT 平台对 Amazon IoT设备端的认证,反之亦然。

    为了保证 Amazon IoT 设备和 Amazon IoT 平台的安全对接,对于Amazon IoT 设备端,需要安装2类证书:

    1. Amazon IoT 设备证书 Amazon IoT 

    2. 平台 CA 证书

    何时应当使用 Certificate Vending Machine?

    对于部分已经出厂的 Amazon IoT 设备,可能在生产过程中没有预装任何证书,但是又希望这些设备连接至 Amazon IoT 平台。此时,Certificate Vending Machine (简称 CVM) 可以作为给 Amazon IoT 设备写入相关证书的可行方案,让 Amazon IoT 设备自行向 CVM 服务器申请 Amazon IoT 平台 CA 根证书与 Amazon IoT 设备证书,并且通过 Amazon IoT 管理平台控制设备证书权限,确保物联网通信安全。

    通过此文档的设计思想和相关源码,开发者可以快速开发出符合自己项目需求的 CVM 系统。但是需要注意,由于默认情况下,原设备没有任何证书进行申请证书阶段的 TLS 认证,所以使用 CVM 的过程中需要注意三点:

    1. Amazon IoT 设备与 CVM 系统通信时,原生并没有安全保护手段,所以需要在受信的 DNS 环境下进行,以防中间人攻击。或者采用其他安全链接的方式,例如使用 HTTPS 与 CVM 服务器交互(需要额外证书)。

    2. Amazon IoT 设备在利用 CVM 系统申请证书时,Amazon IoT 设备本身应该具备唯一标识符用于设备的身份标识,例如序列号,client ID 或者 product ID 等,通过该身份标识符进行证书申请及策略绑定。

    3. 所有通过 CVM 系统申请获发的 Amazon IoT 设备证书的 CA 根证书,只可以为 Amazon IoT 平台默认使用的 CA 根证书(VeriSign Class 3 Public Primary G5 证书)。如果需要使用自定义的 CA 根证书来进行 Amazon IoT 设备证书的签发,请参考另一篇文档 – JITR 证书注册方式,即,为每个设备在出厂前写入独立的 IoT 设备证书和 CA 根证书。

    CVM 实现原理

    整个 CVM 实现可以分为三个部分:Amazon IoT 设备端、CVM 系统和 Amazon IoT 平台

    A. Amazon IoT 设备端需要完成的:

    • 通过 HTTPS 请求证书。

    • 请求时携带设备序列号以及密钥。

    B. CVM 系统需要完成的:

    • 向 Amazon IoT 设备提供远程访问 API 接口。

    • CVM 系统作为代理向 Amazon IoT 平台申请每一个 Amazon IoT 设备的证书。

    • 通过校验设备的请求信息与数据库是否一致再决定是否为当前 Amazon IoT 设备申请证书,CVM 使用内部 Node.js 语言实现。

    • 使用亚马逊云科技高性能的 NoSQL 数据库 DynamoDB 做为后台用户数据库。该数据库用来保存 Amazon IoT 设备出厂时注册的设备 ID、密钥和 Amazon IoT 平台 CA 根证书等信息。

    • CVM 系统通过查询 DynamoDB 数据中的关联关系,将 Amazon IoT Thing Name,Certificate Policy以及 Certificate ID 关联至一起。同时,修改 DynamoDB 里的证书状态标识符,避免同一台设备遭到攻击后,重复向 IoT 平台大量申请证书的可能性,从而保证证书与设备的关联唯一性。

    CVM 系统的基本工作流程如下:

    CVM 系统的具体架构如下:

    为了使 CVM 服务端更具稳定与扩展性,可以使用 Amazon API Gateway 和 Amazon Lambda 来部署 CVM。通过这种方式,不需要长时间维护和管理部署在 Amazon EC2 上的 CVM,而是通过 Amazon IoT 设备的证书申请的需求,灵活的调配亚马逊云科技上的服务资源。

    具体如下:

    1) Amazon IoT 设备发送相应 API 请求到 Amazon API Gateway 申请 Amazon IoT 证书

    2)  Amazon API Gateway 调用申请证书的 Amazon Lambda 向 Amazon IoT 平台发起证书申请

    3)  Amazon Lambda 接收到请求后, 查询 Amazon DynamoDB 校验请求合法性

    4)  确认当前请求合法之后,通过 Amazon API 的形式,向 Amazon IoT 平台申请证书

    5) Amazon IoT 平台返回新创建的 Amazon IoT 设备证书,以及 Amazon IoT 设备证书对应的 Certificate ID

    6)  通过查找 Amazon DynamoDB 中预先创建的对应关系,根据产品序列号,为当前申请到的证书附加对应的 Thing Name(设备属性)以及 Policy(权限)

    7)  利用 Amazon Lambda 进行 Amazon IoT 设备证书的策略的绑定以及 Amazon DynamoDB 关联关系表里的证书状态标识符更新

    8)  最终 CVM 将 Amazon IoT 平台 CA 根证书和 IoT 设备证书返回给 Amazon IoT 设备

    使用 Amazon EC2 替代 Amazon API Gateway 与 Amazon Lambda 的解决方案,其工作流程与搭建 Amazon lambda 的模式基本一致,仅在 Amazon IoT 设备与 CVM 系统通信时的调用关系上有所区别

    1)  Amazon IoT 设备向 CVM 服务器申请 Amazon IoT 设备证书

    2) Amazon EC2 接收到请求后,访问 MySQL 校验请求合法性

    3)  确认当前请求合法之后,CVM 通过 Amazon API 的形式,向 Amazon IoT 平台发起获取 Amazon IoT 设备证书的请求

    4)  Amazon IoT 平台返回当前 Amazon IoT 设备对应的证书,以及当前证书的 Certificate ID

    5)  通过查找 MySQL 中预先创建的对应关系,根据产品序列号,为当前证书附加对应的 Thing Name(产品属性) 以及 Policy(权限)

    6)  CVM 更新 MySQL 的关联关系表中的当前设备的所有关联信息以及证书状态标识符

    7)  最终 CVM 将 Amazon IoT CA 根证书和设备证书返回给 Amazon IoT 设备

    目前 Amazon IoT 平台默认所用的根证书(VeriSign Class 3 Public Primary G5)可以到这里下载。

    安全性说明

    为了保证 CVM 系统的安全性,Amazon EC2 或者 Amazon Lambda 函数需要赋予适的 Amazon  IAM 角色, 使得 CVM 系统只能进行其授予的工作权限,以下用 Amazon lambda 举例如何为 CVM 系统分配正确的 Amazon IAM 角色权限。

    首先,需要明确 CVM 系统需要具备以下 Amazon IAM 权限才能完成证书的申请及颁发过程:

    √ 访问 Amazon DynamoDB,用于查询、修改、更新 Amazon DynamoDB 中的设备关联表

    √ 访问 Amazon IoT 平台,用于申请 Amazon IoT 设备证书

    除 Amazon IAM 进行权限划分之外,需要在 Amazon DynamoDB 上创建一张关联关系表,用于设备、证书及策略的绑定关系,具体来说,需要在 Amazon DynamoDB 中创建如下数据库字段:

    • productid : IoT 设备 ID

    • accessToken: IoT 设备 Token

    • timestamp : 证书申请时间戳

    • applyState : 申请状态(如果申请过证书设置为-1,标记此设备已经注册过证书了)

    • certID : 设备关联的证书 ID

    核心代码说明

    以下的 CVM server 代码使用了 Amazon Node.js SDK 提供的 Amazon IoT 接口完成证书申请以及附加对应的 Thing Name 和 Policy。

    //使用 createKeysAndCertificate 接口创建证书,此接口返回创建后的证书 ID 以及证书
    
    iot.createKeysAndCertificate (params = {}, callback) ⇒ AWS.Request
    
    # 如果需要使用 CSR 进行证书生成,可以使用以下接口
    
    # iot.createCertificateFromCsr(params = {}, callback) ⇒ AWS.Request
    
     //为证书附加策略,传入上述接口返回的证书 ID
    
    iot.attachPrincipalPolicy(params = {}, callback) ⇒ AWS.Request
    
    //为证书添加 thing,同样是传入上述返回的证书 ID
    
    iot.attachThingPrincipal(params = {}, callback) ⇒ AWS.Request

    *左滑查看更多

    本篇作者

    刘洪曦

    亚马逊云科技解决方案架构师

    负责基于亚马逊云科技的云计算方案架构的咨询和设计,同时致力于帮助海外企业在亚马逊云科技云服务的应用和推广。在加入亚马逊云科技之前曾在思科担任网络顾问工程师,负责亚太区域物联网及安全业务的拓展及架构设计,在物联网,数据安全,网络架构有丰富部署实践经验。

    谢佰臻

    亚马逊云科技解决方案架构师

    擅长网站架设与网络应用开发,熟悉使用 Node.js、Html5、Mysql 数据库,对于 Serverless 架构有自己的理解和实践经验。

    展开全文
  • 背景介绍 ...但是配置相关 Amazon ...在设备第一次连接 Amazon IoT 平台的时候,JITP 会参照该模版的定义来完成设备证书的注册和设备在云端的创建过程。 需要特别注意的是,JITP 作为一个相对比较新的功能,目前在...

    背景介绍

    利用即时注册(JITR)功能,可以快速的进行设备证书注册及设备上线。但是配置相关 Amazon Lambda 函数的方式相对复杂。使用本文介绍的即时部署(JITP)功能,可以简化 Amazon IoT 规则和 Amazon Lambda 函数的步骤,直接在注册设备 CA 证书的同时附加上一个自定义好的模版。在设备第一次连接 Amazon IoT 平台的时候,JITP 会参照该模版的定义来完成设备证书的注册和设备在云端的创建过程。

    需要特别注意的是,JITP 作为一个相对比较新的功能,目前在亚马逊云科技中国区还没有部署。如果设备需要连接亚马逊云科技中国区,还是需要使用 JITR 来完成证书注册及设备上线。但对于一些需要在海外使用亚马逊云科技的用户,可以利用这个功能对设备进行设备注册控制。

    从上图 JITR 和 JITP 两种方式的对比中可以看出, JITP 简化了部分流程。

    JITP 的实现步骤如下:

    1.创建 CA 证书, 模版和相应的 Amazon IAM 权限。

    2.在 Amazon IoT 平台上注册和激活 CA 证书并附加模版。

    3.使用该 CA 证书签发设备证书并安装在  Amazon IoT 设备上。

    4.Amazon IoT 设备与 Amazon IoT 平台的第一次连接。

    本文中的 Amazon IoT 设备将会使用一台 Amazon Linux EC2 实例进行模拟,并使用 MQTT Mosquitto Client 工具来模拟 MQTT 终端,Amazon IoT 设备的配置工作会在这台 Amazon EC2 实例上进行。

    创建 CA 证书,模版和相应的 Amazon IAM 权限

    登陆 Amazon EC2 实例并执行如下命令创建私钥和对应的 CA 证书:

    $ mkdir cert
    $ cd cert
    $ openssl genrsa -out CA_Private.key 2048
    $ openssl req -x509 -new -nodes -key CA_Private.key -sha256 -days 365 -out CA_Certificate.pem

    *左滑查看更多

    在最后一步创建 CA 证书时会要求填入 Amazon CSR 相关信息,请按照实际情况填写:

    Country Name (2 letter code) [XX]:
    State or Province Name (full name) []:
    Locality Name (eg, city) [Default City]:
    Organization Name (eg, company) [Default Company Ltd]:
    Organizational Unit Name (eg, section) []:
    Common Name (eg, your name or your server's hostname) []:
    Email Address []:

    由于 JITP 是通过模版定义来注册设备证书和创建设备,因此模版中相应的权限必不可少。下面我们在 Amazon IAM 中来创建一个角色并赋予相应的权限。

    1.登陆到 Amazon Console 并进入 Amazon IAM 页面。

    2.点击页面左侧的角色后,点击创建角色按钮。

    3.在创建角色页面选择“亚马逊云科技产品”中的 Amazon IoT,然后点击”下一步:权限”。

    4.在这个页面中不需要做任何改动,直接点击”下一步:审核”

    5.填写角色名称“JITP”后,点击创建角色。

    6.角色创建完成后,点击角色名称 JITP 并记录下角色ARN(arn:aws:iam::12345678910:role/JITP)。

    在这个页面中不需要做任何改动,直接点击”下一步:审核”

    填写角色名称“JITP”后,点击创建角色。

    角色创建完成后,点击角色名称 JITP 并记录下角色ARN(arn:aws:iam::12345678910:role/JITP)。

    在准备好角色和权限后我们开始创建模版,这个模版会在之后注册 CA 证书的时候一起提交给 Amazon IoT Core。

    这里的模版实际上就是一个 JSON 文档,里面包含两部分。一部分是参数(Parameters),另一部分是资源(Resource)

    Parameters部分你可以定义如下内容:

    • AWS::IoT::Certificate::Country

    • AWS::IoT::Certificate::Organization

    • AWS::IoT::Certificate::OrganizationalUnit

    • AWS::IoT::Certificate::DistinguishedNameQualifier

    • AWS::IoT::Certificate::StateName

    • AWS::IoT::Certificate::CommonName

    • AWS::IoT::Certificate::SerialNumber

    • AWS::IoT::Certificate::Id

    在下面的模版中我们定义了两个 Parameters,一个是 AWS::IoT::Certificate::Country,另一个是 AWS::IoT::Certificate::Id。这样在设备首次连接 Amazon IoT 平台时,设备证书中对应的这两个字段会被抽取出来用于 Resources 中 Thing 的创建。第二行的 roleARN 是前面创建的角色 JITP 的 ARN (Amazon Resource Names),如果按照步骤做的话应该已经记录下来了。

    {
     "templateBody":"{ \"Parameters\" : { \"AWS::IoT::Certificate::Country\" : { \"Type\" : \"String\" }, \"AWS::IoT::Certificate::Id\" : { \"Type\" : \"String\" } }, \"Resources\" : { \"thing\" : { \"Type\" : \"AWS::IoT::Thing\", \"Properties\" : { \"ThingName\" : {\"Ref\" : \"AWS::IoT::Certificate::Id\"}, \"AttributePayload\" : { \"version\" : \"v1\", \"country\" : {\"Ref\" : \"AWS::IoT::Certificate::Country\"}} } }, \"certificate\" : { \"Type\" : \"AWS::IoT::Certificate\", \"Properties\" : { \"CertificateId\": {\"Ref\" : \"AWS::IoT::Certificate::Id\"}, \"Status\" : \"ACTIVE\" } }, \"policy\" : {\"Type\" : \"AWS::IoT::Policy\", \"Properties\" : { \"PolicyDocument\" : \"{\\\"Version\\\": \\\"2012-10-17\\\",\\\"Statement\\\": [{\\\"Effect\\\":\\\"Allow\\\",\\\"Action\\\": [\\\"iot:*\\\"],\\\"Resource\\\" : [\\\"*\\\"]}]}\" } } } }",
     "roleArn":"arn:aws:iam::1234567890:role/JITP"
    }

    *左滑查看更多

    我们将这段 JSON 代码保存到 Amazon EC2 实例中~/cert 文件夹里面的一个文件中,文件名为 provisioning-template.json。

    这个模版实际上规定了在设备连接时,  Amazon  IoT Core 会创建两样东西,一个是 Thing(设备在云上的映射),另外一个是 Policy(操作权限),您可以从模版中 Resources中看到,并且接下来 JITP 还会自动做三件事:

    • 将 Policy 赋予证书

    • 将证书挂载到 Thing 上面

    • 更新证书状态为 Active

    在Amazon IoT 平台上注册和激活 CA证书并附加模版

    有了之前的准备工作,我们可以开始注册CA证书和模版到 Amazon IOT Core。为了安全, Amazon OT Core提供了相应的审核流程确保你同时持有 CA 证书和对应的私钥。因此,在最终注册 CA 证书之前,我们还需要利用 CA 证书生成一张用于验证CA 证书和私钥持有者身份的中间证书。下面这个 Amazon CLI 命令会返回一个随机生成的认证码,这个认证码会和你的账户绑定。记录下这个认证码,很快我们就会用到。

    $ aws iot get-registration-code

    *左滑查看更多

    使用 OpenSSL 生成用于验证身份的私钥和证书请求文件(Amazon CSR – Certificate Signing Request):

    $ openssl genrsa -out Verification_Private.key 2048
    
    $ openssl req -new -key Verification_Private.key -out Verification.csr

    *左滑查看更多

    在创建 Amazon CSR 的过程中,你会被提示输入如下一些内容,将前一步记录下的认证码填入到 Common Name 中:

    ...
     Organization Name (eg, company) []:
     Organizational Unit Name (eg, section)
     Common Name (e.g. server FQDN or YOUR name) []: XXXXXREGISTRATIONCODEXXXXX
     ...

    *左滑查看更多

    接下来,使用 CA 证书和私钥,以及上面创建的 Amazon CSR 来生成一份用于验证身份的证书:

    $ openssl x509 -req -in Verification.csr -CA CA_Certificate.pem -CAkey CA_Private.key -CAcreateserial -out Verification.crt -days 365 -sha256

    *左滑查看更多

    最后,通过如下命令导入 CA 证书和中间证书完成 CA 证书的注册和激活。同时,通过设置–allow-auto-registration 的方式,开启设备连接至  Amazon IoT Core 时设备证书的自动注册,并通过–registration-config 绑定模版到 CA 证书上。这个命令的输出会返回对应 CA 证书在 Amazon IoT Core 上的证书 arn (certificateArn)和证书 ID (caCertificateId).

    $ aws iot register-ca-certificate --ca-certificate file://CA_Certificate.pem --verification-certificate file://Verification.crt --set-as-active --allow-auto-registration --registration-config file://provisioning-template.json

    *左滑查看更多

    这时如果你进入 Amazon  IoT Core 服务,点击左侧的安全—>CA,会看到我们的 CA 已经注册到了 Amazon IoT 平台上了。

    使用 CA 证书签发设备证书

    当我们创建并注册好CA证书之后,就可以开始用这个CA证书来签发设备证书了,步骤如下:

    1.创建一个设备证书的私钥 Device.key 和对应的证书请求文件 Device_Certificate.csr:

    $ openssl genrsa -out Device.key 2048
    $ openssl req -new -key Device.key -out Device_Certificate.csr

    2. 使用 CA 证书,CA 证书私钥和证书请求文件签发设备证书 Device_Certificate.crt:

    $ openssl x509 -req -in Device_Certificate.csr -CA CA_Certificate.pem -CAkey CA_Private.key -CAcreateserial -out Device_Certificate.crt -days 365 -sha256

    *左滑查看更多

    Amazon IoT 设备与Amazon IoT 的第一次连接

    你可以在你的 Amazon IoT 设备上安装亚 Amazon  IoT SDK,通过自己的代码调用 SDK 来实现所有的功能。这里我们为了简化步骤和节约时间,选择利用 Amazon EC2 上安装 MQTT Mosquitto Client 工具来模拟 MQTT 终端。

    1.登陆到 Amazon EC2 实例并执行如下命令:

    $ sudo wget http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo -O /etc/yum.repos.d/mqtt.repo
     $ sudo yum install mosquitto mosquitto-clients -y

    *左滑查看更多

    2. 如果上面的命令执行时报依赖缺少的错误,可以加上–skip-broken再执行一遍即可

    $ sudo yum install mosquitto mosquitto-clients -y --skip-broken

    *左滑查看更多

    3. 进入到之前创建的 cert 目录

    $ cd cert

    4. 合并 CA 证书和设备证书到一个新的证书形成有效的证书链:

    $ cat Device_Certificate.crt CA_Certificate.pem > Device_CA_Certificate.crt

    5. 执行 mosquitto_pub 命令去发布一个消息到对应的 topic 上面,这也是设备与  Amazon IoT Core 的第一次连接。如果你回想一下之前的步骤,到目前为止我们的设备证书还只存在于设备上面,并没有在  Amazon IoT Core 上注册,那么接下来我们尝试发送一条消息。

    $ mosquitto_pub --cafile root-CA.crt --cert Device_CA_Certificate.crt --key Device.key -h xxxxxxxxxxxxxx.iot.us-east-1.amazonaws.com -p 8883 -q 1 -t JITP/test -i anyclientID --tls-version tlsv1.2 -m "Hello" -d

    *左滑查看更多

    • 命令中的–cafile 是  Amazon IoT 平台的 CA 证书,用于设备去验证 Amazon  IoT 平台的身份,这个文件可以通过此链接获得。

    • 命令中的–cert 是合并 CA 证书和设备证书后的证书链。

    • 命令中的–key 是设备的私钥。

    • 命令中的-h 是 Amazon IoT 平台的接入点,可以通过在 Amazon IoT 界面中左下角点击“设置”获得。

    • 命令中的-t 是你要发布消息到哪一个 topic 上,这里我是发布到 JITP/test,你可以选择自己想要

    • 发布的 topic.

    • 命令中的-i 可以按照你希望的名字命名

    6. 成功连接并发布消息后会有如下的输出,并且如果你登录  Amazon IoT 界面,点击左侧的安全—>证书后可以看到设备证书已经注册并激活了。

    Client anyclientID sending CONNECT
    Client anyclientID received CONNACK
    Client anyclientID sending PUBLISH (d0, q1, r0, m1, 'JITP/test', ... (5 bytes))
    Client anyclientID received PUBACK (Mid: 1)
    Client anyclientID sending DISCONNECT

    *左滑查看更多

    本篇作者

    郭松

    亚马逊云科技解决方案架构师

    负责企业级客户的架构咨询及设计优化,同时致力于 Amazon IoT 和存储服务在国内和全球企业客户的应用和推广。加入亚马逊云可进之前在EMC研发中心担任系统工程师,对企业级存储应用的高可用架构,方案及性能调优有深入研究。

    展开全文
  • Amazon IoT Analytics 入门

    2022-05-17 12:52:08
    本课程将介绍 Amazon IoT Analytics,这是一项完全托管的服务,允许您对大量 IoT 数据运行复杂的分析。在本课程中,我们将了解 Amazon IoT Analytics 的核心组件,部署架构概述,以及几个使用案例。我们还将为您演示...
  • 本课程将介绍 Amazon IoT Device Management,它是基于云的设备管理服务,使您可以在整个生命周期内轻松安全地管理 IoT 设备。在本课程中,我们将深入了解 Amazon IoT Device Management 的四个功能类别,包括如何...
  • 概述 Amazon IoT Greengrass是Amazon IoT服务系列中的一员,它可将亚马逊云科技无缝扩展至边缘设备,因此可以在本地操作其生成的数据,同时仍可将云用于管理、分析和持久存储。借助Amazon IoT Greengrass,您可以...

    曾经有这样一则新闻,一男子智能养鱼遇断网,4万余斤鱼或因缺氧死亡。这个塘主通过手机App监控鱼塘情况并利用智能插座控制增氧机进行增氧;但因遇到网络故障,无法及时为鱼塘启动增氧设备而造成重大经济损失。这是个典型的物联网案例,利用物联网平台远程监控数据,并基于数据进行设备控制。在大多数情况下,它能够很好地工作,但当网络连接丢失时,智能将变得无能为力。生活中类似的场景很多,我们有没有办法既享受物联网带来的便捷和智能,又能够摆脱网络依赖带来的局限性呢?

    本文将介绍如何利用 Amazon IoT Greengrass 边缘计算能力,实现远程监控的同时,在边缘侧进行智能控制。为了便于大家有一个直观、清晰的理解,全文以DIY自动浇花为主线展开介绍。

    概述

    Amazon IoT Greengrass是Amazon IoT服务系列中的员,它可将亚马逊云科技无缝扩展至边缘设备,因此可以在本地操作其生成的数据,同时仍可将云用于管理、分析和持久存储。借助Amazon IoT Greengrass,您可以构建IoT解决方案,从而将不同类型的设备和云连接起来,并实现设备互连。运行Linux的设备和支持Arm或x86架构的设备可以托管Amazon IoT Greengrass Core。Amazon IoT Greengrass可在本地执行Amazon Lambda代码、消息收发、数据管理和安全策略,甚至在没有连接Internet的情况下,也可实现这些功能。运行Amazon IoT Greengrass Core的设备充当枢纽,与其他运行Amazon FreeRTOS或已安装Amazon IoT Device SDK的设备进行通信。这些设备的尺寸可能不同,从较小的基于微控制器的设备到大型设备。如果Amazon IoT Greengrass Core设备与云之间的连接断开,Amazon IoT Greengrass组中的设备还可通过本地网络继续相互通信。

    📢 想学习 Amazon IoT Greengrass 的更多玩法?来2021亚马逊云科技中国峰会与业内领先的技术践行者们一起探讨交流吧!点击图片报名吧~

    Amazon IoT Greengrass具有以下优势:

    • 近乎实时地响应本地事件。本地资源访问功能让部署在Amazon IoT Greengrass Core设备上的Amazon Lambda函数使用本地设备资源,这样设备应用程序就能够快速访问和处理本地数据。

    • 本地运行。Amazon IoT Greengrass设备可以在本地设备无法连接到云的情况下收集、处理和导出数据流。在设备重新连接到云后,Amazon IoT Greengrass可将设备上的数据与Amazon云服务同步。

    • 安全通信。Amazon IoT Greengrass可对本地和云通信的设备进行身份验证和加密,包括采用硬件保护的端到端加密。

    • 简化设备编程。您可以在云中开发代码,然后使用Amazon Lambda、Docker容器,无缝地将其部署到您的设备上。

    • 降低运行IoT应用程序的成本。通过对设备进行编程以在本地过滤或汇总数据,并只将应用程序所需的数据传输到云,从而以较低的成本获得丰富的见解。

    • 多平台支持。您可以在支持最低硬件和软件要求的任何硬件设备上运行Amazon IoT Greengrass软件。

    自动浇花思路

    • 通过树莓派和Amazon IoT Core建立连接

    • 利用光传感器、温度传感器和土壤湿度传感器检测环境亮度、温度及花盆中湿度,通过树莓派汇总后上传

    • 利用LCD屏在本地显示传感器数据信息,并以不同颜色醒目提示土壤湿度状况

    • 利用继电器控制小水泵进行浇水

    • 在树莓派上运行自动控制逻辑,根据亮度、温度和湿度确定继电器状态

    • 通过topic来设置湿度阈值,这样可以很方便地实现通过手机App或Web应用进行参数设置

    • 将传感器数据和继电器状态通过Amazon IoT的规则引擎发送到Amazon Elasticsearch,建立监控仪表板,这样可以很方便地通过手机或浏览器进行可视化监控

    方案架构如下图所示:

    材料准备

    • 树莓派Raspberry Pi 3B/3B+ 一个,MicroSD卡一张

    • GrovePi+ 树莓派扩展板一个

    • 三个Grove传感器配件:温度传感器,土壤湿度传感器,亮度传感器

    • Grove 1602 LCD RGB背光显示屏一个

    • 一个继电器配件(Grove Ralay)

    • 微型水泵一个(3V/5V/6V),水泵水管一条

    设备连接

    首先将GrovePi+安装在Raspberry Pi上。堆叠GrovePi+时,注意引脚对齐,如下图所示。

    • 按照以下对应端口连接设备配件:

    • 温度传感器:A0

    • 土壤湿度传感器:A1

    • 亮度传感器:A2

    • 继电器:D6

    • LCD显示屏:I2C-2

    • 水泵的地线与水泵电源线(可使用USB电源线)的地线分别接入继电器的端子

    安装和配置树莓派设备

    树莓派运行系统建议使用原生Raspbian,目前最新版本为buster。请从Raspberry Pi官方网站下载并使用Etcher工具制作启动镜像。

    为方便后续使用和调试,建议启用SSH:

    1$sudo systemctl enable ssh

    一键安装全部驱动:

    1$sudo curl -kL dexterindustries.com/update_grovepi | bash

    安装Amazon IoT SDK:

    1$ pip3 install AWSIoTPythonSDK

    记得安装好所有依赖后reboot一下,以刷新系统驱动。

    Amazon IoT Greengrass环境配置

    首先设置Amazon IoT Greengrass运行环境,增加以下用户和组:

    1$sudo adduser --system ggc_user
    2$sudo addgroup --system ggc_group

    为树莓派设置hardlink和softlink保护,在 /etc/sysctl.d/98-rpi.conf中增加以下两行:

    1fs.protected_hardlinks = 1
    2fs.protected_symlinks = 1

    编辑 /boot/cmdline.txt,在行末尾,增加如下参数,激活memory cgroups:

    1cgroup_enable=memory cgroup_memory=1

    配置完成后,重启树莓派。

    运行Greengrass dependency checker,确保树莓派环境满足所有依赖条件:

    1$cd /home/pi/Downloads
    2$wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.10.x.zip
    3$unzip greengrass-dependency-checker-GGCv1.10.x.zip
    4$cd greengrass-dependency-checker-GGCv1.10.x
    5$sudo modprobe configs
    6$sudo ./check_ggc_dependencies

    安装Amazon IoT Greengrass核心软件

    首先在Amazon IoT控制台配置Amazon IoT Greengrass。在Greengrass界面,创建组waterflower,详细步骤可参见链接。

    • 链接:

    https://docs.aws.amazon.com/zh_cn/greengrass/latest/developerguide/gg-config.html

    创建过程中,会下载安全资源tar.gz文件,并下载Amazon IoT Greengrass核心软件安装包(适用于 Raspbian 的 Armv7l 软件包)。

    将下载的文件利用scp上传到树莓派设备上:

    1$scp greengrass-linux-armv7l-1.10.0.tar.gz pi@raspberry-IP-address:/home/pi
    2$scp <hash>-setup.tar.gz pi@raspberry-IP-address:/home/pi

    登录到树莓派设备,进入到对应下载文件的目录并解压这两个到相应路径下:

    1$sudo tar -xzvf greengrass-linux-armv7l-1.10.0.tar.gz -C /
    2$sudo tar -xzvf <hash>-setup.tar.gz -C /greengrass

    下载Amazon IoT服务器根证书:

    1$cd /greengrass/certs/
    2$sudo wget -O root.ca.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem

    启动Amazon IoT Greengrass:

    1$cd /greengrass/ggc/core/
    2$sudo ./greengrassd start

    确定传感器和Amazon IoT Greengrass的交互模式

    传感器作为本地设备,和Amazon IoT Greengrass之间可以采用两种交互模式:一种是标准的IoT模式,即每个传感器作为独立的设备,有自己的X.509证书,通过MQTT协议与Amazon IoT Greengrass Core进行通信,Amazon IoT Greengrass Core则通过MQTT协议对继电器设备发出控制命令。如果需要,Amazon IoT Greengrass Core也负责对收集的各个传感器消息进行汇总并上传给Amazon IoT Core。另一种是简化模式,即每个传感器作为树莓派本地设备,Amazon IoT Greengrass上的Amazon Lambda函数利用本地资源访问功能通过GrovePi SDK对传感器和继电器设备进行读取和写入操作。

    第一种模式的扩展性好,支持容器化部署,每个传感器作为IoT设备加入到Amazon IoT Greengrass组中,但每个设备都需要编写相应的代码。这种模式的参考范例也比较容易找到。第二种模式编程简单,两个Lambda函数就可以搞定。在本文中将介绍如何用第二种模式实现。

    编写和打包Amazon Lambda函数

    首先编写读取和报告传感器状态的Lambda函数,这里命名为wfSensorLambda.py。

    为了利用GrovePi SDK来读取传感器数据,并在本地LCD屏上设置文本和颜色,需要引入两个包:

    1import grovepi
    2from grove_rgb_lcd import *

    读取传感器数据的代码如下:

     1# Get value from temperature sensor
     2temp_value = grovepi.temp(temp_sensor,"1.2")
     3
     4# Get value from moisture sensor
     5mois_value = grovepi.analogRead(mois_sensor)
     6
     7# Get value from light sensor
     8light_value = grovepi.analogRead(light_sensor)
     9
    10# Get status from relay
    11switch_status = grovepi.digitalRead(relay)

    在LCD屏上设置颜色和文本的代码如下:

    1setRGB(R, G, B)
    2setText("Temp: %.1f C *%s\nMoisture: %d " %(temp_value,moment,mois_value))

    由于LCD屏的RGB背光色有255个值,为了通过LCD屏的颜色能一目了然地了解当前土壤湿度情况,我们需要将土壤湿度值按照颜色梯度映射到这255个值然后进行显示,从而实现土壤湿度值的颜色显示。这里实现了两个函数来计算最终的RGB值,代码如下:

     1def calcColorAdj(variance):     # Calc the adjustment value of the background color
     2    "Because there is 200 mapping to 255 values, 1.275 is the factor for 400 spread"
     3    factor = 1.275;
     4    adj = abs(int(factor * variance));
     5    if adj > 255:
     6        adj = 255;
     7    return adj;
     8
     9def calcBG(humidity):
    10    "This calculates the color value for the background"
    11    variance = humidity - justRight;   # Calculate the variance
    12    adj = calcColorAdj(variance);   # Scale it to 8 bit int
    13    bgList = [0,0,0]               # initialize the color array
    14    if(variance < 0):
    15        bgR = 0;                    # too dry, no red
    16        bgB = adj;                  # green and blue slide equally with adj
    17        bgG = 255 - adj;
    18
    19    elif(variance == 0):             # perfect, all on green
    20        bgR = 0;
    21        bgB = 0;
    22        bgG = 255;
    23
    24    elif(variance > 0):             #too wet - no blue
    25        bgB = 0;
    26        bgR = adj;                  # Red and Green slide equally with Adj
    27        bgG = 255 - adj;
    28
    29    bgList = [bgR,bgG,bgB]          #build list of color values to return
    30    return bgList;

    报告传感器状态则比较简单,直接调用greengrass SDK的publish函数即可。

    由于需要周期性地采集传感器的数据,因此,这个Lambda函数需要长时间运行,这里我们利用threading的Timer实现每5秒采集一次传感器数据:

    1Timer(5, greengrass_sensor_run).start()

    wfSensorLambda.py的完整源代码可以从这里获取。

    为了实现对继电器和水泵的控制,我们还需要编写一个实现设备控制的Amazon Lambda函数,这里命名为wfSwitchLambda.py。它有两个作用:一是根据传感器数据和设定阈值,执行相应的决策逻辑,控制继电器状态以启动或关闭水泵;二是接收来自Amazon IoT的阈值设置消息,更新阈值。

    为了避免浇水过快而传感器不能及时感知的问题,在控制逻辑中针对不同环境条件采取了反转模式或步进模式来启停水泵。主要代码如下:

     1temp_value = float(event['temp'])
     2        mois_value = int(event['moisture'])
     3        light_value = int(event['light'])
     4        status = int(event['switch'])
     5        if mois_value < threshold:
     6            if ((light_value > light_threshold) and (temp_value > temp_threshold)):         ##反转模式
     7                if status:
     8                    state = "off"
     9                else:
    10                    state = "on"
    11            else:             ## 步进模式
    12                state = "on-1"
    13        else:
    14            if status:
    15                state = "off"
    16
    17        grovepi.pinMode(relay,"OUTPUT")
    18        if state == "on":           # 反转模式
    19            try:
    20                grovepi.digitalWrite(relay,1)
    21                logger.info("Triggering relay turned ON!")
    22            except Exception as e:
    23                logger.error("Failed to switch ON relay: " + repr(e))
    24        elif state == "on-1":    # 步进模式
    25            try:
    26                grovepi.digitalWrite(relay,1)
    27                logger.info("Triggering relay turned ON - one time!")
    28                time.sleep(1)
    29                grovepi.digitalWrite(relay,0)
    30            except Exception as e:
    31                logger.error("Failed to switch ON relay[one time]: " + repr(e))
    32        elif state == "off":
    33            try:
    34                grovepi.digitalWrite(relay,0)
    35                logger.info("Triggering relay turned OFF!")
    36            except Exception as e:
    37                logger.error("Failed to switch OFF relay: " + repr(e))
    38        else:
    39            logger.info("No need to change!")

    在编写好Lambda函数后,需要将其打包成zip文件。打包时,需要注意将greengrasssdk目录一起打包到zip文件中,greengrasssdk目录可以从Amazon Greengrass Core SDK for Python中获取。打包命令如下:

    1$zip -r wf_sensor_lambda.zip greengrasssdk wfSensorLambda.py
    2$zip -r wf_switch_lambda.zip greengrasssdk wfSwitchLambda.py

    然后,打开Amazon Lambda控制台,分别创建这两个函数wfSensor和 wfSwitch:

    • Runtime请选择 Python 3.7

    • 对于代码输入种类,请选择上传zip文件

    • 对于Handler(处理程序),分别输入wfSensorLambda.function_handler和 wfSwitchLambda.switch_handler

    • 分别上传wf_sensor_lambda.zip 和 wf_switch_lambda.zip

    • 发布函数后,建议为函数创建别名

    为Amazon IoT Greengrass配置和部署Lambda函数

    选择之前创建的Greengrass组,在配置页面上,选择Lambdas,然后点击两次Add Lamba,分别将wfSensor 和 wfSwitch 加入,添加时注意以下要点:

    • 选择Use existing Lambda

    • 在选择版本时,不要选择具体版本号,而是选择Alias:xxx

    • 在加入的函数右上角点击省略号(…),选择Edit Configuration(编辑配置)

    • 对于“Run as”,请选择Another user ID/group ID,在下方输入两个0,对于“containerization”,选择No container(always)。这个修改只是针对第二种交互模式,对于第一种交互模式,无需修改。

    • Timeout超时值改为10秒

    • 对于Lamba生命周期,wfSensor需要改为long-lived;wfSwitchLambda不用修改。

    配置如下订阅:

    针对本文的第二种交互模式,需要在树莓派上修改Amazon IoT Greengrass的参数。打开 /greengrass/config/config.json,在 “runtime”部分,增加:

    1"allowFunctionsToRunAsRoot" : "yes"

    在Amazon IoT控制台上,在相应greengrass组中,点击Deploy部署,将云配置部署到树莓派设备。第一次部署可能需要几分钟。当部署完成后,您应该在部署页面上的状态列中看到已成功完成。

    您可以验证Lambda函数是否在设备上运行,详细步骤参见下方链接。

    • 链接

    https://docs.aws.amazon.com/zh_cn/greengrass/latest/developerguide/lambda-  check.html。

    创建和配置Amazon Elasticsearch

    在Amazon Elasticsearch控制台上,创建一个新域,名称为waterflower,网络配置选择“Public access”,并输入以下 Access policy(访问策略):

     1{
     2  "Version": "2012-10-17",
     3  "Statement": [
     4    {
     5      "Effect": "Allow",
     6      "Principal": {
     7        "AWS": "*"
     8      },
     9      "Action": "es:*",
    10      "Resource": "arn:aws-cn:es:<region>:<your-Account-ID>:domain/waterflower/*",
    11      "Condition": {
    12        "IpAddress": {
    13          "aws:SourceIp": [
    14            "x.x.x.x/32"
    15          ]
    16        }
    17      }
    18    }
    19  ]
    20}

    上面“x.x.x.x”请输入您的电脑对应的公网IP地址,您可以输入https://checkip.amazonaws.com获得。

    访问Kibana界面,创建index,命名为wf-sensor:

     1PUT /wf-sensor
     2{
     3  "mappings": {
     4    "properties": {
     5      "timestamp": { "type": "long", "copy_to":  "datetime" },
     6      "datetime": { "type": "date", "store": true },
     7      "clientId": { "type": "text" },
     8      "temp":    { "type": "float" },
     9      "moisture":  { "type": "integer"  }, 
    10      "light":   { "type": "integer"  },
    11      "switch":  { "type": "integer" },
    12      "state":  { "type": "integer" }
    13    }
    14  }
    15}

    创建index pattern:

    • 名称:wf-sensor*

    • 时间过滤器字段名称:datetime

    配置IoT规则引擎

    在Amazon IoT控制台中,点击Act->Rules,创建规则:

    • 规则查询条件:SELECT * FROM ‘waterflower/sensor/telemetry’

    • 添加Action,选择 Send a message to the Amazon Elasticsearch Service

    • 选择Domain(域)waterflower

    • ID: ${newuuid()}

    • Index: wf-sensor

    • Type: _doc

    创建可视化报表

    在Kibana界面,点击左边菜单栏的Discover(发现),您现在可以看到上传的设备状态数据,它们按时间顺序显示在屏幕上。

    点击左边菜单栏的Visualize,您现在可以创建可视化图表,并可以添加到仪表板中,以远程监控和查看传感器状态和继电器/水泵工作情况。如下图示例:

    测试和验证

    您可以通过以下几个方法验证自动浇花效果:

    • 利用Amazon IoT控制台的test功能发布消息到waterflower/setting,修改湿度阈值,测试水泵工作情况

    • 通过Amazon Elasticsearch的Kibana界面,查看传感器数据变化情况和水泵工作情况

    • 关闭树莓派的互联网连接,验证连接丢失的条件下,自动浇花是否正常工作

    资源清理

    在您成功搭建了本文介绍的自动浇花系统后,根据您的使用需求,可以按照如下两种情况对创建的资源进行清理,以免产生不必要的费用。

    如果您想继续使用自动浇花功能,但不再需要进行远程监控,请按以下步骤删除资源:

    • 打开Amazon IoT控制台,依次选择Act -> Rules,点击之前创建的规则waterflower的右上角省略号(…),点击删除并确认

    • 打开Amazon Elasticsearch控制台,可以看到之前创建的域 waterflower,点击进入。然后,点击最上面一排的“Delete domain(删除域)”按钮,在弹出窗口中,选中checkbox框,然后点击删除

    如果您不再使用整个自动浇花系统,请先按上面步骤删除远程监控相关的资源,然后按以下步骤继续清理所有资源:

    • SSH到树莓派,输入以下命令停止greengrass进程:

    1$sudo /greengrass/ggc/core/greengrassd stop
    • 打开Amazon IoT控制台,点击左边菜单栏中的Greengrass -> Groups,点击之前创建的组waterflower,进入组管理界面,点击右上角的Actions -> Reset Deployments,在弹出窗口中,选中checkbox框,点击Reset deployment

    • 接着点击右上角的Actions -> Delete Group,在弹出窗口中,点击“Yes, Continue to delete”按钮,确认删除

    • 继续在Amazon IoT控制台,点击左边的Manage -> Things,点击waterflower_Core的右上角省略号(…),点击删除并确认

    小结

    根据上面的方案实现,您可能会发现在树莓派系统上运行Amazon IoT Greengrass可以构建更多的IoT解决方案。从基本的遥测到执行机器学习推理,我们的客户正在构建多种多样的Amazon IoT Greengrass解决方案,以便不断创新并扩展解决方案的价值。

    在本文中,您学习了如何利用Amazon IoT Greengrass DIY一个自动浇花系统。现在,您可以扩展这个方案,增加手机App实现对浇花参数控制和远程监控自动浇花工作状况,并利用Amazon IoT Greengrass不断改进您的边缘功能。

    本篇作者

    张红杰

    亚马逊云科技解决方案架构师

    负责基于亚马逊云科技的云计算方案架构咨询和设计,同时致力于亚马逊云科技物联网服务和无服务器架构在国内和全球商业客户的应用和推广,推进企业服务迁移上云进程。有10年以上的数据中心基础架构设计,企业级应用系统设计开发等经验。

    展开全文
  • 所谓的双向认证,即意味着Amazon IoT设备端需安装Amazon IoT设备证书,并且,签发该证书所使用的CA证书需要被Amazon IoT Core授信,从而完成Amazon IoT Core对Amazon IoT设备端的认证。并且,Amazon IoT设备也会验证...
  • Amazon Re:Invent2020上,我们宣布推出Amazon IoT SiteWise Edge的预览版,这是Amazon IoT SiteWise的一项新功能,提供了在工业场所有本地部署方式运行的软件,并可轻松在本地收集、处理和监控设备数据,之后将...
  • 在进行物联网设备连接时,每个设备都需要通过消息的形式与 Amazon IoT Core 进行数据交互。随着消息交互数量的增加,如果不对整体架构进行优化,很容易造成消息成本的指数增长,甚至是不必要的浪费。本文结合 Amazon...
  • Amazon IoT Greengrass很容易部署在设备侧/网关侧,同时也提供良好的运行时环境,针对安防监控厂商Camera设备可以结合Amazon IoT Greengrass来实现边...
  • 物联网(IoT)的一个典型应用场景是能够从传感器数据中获取上下文洞察力,例如分析设备异常或者进行预测性维护,及时给予用户通知。在本文中,我们将专注于通过设备多项指标对设备进行预测性维护,利用机器学习算法...
  • 使用ESP32 通过亚马逊iot core进行MQTT SSL的数据上传和接收
  • 4月26日,20:00,亚马逊云科技将举行《使用 Amazon IoT Core 构建安全合规的智能产品》为主题的 Tech Talk,并邀请亚马逊云科技解决方案架构师郑辉作为嘉宾带来分享。 本期主题 使用 Amazon IoT.
  • 预计到 2050 年,全球人口将... 设置 Amazon IoT Core 组件 Amazon IoT 使联网设备能够连接到亚马逊云科技,允许应用程序与物理设备进行交互,或者收集来自这些设备的数据并进行处理。 下一节将向您介绍在 Amazon IoT...
  • title: 亚马逊AWS Kinesis Video Streams with IOT mqtt的demo示例 categories:[Linux C] tags:[亚马逊云平台] date: 2021/12/22 作者:hackett 微信公众号:加班猿 AWS IoT Device SDK for Embedded C通常面向...
  • 简介 COVID-19 现状让世界各地的供应链吃紧,同时...要开始使用 Amazon IoT SiteWise Edge 功能,请登录 Amazon IoT SiteWise 控制台,您还可以在其中创建 Amazon IoT SiteWise 演示并配置模拟边缘数据源 案例研究 ...
  • 智能家居终端可以依托数据分析掌握用户的使用习惯从而为优化体验提供有力支撑,亚马逊云科技推出了Amazon IoT Analytics、Amazon IoT Events、Amazon IoT SiteWise、Amazon IoT Things Graph等解决方案,可以实现...
  • 树莓派 + AWS IoT 入门实验
  • 吴宗承,现为亚马逊AWS中国解决方案架构师,拥有超过12年的IT行业以及软件开发工作经验,致力于协助AWS客户了解最新的云计算服务,并提供软件设计与系统架构解决方案,曾先后就职于台湾雅虎、HTC、猎豹移动等公司,...
  • mqtt awsiot
  • 往期推荐1、HarmonyOS到底是不是Android套壳?2、2021国内主流 IoT 物联网平台研究报告3、IoT平台如何实现大规模设备控制4、如何成为 IoT 物联网万亿市场的操盘人...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,236
精华内容 3,294
关键字:

亚马逊iot