[iPod touch]WiFiをON/OFFするiPod touch用コマンドラインアプリケーションwifictlとWiFiSwitch.app
iPod touchが返ってきたので、iPod touch用いじりを再開。
Services.appのソースを発見したので、前から欲しいと思っていたWiFiのON/OFFをコントロールするコマンドラインアプリケーションを作ってみました。
名前は「wifictl」ということにしました。
SummerBoardからWiFiのON/OFFを一発で切り替えるフロントエンド、「WiFiSwitch.app」というものもついでに作りました。こっちはシェルスクリプトアプリケーションです。
インストール
いつもの野良リポジトリからどうぞ。
[iPod touch]野良ビルドのバイナリを置いたiPod touch / iPhone向けInstaller.appリポジトリ
「Utilities > wifictl」
「Utilities > WiFiSwitch」
をインストールしてください。
BSD Subsystemもインストールしていないと困るでしょう。
無保証です。
ソースコードは開示請求があれば公開します。Services.appにならい、GPL v3 or laterです。
wifictlの使い方
使い方: wifictl [オプション]
例)# wifictl -t
-o WiFiをonにします。
-f WiFiをoffにします。
-t WiFiをonとoffの間でトグルします。WiFiSwitch.appはこのオプションを使ってます。
-g WiFiの状態を数値で返します。on時は1、off時は0が返ってきます。
-h ヘルプを表示します。
WiFiSwitch.appの使い方
あらかじめwifictlをインストールしておく必要があります。
SummerBoardに表示されたWiFiSwitch.appをタップして起動です。
WiFiがoffのときに起動するとWiFiをonにします。
WiFiがonのときに起動するとWiFiをoffにします。
ワンタップでWiFiのon/offを切り替えられるわけです。
高度な使い方
本来、これはcron(もしくはlaunchd)を使った自動巡回のために作りました。
例えば以下のようなシェルスクリプトを書きます。
#!/bin/sh off_flag=1 ifconfig en0 | grep "inet" >/dev/null if [ $? -eq 1 ]; then if [ `wifictl -g` -eq 0 ]; then wifictl -o count=15 while [ ${count} -ge 0 ]; do ifconfig en0 | grep "inet" >/dev/null if [ $? -eq 0 ]; then break fi count=`expr ${count} - 1` sleep 1 done fi else off_flag=0 fi if [ $? -eq 0 ]; then #do something echo "do something" if [ ${off_flag} -eq 1 ]; then wifictl -f fi fi
WiFiがoffの場合、onにして、オンラインになるまでの待ち時間を作っています。
「do something」のところにネットワークに接続する内容の処理を書きます。
これを「wificron.sh」という名前で「/var/root/bin」に実行権を付けて保存したとします。
iPod touch上のターミナル、もしくはssh越しのシェルから、「crontab -e」を実行し、起動したviで以下のように入力します。viの操作は……ググってください。
*/30 * * * * /var/root/bin/wificron.sh
「:wq」で保存して終了すると、以後30分おきにスクリプトが自動実行されます。
WiFiがつながる場所ならば、これでふだんはWiFiをoffにしておいても、スクリプト内でWiFiをonにし、処理が終わったら再度offにするということができます。
元々onだった場合は、WiFiはonのままです。
ちなみに、launchdでもplistの書き方次第でcronのような定期実行ができるはずです。
標準状態ではcronが動いていないかもしれません。
Community Sourceをインストールし、Installer.appからUlctlをダウンロードしてきて、「com.apple.cron」をloadしてみてください。
惜しむらくは、音楽を再生していない状態でロック状態に移行すると、「cronが止まる」ことです。
まあ、所詮はWiFiですし、ままごとですね。でも、こう……なんかwktkしませんか。
この気持ち、共有したい。
ちなみに、野良リポジトリにあるfliteとErica's Utilities収録のplayaudioで音声合成が、また、後でエントリをしますが、拙作のコマンドラインアプリケーションmmpctlでplayaudio後のpause状態から再生状態への復帰が可能です。
これによって、音楽を聴いている最中でも、処理結果を音声合成で、ヘッドフォン経由にてNotificationすることができます。
こういう音声インターフェイスが「来る」んじゃないかと思ってますが、なかなかこれというモバイルデバイスが出ませんね。iPhoneにはそれを期待してたんですけどね。
話題はちょっと変わって以前fliteでローマ字読み上げをしようと思って一生懸命テーブルを作っていたことがあるんですが、濁音辺りで挫折。僕が心の師匠と勝手に仰いでいる「カビパン男と私」さんが、最近「日本語テキスト読み上げ(ガイジン風)」という記事でやってくれてました! これで、ひらがなとかなら読み上げさせることができますね。
ちなみに、fliteで漢字仮名まじり文を読み上げさせようと思ってkakasiをiPod touch向けにビルドしてみたんですが、メモリ不足でターミナルが吹っ飛び、ターミナルが吹っ飛んだ後もkakasiがメモリを食らい続け、最後には強制的に再起動がかかりました。iPhoneDiskでマウント中だったので、そのあおりを食らって母艦までカーネルパニックを起こす始末。くわばらくわばら。
« [Palm]WristPDA用SDK | Main | [iPod touch]曲再生の一時停止、再開、状態取得等ができるiPod touch用コマンドラインアプリケーションmmpctl »
Recent Comments