この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
raspberry_pi:aws_iot [2017/10/26 05:02] fifi |
raspberry_pi:aws_iot [2017/11/01 00:17] (現在) fifi |
||
---|---|---|---|
ライン 2: | ライン 2: | ||
## aws チュートリアル | ## aws チュートリアル | ||
- | [Raspberry Pi の接続](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-sdk-setup.html) | + | - IAMユーザを作成 |
+ | - 必要なポリシーをつける | ||
+ | - S3ならS3FullAccess | ||
+ | - S3にバケットを作る | ||
+ | - (重要) バケットポリシーの設定 | ||
- | - [AWS IoT SDK チュートリアル](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/sdk-tutorials.html) | + | ``` |
- | - [Raspberry Pi の接続](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/sdk-tutorials.html) | + | { |
- | - [AWS IoT Embedded C SDK の使用 - AWS IoT](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-embedded-c-sdk.html) | + | "Id": "Policy1509494334229", |
- | - [AWS IoT Device SDK for JavaScript を使用する - AWS IoT](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-device-sdk-node.html) | + | "Version": "2012-10-17", |
+ | "Statement": [ | ||
+ | { | ||
+ | "Sid": "Stmt1509494331498", | ||
+ | "Action": "s3:*", | ||
+ | "Effect": "Allow", | ||
+ | "Resource": "arn:aws:s3:::pmonitor1/*", | ||
+ | "Principal": { | ||
+ | "AWS": [ | ||
+ | "*" | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | ``` | ||
- | + | 送ってみる | |
- | - __done__ [Raspberry Pi の接続](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/sdk-tutorials.html) | + | ``` |
- | - AWS Iot コンソールにサインインする | + | aws s3 cp s3-text.txt s3://<your-bucket>/ |
- | - __done__ モノを作る | + | ``` |
- | - __done__ REST APIエンドポイント ag7srsxum1sn0.iot.us-west-2.amazonaws.com | + | |
- | - __done__ 証明書の発行 | + | |
- | - __done__ ポリシーの作成 | + | |
- | - __done__ 証明書にポリシーをアタッチ | + | |
- | - __done__ 証明書にモノをアタッチ | + | |
- | + | ||
- | - [AWS IoT Embedded C SDK の使用 - AWS IoT](http://docs.aws.amazon.com/ja_jp/iot/latest/developerguide/iot-embedded-c-sdk.html) | + | |
- | - 証明書の名前を変更しておく? | + | |
- | - ディレクトリに証明書番号 | + | |
- | - private.pem.key, public.pem.key, certificate.pem.crt, root-CA.crt | + | |
- | - __done__ これで、Raspberry Pi は AWS IoT Device SDK for C を使用して AWS IoT に接続されました。 | + | |
- | - ルールを作成する | + | |
- | + | ||
- | - __失敗__ [IoTを使って畑を監視する 2015.12.20](https://tech.recruit-mp.co.jp/iot/farm-monitoring-with-iot/) | + | |
- | - iot_client.jsが動かない。nodojsが分からないのでエラーの原因が分からん。古そう。 | + | |
- | - __here__ pythonでやってみる。 | + | |
- | - [AWS IOT SDK](https://aws.amazon.com/jp/iot/sdk/) | + | |
- | - できた!! requre('sys')を消すことでうごいた! | + | |
- | - __失敗__ DynamoDBの使い方が分からない。基本からチュートリアルをしないとだめ。一旦中断 | + | |
- | + | ||
- | ## 成功方法 | + | |
- | + | ||
- | - モノを作成 | + | |
- | 名前:raspi_41_1 | + | |
- | ルールを作成 | + | |
- | 名前:raspiRule_41_1 | + | |
- | メッセージのリソース | + | |
- | 属性:*, トピックフィルター:topic/sns, 条件:空欄 | + | |
- | [アクションの追加]クリック | + | |
- | 「SNSプッシュ通知としてメッセージを送信する」を選択 | + | |
- | SNSターゲット:iot-sns_test (作成する) | + | |
- | 次のページ | + | |
- | メッセージ形式:初期値のまま(JSONにした方が良かった?) | + | |
- | IAMロール名:[新しいロールの作成]クリック | + | |
- | [新しいロールの作成]クリック | + | |
- | IAMロール名:aws_iot_sns_test | + | |
- | [新しいロールの作成]クリック | + | |
- | [ルールを作成する]クリック | + | |
- | + | ||
- | SNSトピックの作成 | + | |
- | SNSターゲットで[新しいリソースを作成する]クリック | + | |
- | [Create new topic]クリック | + | |
- | Topic name:iot-sns_test | + | |
- | [Create Topic]クリック | + | |
- | リストから iot-sns_test を選択 | + | |
- | [Create subscription]クリック | + | |
- | Topic ARN:初期値のまま | + | |
- | Protocol:Email | + | |
- | Endpoint:(送信先のメールアドレス) | + | |
- | [Create subscription]クリック | + | |
- | 受信したメールの Confirm Subscription をクリック | + | |
- | ポリシーの作成 | + | |
- | 名前:raspiPolicy | + | |
- | アクション:iot:* | + | |
- | リソースARN:* | + | |
- | 許可:ON | + | |
- | [作成]クリック | + | |
- | + | ||
- | + | ||
- | + | ||
- | 証明書の作成 | + | |
- | 1-Click証明書作成の[証明書の作成]クリック | + | |
- | 生成された「このモノの証明書」「プライベートキー」をダウンロード | + | |
- | ルートCA証明書もダウンロード (名前を rootCA.pem にした) | + | |
- | [ポリシーのアタッチ]クリック | + | |
- | raspiPolicyを選択して[完了]クリック | + | |
- | 左のメニュー セキュリティ/証明書 から証明書を選択 | + | |
- | アクション - モノをアタッチする で raspi_41_1 をアタッチ | + | |
- | アクション - 有効化 | + | |
- | + | ||
- | + | ||
- | Raspberry Pi 3 からデータ送信 | + | |
- | Mosquittoクライアントを使用 | + | |
- | sudo apt-get install -y mosquitto-clients | + | |
- | 5分毎に気温、気圧、湿度を取得して送信 | + | |
- | + | ||
- | + | ||
- | import time | + | |
- | from subprocess import check_call | + | |
- | from sense_hat import SenseHat | + | |
- | sense = SenseHat() | + | |
- | + | ||
- | while True: | + | |
- | t = round(sense.get_temperature(), 1) | + | |
- | p = round(sense.get_pressure(), 1) | + | |
- | h = round(sense.get_humidity(), 1) | + | |
- | + | ||
- | msg = "{'message':" + "'Temperature:%s, Pressure:%s, Humidity:%s'" % (t,p,h) + "}" | + | |
- | + | ||
- | check_call(["mosquitto_pub", "--cafile", "rootCA.pem", "--cert", "4f2df38695-certificate.pem.crt", "--key", "4f2df38695-private.pem.key", | + | |
- | "-h", "ajm28n1yz8oj0.iot.ap-northeast-1.amazonaws.com", "-p", "8883", "-q", "1", "-d", "-t", "topic/sns", "-m", msg]) | + | |
- | + | ||
- | sense.show_message(msg, scroll_speed=0.05) | + | |
- | sense.clear() | + | |
- | + | ||
- | time.sleep(300) | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | -> 登録したメールアドレスにメールが送られてきた! | + | |
- | {'message':'Temperature:35.3, Pressure:1016.9, Humidity:46.6'} | + | |