Roomba(ルンバ) のお掃除状況を飼い猫に鳴いてもらう

こんにちは、NHNテコラス株式会社 UIT室 NUIチーム フロントエンドエンジニアのumeです。
NHNテコラスではCARTSTARなどEC事業のフロントエンド開発全般を行っています。
最近 Roomba 980 を購入しました。
毎朝出勤時間の10分前に Roomba が掃除を開始するのを見届けてから家を出るのですが、
夜に帰宅するとRoombaが玄関やリビングで力尽きていることが多いです。
これではRoombaが心配で仕事に集中できません。
Roombaのために「家族の安否確認のため早退したいです。」とはさすがに言えないので、
掃除の「開始」「完了」「エラー発生」が起きた時に、Slackに通知が飛ぶ仕組みを作りました。
我が家では、猫(Raspberry Pi + Hubot)を飼っていたので、
飼い猫にRoombaを操作・完了報告をしてもらうことにしました。
<理想 (YouTubeより引用)>
<現実>

飼い猫の@hubonyanに 毎朝8:45に掃除が始まるようにしつけをして、
時間になったら@hubonyanから掃除開始をAPIにRequest、Responseが無事返ってきたら、
Slackで鳴いてもらいます。
そして、掃除開始から30分ほどたったら再度APIにリクエストしてもらい、
掃除状況を確認してもらいます。
このとき、まだ掃除中(run)だったら、5分間隔で確認しにいってもらい、
Docに帰り着いている状態(charge)であれば、
「掃除が完了しました」とSlackに鳴いてもらっています。
また、Slackに「@hubonyan:ルンバはどんな感じ?」のように投稿すると
現在のRoombaの状態を教えてもらえます。
###
hubonyan に Roomba の状態をうかがう
@hubonyan:ルンバはどんな感じ?
###
robot.respond /(ルンバはどんな感じ?|お手|status)/, (msg) ->
method = 'getStatus'
BLID = 'xxxxxxxxxx'
ROBOTPWD = 'xxxxxxxxxx'
IROBOT_API = 'xxxxxxxxxx'
data = 'blid=' + BLID + '&robotpwd=' + ROBOTPWD + '&method=' + method
msg.http(IROBOT_API)
.header('Content-Type', 'application/x-www-form-urlencoded')
.post(data) (err, res, body) ->
json = JSON.parse body
json_robot_status = JSON.parse json.robot_status
switch json_robot_status.phase
when "charge"
msg.send "Docにて充電中ニャー"
when "run"
msg.send "清掃中ニャー"
when "stop"
msg.send "一時停止中ニャー"
when "hmUsrDock"
msg.send "Docへ帰宅中ニャー"
when "stuck"
msg.send "問題発生ニャー!"
msg.send "エラーコード:" + json_robot_status.error
else
msg.send "やばいまじで何か起きた!Helpme!"
return
return
Roombaにエラーが発生(stuck)しているとエラーコードが返ってくるので、
なぜRoombaがとまってしまったか詳細な理由を知ることもできます。
ルンバ900シリーズ エラーメッセージ

これで安心して仕事ができますね。
テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!
Follow @twitterRecommends
こちらもおすすめ
-
オーディオプレイヤーをIoTで再デザインする
2018.12.19
-
「Hey Siri 掃除をして」で、Roomba(ルンバ)に掃除をしてもらう
2016.4.22
-
新卒 IoT 女子、自称やめるってよ
2016.7.20
-
私はこうやってslackを社内で流行らせました
2016.2.5
Special Topics
注目記事はこちら
データ分析入門
これから始めるBigQuery基礎知識
2024.02.28

AWSの料金が 10 %割引になる!
『AWSの請求代行リセールサービス』
2024.07.16