$ brew update
ができないとかを筆頭におかしい。ので直す。どこがおかしいのかも Homebrew に調べてもらう。
$ brew doctor
上から読んで、ふむふむって言ってから適用していく。
$ sudo chown -R $(whoami) /usr/local $ brew update
$ brew doctor
ってコマンドがあるよ、ってメモりたかっただけ。
$ brew update
ができないとかを筆頭におかしい。ので直す。どこがおかしいのかも Homebrew に調べてもらう。
$ brew doctor
上から読んで、ふむふむって言ってから適用していく。
$ sudo chown -R $(whoami) /usr/local $ brew update
$ brew doctor
ってコマンドがあるよ、ってメモりたかっただけ。
複数の Google Calendar を使って予定管理しているのだが、たとえば仕事相手に空いている時間を教えたいときなどに、複数のカレンダーのアドレスを教えなければならずに面倒であった。できれば1つのカレンダーを共有するだけで予定を相手に通知できるようにし、かついままでのカレンダーの使用方法は変えたくない。
複数のGoogleカレンダーをまとめる を参考に このスクリプト を使おうと思ったが、一度に多くの操作をしすぎだと怒られたので、自分で書き換えた。JavaScript のオブジェクト、Python と同じだと思っていると痛い目にあうことがわかった(できれば Python で書きたかった)。
定期的に実行する方法は先のサイトを見ればいいが、メモとしてここにも書いておくと、
example@group.calendar.google.com
みたいな形をしている。難点としては、本来ならカレンダー(予定の種類)ごとに細かく閲覧設定ができるところを縮退させてしまっている点か。しかしまぁ、そのへんはスクリプトを軽く書き換えて、プライベートな予定は Private という名前にしてパブリックな予定はそのままの名前とする、みたいな感じにすれば丸いのでは。
参考にしたサイトは以下である。
(2019-05-10 追記:Gmail に公式に予約送信の機能が実装された。今後はこのコードではなくそちらの機能を使うことを推奨します。)
手紙は夜に書くな、とはよく言うけれど、しかしメールなんて夜ぐらいにしか書く気にならないというのもまた事実であり、深夜に書き上がったメールをさて送ろうと思ったときに、相手が携帯のアドレスだと睡眠を妨害しやしないかと少々躊躇してしまう。またたとえ携帯でなかったとしても、深夜にメールを送ったら「このひと、返信を書くのに悩みに悩みぬいたのだわ」と思われてしまいそうだ。もっとスマートに、朝起きて朝飯前にさらさらっと書いたふうを装いたい。
決まった時間に送信する、なんて機能は Gmail に標準搭載されていてしかるべきだと思わなくもないが、おそらくコストに見合わないのだろう。外部サービスとして Boomerang とか Right Inbox とかのサービスがあるけど、セキュリティ的にどうなのって思うし、金は払いたくない。また、以前に似たような記事を書いた が、あのコードは下書きの本文をコピーして新しいメールとして送信する(リプライチェーンが切れる!)というものだったのに加え、Google Sheets での操作が必要だったため実用的ではなかった。
Gmail の API に Drafts を直接操作できる API があるので、これを Google Apps Script と併用して、自前のサーバーなしに朝夕の自動メール送信を実現しよう。
使い方は以下である。
schedule/send-next-0700-0800
などの名前のラベルを作成し、それを Drafts にある下書きにつければ時間がくれば送信してくれる。
利点としては、下書きにラベルをつけるという操作さえできれば Web からでも iOS App からでも送信予約ができる点が挙げられる。逆に悪い点としては、このメールはいついつに自動送信したい、みたいな細かい指定はできない点が挙げられる。
参考にした資料は以下である。
Automatically sends Gmail drafts with specific lab ...
(2016-07-21 追記:コードを Gist へ移行した。ついでに、API を直接叩いていたのを、Advanced Google Services のインターフェースを使うように変更。)
(2018-05-02 追記:Gist のコードを、G Suite Services 内の Gmail Service のみを用いるよう(Advanced Google Services のインターフェースを使用しないよう)に変更。)
この記事 を参考に。
せっかく Pushover を使っているので、これに投げてもらう。curl
で楽をする。
$ vi check_df.sh
#!/bin/bash LIMIT=90 SUBJECT="[WARN] The capacity of the disk has decreased! - `hostname`" while read LINE do PERCENT=`echo $LINE | sed 's/^.* \([0-9]*\)%.*$/\1/'` if [ $PERCENT -gt $LIMIT ]; then curl -s --form-string "token=tkn123" --form-string "user=usr123" --form-string "message=$SUBJECT $PERCENT%" https://api.pushover.net/1/messages.json break fi done < <(df | grep '[0-9]\{1,\}%')
$ chmod 755 check_df.sh
LIMIT を低く設定して、動作テスト。
$ ./check_df.sh
通知が送られてくれば OK。
とりあえず毎日18時にチェックして通知。
$ crontab -e
0 18 * * * /home/username/check_df.sh >/dev/null 2>&1
iOS ではアプリの使用率を見ることはできないが、アプリの電源使用率を見ることはできる。Settings > Battery の下のほうに表示されるものがそれである。
バックグラウンドで動作するアプリもあるので一概には言えないが、ここに並んでいるアプリは自分の使用率が高いアプリとみなしてよいので、上から順に適当な順位までをホーム画面に(フォルダなどに入れずに;ワンタップで呼び出せる位置に)配置すれば、生活のスピード感が少しだけ増すのでオススメ。
LEC-AHS1210EH の電気(照明)のピッ音を消す方法。この Amazon レビュー が参考になった。
消灯時に、リモコンのカバーの中の「暗」ボタンを10秒間押しっぱなしにする。
再度オンにするには同じ操作を繰り返す。
マニュアルに記載してほしい。
CentOS 6 へインストールを試みたのだけれど全くうまくいかないので、常時動いている Raspberry Pi (IP: 192.168.11.20) がいたのでそちらで使えるようにすることにした。
基本的には Homebridge の Wiki を読んでその通りに行う。
$ sudo apt-get update $ sudo apt-get upgrade
アップデート中に次のように訊かれた。Diff を取ってみたらおそらくこの Raspberry Pi で動いている別プログラムの GPIO まわりの設定に関してだったので、弄らないほうがよかろうという判断で現在のバージョンを維持した。
Configuration file '/etc/udev/rules.d/99-com.rules' ==> File on system created by you or by a script. ==> File also in package provided by package maintainer. What would you like to do about it ? Your options are: Y or I : install the package maintainer's version N or O : keep your currently-installed version D : show the differences between the versions Z : start a shell to examine the situation The default action is to keep your current version. *** 99-com.rules (Y/I/N/O/D/Z) [default=N] ?
C++14 が利用可能であることを確認。
$ g++ -v ... gcc version 4.9.2 (Raspbian 4.9.2-10)
Raspberry Pi Model B+ なので armv6l
用のを選択(Raspberry Pi 2 は armv7l
のを選択するようだ)。現在の最新版を入れておく。
$ wget https://nodejs.org/dist/v6.2.2/node-v6.2.2-linux-armv6l.tar.gz $ tar -xvf node-v6.2.2-linux-armv6l.tar.gz $ cd node-v6.2.2-linux-armv6l $ sudo cp -R * /usr/local/ $ cd .. $ node -v v6.2.2
$ sudo apt-get install libavahi-compat-libdnssd-dev
--unsafe-perm
をつけないとエラーが出てインストール出来ない。つけても下記のようなエラーが出るが、source compile にフォールバックしてなんとかなっているようだ。
$ sudo npm install -g homebridge --unsafe-perm ... node-pre-gyp ERR! Tried to download: https://rvagg-node.s3-us-west-2.amazonaws.com/bignum/v0.12.5/bignum-v0.12.5-node-v48-linux-arm.tar.gz node-pre-gyp ERR! Pre-built binaries not found for bignum@0.12.5 and node@6.2.2 (node-v48 ABI) (falling back to source compile with node-gyp) ...
これでとりあえず homebridge
を起動できるようにはなった。確認。
$ homebridge
番号みたいなのが表示されたら成功。Warning が6行ぐらい出るが無視しろと 公式に書かれている。
$ sudo npm install -g homebridge-irkit $ sudo npm install -g homebridge-cmd
(2016-07-27 追記)IRKit を使う際には、常に Bonjour が使える環境にあるとも限らないので、IP アドレスを固定するのがよい。 IRKit 側からは固定できないので、公式 にある方法で IP アドレスを発見してから、ルーター側の設定で IRKit の MAC アドレスと IP アドレスの関連を固定させる。
自宅のルーターでは Internet/LAN > DHCPリース の項目から可能だった。
IRKit の現在の IP を調べるには Mac で以下のコマンドを実行。
$ dns-sd -B _irkit._tcp $ dns-sd -G v4 irkitxxxx.local
(2016-07-27 追記ここまで)
設定ファイルの位置は ~/.homebridge/config.json
と決まっているので、このファイルを作成して設定を書いていく。今回は、リトライ数などのきめ細かい制御は Python で記述し、Homebridge からはそのスクリプトを呼び出すだけとした。
なお、このファイルは homebridge の daemon 化の際には使用しない。テスト用である。よってテストが不要の場合はここを飛ばして daemon 化に進んでしまってかまわない(そこでまたこの内容を入力するステップがある)。
$ vi ~/.homebridge/config.json
{ "bridge": { "name": "Homebridge", "username": "CD:22:3D:E3:CE:30", "port": 51826, "pin": "031-45-154" }, "description": "Samoyed!", "platforms": [], "accessories": [ { "accessory": "CMD", "name": "リビングの照明", "on_cmd": "python /home/pi/Documents/python/irkit.py living_light select_b", "off_cmd": "python /home/pi/Documents/python/irkit.py living_light off" }, { "accessory": "CMD", "name": "寝室の照明", "on_cmd": "python /home/pi/Documents/python/irkit.py bedroom_light full", "off_cmd": "python /home/pi/Documents/python/irkit.py bedroom_light off" }, { "accessory": "CMD", "name": "暖房", "on_cmd": "python /home/pi/Documents/python/irkit.py aircon heating_on", "off_cmd": "python /home/pi/Documents/python/irkit.py aircon off" }, { "accessory": "CMD", "name": "冷房", "on_cmd": "python /home/pi/Documents/python/irkit.py aircon cooling_on", "off_cmd": "python /home/pi/Documents/python/irkit.py aircon off" } ] }
$ sudo useradd --system homebridge $ sudo mkdir /var/homebridge $ sudo chown homebridge:homebridge /var/homebridge/ $ sudo su homebridge -s /bin/bash $ vi /var/homebridge/config.json # 内容は上述の config.json と同一。 $ exit
$ sudo vi /etc/default/homebridge
# Defaults / Configuration options for homebridge # The following settings tells homebridge where to find the config.json file and where to persist the data (i.e. pairing and others) HOMEBRIDGE_OPTS=-U /var/homebridge # If you uncomment the following line, homebridge will log more # You can display this via systemd's journalctl: journalctl -f -u homebridge # DEBUG=*
$ sudo vi /etc/systemd/system/homebridge.service
システムによって実行ファイルの位置が異なる可能性があるので、事前に $ which homebridge
を実行しておき ExecStart にはそのパスを記載する。
[Unit] Description=Node.js HomeKit Server After=syslog.target [Service] Type=simple User=homebridge EnvironmentFile=/etc/default/homebridge ExecStart=/usr/local/bin/homebridge $HOMEBRIDGE_OPTS Restart=on-failure RestartSec=10 KillMode=process [Install] WantedBy=multi-user.target
$ sudo systemctl daemon-reload $ sudo systemctl enable homebridge $ sudo systemctl start homebridge
$ sudo systemctl status homebridge
で状態を確認。 $ sudo journalctl -u homebridge
でエラーを見る。
iOS 側からは新しい機器として認識されるので、再度登録し直す必要がある。再登録時に必要な番号を見るには、やはり $ sudo journalctl -u homebridge
を用いる。再登録に問題が生じる場合は、このあたり を参考に、/var/homebridge/persist/
を消したり username
を変更したりする。