Dash Buttonを押してLINEにメッセージを送信する
IFTTTとは?
Amazon Dash Buttonは登録した日用品を、ボタンを押すだけで登録した商品を注文してくれる、とてもおもしろいIoTボタンです。
IFTTT と連携させるサーバーを立てると、更に面白い事が出来るようになるようです。
簡単に説明すると、「if this then that」(こんなことが起こったらそれをして)のコンセプトに合わせて、IFTTTレシピを作成することによって、異なるWebサービスを連携させる事を可能にする無料のWebサービスです。
例えばどんな事が可能になるのか、僕も使っているまたは使う予定の人気レシピをご紹介いたします。
If tomorrow's forecast calls for rain, get an email
翌日が雨の時だけ指定メールアドレスに通知メールを送ってくれるレシビで、任意の文章や気温情報も通知内容に含めることもできます。
Track your Foursquare checkins on Google Calendar
Foursquareでチェックインすると、自動的にGoogleカレンダーに情報を入力してくれるレシピのようです。週末は嫁と一緒に殆ど何処かに出掛けているため、いつ行ったっけ?って結構そんな話をすることが多いので、使ってみようかと思っています。
Tweet Happy New Year!
指定日時になった時にTweetしてくれるレシピのようです。
Sending new RSS items to Pocket
購読しているブログのRSSを読み込み、新しい記事が投稿されたら自動的にPocktに保存してくれるレシピです。僕はお気に入りのブログをfeedlyに登録して流し読みをし、じっくり読みたい時は手動でPocktに保存していましたが、これがあればPocktだけ済むかなと思って使い始めました。
他にも公式サイトには便利なレシピが沢山ありますので、興味がある方は色々と試されると良いかと思います。
Amazon Dash Button側の設定
先ずはAmazon Dash Button本体側の設定を行います。
MakerとConnectする
Webhook機能を使いたいため、今回はMakerを使ってLINEと連携させます。
先ずは、IFTTT公式サイトでMakerとConnectします。
Connect完了後にSettingからUserIDが確認でますので、後々利用するため控えておきます。
MakerとLINEを連携させたAppletの作成
Maker側でリクエストを受け取った時に、LINE側に送信するメッセージ等を設定していきます。
thisを登録
イベントネームを設定
thatを登録
LINEに送信するメッセージを設定
設定完了
サーバー側の設定
サーバー側はDasherを利用しします。
先述した、MakerとConnectした時のURL情報やMacアドレスをconfig.jsonに設定し、ARP要求がきた時にLINEにメッセージが送信されるように設定します。
-
Dasherのインストール
git clone https://github.com/maddox/dasher.git cd dasher npm install
-
Amazon Dash ButtonのMACアドレスを調べる
./script/find_button Password: Watching for arp & udp requests on your local network, please try to press your dash now Dash buttons should appear as manufactured by 'Amazon Technologies Inc.' Possible dash hardware address detected: XX:XX:XX:XX:XX:XX Manufacturer: unknown Protocol: udp
※Manufacturerは「Amazon Technologies Inc.」って出る方もいるみたいですが、僕のボタンは「unknown」になっていました。
-
config.jsonを作成する
{"buttons":[ { "name": "{Your event name.}", "address": "XX:XX:XX:XX:XX:XX", "interface": "en0", "timeout": "60000", "url": "https://maker.ifttt.com/trigger/declaration/with/key/{Your UserID}", "method": "POST", "json": true, "body": {"value1": "スタバでモーニングコーヒー", "value2": "マクドでランチ"} } ]}
いざ実行
以下のコマンドでDasherを起動してから、Amazon Dash Buttonを押してみましょう。
sudo npm run start Password: > dasher@1.1.1 start /Users/xxxx/git/dasher > node app.js [2016-12-XXTXX:XX:XX.XXXZ] Send line message added. [2016-12-XXTXX:XX:XX.XXXZ] Send line message pressed.
500円で購入可能なおもちゃとしてはとても良くできており、色々と可能性があって、正月休みに色々と遊びがいがありそうです。
Amazon Dash Buttonが何かと面白そう
普通じゃない使い方をするには?
Amazon Dash Buttonは登録した日用品を、ボタンを押すだけで登録した商品を注文してくれる、とてもおもしろいIoTボタンです。
スマホのAmazonアプリで簡単に初期設定ができ、初回注文時のみ注文商品が500円OFFになるので、実質無料で手に入れることが出来ます。
間違えてボタンを押してしまっても、注文後は商品が届くまでは無効になるようです。
そのまま使っても便利そうですが、どうやらハッキングをすることによって、面白い使い方が出来るようです。
ボタンを押した後に電源がオンになり、予め設定したWi-Fiに接続する時にDHPCでIPアドレスを取得するのですが、その割当てられたIPアドレスが他の機器と競合していないかARP要求をブロードキャストするらしいです。
同一ネットワーク内にそのARP要求が来た時、Amazon Dash ButtonからのARP要求なのかMacアドレスで確認し、何か処理を実行できるサーバーがあれば色々と面白そうな事ができそうです。
他のページでも注意として記述されているのですが、Amazon Dash Buttonの役割は登録されている商品を注文することですので、ARP要求監視サーバーはARP要求が来た時に独自にやりたいことを実装すれば良いのですが、Amazon Dash Buttonの方はまだARP要求を飛ばしただけでは完結していないため、実際の注文はさせないようしないと駄目なようです。
500円で年末年始に遊べそうな、今話題のIotを一つ購入してみてはいかがでしょうか。
僕は購入して遊び倒します。
Amazon Dash ButtonのARP要求をフックするためのおすすめ簡易サーバー
前々から、手軽に使えるホームサーバーとしてスティック型PCが欲しいと思っており、物色していたのですが、熱暴走しやすいし処理が激重で使い物にならないとレビューに買いてあったため二の足を踏んでいました。
そのため先ずは同じようなスティック型Androidデバイスである、Fire TV Stickを購入して使って様子を見ているのですが、特に問題もないため、Intel製の最初からUbuntuが入っている、BOXSTCK1A8LFCを安くて十分なスペックだったので購入しました。
ボタンを押したときのARP要求を、フックして処理させるサーバーとしては全く問題ないスペックですし、テレビに繋いでGUIでネットサーフィンする事もないため、熱問題も解消できそうですし、かなり良い買い物だったのではないかと思っております。
LINEがアップデート出来ないときの対処方法
LINEを再インストール
iOSアプリのアップデートが途中で止まって、App Storeのバッジがずっと消えずに残ってしまうという経験をしたことありませんか?
僕の場合は、LINEでアップデートできないという問題が頻繁に発生します。
LINEのアップデートができなくなるため、LINEが悪さしているのではと思いがちですが、App Storeのバグであることが多いようです。
この問題は大抵、LINEの再インストールで解消するようです。
LINE再インストールの際は、トークのバックアップを忘れないようにご注意ください。
MacおよびWindowsのiTunesからインストール
僕の場合は、LINEを再インストールしようとしても出来ませんでした。
やはり途中で止まってしまいます。
そんな時は、iTunesでインストールおよびアップデートするしか方法は無いようです。
しかしLINEは頻繁にアップデートするため、その都度iTunesでアップデートするしか方法がなく、結構面倒な作業になってしまいます。
最終手段は…
最終手段は、iOSのアップデートが配信されるまで放置して待つしか無いようです。
iOSをアップデートすると、ソフトウェアの再構築やキャッシュの削除が行われますので、LINEのアップデートがiPhoneから出来るようになります。
キャッシュを削除すれば良いのだろうか?
上で書いておきながら、ん?キャッシュを削除すればLINEのアップデートが出来るのでは無いだろうか?と思ったので、次回同じ現象が起きたらキャッシュの削除を試してみようと思います。
まだバッテリー交換しないほうが良い3つの理由
バッテリー交換プログラムとは?
iPhone 6sの製造過程に問題があったらしく、iPhone 6sの一部において、突然シャットダウンする現象が確認されているようです。
このバッテリー問題について、一部ユーザー間で議論されていたようですが、ようやくApple公式で告知されて無償修理可能になりました。
iPhone 6sのシリアル番号を入力すると、お手持ちのiPhone 6sがバッテリー交換対象か対象外なのかを確認することが出来ます。
今回のバッテリー交換修理を依頼するには、ピックアップ&デリバリー修理依頼をする方法とGenius Barや正規サービスプロバイダの予約を取って修理を依頼する方法の2つの方法があります。
ピックアップ&デリバリー修理は評判が良いのですが、iPhone 6sを発送して修理をしてもらうか、代替の新品を受け取り後に手元のiPhone 6sを発送するかの2択になります。
前者はiPhone 6sが手元から離れてしまうので非常に不便ですし、後者は金額を忘れましたが数万円をクレジットカードの与信枠で一旦おさえる必要があるようなので少し面倒なため、僕個人的な考えなのですが、Genius Barで修理してもらう選択の1択かなと思っています。
今はバッテリー交換しないほうが良い3つの理由
①Apple Storeが激混みで予約困難
1つ目は、まだバッテリー問題がApple公式サイトで告知されてから、それほど時間が経過していないということになります。
Apple公式サイトやデジタル系のニュースサイトで情報を知った方が、一気にApple Storeに修理を依頼しているようで、僕がApple Store表参道でたまたま聞こえた他の方の修理内容の殆どが、このバッテリー問題に関する修理でした。
そのため、Apple Storeの修理予約すらなかなか取れない状況が続いています。
②iPhone 6sの修理は新品交換ではない
2つ目は、一人ひとりのiPhoneを分解してバッテリ交換しているため、たまたま予約が取れてもApple Storeでかなり待たされるということになります。
僕の場合は、平日の夜で所要時間1時間20分程度の時間がかかったため、修理が終わるまで1時間以上は時間がかかると思われます。
僕が知っている範囲では、Apple Storeで修理をお願いすると、奥から交換用の新品iPhoneを持ってきて交換して終了という流れでしたが、今は部品単位で修理するようになっています。
今回のケースでいうと、バッテリーの交換のみになるため、iPhoneのシリアル番号は変わりませんし、初期化されることもないため、基本的にはバックアップから戻す作業は不要になります。1
③バッテリー交換は保証期限が切れる寸前で良い
3つ目は、バッテリーがまだまだ使えるのに、このタイミングで交換してしまうと損をしてしまうということになります。
iPhone 6sは、発売されてからまだ1年くらいしか経っておりません。
突然のシャットダウンに悩まされており、なるべく早くバッテリー修理の対応を望んでいる場合は別ですが、バッテリーが突然目減りするくらいの症状がたまにあるくらいで、それほど日常使いに問題がなければ急ぐ必要はありません。
僕の場合は以下の画像の通り、1500/1715mAhだったので、215mAhしか減っていないです。
Apple公式サイトの「環境 - よくある質問 - Apple(日本)」によると、iOSを搭載した機種につての商品寿命は3年としておりますので、Apple公式見解としても後2年は使える見込みになっています。
そのため、Apple Careの保証が切れる2017年の8月から9月までに、バッテリー交換修理しとけばいいかなぁくらいに考えていたほうが良いです。
-
バックアップから戻す作業が不要でも、修理の際は念のためバックアップを行ってください。↩
Subversionでbranchからtrunkにマージする方法
ワークスペースの変更を全てcommitしておく
あまり機会がないため忘れがちですが、たまにやったときに困るため、Subversionでのmerge方法をまとめておきます。
今までの作業が水の泡になってしまわないように、一旦現状のワークスペースの変更をcommitしておきます。
branchの内容をtrunkにmerge
作業は以下の手順で行います。
作業リポジトリをbranchに変更
svn switch file:///IPアドレス/branches/ブランチ名
branchの開始点のリビジョン番号を確認
svn log --stop-on-copy
※ 一番最後に出力されるログのリビジョン番号を控えておく(仮にr5454とする)
作業リポジトリをtrunkに変更
svn switch file:///IPアドレス/trunk
branchの内容をtrunkにmerge(テスト実行)
svn merge --dry-run -r 5454:HEAD file:///IPアドレス/branches/ブランチ名
merge試行の結果を確認
フラグ | 内容 |
---|---|
A | 作業用コピーでファイルが追加されました |
U | 作業用コピーでファイルが更新されました |
D | 作業用コピーでファイルが削除されました |
R | 作業用コピーでファイルが置き換えられました |
G | ファイルのマージに成功しました |
C | ファイルにマージの競合があるため手作業での解決が必要です |
C以外は特にやることなし。マージの競合がある場合は適宜対応する。 ファイル修正するなどしたら、必ず--dry-runオプションをつけて実行してmerge試行を実行すること。
branchの内容をtrunkにmerge(本番実行)
svn merge -r 5454:HEAD file:///home/sysdev/svn_repos/branches/branched_version
merge内容をcommit
svn commit
trunkの内容をbranchにmerge
作業は以下の手順で行います。
作業リポジトリをbranchに変更
svn switch file:///IPアドレス/branches/ブランチ名
branchの開始点のリビジョン番号を確認
svn log --stop-on-copy
※ 一番最後に出力されるログのリビジョン番号を控えておく(仮にr5454とする)
trunkの内容をbranchにmerge(テスト実行)
svn merge --dry-run -r 5454:HEAD file:///IPアドレス/trunk
merge試行の結果を確認
trunkの内容をbranchにmerge(本番実行)
svn merge -r 5454:HEAD file:///IPアドレス/trunk
merge内容をcommit
svn commit
MacBook Airに最適なEthernetアダプタ
おすすめEthernetアダプタ
ネットワーク機器を購入した時に、有線LANケーブルを直接接続できずに困ったことありませんか?
僕はMacBook Airしか持っていないのですが、LANケーブルで物理的に接続出来ないことによって初期設定が面倒になり、結果的に余計な時間を費やしてしまうことが多々あります。
つい最近もルーターの設定で色々あったので、Ethernetアダプタを購入することにしました。
僕はデザインが気に入ったことと、Ethernetアダプタで貴重なUSBポートの1つを専有されるのが嫌だったため、「moshi USB 3.0 to Gigabit Ethernet アダプタ」購入しましたが、他にもオススメ商品があるためご紹介いたします。
USBポートを専有させたくない場合
使っていないThunderboltポートを有効活用したい場合
安価に済ませたい場合