ワテのブログ

The fundamental things apply As time goes by.

2014年1月27日月曜日

リモコン・データベースのデータをIRKitのjson 形式に変換する

スポンサーリンク

リモコンデータベースを見つけました。
iRemo2 リモコン・データベース - FUTABA HOME
素晴しいことにデータをXML形式でダウンロードできます。

このXML形式のデータをIRKitのjson形式に変換できれば自分でIRKitにリモコンを向けてボタンを押してコードを登録する作業をせずにIRKitを活用できるかもしれません。

ということで、変換プログラムを作成してみました。

XMLのデータはShift_JISエンコードです。そのまま読むとエラーが発生したためUTF-8に変換してからプログラムに読みこませます。

$ iconv -f SHIFT_JIS -t UTF-8 iremo.xml | gosh rdbxml2irkitjson.scm

出力形式は

<ボタン名>:<json>

です。
以下出力の具体例。

*Page1
電源:{"format":"raw","freq":"38","data":[7000,3400,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,2600,1000,2600,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,1000,1000,2600,1000,2600,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,2600,1000,2600,1000,14000]}
CH−:{"format":"raw","freq":"38","data":[7000,3400,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,2600,1000,1000,1000,2600,1000,1000,1000,2600,1000,2600,1000,2600,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,2600,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,1000,1000,2600,1000,1000,1000,1000,1000,2600,1000,14000]}

試しに電源ボタンのjsonでIRKitから送信したらテレビの電源が入りました。(しかし、時々反応しないときがあります。その場合、一度テレビ付属のリモコンで電源を操作するとIRKitから操作できるようになります。理由は不明です。)

ソースコードはこちら(Github)

スポンサーリンク

2014年1月25日土曜日

Thunderbirdでメールを回送する

スポンサーリンク

仕事上メールを回送(リダイレクト)したい時があります。
長らくThunderbirdでは回送ができないと信じていたのですが、そんなことはありません。
なんと回送用のアドオンがありました。

ちなみに回送と転送の違いは

  • 転送

    差し出し人は転送をした人のメールアドレス

  • 回送

    差し出し人は元のメールの差し出し人のメールアドレス

です。
回送するとあたかもメールが直接その差し出し人から届いたように見えます。

で、そのアドオンはこちらです。

Mail Redirect :: Add-ons for Thunderbird

便利です。

スポンサーリンク

IRKitのjsonについてのメモ

スポンサーリンク

IRKitのjsonのdata keyについて下記のように説明されています。

赤外線信号は、サブキャリア周波数のオン・オフからなります。IRKitデバイスはオン→オフ間の時間、オフ→オン間の時間を 2MHz のカウンタで数えます。dataには、カウンタで数えた数をオン・オフの回数分ならびます。

正直、一回読んだだけでは意味がわかりませんでしたが調査した結果、理解できました。

参照サイト

  1. 赤外線リモコンの通信フォーマット

赤外線リモコンは赤外線ランプのオンオフの繰り返しでデータを表現します。オンになっている時間、オフになっている時間の違いでデータを区別します。
例えば、家製協(AEHA)フォーマットでデータの始まりを表わすLeaderはオンになっている時間が425μs * 8 = 3400μs、オフになっている時間が425μs * 4 = 1700μsで表現されます。[1]

ここでjsonのdata keyの説明を読むと

IRKitデバイスはオン→オフ間の時間、オフ→オン間の時間を 2MHz のカウンタで数えます。

と書いてあります。つまり、赤外線がオンになって オフになるまで、オフになってオンになるまでの間の時間を2MHzのカウンタで数えているということです。2MHzは1 / 200,000s = 0.5μsですので0.5μsに一回カウントされます。
例えば、家製協(AEHA)フォーマットのLeaderですとオンからオフまでの時間が3400μsです。これを2MHzのカウンタで計数すると0.5μs毎にカウントされるので3400μs * 2 = 6800カウントとなります。
同じくオフからオンまでの時間は1700μsですから1700μs * 2 = 3400カウントとなります。

そして、

dataには、カウンタで数えた数をオン・オフの回数分ならびます。

とあるので、このデータをjson で表現すると、

[6800, 3400]

という配列となります。

さて、[1]にはLeader以降のCustomer CodeやParityやData0…がありますが、これらはbit列で表現されます。bitはData bitで表現されます。0はオンの時間が425μs、オフの時間が425μs。1はオンの時間が425μs、オフの時間が1275μsです。これをカウントで表現すると0は[850, 850]、1は[820, 2550]となります。

ここまでくればもうおわかりかとおもいますが、まとめると

カウント = μs * 2

です。
そしてdata keyはこのカウントの配列です。

関連項目

スポンサーリンク

2014年1月21日火曜日

IRKit APIメモ

スポンサーリンク

IRKit APIの使い方のメモ

IRKitのIPアドレスをみつける

このコマンドでIRKitのInstance Nameを取得

$ dns-sd -B _irkit._tcp

Instance NameからIPアドレスを取得

$ dns-sd -G v4 <Instance Name>.local

Instance Nameに.localをつけるのを忘れずに。

IRKitが受信したIRコードを取得する

IRKitが最後に受信したIRコードを取得する。
IRKitの近くでリモコンのボタンを押すとIRKitがピカピカっとする。
ピカピカっとした時にIRKitはリモコンからのIRコードを受信している。
そのデータをJSON形式で取得することができる。

$ curl -i "http://192.168.0.6/messages"

そのIRコードを送信したければ受信したJSONをhttp://192.168.0.6/messagesにPOSTしてやればよい。

$ curl -i "http://192.168.0.6/messages" -d='<json>'

関連項目

スポンサーリンク

2014年1月18日土曜日

IRKitを使ってみた

スポンサーリンク

2014/01/18 IRKitが届きました。
IRKitは赤外線で家電を自由に操作できるアプリを作成するためのキットです。
IRKit

エアコンを切り忘れてでかけてもiPhoneから切るといったことができる夢のデバイスです。
ほんと、なんど家にもどってエアコンを確認したことか。
これがあれば家にもどらなくてもいい。心配しなくてもいい。
iPhoneでピッってやればエアコンが切れるのです。
素晴しいです。

とりあえず写真です。

パッケージの写真
enter image description here

本体
enter image description here

大きさ比較(綾鷹は280mlのやつ)
enter image description here

まずは設定。マイクロUSBをIRKitにさして電源On。
iPhoneにはIRKitシンプルリモコンをインストール。
それで設定っていたいどうやってやるんだろうこのシンプルな筐体でとおもっていたらそういうことですか。
モールス信号ってそういうことですか。
その発想はなかったわ。
おもわず綾鷹吹いたwww。

リモコンアプリはとてもシンプルです。
使いかたも簡単。
ボタンの追加をえらんでIRKitにむけてリモコンの登録したいボタンを押せば登録完了。
登録したボタンをタップするとIRKitからその信号が送信されるという仕組み。

さっそくエアコンでためしてみた。

エアコンのオン、オフをアプリに登録したの図
enter image description here

ちなみにエアコンのリモコンには「運転/停止」というボタンが一つあるだけです。
信号一つでトグルになっているのかとおもいきや信号は別になっていました。
エアコンのリモコン上でエアコンが切れていることになっている時に発信される信号が電源Onの信号で、エアコンが動作していることになっている時に発信される信号が電源Offの信号です。

そしてiPhoneでOnをタップすると。
エアコンからピッ!という音がして起動した。
あたりまえのことですが、すごい!。
次にOffをタップするとエアコンが切れます。すごい!
さらにエアコンをつけっぱにして外出。
iPhoneでOffをタップして帰宅。
エアコンが切れていた!
これはすごい。
エアコンでこんなんに感動できるとは思わなかった。

まとめ

  • 本体は小さくてデザインも良い
  • 設定時のモールス信号がおもしろい
  • アプリもシンプルで良い
  • 青色LEDが眩しい(設置場所によると思いますがもう少し小さなLEDで良いかなぁと)
  • エアコン操作だけでも感動できる

関連項目

スポンサーリンク

2014年1月17日金曜日

wxWidgets 3.0.0用のVagrantfileを作成した

スポンサーリンク

wxWidgets-3.0.0を使ったGUIアプリ開発用のVagrantfileを作成したのでメモ。
Ubuntu 12.0.4にubuntu-desktopを導入後、g++とgtk2.0をインストール、その後wxWidgets-3.0.0をインストールする。
v.gui = true
でGUIが起動する用にしている。(Virtual BoxのGUI)
GUIが不要であればこの値をfalseにすればよい。

wxWidgetsはスタティックリンクでUnicodeとwxGraphicsContextをオンにしている。

# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
  config.vm.synced_folder "../", "/develop", \
        create: true, owner: 'vagrant', group: 'vagrant', \
        mount_options: ['dmode=777,fmode=666']

  config.vm.provider :virtualbox do |v|
    v.gui = true
  end

  config.vm.provision :shell, :inline => <<-EOT
    apt-get update -y
    apt-get install -y ubuntu-desktop
    apt-get install -y g++
    apt-get install -y libgtk2.0-dev
  EOT

  config.vm.provision :reload

  config.vm.provision :shell, :inline => <<-EOT
    rm -rf wxWidgets-3.0.0*
    wget ftp://ftp.wxwidgets.org/pub/3.0.0/wxWidgets-3.0.0.tar.bz2
    tar xvfj wxWidgets-3.0.0.tar.bz2
    cd wxWidgets-3.0.0
    mkdir -p ubuntu
    cd ubuntu
    ../configure --disable-debug --disable-shared --enable-unicode --enable-graphics_ctx
    make
    make install
  EOT

end
スポンサーリンク

2014年1月13日月曜日

バフ掛け

スポンサーリンク

バフ掛けとは金属表面を研磨してピッカピカにする作業のことである。 バフ研磨ともいう。
iPodの裏面を想像していただくとわかりやすいです。
DMMの3Dプリントサービスでたのんだチタンの物を研磨するためである。
レーザー焼結なので表面が荒々しい。
インターネットでてきとうに調べたところバフ掛け以下のような手順らしい。

  1. 耐水ペーパーで研磨
  2. 青棒で研磨
  3. コンパウンドで研磨

2と3でバフを使うのでバフ掛けというらしい。
バフとはなんかの毛のかたまりである。
これに研磨剤をつけて磨くのである。
だからバフ掛けというらしい。

耐水ペーパーとは金属用の紙やすりである。
水でながしながら使う。
番号が小さいほど目が荒い。
基本的には番号が小さいものから順に研磨していく。

青棒とは研磨剤で青い棒である。
酸化クロムと油脂の固まりである。
これをバフにこすりつけてからバフで物を研磨する。

コンパウンドとは、ピカールとかグラノールといった商品がある。
私はグラノールを買いました。
青棒より粒子が細かい。

バフ掛けは手作業でもできますが、ルーターを使えば便利である。
ルーターとはドリルみたいなもので主に工作用途である。

ちなみに耐水ペーパーはダイソーに売っている。
105円(税込)である。
3枚入っていて#220、#360、#600、#1000の四種類が入っている。
青棒もダイソーにある。
ミニルーターがダイソーになかったのでAmazonで発注した。

いまのところ耐水ペーパー掛けまでしかやっていないが輝きはじめている。

スポンサーリンク

2014年1月11日土曜日

コンテナ物語を読んだ

スポンサーリンク

あらすじ

コンテナのはなしです。 船ではこばれているコンテナのはなしです。 むかしはコンテナはありませんでした。 船への積み下ろしは人間が行なっていました。 荷物はばらばらで運ぶのもまとめるのも大変でした。 嵐で荷崩れすることもありました。 荷物を失敬する人もいました。 だから、大きな箱(コンテナ)にまとめてから運搬すれば楽だし効率がいいんじゃね?という発想がありました。 でも普及していませんでした。 コンテナが普及したら船への積み下ろし(荷役)をしている人々の仕事がなくなります。 職にあぶれます。 そりゃ反対しますよ。 それにコンテナをはこぶ専用の船、港にコンテナを積み下ろしするための設備を新に構築しなればなりません。 お金がかかります。 マルコム・マクリーンという大変合理的で勇敢な方がいてコンテナ船をつくって運用する人があらわれました。 大変効率的でした。 反発も色々ありましたがベトナム戦争でその威力がみとめられコンテナが普及しました。

感想

物流はシステムで、効率化が利益に直結する。 ITと相性のよさそうな分野である。

そして、イノベーションは簡単ではないということ。 既得権益者からの反発や法律の問題など前進を拒むものはたくさんある。 それでも最終的には合理的なものが選択されると信じたい。

個人的には今後の物流は自動化がいっそう進むとおもう。

  • コテンナ船の自動運転
  • トラックの自動運転
  • ドローンによる自動配送

ドローンが荷物をかかえて空を飛び交う様はまるで映画のようだ。

スポンサーリンク