LoginSignup
16
8

More than 1 year has passed since last update.

毎日の点検が楽になるLINE Botを作ってみた

Last updated at Posted at 2022-09-07

こんにちは、仕事で食品検査を担当しています
入社してまもなく半年、デジタルに関する知識はほぼ0ですが、家の遠い私が定時で帰宅するために業務の効率化ができないか模索しはじめました(笑)
今回デジタルで解決できそうなプチ課題があったので、取り組んだ過程を紹介したいと思います

1.取り組み背景
2.使用ツール
3.実施内容

3.1. ベース作成
3.2. ちょっと応用
3.3. 実戦
3.4. 思わぬ落とし穴
3.5. 完成品

4.今後の課題

#1. 取り組み背景
検査室には多数の冷蔵庫、冷凍庫があります
検査の信頼性を保つためにも、きちんと設定温度通り動いているか、毎日作業前と作業後に点検をする必要があります
しかし、この点検方法が各機械の前に行って、おんどとり(温度計とデータ記録が一体となった小型の機械)を確認し、紙の点検表に記載するというアナログのものでした
おんどとりには、無線で温度データを確認できるという機能がついています
ボタン一つで点検作業ができたら楽で時間削減になると思い、プログラミングの知識がなくてもそれっぽいものができるMakeとLINEを使って、自動点検LINE Botを作成してみました

#2. 使用ツール
Make
LINE
おんどとりAPI https://ondotori.webstorage.jp/docs/api/
Google spreadsheets(記録用)

#3. 実施内容

3.1ベース作成
まずおんどとり1台分の現在の温度を返信するBotを作ります
スクリーンショット 2022-09-07 22.39.36.png

Botの作成方法やMakeとの接続方法については省略します
HTTPモジュールに、おんどとりAPIホームページに記載されている項目をいれていきます
Request contentに、アカウント情報や動かしたいおんどとりの情報、やってほしいことをJSON形式で入力します
API KEYが必要になりますが、こちらのやり方はホームページに書かれています
まずはこの状態で返信用LINEモジュールとつなぎ、Dataが返ってくるようにします
スクリーンショット 2022-09-07 22.51.17.png
スクリーンショット 2022-09-07 22.52.33.png

返信メッセージは下のような訳のわからない英数字の羅列に見えますが、Parse JSONというモジュールを使ってこの羅列を読み取ると、本来の意味にわかりやすく変換してくれます
{"devices":[
{"num":"6","serial":"528237D8","model":"RTR502B","name":"50-EB326(2\u2103~8\u2103)","battery":"5","rssi":"3","time_diff":"540","std_bias":"0","dst_bias":"0","unixtime":"1662409159","channel":[{"num":"1","name":"","value":"4.3","unit":"C"}],"baseunit":{"serial":"58580787","model":"RTR500BW","name":"RTR500BW_58580787"},"group":{"num":"1","name":"Group1"}}
]}
あとは返信メッセージに、確認したい温度valueをいれれば完成です

スクリーンショット 2022-09-07 22.54.56.png

RPReplay_Final1662559418_MP4_AdobeExpress.gif

これだけのことですが、希望の返事がきたときは、初心者の私にはかなり嬉しいできことでした

2ちょっと応用
次にこれをちょっと発展させます
LINEのメッセージでデータを確認するのもいいですが、記録は保管する必要があり、従業員全員が閲覧できる形で残さなければなりません
このままでは帰ってきた温度データを点検表に転記するという手作業が発生します
そこでSheetモジュールを使用して、記録も自動でやってしまおうと考えました
Sheetモジュールは複数の種類があり、目的に合わせたものを選択します
ここでは行を追加するというものでやってみました
使用するSpreadsheetを選択し、どこの列に何をいれるか指示します
私には、表をファイル形式や画像形式で送る術はなかったので、返信は点検完了しましたというシンプルなテキストにしました
動画、写真は後ほどでてくるものと同様なので割愛します

3実戦
では本命の検査室の冷蔵冷凍庫(15台)のデータを一度に表にするという作業に挑戦します

複数台のデータを得る方法として、ホームページでも紹介されていた、カンマで並べてリクエストする方法、おんどとりごとにHTTPモジュールを作る方法があります
前者がシンプルで簡単だと思ったので、試してみました
スクリーンショット 2022-09-07 23.15.37.png

ん?同じ温度?
念のため、Webでデータを確認するも明らかに違う温度を表示しています
原因はわからないけどメッセージをわけてみたらうまくいくかなと思い、試すも今度はエラー発生
LINE Botのリプライトークンは一度しか使えないのだそうです(そんな多分基本的なことも知らないレベルです汗)
仕方ない、見栄えは美しくなくても動けばいい、力技でつなげるべし!とひたすら単純作業を繰り返しました

いけー
画面収録_2022-09-07_23_22_58_AdobeExpress.gif

けなげに一つづつ動いていのがかわいいです
無事返信もきました
恐る恐るシートを開くと、、、

おお!できてる!
がんばったかいがあったなと、シートを横にスクロールしたところ
ん?シートが途中までしか埋まっていない
なんで10個しかデータ出てないの?という緊急事態に
Makeに戻ってエラーコードを確認してみると、
「APIの利用上限を超過しています」
・・・
あ!

4思わぬ落とし穴
そういえばホームページにこんなこと書いてあったけど、何言ってるかわからずスルーしていました
スクリーンショット 2022-09-07 23.29.53.png

つまり青色のモジュールは、このAPIの場合2分間で10回までしか使えないということです
あんなにがんばってつなげたのに
と悲しみ、困っていたところ、ともにデジタルに関する勉強をする方から「引数」というワードを教えてもらいました
これはプログラムに渡す追加の注文のようなものだそうです
つまり、おんどとりの個別のデータをもらえるかもということで
レッツ引数チャレンジ!
JSONの右上の1を押してどのおんどとりにどの引数が割り当てられているか確認、シートモジュールの希望列のところにvalueを選択し、間に引数をいれます
スクリーンショット 2022-09-07 23.26.21.png
スクリーンショット 2022-09-07 23.26.40.png

これで準備完了です

5完成品
最終結果がこちら
saisyuu.png

RPReplay_Final1662560748_MP4_AdobeExpress.gif

画面収録_2022-09-07_23_28_51_AdobeExpress.gif

別の動画ですが、同時に起こっている現象です

ぎちぎちのに比べてかなりシンプルになりました
プログラミング言語や仕組みがなにもわからない私でも、それっぽいものを作ることができました!

#4. 今後の課題
完成翌日、気分ルンルンで上司に報告したところ、
データで温度を確認するからには一点のみの記録でなく、前回の点検時からの動態をみるべきだよね、あと冷蔵冷凍庫だけじゃなくてインキュベーターにも使いたいよね
というフィードバックをいただきました
うう
でもおっしゃる通り、それにこのAPIには指定した一定期間のデータを得るという機能もついています
スクリーンショット 2022-09-07 23.37.22.png

時間を指定するのに必要な“Unisextime”への自動変換など、まだわからないところもありますが、今後の課題としてチャレンジしてみようと思います

以上日々の点検業務をちょっと楽にするかもしれないアイデアでした
世の中には数えきれないほどたくさんのAPIが存在しているようなので、今回の知見をいかしながらまた他のものにもトライしてみたいです
読んでいただきありがとうございました

16
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
8