コンユウメモ

作ったガラクタとか、旅行とかの話

入院を支える技術(入院してるもんでおうちというか入院をハックした)

遅ればせながら、おうちハック Advent Calendar 2017の二日目でございます。

なんで遅れたかってぇと入院の準備でバタバタしてたもんでして、そんでもって現在入院中なわけ。 やっとこ熱も引いて頭も回るようになってきたのでこうして記事を書いてるって寸法さ。

ここは一つおうちハックの概念を広げて寝泊まりしている場所のハックをしてみようじゃあないか。 というわけでタイトル通り入院を支える技術のはじまりはじまり

入院しているときの問題

手癖の悪いやつってぇのは古今東西どこにでもいるもので、病人だらけの病院でも居るとか居ねぇとか

ところがどっこい病院側も馬鹿じゃねぇ、病室には鍵のかかるセーフテーボックスってぇのがこしらえてあるのよ。 財布やスマフォをしまって置けて一安心。

ここで問題が発生しちまうんだ。こちとらおうちハッカーmacぐれぇ病室に持ってくるってもんよ。 mac book pro 13inchはセーフテーボックスに入れねぇんだ

困ったときは(脳内の)長屋のご隠居に相談するしかねぇ

「ご隠居ー、ご隠居ー」

「全く誰だい騒々しいねぇ。おや熊さんじゃないか、どうしたいそんなに慌てて」

「これこれこういう塩梅ぇなもんで参っちまって」

「落ち着きなさい熊さん、そんなときはAppleScriptを使うんじゃ」

そうして熊さんは入院しているベッドの上でペコペコAppleScriptを書いて、Automatorを使って盗難防止のスクリプトを作りましたとさ

作ったもの

電源がACアダプタか、バッテリ駆動かを判別してバッテリ駆動だった場合は盗難されたとみなす。

盗難と判定したら音量を最大化した後「泥棒!」と喋る

注意 天板を閉じたときにはスリープしないようにInsomniaXなど使いましょう

デモ動画

デモ動画は音量をかなり絞って撮影している。だってここ病室だよ


入院を支える技術 mac盗難防止

実装詳細のソースコード

repeat
    #バッテリーかACアダプタで接続しているかコマンドラインで実行し、その1行目を取得する
    set result to (do shell script "pmset -g ps")
    
    # 1行目にBatteryが含まれていたらバッタテリー接続とみなして、セーフティー機能発動
    if (result contains "Battery Power") then
        # ボリュームを最大値(7)にする
        set volume 7
        say "泥棒!"
    end if
    #1秒スリープ
    delay 1
end repeat

pmset -g psというコマンドが肝で、コレを実行するとバッテリー情報が取得できる。実行結果は以下のような感じ

pmset -g ps

# ACアタプタ接続中の場合
Now drawing from 'AC Power'
 -InternalBattery-0 (id=hogehoge)   50%; charging; 1:30 remaining present: true

# バッテリー駆動の場合
Now drawing from 'Battery Power'
  -InternalBattery-0 (id=hogehoge)  64%; charging; 0:00 remaining present: true