Raspi2でAsterisk

そういえばRaspberry Pi2を買った目的をすっかり忘れていた。

いまの家に引っ越してくるときに固定電話を廃止して、しばらくは必要を感じていなかったけれども子どもが留守番をする年齢になってきたので簡単に扱える連絡手段を家に置きたくなった、というのが動機だった。電話機は以前使っていたのをまだとってあったのでできればそれを転用したい。

フレッツ光を使っているのでひかり電話を導入するのもテだけれど、VoIPアダプタがレンタルで、回線使用料も合わせて毎月費用がかさむのもしゃくだったので、なんか別の手段がないかと思ったときにストレスがたまっていたのも後押しして衝動買いしたのだった。

少し調べてみるとAsteriskひかり電話SIP内線対応するという例はいっぱい見つかったのだけれど、前述の理由でひかり電話は使いたくない。ということで他のサービスを調べてみると、フュージョンのIP-Phone SMART、NTT Comの050 plus、ブラステルの050 Freeなどがある。

050 plusは月額料金がかかるのでとりあえず試してみる分にはIP-Phone SMARTもしくは050 Freeがよさげでどちらもちょっと検索すればAsteriskに接続する方法が見つかる。今回はBrastelにさくっとサインアップして、Asteriskで着信を受けられるようにしてみた。手順は下のページに詳しい。

UbuntuでAsteriskを構築し「ブラステル」を登録する(CuBox-i2使用) | 自己満 備忘録

次のステップはVoIPアダプタを手に入れてアナログ電話機をつなぐところで、これができるといわゆる家電話として使えるようになる。着信だけだと買い切りのアダプタ代だけで定額費用はかからないし、発信する場合でもプリペイドでそれなりに安いので安心。狙い目はHT702あたりか。

www.amazon.co.jp

Raspi2で温度センサー

MCP9700Eという温度センサーから読んだ値をMPC3002というA/Dコンバータを通して読むというのをやってみた。

 
MPC3002はSPIというプロトコルインターフェイスを使う。これを話すには
 
* 直接GPIOを叩く
* Pythonならspidev、Rubyならpi_piperなどのSPIを実装したライブラリを使う
 
他にはI2Cを使うチップもあるらしいけど手元にないのでまた別の機会に。
 
はじめはRubyでpi_piperを試してみたけれども、ポートに書き込んだ途端にプロセスがフリーズするのでしばらく悩んだ。ハードウェアの故障を疑ったけれど、spidevを入れるとあっけなく動く。pi_piperは現行バージョンがかなり古いので、raspberry pi2対応がまだなのかもしれない。
 
温度センサーを読めたのはいいものの、値がいまいち信用ならない(5月上旬の午後で27℃をレポートしてくる)ので条件を変えて再度試してみよう。
 

Raspi2続き

サンデープログラミングとして、Raspi2オンチップの温度センサーを読んでtwitterに書く、というのをやってみた。

温度センサーは /sys/class/thermal/thermal_zone0/temp を読むと100倍した値が返ってくる。

twitterに書くのは Tweeting Babbage | Raspberry Pi Learning Resources にあるとおり、pythonのTwythonモジュールを使うのが手っ取り早い。

from twython import Twython
from auth import (
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret
)

twitter = Twython(
    consumer_key,
    consumer_secret,
    access_token,
    access_token_secret 
)

def main():
    f = open("/sys/class/thermal/thermal_zone0/temp", "r")
    for t in f:
        message = "my temperature is " + t[:2] + "." + t[2:5] + "C right now"
    twitter.update_status(status=message)


if __name__ == '__main__':
    main()

Raspberry Pi 2

OSXイメージを焼いてドングル経由でWiFiにつなぎ、apt-get update/upgradeしたりtightvncserverを入れたりするところまでやった。

SDへのアクセスがなぜか不安定で、ブート時にI/Oエラーでカーネルパニックすることがある。イメージを焼き直したりフォーマットしてみたりしても起こるときは起こるが、SDカードを抜き差ししてみたり置き方を安定させたりすると動作も安定する…気がしている。

何に使うか考えもせずに買ったけれど、Minecraft PIやMathematicaが無料で使えるし、Scratchも入っているのでしばらくソフトウェアだけでも遊べそう。カメラなり温度計なりをつないでIoTっぽいこともいずれは試してみたい。

SoundTouchの小技

  • AUXボタンを15秒長押しすると再起動できる
  • OSXでAirPlay出力先として選択できなくなった場合、sudo killall coreaudiodを実行すると治る…かもしれない

あと、ファーム7.2でOSXからAirPlayを使っていると、一度オーディオ出力を止めた後しばらく放っておくとcoreaudiodがsyslogに

[AirPlay] ### Audio buffer full for write: 2048 > 0

というメッセージを吐いて音が出なくなる。この場合はAUXボタン長押しで再起動するしかなさそう

追記: 3/3のアップデートで修正されたとのこと

最近のSleepio

始めてから何週間経ったかもう数えていないけれど、sleep diaryはまだ続いている。 記録を付けているが効果あったのかどうかは何とも言えないけれど、以前ほど期待してないタイミングで目が覚めてそのあと眠れなくなる、ということは減った。それこそが認知行動療法…の効果なのかもしれない。

iPhoneアプリで使っている限りではここまでIn-App Purchaseを求められることはなかった。そもそも支払うことでどういう機能が使えるようになるのかも分からないし、無料の範囲でできることでも必要なことはできる気がする。

結論として、眠りに満足できていない人で英語に抵抗のない人にはおすすめできるかなあ…と思っております。

Sleepio week1

眠りについては仕事のテンパり具合もあって相変わらず不安定だったけれども、週の後半はマシだったような気がする。やったこととしては、一週間sleep diaryをつけたというのと久しぶりに早朝ジョギングに出たということ、あと時間があるときは瞑想トレーニングをしたということ。

Sleepioは一週間の間Profの講義がロックされていて、昨日の時点で新しいコンテンツがアンロックされていた。

  • カフェインの影響
  • アルコールの影響
  • 寝室の影響(ベッド、ライト、温度)
  • 眠るための体操

などが新しい講義の内容。今週の目標も決められていて、最適な就寝時間と起床時間、午後4時以降カフェインを摂取するな、午後6時以降アルコールを摂取するなといった具体的なターゲットを提案された。ただ、アルコールの時間制限はちょっとムリ(><)。

仕事の進捗とかも気分に関係してくるところは大きいと思っているのでSleepioとの因果関係がどれくらいあるかはまだわからないけれど、始めたときより目覚めたときの感覚も日中の気分も良くなってきているのは確かなので、もう少し続けてみようと思っている。