问题标签 [aws-iot]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - DynamoDB 和 Lambda 的 Amazon IoT 规则问题
我目前正在阅读Amazon IoT的“快速入门”教程,并且已经到了配置规则和测试规则的地步。我可以在 Amazon IoT 下的 aws 控制台中看到我的规则,以及我的东西、证书和策略。我正在使用 Mosquitto,就像他们建议的那样进行测试,当我订阅我的主题时,我可以看到我的消息。
但是我有一个问题,当我发布消息时,我在我的 DynamoDB 或来自 Lambda 的 CloudWatch 日志中看不到任何内容。在物联网中,我能够创建资源并查看我的角色、数据库表和 lambda 函数,就好像它正在工作一样。我遵守教程所说的内容,没有额外的内容。我找不到任何其他讨论过 Amazon IoT 或遇到此问题的论坛。
amazon-web-services - 使用 AWS IoT 向第三方提供服务
我想利用 AWS IoT 为我的客户提供服务。客户既可以是“事物”所有者,也可以是数据消费者。附加值由平台上的计算材料提供。这样的场景可能吗?我想实现一个 REST API 让用户注册他们自己的东西并保持与客户和事物的关联,但我不希望这个东西需要我的亚马逊凭证才能推送数据。这样的场景可能吗?
amazon-web-services - 当 AWS IOT 设备断开连接并重新连接时,传输中的消息会发生什么情况
我有一台设备(又名“东西”)成功连接到 AWS IOT。该设备将在使用移动网络的非常不可靠的电信环境中运行。这意味着该设备将在我的应用程序运行时频繁连接和重新连接。
我知道 AWS IOT 的“影子”机制,但我的消息需要按顺序使用,这意味着我需要所有消息,而不仅仅是最后一个状态。
在断开连接和重新连接事件期间,飞行中的消息和有效负载会发生什么?
php - PHP 卡在 AWS SDK IoT getThingShadow 请求中
我用 PHP 编写了一些代码来获取连接到 AWS IoT 服务的 IoT 设备的 ThingShadow 状态。
当我在我的本地主机服务器上运行它时,它工作得很好,但是当我在我的 EC2 实例上运行它时它就不起作用了。我调用这个方法,它卡在似乎是一个循环的地方。
我已经检查了凭据,一切都很好。
对于测试,我写错了thingName
,我收到以下错误:
当我使用现有事物的实际名称运行代码时,它没有响应。看起来代码在某处循环。
我使用的是 AWS PHP SDK v3。
amazon-web-services - 将 AWS IOT 用于间接连接的设备
我正在考虑将 AWS IoT 用于一个应用程序,其中在(可能数百个)分布式网关(PC 或 Raspberry Pi)后面有数千个小型位图显示器(与专有无线协议连接)。
到目前为止,我提出了以下概念:
网关 PC 终止 MQTT 会话。它没有自己的设备表。
thingname = <gatewayId>_<displayId>
显示位图存储在 S3 上(文件名 = 事物名)
更新显示只是替换 S3 文件,然后将位图版本(例如 SHA)更新为所需的设备阴影状态。
网关必须订阅更新,例如
/update/<gatewayId>/#
会有一个规则从
/update/<gatewayId>_<displayId>
to重新发布/update/<gatewayId>/<displayId>
(因为thingnames不能包含斜杠,MQTT中的通配符必须是完整的路径组件)对于每条收到的消息,网关将从 S3 下载位图,将其发送到显示器,然后将报告的状态更新为新版本。
如何处理断开连接的网关,然后重新联机?
订阅不是持久的,所以我需要找到所有东西(从那个网关),其中期望的状态!=报告状态并再次更新它们。
可以有一个规则来做到这一点吗?这个想法是让网关/reconnect/<gatewayId>
在它重新联机时发布重新连接消息(如 )。该规则必须找到该网关的所有设备影子,其中期望状态!= 报告状态并发布它们。
注意:我知道我可以在没有设备影子的情况下使用自己的数据库对机制进行编程。但这个想法是为此使用物联网机制。
另一个问题: 创建位图非常快(可能是每秒 1000 个),发送到显示器可能非常慢(尤其是发送一堆的第一个位图可能需要一分钟)。因此,在确认第一条消息之前,可能会创建数千个位图(用于一个网关)。这是一个问题吗?
amazon-web-services - AWS IOT 苦苦挣扎
我知道我在这里遗漏了一些基本的东西,但我真的被困在试图访问 AWS IOT 平台上的东西影子。
我正在使用以下代码来创建一个新事物:
上面的代码成功创建了一个东西。我可以看到运行时创建的东西:
然后,当我尝试使用以下代码访问事物的影子时:
我收到以下错误:
需要注意的几件事:使用其访问和密钥创建此事物的用户具有以下 AWS 策略(一旦我们开始工作,我们将锁定这些策略):
amazon-web-services - AWS-IOT Mqtt Broker 是否记得跨客户端连接的订阅客户端和未传递的消息?
此处的 AWS 文档([ http://docs.aws.amazon.com/iot/latest/developerguide/iot-message-broker.html])这样说:-
“消息代理维护所有客户端会话和每个会话的订阅的列表。当在主题上发布消息时,代理检查具有映射到该主题的订阅的会话。然后代理将发布消息转发到所有会话有一个当前连接的客户端。对于所有没有连接的客户端的匹配会话,代理保存消息以在客户端连接时传递。
但是,在这里([ http://docs.aws.amazon.com/iot/latest/developerguide/protocols.html])它说:-
“消息代理不支持持久会话(clean session 设置为 0)。假设所有会话都是 clean session,并且消息不会跨会话存储。如果 MQTT 客户端发送的消息 clean session 属性设置为 false,则客户端将断开连接。”
这是一个矛盾。有人可以详细说明和澄清。谢谢。
aws-sdk - ImportError:无法使用 OpenWrt 导入名称 HTTPSHandler
我正在尝试按照说明安装AWS-IoT-Arduino-Yún-SDK并收到此错误:
pip install paho-mqtt
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==7.1.2', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 337, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 2281, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 1991, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/__init__.py", line 15, in <module>
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/vcs/subversion.py", line 9, in <module>
from pip.index import Link
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/index.py", line 30, in <module>
from pip.wheel import Wheel, wheel_ext
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/wheel.py", line 35, in <module>
from pip._vendor.distlib.scripts import ScriptMaker
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/_vendor/distlib/scripts.py", line 14, in <module>
from .compat import sysconfig, detect_encoding, ZipFile
File "/usr/lib/python2.7/site-packages/pip-7.1.2-py2.7.egg/pip/_vendor/distlib/compat.py", line 31, in <module>
from urllib2 import (Request, urlopen, URLError, HTTPError,
ImportError: cannot import name HTTPSHandler
任何想法可以在这里做什么?
amazon-web-services - 使用 Golang-AWS-SDK IoTDataPlane 到 AWS IoT 的 HTTP POST
我想通过 HTTP 使用 AWS-SDK 在 golang 中通过 AWS IoT 向 MQTT 主题发送消息,但
在尝试使用以下代码时失败。回应是:
以下是我使用的代码:
而且我还验证了为我的 AWS 账户验证的有效凭证设置和策略。以下是我在 ~/.aws/credentials 中的 aws 凭证
和附加到您的身份的政策:
}
我也试过用 Node.JS 它工作!以下是Node中的WORKING源码供参考:
对于 Node JS 的工作,它需要在根文件夹中有一个适当的 AWS.config 文件。像这样: