見出し画像

ボタンしたらLINEで帰るよと投稿するプロジェクト(プログラム初心者向け)

2020年3月1日作成

このノートを見て実践すれば、ボタンを押すだけでLINEで「今帰ります」と投稿することができるようになります!
本ノートは100%無料で見ることができます。
しかし、このnoteを実施した人した人の中で、最後に少しお金を支払ってもいいなと思う人がいましたら、100円で購入お願いします!

前提条件

このnoteを実践できる方の条件を書いておきます。
①スマホを持っている
②LINEアカウントを持っている
③MacのPCを持っている
*  ③については、Macでなくても頑張ればできます!
 しかし、私が持ってないので詳細はないので前提条件にしています。

不満が残るところ

先に不満が残るところを共有しておきます!
・指定したWifiでつながらないところでは使えないこと!
・一回押し、二回押し、長押ししかバリエーションがないこと!
・AWS loTエンタープライズボタンは電池交換できないこと!
 およそ2000回?押すと電池がなくなるという噂です!
 (電池残量はブラウザより確認できます!)

コスト

①AWS IoT エンタープライズボタン(2500円)+送料
②ボタン1つごとに毎月0.25USD
③プログラム実行(Lambda)に使用料金(毎月100万回まで無料)
 * プログラミングコードのミスがなければ絶対に課金されないレベル

AWS loTエンタープライズボタンの購入

AWS loTエンタープライズボタンとは、物理的なボタンです!
このボタンを押すとLineにメッセージが届くようになります!

下記のリンクして購入してください!
https://www.amazon.co.jp/AWS-IoT-%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A4%E3%82%BA%E3%83%9C%E3%82%BF%E3%83%B3-%E2%80%93-%E3%82%92%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AB%E3%80%82/dp/B075FPHHGG

商品が届くまで数日かかります。届くまでの間に次の作業を進めましょう!

LINE Messaging APIへの登録

LambdaからLINEにメッセージを投稿するためには、Messaging APIを使用します!下記のページより、Lineアカウントでログインしてください。
https://developers.line.biz/ja/services/messaging-api/

ログインしたら、[プロバイダー]を作成します!
プロバイダー名は、任意で良いですが、私はyou1978にしました!

スクリーンショット 2020-03-01 17.31.20

チャネル作成

プロバイダーの作成が完了したら、チャネル設定より新規チャンネル作成をしてください。

スクリーンショット 2020-03-01 17.33.38

下記の画面が表示されたらMessageAPIを選択してください。

スクリーンショット 2020-03-01 17.35.47

・チャネル名 = 任意
・チャネル説明 = 任意
・大業種 = 任意
・小業種 = 任意
・メールアドレス = ご自分のメールアドレス
・プライバシーポリシーURL
・サービス利用規約URL
利用規約を内容に同意して作成を押してください。

作成が終わったら、下記の情報を保存しておいてください。
・チャネル基本設定 - あなたのユーザーID  Uが頭文字の33文字のID
・MessageAPI設定 - チャネルアクセストークン(ロングターム) 

LINEアカウントをチャネルに登録

Messaging API設定のQRコードをご自分のスマホから読み取り、ご自身のLINEアカウントをチャネルに登録してください!

AWSアカウントの作成

AWS loTエンタープライズボタン(以下ボタンと表記します。)を押した時にLINEに直接メッセージが届くわけではありません。
ボタンを押した時は、Amazonが運営しているLambdaというサービスに接続します。そのLambdaというサービス内で、LINEにメッセージを送ります。
つまり、ボタンしなくてもLambdaでプログラムを実行すればLINEにメッセージが送れるようになります!
ボタンが郵送で届く前にLambda内のプログラムを作成しましょう!
前置きが長くなりましたが、Amazon AWSのアカウントを作成します。

AWS Amazonの公式サイトに非常に丁寧な手順があったので貼り付けしておきます
https://aws.amazon.com/jp/register-flow/

AWSアカウントは、悪用されないように必ず2段階認証を有効することをお勧めします!
https://qiita.com/viptakechan/items/6d19aee635b2ab189e4

AWS Lambdaにアクセス

ボタンが押された時に実際にアクセスするプログラムを準備します!
AWS コンソールにサインインします!右上のメニューからサインインを押してください!

スクリーンショット 2020-03-01 11.18.26

Lambdaを検索してアクセスします!

スクリーンショット 2020-03-01 11.05.44

lambdaのリージョンを「東京」にします!理由は近いからです!

スクリーンショット 2020-03-01 11.55.33

続いて「関数の作成」をクリックします。

スクリーンショット 2020-03-01 11.58.08

下記のように選択して、関数の作成を押してください!
・オプション =   一から作成
・関数名 = iamback
・ランタイム = Python 3.8
Lambdaの設定は、一旦置いておいて、ローカルでの作業をします。

ローカルMacマシンでの作業 

今回のプロジェクトではPython3を使用します!
https://qiita.com/hujuu/items/e29e8a77c55b93377184

Python3が正しくインストールされているか確認します!
Finderを開き、上記のメニューより[移動]->[ユーティリティ]を開きます。

スクリーンショット 2020-03-01 17.02.07

上記のウィンドウからターミナルをクリックします。

ターミナルが起動したら、下記の文字列を打ち込んでいきます。

python --version

下記のようにPython 3.X.Xと表示されていれば正しくインストールされています。

スクリーンショット 2020-03-01 16.58.14

もし、ここで別のメッセージがでている場合は、Python3のインストールをやり直してください。

SDKのダウンロード

任意の作業フォルダを作り移動します。例としては、ユーザのフォルダの下にworkというフォルダを作成してline-botというフォルダを作成します。

スクリーンショット 2020-03-01 17.12.08

再度、ターミナルを開き上記のフォルダに移動します!

cd work¥line-bot
pwd

下記のように自分がいるフォルダが表示されます!
/Users/xxxx/work/line-bot
* xxxxは、マシンの設定に依存します!

下記のコマンドを実行します。(最後のドットを忘れないでください)

python -m pip install line-bot-sdk -t 

上記のコマンドが成功すると作業をフォルダにいろいろなファイルとフォルダが作成されます!

スクリーンショット 2020-03-01 17.18.46

このフォルダにlambda_function.pyというファイルを作成します。
そして、そのファイルを内容を下記のように書きます。
(完全コピーで大丈夫です。)

# coding: UTF-8

import os
import sys
from linebot import (
   LineBotApi, WebhookHandler
)
from linebot.models import (
   MessageEvent, TextMessage, TextSendMessage,
)
from linebot.exceptions import (
   LineBotApiError, InvalidSignatureError
)
import logging

logger = logging.getLogger()
logger.setLevel(logging.ERROR)

user_id = os.environ["LINE_USER_ID"]
channel_access_token = os.environ['LINE_CHANNEL_ACCESS_TOKEN']

line_bot_api = LineBotApi(channel_access_token)

def lambda_handler(event, context):

   message = "いま帰るよ"

   try:
       line_bot_api.push_message(user_id, TextSendMessage(text=message))
   except LineBotApiError as e:
       print(e)

   return 0

そして、作業フォルダにいきlambda_function.pyを含む全てのフォルダを圧縮します。

スクリーンショット 2020-03-01 21.41.35

アーカイブ.zipというファイルが同階層に作成されます!

スクリーンショット 2020-03-01 21.43.16

Lambda関数へアップロードする

再度AWSコンソールに戻りLambdaにアクセスします。

スクリーンショット 2020-03-01 21.50.25

iambackの関数をクリックする

スクリーンショット 2020-03-01 21.51.35

関数コードに移動し、.zipファイルをアップロードを選択してください。

スクリーンショット 2020-03-01 21.54.01

アップロードをクリックして、先ほどの作成したアーカイブ.zipを選択してください。

スクリーンショット 2020-03-01 21.57.44

環境変数の[Manage environment variables]をクリックしてください。

スクリーンショット 2020-03-01 22.06.19

[環境変数の追加]をクリックしてください。

スクリーンショット 2020-03-01 22.07.36

LINE Messaging APIで保存した[あなたのユーザーID]と[チャネルアクセストークン]を登録してください。

LINE_USER_ID = LINE Messaging APIで保存した[あなたのユーザーID]
LINE_CHANNEL_ACCESS_TOKEN = LINE Messaging APIで保存した[チャネルアクセストークン]

スクリーンショット 2020-03-01 22.13.42

lambackの保存のボタンを押してください。

スクリーンショット 2020-03-01 22.00.34

保存が完了したら、テストをクリックしてください。

スクリーンショット 2020-03-01 22.01.48

イベント名に任意の文字を記入してください。

スクリーンショット 2020-03-01 22.03.33

それ以外は何も変更せずに「保存」を押してください。

スクリーンショット 2020-03-01 22.26.40

上記のテストを押してください。下記のように表示されれば成功です!

スクリーンショット 2020-03-01 22.28.26

LINEにも「いま帰るよ」というメッセージが届いているはずです!

ここで失敗した方は、今までの手順の見直しをお願いします!

AWS loT 1-Clickのデバイスの登録

ここから先は実際にAWS IoT エンタープライズボタンが届かないと作業ができません。ボタンが届いたら次の作業に進んでください。

下記のブログのデバイスの登録の章を実施してください!
https://qiita.com/hayao_k/items/d36d4b2579d0bbbe21a9

ボタンとLambdaの結びづけ

AWSマネジメントコンソールにログインして、1-Clickを検索してください。
loT 1-Clickを選択してください。

スクリーンショット 2020-03-01 23.14.04

左のメニューのデバイスを選択してください!

スクリーンショット 2020-03-01 23.17.17

右上のアクションから"デバイスの有効化”を選択してください!


スクリーンショット 2020-03-01 23.19.10

一つ戻り、プロジェクトを選択してください!

スクリーンショット 2020-03-01 23.20.33

プロジェクト作成をクリックしてください!
プロジェクト名に任意の名称を入れて、次へをクリックしてください。

"テンプレートのデバイスタイプを選択する"をクリックしてください!

下記の情報を入力してください。
・デバイステンプレート名 = 任意
・アクション = Lambda関数の選択
・AWSリージョン = アジア/パシフィック(東京)
・Lambda関数 = iamback

スクリーンショット 2020-03-01 23.23.26

続けて下記のようにプレースメントを作成して、デバイスと先ほどのテンプレートを紐付けます!

スクリーンショット 2020-03-01 23.27.42

Templateからデバイスの選択で登録されているデバイスを選択してください!最後に、プレースメントの作成を押すとデバイスとlambdaが紐づけることができます!

テスト

AWS IoT エンタープライズボタンのボタンを押してください!
無事LINEに「いま帰るよ」とメッセージが届きましたでしょうか?
届かない場合は、もう一度本noteの内容を確認してください!

最後に

本noteを参照して実践してAWS IoT エンタープライズボタンのボタンのプログラミングを楽しんで貰えたら書いた意義があります!
また、このnoteをきっかけにプログラミングに興味を本格的なプログラムに始める人がいたら最高です!
内容にあるPythonのソースコードを変更すれば、他にも面白いことができます!是非、挑戦して見てください!

本noteを実践して、最後に少しお金を支払ってもいいなと思う人がいましたら、100円で購入お願いします!
なお、購入しても最後にお礼しかでませんのでご注意をしてください!

ここから先は

15字

¥ 100

この記事が気に入ったらサポートをしてみませんか?