GoogleCalender + IFTTT + Dropboxによる自宅ジョブスケジューラ
iRemoconのスケージュル機能が”非常に”貧弱で、ホームサーバのcronで制御してたのだけど、cronはcronで設定が煩わしい。”明日は9時に照明付けたい”とか超面倒くさい。
GoogleCalenderにスクリプト書いて実行したいと考えた。でも直接API叩くと実装(というか認証)がしんどそうだし、セキュリティを担保するも大変なのでIFTTTとDropboxを仲介することにした。
(なんかもっとカンタンな方法があったら教えて欲しいっす)
専用のカレンダーを作成
GoogleCalenderを起点にドロップボックスにファイルを書き込むレシピを作成
ifをGoogleCalenderにthenをDropboxにして、イベントの詳細をスクリプトとして書き込むようにする。
対象ファイルを監視して、ファイルが書き込まれた際にスクリプト実行
この辺参照> Linux で Dropbox ドリブンなシステムを構築する方法
Dropboxフォルダ監視、実行スクリプト
remod
#!/bin/bash remopath=/home/hoge/Dropbox/remo/ remofile=${remopath}remo.txt # fileが移動してくるのを待つ while inotifywait -e moved_to ${remopath}; do if [ -e ${remofile} ]; then chmod u+x ${remofile} source ${remofile} rm -f ${remofile} fi done
適当な起動スクリプト
/etc/init.d/remod
#!/bin/sh # chkconfig: 345 99 01 PROG="remo" LOCK=/var/lock/subsys/$PROG case "$1" in start) /bin/touch $LOCK echo "start" nohup sudo -u hoge /home/hoge/sh/remod >/var/log/remod.log & ;; stop) echo "stop" /bin/rm -f $LOCK ;; *) echo "failure !!" >> /var/log/failure.txt ;; esac
ジョブイベントを作成
とりあえず動いてる。
GoogleCalenderとIFTTT間にタイムラグがだいぶある様子で、5分ぐらいズレるのでそれを予期してスケジュール組む必要がある。









