【Git タグ付け】タグを付けたり、確認したりする方法
Githubで管理している中、あるコミットに対して、タグを付ける方法。
それをリモートリポジトリに反映する、またそれを確認する方法。など。
忘れちゃうので、ここに備忘録として残す。
# タグをコメント付きで作成 $ git tag -a v0.2.0 -m "message" # タグ確認 $ git tag # タグ詳細確認 $ git show v0.0.0 # リモートにPUSH $ git push origin v0.0.0 # タグ削除 $ git tag -d v0.0.0 # タグ名変更 $ git tag newTag oldTag
【git reflog / git reset】ファイルを消してしまった場合に、過去のコミットの状態に戻す方法
ファイルを消してしまった場合に、過去のコミットの状態に戻す方法
(過去コミットにcheckoutではなく、ローカルのファイルだけ戻す)
例えば調子にのって、
$ git reset HEAD~
や
$ git reset --hard
などでファイルを消してしまった場合。
1. コミット履歴確認
$ git reflog 908db80 HEAD@{0}: XXXX 5ca7114 HEAD@{1}: XXXX 5ca7114 HEAD@{2}: XXXX <- ここの状態に戻したい 1c1fb47 HEAD@{3}: XXXX
2. 指定のコミットの状態に戻す
$ git reset --hard HEAD@{2}
これで、ローカルのファイルたちが、過去の状態に戻る。
あとはこれを編集するなりして、commitなりpushすればOK
【AWS IoT ボタンでメッセージ送信3】赤ちゃん記録でおしっこ・うんち・○っぱいをSlackへ送信
赤ちゃんの記録を付けるためにAWS IoT ボタンを使い、おしっことうんちと○っぱいの度にボタンを押して、Slackに送信することで記録する。というのを作成した。
その備忘録をつける。
AWS IoT ボタンとLambda関数を連携してSlackに送信できた。これで記録もできるし、通知も来る。 pic.twitter.com/GtJv1Y8shM
— ろきsan@rokisan (@AhrkIzo) 2019年12月31日
これは以前のAWS IoT 1-ClickでSMS送信のやつと、PythonでSlack送信していたやつを組み合わせると割と簡単にできた。
ahrk-izo.hatenablog.com
ahrk-izo.hatenablog.com
[前提]
- 上記のリンクでAWS IoT 1-ClickでIoTボタンを押してSMS送信できていること
スポンサーリンク
1. Lambda関数作成
AWSコンソールでLambda関数をつくる。(デプロイツールとかめんどうなのでブラウザでやっちゃう)
Lambda > 関数 > 関数の作成
「一から作成」
基本情報として、
関数名 : slack_notification(すきな関数名でよい)
ランタイム : Python 3.7
「関数の作成」
そしてこの部分にコードを書く。
コードは以下の通り。
from datetime import datetime, timezone, timedelta import json import os import urllib.request def lambda_handler(event, context): click_type = event['deviceEvent']['buttonClicked']['clickType'] message = '' color = '#00bfff' if click_type == 'SINGLE': message = 'おしっこ!' elif click_type == 'DOUBLE': message = 'うんち!!' color = '#ffa500' elif click_type == 'LONG': message = 'おっぱい!' color = '#ffc0cb' dt_now_jst = datetime.now(timezone(timedelta(hours=9))) message += '({})'.format(dt_now_jst.strftime('%Y年%m月%d日 %H:%M:%S')) slack_message = { 'attachments': [ { 'text': message, 'color': color, } ] } url = os.environ['URL'] method = 'POST' headers = {'Content-Type': "application/json"} json_data = json.dumps(slack_message).encode("utf-8") try: request = urllib.request.Request(url, data=json_data, method=method, headers=headers) with urllib.request.urlopen(request) as response: response_body = response.read().decode('utf-8') return response_body except Exception as e: raise e
環境設定も作成(必須ではないがテストで切り替えるときとか便利)
残りはデフォルトのまま、右上の保存。
これでLambda関数は完成。あとはAWS IoT 1-Clickサービスで作成したプロジェクトにこのLambda関数を設定するだけ(冒頭のSMS送信したリンクで作ったやつ)
【AWS IoTボタンでメッセージ送信 2 】AWS IoT 1-Clickで自動作成されたLambdaを修正してみる
先日、AWS IoTボタンを購入し、AWSに登録、SMS送信までを行った。
ahrk-izo.hatenablog.com
ここでは「AWS IoT 1-Click」というサービスに予め用意されている「SMSに送信する」というアクションを利用した。
実際には、ここでLambda関数が自動で作成され、それが紐付いて動作している。なので今回はそのLambda関数を少し編集して、ボタンのクリックタイプ(シングル、ダブル、長押し)によってメッセージを変えてみる。
[前提]
さて目次
スポンサーリンク
1. 紐付いているLambda関数名を確認する
「AWS IoT 1-Click」で作成したプロジェクト(のプレイスメント)に紐付いているLambda関数を確認する。
「AWS IoT 1-Click」サービスを選択。
管理 > プロジェクト > 作成したプロジェクトを選択
テンプレート > アクション の情報をみる
「iot1click_onclick_sms_2019110311...」となっている。これは(自動で作成された)Lambda関数の名前だ。(「ラムダ」と読む)
つまり、このプロジェクトではボタンを押されたら、このLambda関数にキックされ、ここに書かれた実装コードが走る。それによってSMS送信されている。
Lambdaとは?
このLambda関数は、「AWS Lambda」というサービスで管理されている。
AWS Lambdaとは簡単にいうと、バックエンドで簡単にプログラムを実行できるサービス。
実装コードをアップロード(もしくは直接書いて保存)して、少し設定すれば、何かしらのキック(きっかけ)でそのコードが実行できる。その「キック」は定期実行もできるし、なにかしらのサービスとの連携でもできる。今回は「AWS IoT 1-Click」のサービスからのキックということだ。
※定期実行も正確にいうと「CloudWatch Events」というサービスとの連携
2. Lambda関数の内容を確認する
次にそのLambda関数を確認してみる。
「Lambda」サービスを選択。
Lambda > 関数
「iot1click_onclick_sms_20191103113059」というLambda関数があるね。Python 3.6で書かれたコードのようだ。
※関数名は、iot1click_onclick_sms_ + 作成日時になるんだろうな。
そのLambdaを選択し、中に入る。
このLambda関数が設定やコードがわかる。
まず目に入るのは「Designer」。
これを見ると、CloudWatch Log と SNS というAWSの他のサービスと連携していることがわかる。
簡単に言うと、
「Amazon CloudWatch Logs」は、AWSのいろんなサービスのログを監視して保存・閲覧できるサービス。これによってLambdaの実行内容(エラーとか)チェックできる。
Amazon CloudWatch Logs とは - Amazon CloudWatch Logs
「Amazon SNS」は、EメールやSMSなどでメッセージを配信できるサービス。これによってボタンを押したときケータイにSMSが送信できている。このSNSの設定も自動でされている(なんて便利!)。こっちの説明は割愛する。
Amazon SNS(サーバーレスアプリのための pub/sub メッセージングサービス)| AWS
さて次は、「関数コード」。
ここはいわゆる「実装コード」。つまりボタンを押されたら、このコードが走るということ。
ランタイム : Python 3.6
ハンドラ : lambda_function.lambda_handler
(lambda_function.py)
from __future__ import print_function import boto3 import json import logging logger = logging.getLogger() logger.setLevel(logging.INFO) sns = boto3.client('sns') def lambda_handler(event, context): logger.info('Received event: ' + json.dumps(event)) attributes = event['placementInfo']['attributes'] phone_number = attributes['phoneNumber'] message = attributes['message'] for key in attributes.keys(): message = message.replace('{{%s}}' % (key), attributes[key]) message = message.replace('{{*}}', json.dumps(attributes)) dsn = event['deviceInfo']['deviceId'] click_type = event['deviceEvent']['buttonClicked']['clickType'] message += '\n(DSN: {}, {})'.format(dsn, click_type) sns.publish(PhoneNumber=phone_number, Message=message) logger.info('SMS has been sent to ' + phone_number)
せっかくなので、部分的にざっくり解説してみる。
スポンサーリンク
モジュールのインポート
from __future__ import print_function import boto3 import json import logging
冒頭のこれらの部分は、このLambda関数に必要なモジュールをインポートしている。Pythonは必要なモジュールはこうやっていちいち書く(個別の説明は割愛)
ログの準備
logger = logging.getLogger() logger.setLevel(logging.INFO)
これらは、ログの準備。lambda_handler関数の中で logger.info() を使ってログ出力しているが、それを使うための準備。ログなのでSMS送信のプログラムには直接関係はしない。なので、ログ関連は省略する。
SMSサービス連携の準備
sns = boto3.client('sns')
Lambda関数AWS SNSサービスを使うための準備。boto3というモジュールを使うことで、あっさり連携できる。Pythonって便利。(boto3の中身は知らんけど、ドキュメント見ながら使えばそうなるんだから)
ハンドラ関数
def lambda_handler(event, context): ...
次はこちらの関数内を見ていく。「AWS IoT 1-Click」からこの関数が呼ばれ、実行される。その時引数としてeventが渡される。(コードを見ると、contenxtは使われていないから、eventのみの情報があるんだろうな)
eventの中身
attributes = event['placementInfo']['attributes'] phone_number = attributes['phoneNumber'] message = attributes['message']
「AWS IoT 1-Click」(のtest-projectのsend-smsというテンプレート)から渡された情報を関数に入れている。
電話番号とメッセージということがわかる。
プレイスメント属性の値をメッセージに使う
for key in attributes.keys(): message = message.replace('{{%s}}' % (key), attributes[key]) message = message.replace('{{*}}', json.dumps(attributes))
ここはsend-smsというテンプレート内で設定したプレイスメントの属性の各内容を、message内の{{ナントカ}}という文字の部分に置換している。
例えば
message : テストメールです。{{key1}}は{{key2}}です。
key1 : AWS
key2 : 最高
となっていたら、message変数に入るのは、
「テストメールです。AWSは最高です。」
となる。
SMS送信
dsn = event['deviceInfo']['deviceId'] click_type = event['deviceEvent']['buttonClicked']['clickType'] message += '\n(DSN: {}, {})'.format(dsn, click_type) sns.publish(PhoneNumber=phone_number, Message=message)
最後の部分。ここもわかりやすい。
デバイスのDSN(登録しているボタンのID)とクリックタイプ(シングル or ダブル or 長押し)を受け取り、メッセージに追記している。
最後は冒頭にboto3を使って準備していたsnsオブジェクトを使ってSMS送信。引数には電話番号とメッセージ。
これによって以下のようなメッセージがケータイのSMSに送信される。
3. Lambda関数を編集してみる。
実際にコードを編集してみて、どんなメッセージが送信されるか確かめてみる。それによって理解も深まる。
終盤のこの部分だけ編集してみる。
dsn = event['deviceInfo']['deviceId'] click_type = event['deviceEvent']['buttonClicked']['clickType'] message += '\n(DSN: {}, {})'.format(dsn, click_type)
繰り返しだが、ここはデバイスのDSNとクリックタイプをメッセージに追記している。
ここを以下のように修正してみる。
dsn = event['deviceInfo']['deviceId'] click_type = event['deviceEvent']['buttonClicked']['clickType'] message += '\n(ClickType: {})'.format(click_type) # <- ここだけちょっと変えた
メッセージにはクリックタイプだけを追記するようにした。
右上の「保存」を押して、
実際にボタンを押すと、ばっちり変更が反映されいる!
実際にクリックタイプによって、SINGLE、DOUBLE、LONGとなるので、if文使って、
if click_type == 'SINGLE': message += '1回押したぞい!' elif click_type == 'DOUBLE': message += '2回も押しちゃった' elif click_type == 'LONG': message += '長押しっす!'
とやってもよい。
これで、IoTボタンを押されたとき、どのようにSMS送信されているか、その仕組みと実装コードが理解できた。1からこの仕組を作るのは大変だけど、ある程度自動で作られて、そこを修正するくらいならそこまでハードルは高くない。
やはり動くものができて、それをカスタマイズできると楽しいな。
スポンサーリンク
【AWS IoTボタンでメッセージ送信 1 】AWS IoT 1-Clickで簡単にSMS送信までやる
AWS IoT ボタンを購入し、いろいろ遊んでみた。
まずは使い始めの導入編として、ボタンを押したら、ケータイのショートメールにメッセージが送信される、というところまでの内容を備忘録として記述する。
ここをポチッと押したら
こんなSMSメッセージが来る
という内容
[前提]
[料金について]
まずこれを利用するには、料金が発生する。(本体デバイスとは別に)
料金 - AWS IoT 1-Click | AWS
こちらによると、デバイスを登録して、有効にしたデバイスの数だけ料金が発生する。
例えば、1ヶ月間、1台のデバイスを有効にしていたら0.25ドル(約27円)。100台なら25ドル(約2700円)。
遊びで1台だけやるなら問題ないでしょう。また、使わないときは無効にしていれば料金は発生しないので、そのときは無効にするのを忘れずに。(日割りになる)
また、今回は導入としてはじめから用意されているSMS送信の仕組みを利用するわけだが、そこにはAWSのSNSというサービスを利用していてそこの料金が発生する。これはメール送信する(ボタンを押す)ごとに発生。(料金 - Amazon SNS | AWS)ぼくの場合は、テストとして10回くらい送信したら0.65ドル(約70円)かかった。
うーん。これはなかなか高いので、たくさん送信するのは控えたほうがよい。
とりあえずここは、導入編として数十円身銭を切ってやってみよう。
(これをSlack送信にするとこの部分は無料になるので、それは別な記事に書く)
ということで目次はこんな感じ
- [準備1] AWSアカウント
- [準備2] デバイスの購入
- [準備3] スマホアプリをダウンロード
- [準備4] AWSコンソールにサインインとリージョン変更
- 1. AWSにデバイスを登録する(AWSコンソール)
- 2. AWSにデバイスを登録する(スマホアプリとデバイス)
- 3. プロジェクトを作成する
- 5. デバイスのボタンを押してみる
- デバイスやプロジェクトの管理
- おまけ(請求金額)
スポンサーリンク
[準備2] デバイスの購入
本体のデバイスも当然必要。AWS IoT ボタンの購入で本体を購入する。
[準備4] AWSコンソールにサインインとリージョン変更
AWSコンソールにサインインする。(コンソールってのはブラウザで操作するやつ)
このときサインインするのは、IAMユーザーでするとよいでしょう。
まぁルートユーザーでも作れるが、AWS的に推奨されていないので、IAMユーザーを作成してそのユーザーで操作していくのがよい。
IAMユーザーについては以前書いた。作成方法もあるのでよかったらどうぞ。
ahrk-izo.hatenablog.com
リージョンを変更する
たいていサインインすると、「リージョンは米国東部(バージニア北部)」だったりするので、「アジアパシフィック(東京)」に変更する。
もちろんリージョンは東京でなくてもいいんだけど、どこのエリアのデータセンター使うかだから、住んでいる場所の近くのほうが通信速度はやっぱり速いので近くのリージョンにしておくのがベスト。
ちなみに、これから利用する「AWS IoT 1-Click」のサービスは、米国、EU、東京のリージョンのみ対応している(2019.11現在)。東京あってよかった。
さて、準備が終わったので、さっそく「AWS IoT 1-Click」のサービスを使っていく。
1. AWSにデバイスを登録する(AWSコンソール)
購入したデバイスを自分のAWS環境に登録することから始まる。
まずAWSコンソールで、「AWS IoT 1-Click」サービスを選択する。
検索で「iot」などと入力すれば候補としてでてくる。
「登録コードまたは登録するデバイスのID」に購入したデバイスのIDを入力する
AT&T LTE-M Button 購入確認メールに記載せれている登録コード(例: C-123456789012)を使用できます。デバイスIDはデバイスまたはパッケージにDSNまたはS/Nとして印刷されています。
このID(DSN)は、本体や箱に書いてある。
ちなみに、
デバイスの登録とは、AWS IoT 1-Click デバイスをアカウントに関連付ける方法です。新しく登録されたデバイスはデフォルトでは「無効」ですが、プロジェクトに追加すると即時アクティブ化されます。
と書いてあるので、デバイスを登録しただけではまずは無効となっているので、料金は発生しない。
ID(DSN)を入力したら、登録
デバイス ID が入力されました。このプロセスを完了には、そのデバイスを手元に用意し、物理的にボタンをクリックして登録の最終処理を実行する必要があります。iOS または Android アプリを使用して AWS IoT エンタープライズボタンを設定することをお勧めします。
ここに書いてあるとおり、ここまではデバイスの番号を登録しただけで、本体と通信はできていない。通信まで完了して登録が完了する。
「登録」を押したらコンソール(ブラウザ)はこんな画面になる
2. AWSにデバイスを登録する(スマホアプリとデバイス)
スマホで「AWS IoT 1-Click」アプリを起動する。
AWSアカウントでサインインする。こちらはメールアドレス使ったルートユーザーで。
日本語の方が安心なので、日本語に変更する。
メールアドレスと、パスワードを入力。
サインインできたらセットアップする。
デバイスの登録はコンソールでやったので、省略。下にスクロール。
※ここでのAWSリージョンは「米国西部(オレゴン)」でよい。登録自体は現在(2019.11)このリージョンにすべて登録されるらしい。メールを送信させるなどのプロジェクトは東京リージョンでも作成できる(ややこしい)
「Wi-Fiを設定」
デバイスIDのスキャンをする
この箱に貼ってあるバーコードをスキャンする
スキャンに成功(もし失敗した場合は手入力でやってみる)
「設定」に進む
しばらくスマホアプリの指示通りすすむ。
デバイスを約6秒間押す。青く点滅したら離す。(押しすぎると赤く点灯してしまって失敗する。そうなったらアプリで「←」を押してもう一度やればよい)
そうそう、BluetoothはONにしておくこと。
自宅のWi-Fiを選び、パスワードを入力して「設定」
(「マイWi-Fiネットワークを保存」はとりあえずやらなかった)
※ここまで、青く点滅している間に行うこと。できなかったら「←」で戻ってもう一度。
処理中…
デバイスの点滅が、青→白→緑に変わったら成功
スマホの画面はこうなる
AWSコンソール(ブラウザ)の画面を見ると、「1/1 登録済み」となっている。成功だ。「完了」を押す。
管理 > デバイス
デバイスが登録されているのが確認できる。デバイスリージョンは「us-west-2」、つまり米国西部(オレゴン)に登録されている。
プロジェクトはまだ作成していないので、「無効」になっている。
ここまでできれば、デバイスの登録は完了。
あとはボタンを押したらSMSが送信されるプロジェクトを作っていく。
スポンサーリンク
3. プロジェクトを作成する
「ボタンを押したらSMSが送信される」というプロジェクトを作成する。
具体的には「プロジェクト」を作成し、そのプロジェクトに登録する「プレイスメント」というのを作成する。
管理 > プロジェクト
「プロジェクトの作成」
プロジェクト名と説明(省略可)を入力し、「次へ」
(プロジェクト名:test-project)
デバイステンプレートの定義。「開始」をクリック
ここに書いてある通り、デバイステンプレートは、ボタンが押されたらどのLambda関数がキックされるかを指定する。ここではAWS IoT 1-Clickで予め用意されている「SMSを送信する」Lambda関数を使うので、自分で用意する必要はない。
(逆に言うと、自分でLambdaを用意できれば、他のことに応用できる。Slackに送信するとか)
デバイスタイプは「すべてのボタンタイプ」しかないようなので、それをクリック
デバイステンプレート名とアクションを指定する。
デバイステンプレート名:send-sms
アクション:SMSを送信する
「SMSを送信する」を選択すると、下に電話番号とメッセージの内容を入力するフォームが現れるので、それぞれ入力し「プロジェクトの作成」
(必須の電話番号のデフォルト値、必須のSMSメッセージのデフォルト値)
※国際電話になるので、090ではなく、+8190から始める。
※属性の名前は空でよい
「プロジェクトとテンプレートが正常に作成されました」
これでプロジェクトはできた。でもまだ動かない。
このプロジェクトに登録するプレイスメントを作成する。
「プレイスメントの作成」
プレイスメント名を入力し、「デバイス選択」をクリック
(プレイスメント名:test-placement)
先程登録したデバイスのID(DSN)であること確認して、選択。
プレイスメントの属性は、messageとPhoneNumberが先程登録したメッセージと電話番号であること確認して、「プレイスメントの作成」
プレイスメントができた
ダッシュボードに戻り、内容を確認する。
管理 > プロジェクト
作成したプロジェクト(test-project)が登録されている。
管理 > デバイス
デバイスが「有効」になっている。これで使えるぞ!
5. デバイスのボタンを押してみる
ここまでくればもう動くはず!
ボタンをポチっ
2〜3秒後
スマホにSMSが届いた!
登録したメッセージに、デバイスのDSNと「SINGLE」という文字。この「SINGLE」というのはボタンのクリックタイプ。実はクリックタイプは3種類あり、それぞれ以下のようになっている。
- SINGLE : シングルクリック
- DOUBLE : ダブルクリック
- LONG : 長押し
用意されているLambda関数の中でこのクリックタイプを認識して表示していること想像できる。自分でこのLambda関数にかかれているプログラムを編集できれば、いろいろできそうだ。それはまた別な記事に書く。
(2019/11/30 追記)
このLambda関数を編集してメッセージを確認する記事を書いた。興味ある方はどうぞ。
ahrk-izo.hatenablog.com
デバイスやプロジェクトの管理
使わないときは、たとえわずかでも料金が発生するので、無効化するとよい。
デバイスの無効化は、
管理 > デバイス > デバイスを選択して > アクション > 選択したデバイスの無効化
プロジェクトに登録したプレイスメントの編集は、
管理 > プロジェクト > プロジェクト選択し中に入り > アクション > 編集 からできる。
これで導入編として、AWS IoTボタンを押して、SMS送信ができた。
その後は、これを改良して、ボタンのクリックタイプによってメッセージの内容を変えたり、SMSでなくSlackへ送信するようにしていく。
スポンサーリンク
おまけ(請求金額)
テストとして10回くらいSMS送信をした。料金はいくらくらい発生しているか確認してみる。
マイ請求ダッシュボード
0.97ドル(約105円)。内訳としては、SNSが0.65ドル、IoT1Clickが0.23ドル、税金で0.09ドルといったところ。
心配な方は、ある料金があるしきい値を超えたらメールが来るように設定しておくとよい。
ahrk-izo.hatenablog.com
ちなみに、今回はAWSの知識がそんなになくてもいいので、特に書籍は使っていないが、AWSを本当の基礎からやるならこの本は良かった。ということでおすすめしておく。
参考にさせて頂いたサイト:
dev.classmethod.jp
以上。
【意外と簡単】PythonでプログラムからSlackに通知を飛ばしてみる
PythonでSlack通知を試したくなったので、いろいろググって試してみたら意外とあっさりできた。
その時のメモを備忘録として残しておく。
[前提]
- Python3がインストール済み
- Slackのワークスペース作成済み(管理者)
こんなもんかな。
Python3のインストール方法については、以前書いてみた。よかったら参考にどうぞ。
Macの場合
【切り替え可能】pyenvでPython3系とAnacondaの両方をインストール for Mac - ろきメモ【ROKI MEMO】- ろきsanの備忘録 -
Windowsの場合
【Pythonインストール for Windows10 64bit版】環境変数PATHや実行コマンドも解説してみる - ろきメモ【ROKI MEMO】- ろきsanの備忘録 -
目次は以下の通り
スポンサーリンク
1. Webhook URLを取得する
ここにアクセスする。
https://slack.com/services/new/incoming-webhook
ブラウザでサインインすれば、管理画面になるので、
ワークスペース、チャンネルを指定して、
「Incoming Webhook インテグレーションの追加」をクリック
これでプログラムで使うWebhook URL が取得できた。
ここには、Webhook URL以外にも、アイコンや名前などの設定あるが、今回は特に何もしない。
2. Pythonコードを書く
任意のディレクトリに、function.py というファイルを作成。
[function.py]
import urllib.request import json def handler(event, _): message = 'テストメッセージです' title = 'title' slack_message = { 'attachments': [ { 'text': message, } ] } url = '取得したWebhook URL' method = 'POST' headers = {'Content-Type': "application/json"} json_data = json.dumps(slack_message).encode("utf-8") try: request = urllib.request.Request(url, data=json_data, method=method, headers=headers) with urllib.request.urlopen(request) as response: response_body = response.read().decode('utf-8') return response_body except Exception as e: raise e if __name__ == '__main__': response_body = handler('test', '') print(response_body)
おそらくコピペでいけるはず。(URLのところ以外は)
4. ちょっとカスタマイズしてみる。
上記のメッセージはほんとデフォルトの感じ。
通知が無事できたらちょっと設定やプログラムコードを修正して、カスタマイズしてみる。
まず名前とアイコン。
webhookを取得した設定画面(ブラウザ)の下の方に、名前とアイコンを設定するところがあるので、修正して設定を保存する。
もう一度プログラムを実行してみる。
ばっちし!
次は、通知の色を指定してみる。
先程のコードのこの部分に「color」を追加する。
message = 'テストメッセージです' title = 'title' color = '#ff0000' # <- 追加 slack_message = { 'attachments': [ { 'text': message, 'color': color, # <- 追加 } ] }
再度実行してみると、
色がついてばっちし!
色を変えるとこんな感じ。
せっかくプログラムで書いているので、条件分岐なので、メッセージや色を変えると便利な通知プログラムになるかも。
という感じで、最低限の通知プログラムの備忘録でした。
参考にしたサイト
とりあえずこちらでweb hookの取得方法を。
qiita.com
Pythonでの通知はこちらを参考に。
qiita.com
他のサイトでは(slack通知に使う)HTTPの使用を、requestsというモジュールを使っているが、こちらはurllib.requestを使っている。
これだと、pipなどでのインストールもいらないし、AWSのLambdaで使用したくなったとしてもこのままでいけるのでよい。
slack通知のカスタマイズはこちらを参考にした。
qiita.com
いろいろあるので試してみるとおもしろいかと。
もちろん一番は公式ドキュメントを見るとよい。
slack.com
以上。
【AWSアカウント作成からコンソールログインまで】アカウント作成の手順
AWSを初めて使いだしたのが2018年6月。
Railsチュートリアル をやって、Cloud9を使ってみようというのがあったのがキッカケ。
あとのときは何もわからず、作って、結局RailsチュートリアルではCloud9を使わず最後までやったけど、別でAWSは少し触れてて、その後仕事でAWSをたくさん使うようなったので、大いに役に立った。
振り返りも含め、アカウント作成したときのメモをもとに、アカウント作成を改めて備忘録に残しておく。(Evernoteに雑だけどいろいろ残してある)
これは、AWSアカウント作成手順のメモである(2018/06時点の作成)。
目次はこんな感じ。
- 1. AWSのサイトへアクセス
- 2. 基本情報を入力
- 3. 連絡先情報を入力
- 4. 支払情報を入力
- 5. 電話による確認
- 6. サポートプランを選ぶ
- 7. アカウント有効なりましたメールの受信を確認
- 8. コンソールにログインしてみる
- おまけ(請求アラート設定と、IAMユーザーについて)
スポンサーリンク
3. 連絡先情報を入力
名前や電話番号などを入力する。
後でTELでの確認あるので、間違えないように)
4. 支払情報を入力
クレジットカードの情報を入力する。
(無料枠内で使っていれば請求はないが、クレジットカードは登録する必要ある)
料金発生が心配な方は、請求の確認と、アラート(メールがくる)設定もできるので、アカウント作成後やっておくとよい↓
【AWS メトリクス指定で請求アラートの設定】無料枠・料金しきい値超えでメール送信 - ろきメモ【ROKI MEMO】- ろきsanの備忘録 -
5. 電話による確認
電話による本人確認を行う。
(手持ちの携帯電話とWeb画面による確認)
電話番号が間違いないか確認して、「すぐに電話を受ける」
ブラウザ画面上に4桁の数字が表示される。
↓
電話がなる。
↓
電話でその4桁を入力する。
これで完了!(本人確認の終了)
「続行」
※現在(2019/11)公式サイトの作成方法みると、
SMSまたは電話で4桁の数字を得る
↓
ブラウザ画面にその4桁の数字を入力
という流れのようだ。
4桁の入力が電話かWebか変わっているので注意。
というか、公式がすごいわかりやすくなってる。。。(イラストもあるし)
6. サポートプランを選ぶ
無料か有料かのプランがあるので選択する。
個人でやるので、ベーシックプラン(無料)でよし。
(有力だとAWSの人のサポートあるんだな)
これでAWSアカウント作成は完了!
実際はアカウント有効になるまで少し時間がかかる。(自分の場合は10分くらいできた)
※これは案内メールのやつなので、送信しなくてもよい(してない)
スポンサーリンク
7. アカウント有効なりましたメールの受信を確認
「アカウント有効になりました」メールが届いたら、AWSが使えるようになるので、少し待つ。
「アマゾンウェブサービスへようこそ」というメールは、アカウント有効メールとは違うのでまだ。
「お客様の AWS アカウントの準備ができました - 今すぐ始めましょう」のメールが届けば完了!
これで大丈夫!
8. コンソールにログインしてみる
ログインして確認してみる。
右上の「コンソールへログイン」
メールアドレスを入力、パスワード入力
ログイン成功!!
ちなみに、このブラウザ上で色々と操作できる部分を「AWSコンソール」というので、
「コンソールにログイン」
「コンソールでEC2を作成」
とか言われたら、この画面にログイン、この画面でEC2(仮想サーバ)を作成するっとことなので覚えておくとよい。
ということで、これでAWSアカウント作成は完了。
お疲れさまでした。
スポンサーリンク
おまけ(請求アラート設定と、IAMユーザーについて)
途中でも書いたが、請求の確認方法と、請求があるしきい値を超えたらアラートとしてメールが送信される設定があるので、やっておくとよいかと。(しきい値は自由に設定できる)
ahrk-izo.hatenablog.com
また、ここでログインしたユーザーは、ルートユーザーといって、なんでもできちゃう権限が強いユーザー。実際にAWSを使っていくのは、IAMユーザーといって、権限を制限したユーザーで行っていったほうがよいらしい。
それは個人で1人でやる場合も。
まぁ、ルートユーザーのみでいろいろやっていくもともできるんだけど、推奨ないので、IAMユーザーを作って、今後はそっちでログインして使っていくのがよい。
なので、このルートユーザーやることは、
- 最初のログイン(この記事)
- 請求確認と請求アラートの設定(上記リンク)
- 最初のIAMユーザー作成(下記リンク)
- アカウントの編集(住所変更やクレジットカードの更新など)
のみということになる。そうしたほうがよい。
最初のIAMユーザー作成は、以下を参照。
ahrk-izo.hatenablog.com
以上。
【ターミナルのほんとの基本だけ】iTerm2のショートカットキー
Macで使用しているターミナルをiTerm2。
基本的なショートカットキーを備忘録として残しておく。
タブ内の移動や、分割ウィンドウ内での移動のキーバインド(ショートカットキー)が「どっちだっけ?」ってたまになるので、書いておく。
もっと細かいのもあるけど、それは別な記事に任せて、最低限使うものだけでよい。これだけでもストレスは減る(と思っている)。
設定
command + , => Preferences(設定画面を開く)
分割
command + d => ウィンドウ分割(左右) command + shift + d => ウィンドウ分割(上下)
タブ・ウィンドウ
command + t => 新しいタブの作成 command + n => 新しいウィンドウ作成 command + w => 閉じる control + d => 閉じる
※「閉じる」は結局「exit」って打つけど
ウィンドウ・タブ選択
command + [ or ] => 分割ウィンドウ内の移動 command + shift + [ or ] => タブ内の移動
スポンサーリンク
背景の透明度の切り替え
command + u => 透明度の切り替え(トグル)
※背景の透明度は、Preferences(設定) > Profiles > WIndow > Transparency でスライダーで設定できる。
ターミナルの表示・非表示
command + control + y => itermの表示・非表示
※このショートカットキーは、Preferences(設定) > Keys > Hotkeyで設定できる。
検索
command + f => 検索(現ターミナル内) command + option + e => 検索(全てのタブ)
うむ。こんな感じで良い。
【あとづけでエアコンを遠隔操作】eRemote mini セットアップ(WiFiもなんとかつながった)
今年(2019年)の夏も暑かった。
暑い日は自宅に帰ってからエアコン付けてたのでは遅いので、予め外から電源入れて、部屋を涼しくしておくのがよい。
今はそういう商品があって、スマホで簡単に実現できる。これが想像以上に快適だった。
夏も終わり、出番がなくなったが、冬にまた使うだろうから設定方法など備忘録しておく。
(今は電源抜いているので、また設定が必要だろうから)
必要なもの
- スマホ
- 自宅WiFi
- eRemote mini (miniで十分だった)
LinkJapan eRemote mini IoTリモコン 家でも外からでもいつでもスマホで自宅の家電を操作 ※IFTTT対応【Works with Alexa認定製品】 MINI
- 出版社/メーカー: LinkJapan
- メディア: エレクトロニクス
- この商品を含むブログ (2件) を見る
さっそく設定を記述する。
基本は以下の公式のマニュアルを見ればなんとかなったが、WiFiがうまく設定できなかったときの対処もあったので、ちょっと丁寧に。
linkjapan.co.jp
スポンサーリンク
[目次]
アプリダウンロード
「eHome」アプリをダウンロードする。
(リンクになってないので、各自検索してDLしてください)
本体を電源につなぐ
こんな感じ(USB電源につなぐ)
アプリでアカウント登録
登録メールアドレスに認証コードを送る
送られてきた認証コードと、任意のパスワードを入れて登録
登録&ログイン成功!
まずこんな画面
本体のセットアップ
「デバイスを追加」をタップ
「eRemote mini」 を選択
セットアップ中・・・
自動セットアップに失敗!
ちょっと原因は結局わからなかったけど、上記のマニュアルの「セットアップに失敗した場合」を参考にやっってみる。
「別の方法(手動セットアップ)を試す」をタップ
こんな画面になったので、画面の指示に従う
リセットボタン(小さい穴)を6秒以上押す
この小さい穴を
こうやって
本体のランプは高速点滅になる。
スマホ画面を見ると、「再度リセット」とあるので、もう一度(つまようじで)リセット。
本体のランプは4回点滅を繰り返す。たぶんリセットできたので「次へ」をタップ。
この指示の通り、スマホのWiFi設定で「BroadlinkProv」を選択して、その後アプリ画面に戻って、自宅WiFi接続を試みる。
よし!成功!
スポンサーリンク
デバイス(エアコン)を追加する
操作対象のエアコンを追加して、操作できるまで設定する。
ホーム画面の「デバイス」を選択して、接続されているeRemote miniを選択。
追加 > エアコンを選択
自宅のエアコンのメーカーを選択
この指示の通り、エアコンのリモコンで、本体に向けて電源ボタンを押す。
ポチッと
型番を選択
実はここに自宅の型番が出てこない。。。
自宅にあるのは「MSZ-GV2817-W」というやつ。
でもリモコンは認識すればたぶん大丈夫だろうってことで、トップの「Mitsubishi_5701」選択。
はい。できた!エアコンも無事動いたぞ!
トップに「エアコン」が追加されていればOK。ここを選択して操作していけばよい。
風向きとか細かい設定はできないけど、自宅に帰る前に遠隔で部屋を涼しくしておくとか、暖かくしておくとかの目的としては十分。
(細かい設定するには、自宅帰ったら一旦スマホで電源OFFして、家のリモコンで電源入れ直して・・・ってやる必要があるどけ。まぁいいだろう。)
とにかく快適。
【Wi−Fiエラーは無線ダイレクト無効で解決!】Canon プリンター PIXUS TS8230 セットアップ方法 for Mac
プリンターの設定方法。
「Canon プリンター インクジェット複合機 PIXUS TS8230 ブラック (黒)」を購入したので、PCへのセットアップ方法を備忘録として記述する。
セットアップの実行ファイルをダウンロード
cweb.canon.jp
ダウンロード完了
同ページの「インストールについて」を見てみる
ダウンロード/インストール手順
1. [ダウンロード開始] ボタンをクリックし、ファイルをダウンロードしてください。 ファイルの保存先は、お使いのコンピューターの設定をご確認ください。
2. ダウンロードしたファイルをダブルクリックして、ディスクイメージにマウントしてください。
3. マウントされたディスクイメージをダブルクリックしてください。
4. フォルダー内の "Setup"ファイルをダブルクリックすると、セットアップ画面が起動します。 画面の内容に従い、ソフトウエアのインストール、および、ご使用の製品の接続設定を行ってください。
1のダウンロードは完了している。
次は、(2)ファイルをダブルクリックして、ディスクイメージにマウントする。
「マウント」ってざっくり簡単に言うと、このPCで使える状態にするってこと。
難しい言葉使わなくてもいいのになー。
ダブルクリックしたら、デスクトップにディスクイメージができた。
次は、(3)このマウントされたディスクイメージをダブルクリック。
「Setup.app」があるね。
最後に、(4)Setup.appをダブルクリックして、セットアップ画面通りに行っていく。
インターネットからインストールしたから、警告が出る。「開く」を選択。
MacはApp Store以外からダウンロードしたものをインストールしようとすると必ず警告がでる。親切だ。
次へ
Mac(このPC)のパスワードを入力して、「ヘルパーをインストール」
「セットアップ開始」
次へ
わらわらとダウンロードしている
日本を選んで「次へ」
はい
同意する
接続確認中(無線でね)
プリンターのシリアル番号と自宅のWi-Fiルータを確認したら「はい」
「Setupは、キーチェーンに含まれるキー"***"へアクセスしようとしてます。」
→「常に許可」でOK。ルータのパスワード聞かれて、
セットアップ中・・・
接続に失敗しました!
ありゃ!
次へ
とりあえず「プリンター本体でWi-Fi設定する」を選択してOK
以下のWebページが開いただけだった。
ugp01.c-ij.com
スポンサーリンク
自力でやってみる。
画面を見ると、Wi-Fiのところがバツになっている。
エラー文を見ると、
「・・・サブネット範囲が割り当てられているため、Wi-Fiの動作を停止します。無線ダイレクトを無効にするか、サブネット範囲を変更してください」
となっている。
どうやら無線ダイレクトを無効にすれば行けそう(サブネット範囲を変更するのは面倒くさそう)
本体のタッチパネルで、歯車(設定)をタップ。
本体設定
LAN設定
無線ダイレクト
設定 > 無線ダイレクトの有効/無効
「Wi-Fiルーターを介さずにプリンターと無線対応機器を直接接続できます。設定を有効にしますか?」
→「しない」
エラーなくたった!
スポンサーリンク
あとはPCのセットアップ画面の戻って、進めたら
接続できた!
「次へ」
わらわらっとインストール
プリンターの追加
プリンター名とか自動で入っているので、「追加」押すだけ
次へ
「実行」押したら、テスト印刷された。
次へ
ようやくセットアップ完了!
「次へ」
で、その他のソフトウェアもインストールして、
ようやくインストール完了!
お疲れ様!
おまけ
シリアル番号の記載場所のついて
ugp01.c-ij.com