インフルエンザ再発防止を考える

前のエントリーに書いたようにインフルエンザになってしまって、ようやく治ってきた。毎年この季節は何かしら体調を崩している気がする。そして毎年再発防止を考え、意味をなしていない。

  • 休もうか悩んで休んだことで後悔したことがないように、早く帰ろうか悩んで早く帰ったことで後悔したこともない
    • 悩んだら休むようにしていたけど、これからは早く帰るようにもしたい
    • 休もうか悩んだときにこの自分のルールはよく役に立っているけど、早く帰る役にも立つだろうか
  • 22時時点で自宅にいなかったら帰るようにしていきたい
    • 自動的にアラートされることが望ましい

本当は心拍計を毎日つけて計測したほうがベターなんだけど、殆ど役に立たない割につけていると鬱陶しすぎて見合わないという問題がある。心拍数以外にも体温や気温湿度が計測できるものがあったら身に付けたい。

これがそういうの測れそうだけど怪しすぎる。

インフルエンザB型にかかっていました

社内外の人と会っていたのでパブリックな日記にとりあえず情報集約します。

  • 本日内科にかかったところインフルエンザB型ということでした
  • ですので、近日中に僕と顔を合わせた人は気をつけて下さい

参考情報

  • 連休明けくらいなら出社しても安心ということだった
    • 基本的には自己判断になるので、会社の規定などに従って下さいということだった
  • ウィルス濃度?はあまり高くないということだった
  • 吸う薬を使ったところ「うまく吸えてるので、よく効くと思います」ということだった
  • 今週月曜に身体がだるいなあと思っていたけど単純な疲れだと思っていた、火曜は違和感が酷かったので休んでいた。今日は若干体調が良くなった気がしたのと仕事が溜まってしまったので出社して仕事していたが、ほとんど会議に参加していたので居場所は不定だった

電気毛布のON/OFFを自動化した

WiFiで電源をON/OFFできるコンセントがあったので買ってみた。 2個入りで買うと1個あたり1700円しないのでお安い。

3ピンなので場合によっては変換プラグが必要。

サンワサプライ 3Pプラグを2Pに変換用アダプタ トラッキング火災予防付きTAP-AD3LT

サンワサプライ 3Pプラグを2Pに変換用アダプタ トラッキング火災予防付きTAP-AD3LT

この手の商品にありがちなメチャクチャな日本語のドキュメントを何とか読み進めてセットアップ完了。 設定もこの手の商品にありがちなAPモードではなくBluetoothか何かで直接通信するEZモードとやらで簡単にできる。 アクセスポイントについてはどうやらスマフォが使っているのと同じSSIDが勝手に使われるようなので、対応するパスワードを入力すれば良い。

どうやらSmartLifeという怪しいサービスに登録され、制御されるらしい。 スマートコンセントに直接HTTPのAPIがあれば良かったのだが調べてみたところ見つけられなかった。 IFTTTからは制御できるようなので今回はIFTTTを使ってAPIをつくることにした。

IFTTTにはWebhooks(古い資料?などではMakerなどと呼ばれているものっぽい)が使えるので、thisにそれを指定する。 イベントは今回は就寝と起床なので、それぞれ get_sleep wake_up などとした。 そしてthatにSmartLifeのTurn on/offを指定すればAPIが完成する。 Webhook APIのURLはhttps://maker.ifttt.com/trigger/{event}/with/key/{key}という形になるようだ。そしてHTTPSではなくHTTPでも叩くことができる。 APIキーは ifttt.com の右上にある「Documentation」から確認することができた。

就寝・起床の検知はTaskerを使って目覚ましアプリのインテントをトリガーにした。 TaskerからHTTP Getで先程のAPIを叩けば良い。HTTPSじゃないとNGだったらここで詰んでいた。

注意点としては、一度スマートコンセントを抜き差しすると正常に認識されないことがあった。 そういうときはまた抜き差しするとうまく認識された。 もしかしたら抜き差しの仕方が悪くてチャタリングしておかしくなったのかも知れない。 正常に動作しているかどうかは抜き差ししたらSmartLifeアプリから常に確認するのが良さそうだ。 あと、電源のON/OFF時にスマートコンセントから小さなカチッという音が聞こえるので、完全に無音ではない。

そんなわけで電気毛布のON/OFFを自動化することができた。 まだセットアップしたばかりなので分からないが、今のところ非常にコスパに優れた製品だと思う。 原理が単純なので、様々な利用方法がありそうだ。 今のところのアイディアとしては

  • 電気毛布との連携を更に進めて、布団に温度センサーを仕込んで寒かったらONにするとか
  • タイマーでの定期ON/OFFもできる?っぽいので、6時間で切れてしまう電気毛布の自動延長
    • ついでに室温と連動させて、寒かったら勝手につけるとか
  • (僕はHueを使っているので要らないけど)デスクライトと組み合わせて強制起床装置をつくるとか

とか考えている。

Google Assistant SDKを古いRaspberry Pi 2に入れて遊んだ

Google Homeとかを買うほどでもないけど音声認識してHueとかいじったりしたいなあなどと考えていたら、Google Assistant SDKというやつを導入すれば色んな端末がGoogle Homeっぽい感じになるということを聞いたのでわけも分からずにやってみた。

今回のゴールはとりあえず音声認識させてTwitterに投稿させること。

マイクは手元に余っていた適当なUSBマイクを繋げた。

サンワサプライ USBマイクロホン ブラック MM-MCUSB21BK

サンワサプライ USBマイクロホン ブラック MM-MCUSB21BK

Raspberry Piにつなぐスピーカーなんて持ってなかったけどRaspberry Pi 2にはミニジャックが付いていたのでイヤフォンを刺してがんばって聞き取りながら進めた。

とりあえず公式ドキュメントっぽいやつに従って導入を進めた。 Introduction to the Google Assistant Library  |  Google Assistant SDK  |  Google Developers

何回か詰まったが、以下の対応で何とかなった気がする。

  • Raspbian wheezyとかいうクソ古い環境だったのでサンプルのビルドがわけの分からない理由でコケまくる。結局、jessieのpython3やgccやbuild-essentialをインストールしたら何とかなった
    • もっと新しい環境(testingとか)を使わなかったのは、apt-getのバージョンが古すぎて新しい環境のパッケージリストをうまく取り扱えて無さそうだったため……そもそもwheezyを使うべきでないので、元気があるなら新しい環境へちゃんとアップグレードした方が良いと思う。元気はない
  • 日本語的に「オーケーグーグル」や英語的に「OK Google」だとなぜかほとんど認識されず、英語的に「Hey Google」だと大体認識された
    • マイクの品質が低すぎるとか、ホットワードの設定がおかしいとか、様々な可能性がありそう
  • マイクの感度が悪い気がしたので、amixerで設定した
  • サンプルスクリプトが[3788:3816:ERROR:audio_input_processor.cc(748)] Input errorみたいなエラーを吐いた時はどうやら別のプロセスがマイクを掴んでいるときのようなので、pkill arecordなどとして当該のプロセスを殺す

その後はRaspberry Pi にGoogle Assistant SDKを搭載して「OK Google」してみる。 - Qiitaを参考にTwitterに投稿させるIFTTTのアプレットを作成して、何度か適当に喋っていたらうまくいった。

その後自動起動させたいと思って先ずは雑にコマンドの末尾にアンパサンドを付けて実行してみたが、そうするとなぜかInput errorが出てしまうのでバックグラウンド起動させられていない……。 調べてみた雰囲気ではsystemdを使って自動起動できてそうな人はいる感じだけど、wheezyなのでアップグレードしないと試せない……。

というわけで、動かすことはできたけど今日は実用レベルまで持っていけ無さそうな雰囲気になってきた。残念。また元気があったら調べたい。 ここまで書いて、余ってるAndroid端末にGoogle Assistantアプリを入れて音声でロック解除できるようにしたら、それを使えば良いのでは……?という気がしてきている(メイン端末はセキュリティ上の観点からやれない)。けど手持ちのAndorid端末全部まともな状態じゃないんだよな……。 iPadは鎮座しているものも迂遠なことをしないとIFTTTと連携できないっぽいし、役に立たない。

RSSフィードにguidを追加する簡単なサービスをつくった

LDRの終了に伴いFeedlyを利用していますが、Feedlyはどうやらxpathfeedやはてなアンテナが出力するようなguidが無いフィードをうまく取り扱ってくれないようなので困っていました。

簡単に探してみましたが問題を解決できそうなソフトウェアを見つけられなかったので、今回暇な時間を使って入力フィードを指定された条件に従ってguidを生成して付与するサービスをテキトーにつくりました。

こちらから利用できます。

ソースコードはこちら。

github.com

多分脆弱性とかある気がするので見つけたらPull Requestをください。