タグ「amazon」が付けられているもの


車バイクセキュリティ発報を LINE 通知へ変更 - SORACOM LTE-M Button Plus と AWS Lambda/SNS

昨年設定したバイクとカーセキュリティのメール発報を、LINE 通知に変更してみました。

仕組は、セキュリティ装置にリレー接続した SORACOM LTE-M Button Plus と SORACOM Funk で Amazon Lambda へ飛ばし、さらに LINE Notify 宛にリクエスト発行する形です。

以前ボタンを購入した際、ちょうどソラコム側で簡単メール通知機能が用意されたので、そのまま使ってました。
ただ、通知到着までが、かなり遅いんですよね(早いときもある)。

  • SORACOM Funk
  • Amazon Lambda
  • Amazon SNS (SMS 通知、Eメール通知)
  • LINE Notify (LINE 通知)

使用したサービスは、これだけ。
ついでに Amazon SNS 使って SMS 通知も機能いれてみました。

LINE 以外にもインタフェースが用意されてれば通知はできます。Slack への通知は簡単かな。Facebook Messenger は面倒そうだったのでやめました。

色々試しましたが Amazon SNS 経由の SMS 通知より、LINE Notify が早いですね。

 

LINE、Amazon AWS、SORACOM 環境準備

それでは、サービス側 LINE, Amazon AWS, SORACOM の環境を準備していきます。

  1. LINE Notify
  2. Amazon IAM
  3. Amazon SNS
  4. Amazon Lambda
  5. SORACOM 認証ストア
  6. SORACOM Funk

LINE Notify準備

以下 URL からマイページへログインし、自分への通知用にトークンIDを発行、メモしておきます。
LINE をメールアドレスでログインできる様に変更しておく必要があります。

  • https://notify-bot.line.me/ja/
  • 「トークン名」:(任意)
    ※LINE 通知した際にメモ程度に表示されます。私は button にしました。
  • 「通知するトークルーム」:「1:1 でLINE Notify から通知を受け取る」を選択
    ※複数人で受ける場合はグループ宛もできます

トークンIDは漏れると誰でも通知できる様になっちゃうので注意。漏れたら別のトークンIDの再発行も可能です。

Amazon AWS

リージョン選択

どこの国の AWS で動かすかですが、私は ap-northeast-1 (東京) で動かしています。

IAM

SORACOM Funk 用に「Amazon IAM」の「アクセス管理ーユーザー」で、アクセスキーとシークレットを作成します。

アクセスキーIDとシークレットは、後の SORACOM サイトへ登録するので、メモしておきます。

SNS

Amazon SNS では、メール通知、SMS 通知の設定を行います。

  1. 「トピックの作成」で、トピック作成します。
    https://ap-northeast-1.console.aws.amazon.com/sns/v3/home?region=ap-northeast-1#/topics
    「タイプ」は「スタンダード」。
    「名前」は、適当に。
    「表示名」は「名前」と同じ値に。私は「名前を」 "soracom-funk-app1" としました。
  2. 「サブスクリプション」で、メールアドレスと、SMS通知用に電話番号を登録します。
  3. 「プロトコル名」の所は、「Eメール」、「SMS」をそれぞれ選択して登録完了。
    ※ SMS、あまり多く発信すると拒否されるらしいので注意が必要です。
  4. 最後に、「トピック ARN」を、メモしておきます。
    ※ こんな感じの ARN 名です。
    「arn:aws:sns:??????????:???????:soracom-funk-app1」

Lambda

関数を作成して、プログラムを用意します。

  1. 「関数の作成」から関数を作成します。
    https://ap-northeast-1.console.aws.amazon.com/lambda/home?region=ap-northeast-1#/functions
    「関数名」は適当に。私は soracom-funk-to-line としました。
    「ランタイム」は、Python 3.8 を選択します。
    「アクセス権」は、「基本的な Lambda アクセス権限で新しいロールを作成」で進みます。
    「関数の作成」ボタンで登録を完了させます。
  2. 関数の ARN をメモします 「arn:aws:lambda:???????:???????:???????」
  3. 先に作成した LINE のトークンIDを環境変数へ登録します。
    「設定」の「環境変数」から「編集」ボタンを推して「キー」にアクセスキーID、「値」にシークレットキーを登録します。
  4. ソースコードを "lumbda_function.py" ファイル記述していきます。
    変更すると自動保存されますが、"Changes not deployed" と出ているので、「Deploy」ボタンで反映させます。
    いろんなサイトを参考に簡単な Python のプログラムコードを作成しました。
    TopicArn 部分は、Amazon SNS の ARN 名に変えてください。
    パクってつぎはぎだらけのコードで未使用のコメントアウト部分などあります。それと SMS の SenderID の付け方を調べてないので NOTICE と通知されます。
# -*- coding: utf-8 -*-
import os
import urllib.request
import urllib.parse
import urllib3
import boto3
sns = boto3.client('sns')
http = urllib3.PoolManager()
def get_message(data):
    clicktype = data['clickTypeName']
    if   clicktype == 'SINGLE':
        message = u'ALERT SINGLE'
    elif clicktype == 'DOUBLE':
        message = u'ALERT DOUBLE'
    elif clicktype == 'LONG':
        message = u'ALERT LONG'
    else:
        message = u'unkown'
    return message
def line_notify(msgx):
    url = "https://notify-api.line.me/api/notify"
    headers = {"Authorization" : "Bearer "+ os.environ['LINE_TOKEN']}
    data = urllib.parse.urlencode({"message" :  msgx}).encode('utf-8')
    request = urllib.request.Request(url, data=data, headers=headers)
    r = urllib.request.urlopen(request)
    print(r)
def slack_notify(msgx):
    url = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    msg = {
        "Content": msgx
    }
    encoded_msg = json.dumps(msg).encode('utf-8')
    resp = http.request('POST',url, body=encoded_msg)
    print(resp)
def sns_publish(message, subject):
#    message_attributes = {
#        'AWS.SNS.SMS.SenderID': {
#            'DataType': 'String',
#            'StringValue': 'AWS-SORACOM'
#        }
#    }
#       'MessageAttributes': message_attributes
    request = {
        'TopicArn': "arn:aws:sns:??????:??????:soracom-funk-app1",
        'Message': str(message),
        'Subject': str(subject)
    }
    sns.publish(**request)
def lambda_handler(event, context):
    batl = event['batteryLevel'] * 100
    posi = context.client_context.custom['location']['lat']
    posk = context.client_context.custom['location']['lon']
    message = get_message(event)
    subj = message
    message = message + '\nBat ' + str(batl) + "%"
    message = message + '\nhttps://maps.google.com/maps?q=' + str(posi) + ',' + str(posk)
#    if event['clickTypeName'] == 'LONG':
#        line_notify(message)
#    if event['clickTypeName'] == 'DOUBLE':
#        line_notify(message)
#    slack_notify(message)
    line_notify(message)
    sns_publish(message, subj)
    return

SORACOM 認証ストア

AWS へ接続する為の認証情報を登録します。

  1. 管理画面内の右上から「セキュリティ」を選択し「認証情報ストア」を開き、「認証情報を登録」します
  2. 「認証情報ID」、「概要」は任意文字
  3. 「種別」は「AWS 認証情報」を選びます
  4. 「AWS Access Key ID」、「AWS Secret Access Key」をそれぞれ登録します

SORACOM Funk

Amazon 側で準備した情報を登録していきます。
SORACOM管理画面のメニューから「SIM グループ」を選び無ければ新規作成し、SIMグループの設定に入ります。
https://console.soracom.io/#/groups?coverage_type=jp

  1. 「SORACOM Air for Cellular 設定」
    1. 「簡易位置即位機能」をON。
    2. 「バイナリパーサー」をON。
      フォーマットへ @button と文字を登録
  2. 「SORACOM Funk 設定」
    1. 「サービス」は、「AWS Lambda」を選択
    2. 「送信データ形式」は、「JSON」を選択
    3. 「認証情報」は、先に「SORACOM 認証ストア」で作成した認証情報を選択します。
    4. 関数の ARN をコピペ入力します。

これで準備は完了。

後はボタンを押して、SINGLE、DOUBLE、LONG と基地局位置のマップが LINE 通知されるかを確認。

  • 警戒ON:SINGLE
  • 警戒OFF:DOUBLE
  • 威嚇アラーム:DOUBLE
  • 本警報:LONG

私のセキュリテイ装置の場合は、こんな形で LINE Notify されますが、威嚇アラーム(DOUBLE)後、1分以内にすぐ本警報(LONG)の場合は LONG が無視されるので威嚇のときも注意が必要。

ジムニーにアマゾン Echo Auto 装着♪と、レビュー!

今日は Amazon Echo Auto です。

Amazon Echo inside

Echo Auto インストール

スマホと KENWOOD U320BT はペアリングしてあるので、Alexa アプリで「Echo Auto」デバイスを追加しておわり。

1分もせずに、あっけなく完了です。

さあ「アレクサ」!

もともとは、音楽聞く時はスマホの Amazon Musin アプリを起動して、再生タッチ!

この操作が Echo Auto で必要なくなりました!

今度は乗り込んでエンジンかけたら 「アレクサ!音楽ながして♪」

通勤はニュースに天気、音楽!ラジオ日経第2!

さらに mineo のスケジュール設定を使用して、朝と夕方 200 kbps の速度制限を設定しました。速度制限をすることで、パケット消費しなくなります。
常時 Wi-Fi 環境にいるので、使いたい時だけ制限解除すれば OK。

Amazon Echo Auto install

ただ、Alexa アプリなので、ゆうこと聞かず多少イラつくことは同じ。

それと、Echo Auto 購入後に知ったのですが、今使ってる KENWOOD U320BT の後継、上位機種 U341BT と U381BT が Alexa を搭載している様です。
でも、U341BT は「ボタンを押して 話しかけるだけ」と書かれてるので起動はボタン! 完全ハンズフリーでは無いっぽいですけどね。
いきなり「アレクサ!」って話しかけられるのは Echo の特権なのだろうか?

1週間ほど使ってみて分かってきたこと。

【2020/10/7追記】

それは Echo Auto のマイクがしょぼいこと。
送風オフ状態でも、音楽再生してると「アレクサ!!!!」って叫ばないと反応してくれない。
エンジンアイドリング状態で、無音の時でも、大きな声で"アレクサ"言わないと反応してくれない。

そのあたりは期待してたんだけど。8個のマイクアレイ?8個もあるのに、なんだかなぁ。

さらに、私、スマホマウントとか嫌いなタイプなので、見た目がダサい。って思えちゃいます。Echo Auto は見えない所に隠そう思ってたんだけど、隠したら更にマイクに影響しそうなんだよね。

それと、乗り込んでイグニッションオン!スマホと U320BT ペアリング待ち!同時にスマホとEcho Autoペアリング待ち。この流れ、意外と時間かかるんだよね。でも、これはしょうがない。マイクの感度が弱いところ、どうにかならないだろうか。

夏の夜 Amazon Hub ロッカーは虫だらけ

夜11時ともなると、付近のお店が終わってるので、あたり一面真っ暗。

そんな中、遠くからでも一目でわかる「Amazon Hub ロッカー!」!超明るく照らされてる^^

車を駐車場に止め、近づくにつれて、あらわになるロッカー!

んん?なんかおかしい!

20200715224745_0.jpg

よく見ると。よく見なくても。

虫・・虫虫虫虫虫虫ーーーーー!

ぎょえーーー近寄れねーーーー!  自由に飛び回ってるし!
しかも、虫サイズでけーーー!

近寄ってタッチ!バーコードスキャン?

・・・できねーーー!

20200715224754_0.jpg

好きなときに受け、取れねーーー!!

一瞬、明日の朝の通勤の時にしようと迷いました。

写真とって縛らく考えた後、あきらめて、タッチ&スキャン&タッチ。

パカン♪

20200715224750_0.jpg

ロッカー開いた!

ん?・・・ロッカー中まで虫入ってるやないかーーーい!

もう、段ボールも虫まみれ!

段ボール取り出すのイヤだ~!

写真撮ってる場合じゃない、もうからだ中、虫だらけ。。。。

足元がなんかムズムズすると思って下を見てみると。

20200715224740_0.jpg

んん?

20200715224740_1.jpg

ぎょえーーーーー!

 

 

もう、夏の夜は、Amazon Hub ロッカー止めときます。Amazonさん改善してね!

夏の夜中受け取りは、素直にコンビニ受取で。

もーー。

家帰ってからも、なんかムズムズする。

はじめての「Amazon Hub ロッカー」受け取りで100ポイント

昨年2019年に始まった 「Amazon Hub ロッカー」が近所にあったので使ってみました。
きっかけは「はじめてのご利用で 100 ポイントキャンペーン」。期間が 2020/7/7 迄だったので、キャンペーンにエントリーして、日曜日だというのに近所の杏林堂まで行ってきました。

20200705124028_0.jpg

杏林堂の外に、ロッカーがあります。
ロッカー自体は 24 時間受け取れるサービスだと思うけど、周りには杏林堂ワゴンがたくさん並んでる場所に囲まれてました。

場所は「ぼんたんづけ」で特定可能ですが、ロッカーには固有のニックネームと URL が付けられています。

20200705124122_0.jpg

タッチして開始。番号入力&バーコードスキャン画面が出ます。

バーコードスキャナーの位置が分かりにくかった。場所は、電卓のボタンの上。
スキャナーが下向きについてるので、スマホの画面をかざせばスキャン完了。

20200705124158_0.jpg

パカっとロッカーが開きます。

20200705124202_0.jpg

はい。

20200705124209_0.jpg

商品とりだしたら閉めて完了。

20200705124219_0.jpg

ありがとうございました。

コンビニ配送だと、サイズが大きくて受け取れない商品があったけど、このロッカーで受け取れるので便利!

会社帰りに使えそうな場所は2か所ありました。24時間よれるので、使えるね。

アマゾンWebサービスAPIを電子署名の認証へ変更

8月15日から Amazon Web Services の API が電子署名を使った認証へと変更になるわけですが。この対策をやって置かないと API へのアクセスが出来なくなってしまいます。なので、やっと変更を行いました。

この時期までくるとネット上の皆さんは既に対応を行っていて使えるコードもありますので、それを使っちゃいます。というか Perl 版で誰かがやってくれるのを待ってました。

というわけで、よく見ているこちらのサイトから proxy するための Perl のソースをいただきました。

黄金比とダ・ヴィンチ・コード

黄金比という1.618という数値があるんだって。へーしらんかった。周りの人に聞いたらみんな知ってた。

美しいんだってこの黄金比っていうのは。テレビで、ひまわりやミツバチの巣、クレジットカードとか、いろいろな例を聞いてびっくりでした。

これってウェブのデザインや、画像編集とかデザイナーしてる人にとっては当たり前なのかな。

\phi^2 = \phi + 1, \quad    \phi = \frac{1 + \sqrt{5}}{2} = 1.618\dots.
ダヴィンチ・コードが面白い!!という記事みて知ったけど他にもいろいろあるんだね。
1.618は芸術において極めて重要な数字だ。それはなぜか?=美しいから。
黄金比は自然界のいたるところに見られる。偶然の域を超えているので古の科学者はこれを「神聖比率」と呼び崇めた。
例えば、ミツバチの群れにおいて雌の数は雄の数をつねに上まわる。雌/雄=1.618
人間の身体において、身長/へそから足下の長さ=1.618
(ダ・ヴィンチ・コードから抜粋)