机の上においたボタンを押すとリアルタイムでSlack上に寿司を食べたいことを通知できるシステムを構築した
机の上においたボタンを押すとSlack上に寿司を食べたいことを通知できるシステムを構築した。
動機
寿司を食べたい時にそれをSlackで報告するためわざわざキーボードに手を伸ばすのは非常に面倒である。机の上に専用のスイッチがありそれを押すだけで寿司が食べたいことを通知できれば非常に素晴らしいユーザー体験が得られるはずだ。昔遊んでいたArduinoが家にあったので、それとSlackを組み合わせることでシステムを構築していく。
作り方
Arduino側
100均に行ってボタンっぽいものを購入する。
スイッチ式のシーリングライトがあったので流用。ライトなので押すと光る。
(光る)
気合で内部のスイッチを見つけ出して配線。
内部を開けるとこんなかんじになっていた。緑と黄色のリード線は自分で結線した。
適当に抵抗を繋いでやばい電流がArduinoにいかないようにする。 回路図を示したいところだが、そもそも100均ボタン側の回路が不明なのでプレッドボード側も勘で配線した。 とりあえず5Vを直接グラウンドに繋いではいけないことがわかった。
Arduinoにコードをデプロイ。
const int SWITCH = 2; void setup() { pinMode(SWITCH, INPUT); Serial.begin(9600); } void loop() { if (digitalRead(SWITCH) == HIGH) { Serial.print("1\n"); } else { Serial.print("0\n"); } delay(500); }
Arduinoに繋いでシリアルモニタでチェック。"1"と"0"がボタンに応じて出力されていればOK
。出てなかったら配線とか抵抗を見直す。
Python側
PySerialというモジュールがあるので、それをpipでインストール(Arduinoとの通信)。
こちらを参考にした。
slackwebというモジュールがあるので、それをpipでインストール(Slackとの通信)。
SlackのIncoming WebHookを用いた。異常に簡単にSlackにメッセージを流せる。
Slackにincoming webhook経由でpythonからメッセージをPOSTする - Qiita
コードはこちらを参考にした。 Incoming WebHookのURLは環境変数に格納し、実行時に読み込むようにした。
pythonを実行
import slackweb import os import serial import time url = os.environ["SLACK_OHA"] slack = slackweb.Slack(url=url) port = "/dev/cu.usbmodem1421" current_oha_state = False # ボード側は500ms間隔でserialにHIGH -> b"1", LOW -> b"0"を送信する with serial.Serial(port=port, baudrate=9600, timeout=1) as ser: while True: # time.sleep(0.1) flag = ser.readline() # switch ON if (bytes(b"0") in flag and not current_oha_state): current_oha_state = True print("oha") slack.notify(text="スシ食べたい🍣") # switch OFF elif (bytes(b"1") in flag and current_oha_state): current_oha_state = False print("otu") slack.notify(text="スシいらない🍣") print(flag, current_oha_state)
結果
とりあえずボタンをポチポチ押す。すると、
ほぼリアルタイムでこのようになる。ギリギリIoTの範疇に入る気がする。
これで快適に他人にスシを食べたいことを通知できるようになった。 会社のCTOがArduinoの無線モジュールを入手したようなので、それを使えばボタンをPCから独立させることも可能な気がする。未来っぽい。
最急降下法をPythonで実装した
関数x2 + xは、どうやら最小値がひとつだけ存在するらしい。どうしてもその値を知りたくなったので、最急降下法を使ってPythonでその値を求めてみた。
#!/usr/bin/env python # -*- coding: utf-8 -*- import random learning_late = 0.01 loop_max = 1000 def main(): initial = random.uniform(-10, 10) old = initial new = 0.0 for _ in range(1000): # 更新式 new = old - learning_late * diff_func(old) # 目的関数の値を確認 y = object_func(new) print(y) # 値を更新 old = new print(new, y) # 目的関数 def object_func(x): return x * x + x # x ^ 2 + x の微分 def diff_func(x): return 2 * x + 1 if __name__=='__main__': main()
これを実行すると、
# x、y (-0.5000000145792641, -0.24999999999999978)
と、xが-0.5付近の時に目的の関数が最小値となることがわかった。なるほどというかんじ。
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2015/10/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
- 作者: 高村大也,奥村学
- 出版社/メーカー: コロナ社
- 発売日: 2010/07
- メディア: 単行本
- 購入: 13人 クリック: 235回
- この商品を含むブログ (41件) を見る
平方イコルスン『スペシャル』読んだ
平方イコルスン『スペシャル』読んだ。いかにも検索にひっかからなそうな書名であり、売る気が全くないかんじがうかがえる。 内容は、登下校時も授業中も常にヘルメットを被っている女子校生がいるのだけれど、好きな男の子に近づくと緊張してしまい、ヘルメットが少し頭から浮いてしまうというストーリである。帯に、『このマンガは優しさ100%で出来ています。』と記述されているので、もしかしたらそれらも全て作者の優しさのなせる技なのかもしれない。日常ほのぼのマンガです。
(こちらはレギュラーガソリンの匂いが大好きな女の子が陰謀によりハイオクの匂いを嗅がされ怒り狂っているコマです)
- 作者: 平方イコルスン
- 出版社/メーカー: リイド社
- 発売日: 2016/04/11
- メディア: コミック
- この商品を含むブログ (3件) を見る
- 作者: 平方イコルスン
- 出版社/メーカー: 白泉社
- 発売日: 2012/07/31
- メディア: コミック
- 購入: 5人 クリック: 92回
- この商品を含むブログ (29件) を見る
- 作者: 平方イコルスン
- 出版社/メーカー: 白泉社
- 発売日: 2015/04/27
- メディア: コミック
- この商品を含むブログ (6件) を見る
ウンベルト・エーコ『プラハの墓地』読んだ
清野とおる『その「おこだわり」、俺にもくれよ!! ②』読んだ
その「おこだわり」、俺にもくれよ!!(2) (モーニングコミックス)
- 作者: 清野とおる
- 出版社/メーカー: 講談社
- 発売日: 2016/02/19
- メディア: Kindle版
- この商品を含むブログを見る
その「おこだわり」、俺にもくれよ!! 』の2巻読んだ。個人的には酒を飲む人なので、⑬の「トマトのカス男」の回が面白かった。なんか、「すごいも」というクソみたいに安い芋焼酎の話なのだけれど、本当に、トマトのカスを芋焼酎で割るだけの話なのでやばい。トマトと芋、どちらもアンデスの魅力がたっぷりなので、きっと相性も良いのだろう。トマトジュースじゃだめなの??? というかんじがものすごくするけれど、作品内で、「故意に潰したトマトを混ぜてもテンションは上がらない」という言説があるので、きっと駄目なんだろうと思う。
で、1.8リットルで900円以下で売っているところもあるという「すごいも」のインパクトが強すぎて、思わずAmazonで検索したら、あった。
合同酒精 甲乙混和 いも焼酎 すごいも 25度 ペット 4000ml
- 出版社/メーカー: 合同酒精
- メディア: 食品&飲料
- この商品を含むブログを見る
(どうやらAmazonだと割高である)
このような、人をアルコール中毒に至らしめるような酒は全て甲類という印象があったのだれど、これは「甲乙混交」というスタイルらしく、きっと名前的に、甲類と乙類を混ぜているのだろうと思う。乙を混ぜることによって、人を堕落の縁に追い込むようなこともなくなるだろうし、クリーンな印象になっている。もし、給料日前とかで、どうしても酒が飲みたいけれど、ビールを買う金もない、というような場合、うっかり買ってしまう酒の選択肢として、「すごいも」を教えてくれたこのマンガに深く感謝致します。
Brew Dog Jack Hammer飲んだ
池袋のハンバーガー屋でBrew Dog Jack Hammer飲んだ。IPA。昼からタップのIPA飲めるとか、池袋は最高の土地。メニューには酒の説明がいろいろ書いてあって、パンクIPAより数段苦い、とある。実際飲むと確かに苦く、最高。パンクは甘すぎて飯には合わない感が強いけれど、ジャックハンマーはハンバーガー食いながらでもいける。たまらん。
- 出版社/メーカー: Brew Dog(ブリュードッグ)
- メディア:
- この商品を含むブログを見る
- 作者: 板垣恵介
- 出版社/メーカー: 秋田書店
- 発売日: 2016/03/08
- メディア: Kindle版
- この商品を含むブログを見る
刃牙道 コミック 1-9巻セット (少年チャンピオン・コミックス)
- 作者: 板垣恵介
- 出版社/メーカー: 秋田書店
- 発売日: 2016/01/08
- メディア: コミック
- この商品を含むブログを見る