問題タブ [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 ログに何も表示されないという問題があります。IoT では、リソースを作成し、自分のロール、db テーブル、およびラムダ関数が機能しているかのように確認できます。私はチュートリアルが言っていることを守っており、余分なことは何もしていません。Amazon IoT について議論した、またはこの問題を抱えている他のフォーラムを見つけることができません。
php - Php が AWS SDK IoT getThingShadow リクエストでスタックする
AWS IoT サービスに接続された IoT デバイスの ThingShadow 状態を取得するコードを PHP で書きました。
localhost サーバーで実行すると完全に動作しますが、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>
from toを再発行するルールがあります/update/<gatewayId>/<displayId>
(モノの名前にスラッシュを含めることはできず、MQTT のワイルドカードは完全なパス コンポーネントでなければならないため)。受信したメッセージごとに、ゲートウェイは S3 からビットマップをダウンロードしてディスプレイに送信し、報告された状態を新しいバージョンに更新します。
オンラインに戻った切断されたゲートウェイをどのように処理しますか?
サブスクリプションは永続的ではないため、(そのゲートウェイから) 目的の状態 != 報告された状態のすべてのものを何らかの方法で見つけて、それらを再度更新する必要があります。
それを行うためのルールはありますか?アイデアは、ゲートウェイが/reconnect/<gatewayId>
オンラインに戻ったときに再接続メッセージ ( など) を発行することです。ルールは、望ましい状態 != 報告された状態である、そのゲートウェイのすべてのデバイス シャドウを見つけて公開する必要があります。
注:デバイス シャドウを使用せずに、独自のデータベースを使用してメカニズムをプログラムできることはわかっています。しかし、アイデアはそのために IoT メカニズムを使用することでした。
別の質問: ビットマップの作成は非常に高速です (1 秒あたり 1000 の可能性があります) が、ディスプレイへの送信は非常に遅くなる可能性があります (特に、最初のビットマップの送信には 1 分かかる場合があります)。したがって、最初のメッセージが確認される前に、(1 つのゲートウェイに対して) 数千のビットマップが作成される可能性があります。これは問題ですか?
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] ) には次のように書かれています:-
「メッセージ ブローカーは永続的なセッションをサポートしていません (0 に設定されたクリーン セッション)。すべてのセッションはクリーン セッションであると見なされ、メッセージはセッション間で保存されません。MQTT クライアントがクリーン セッション属性を false に設定してメッセージを送信すると、クライアントは切断されます。」
これは矛盾です。誰かが詳しく説明してください。ありがとう。
aws-sdk - ImportError: OpenWrt を使用して名前 HTTPSHandler をインポートできません
指示に従ってAWS-IoT-Arduino-Yun-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 ファイルが必要です。このような: