遅ればせながら、おうちハック Advent Calendar 2017の二日目でございます。
なんで遅れたかってぇと入院の準備でバタバタしてたもんでして、そんでもって現在入院中なわけ。 やっとこ熱も引いて頭も回るようになってきたのでこうして記事を書いてるって寸法さ。
ここは一つおうちハックの概念を広げて寝泊まりしている場所のハックをしてみようじゃあないか。 というわけでタイトル通り入院を支える技術のはじまりはじまり
入院しているときの問題
手癖の悪いやつってぇのは古今東西どこにでもいるもので、病人だらけの病院でも居るとか居ねぇとか
ところがどっこい病院側も馬鹿じゃねぇ、病室には鍵のかかるセーフテーボックスってぇのがこしらえてあるのよ。 財布やスマフォをしまって置けて一安心。
ここで問題が発生しちまうんだ。こちとらおうちハッカー、macぐれぇ病室に持ってくるってもんよ。 mac book pro 13inchはセーフテーボックスに入れねぇんだ
困ったときは(脳内の)長屋のご隠居に相談するしかねぇ
「ご隠居ー、ご隠居ー」
「全く誰だい騒々しいねぇ。おや熊さんじゃないか、どうしたいそんなに慌てて」
「これこれこういう塩梅なもんで参っちまって」
「落ち着きなさい熊さん、そんなときはAppleScriptを使うんじゃ」
そうして熊さんは入院しているベッドの上でペコペコAppleScriptを使って盗難防止のスクリプトを作りましたとさ
作ったもの
電源がACアダプタか、バッテリ駆動かを判別してバッテリ駆動だった場合は盗難されたとみなし、
音量を最大化した後「泥棒!」と喋る
注意 天板を閉じたときにはスリープしないようにInsomniaXなど使いましょう
デモ動画
デモ動画は音量をかなり絞って撮影している。だってここ病室だよ
実装詳細のソースコード
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