kmuto’s blog

はてな社でMackerel CREをやっています。料理と旅行といろんなIT技術

「Hi, Gregor」というツールを作った

ルンバがドックの位置に戻っているのに充電されていない、ということがたまにあって地味に気になっていたので、状況を確認するツールを作った。実行指示を送るほうはもっと簡単だったので、ついでに実装している。

github.com

$ node dist/hi-gregor.js status
{"phase":"charge","battery":100}

$ node dist/hi-gregor.js start
{"ok":"start"}
(てれってれー)

$ node dist/hi-gregor.js dock
{"ok":"dock"}
(てれれてってれー)

実装自体は簡単なのだが、TypeScriptの勉強がてらでなるべく綺麗に…と書いていたら1日かかってしまった。

使っているのはroomba-sdkというライブラリだけど、iRobotとは関係ないユーザーによる非公式なもの。なので、クラウドAPIは使えず、ローカルLANのAPIしかない。自宅のほうではSpotify用のWindowsに、WSLでDebianを裏で動かすようにしているので、ここにとりあえずインストールしている。

ともあれ、これはまだ入口で、状態がstop & バッテリが減っている ときの警告をSlackに流したいし、ついでに清掃開始やドックに戻れも指示したい。postは簡単だけどcallbackは全然違う仕組みで、いろいろ面倒くさいところがある。コールバック受けのインターネットサーバー側の実装、さらにローカルLANとのやりとりを考えないといけない。

このあたりはRubyで類似のを実装したことがあるので、まずはそれを流用して、Node.jsだとどう綺麗にできるかは後で考えることにしよう。

なお、名前の由来はフランツ・カフカの『変身』である。我が家のルンバは代々「ザムザ」と呼ばれており、今はザムザ・サードが正式名称。