勉強しているものを無理矢理つなげるシリーズ、第二弾です
※ちなみに第一弾はこちら↓
いい意味で 「技術の無駄使い感 」が大好きです^_^
— Masaru Hiroki (@baborin) 2018年5月15日
ありがとうございます。調子にのります♪
今回は以下を繋げてみました。
・ドローン(Tello)
・MAMORIO
・Raspberry Pi
・SORACOM Air
・SAP ERP
【経緯】
・Raspberry Piで何かやりたかった
・SORACOM Airを使いたかった
・SORACOMの玉川社長がSAP TechJamで持っていたドローン(Tello)を触りたかった
・ブログ的にSAPを使わないといけない気がした
ドローン(Tello)はこちら
【国内正規品】 Ryze トイドローン Tello Powered by DJI
- 出版社/メーカー: DJI
- 発売日: 2018/03/30
- メディア: Camera
- この商品を含むブログ (3件) を見る
SORACOMは、こちらを使用しています。
※SORACOMに関する過去記事はこちら
【仕様検討】
さて、今回のデモ内容の検討です。
ドローンを飛ばして、Raspberry PiからSORACOM経由でデータ飛ばして、SAPで何かする。。。
SORACOM Beamを使って、SAP Cloud Platformに飛ばして、そこでゴニョゴニョがカッコイイなと思ったのですが、私の現時点での技術力が足りず。。。
なので、まずSAPはERP(オンプレ)を採用。
SORACOMは、SORACOM Airでデータを送信するだけとする。
ドローンを飛ばすのだから、位置情報を使って何かしたいなと思いましたが、実装方法が思いつかず悩みました。Raspberry Piをドローンに載せて飛ばす必要があるのかなとか、落ちたら壊れちゃうかなとか。
悩んでいた中、先日参加したIBMイベント「Think Japan」にて、首から下げる受講票にBeacon機器がついていたので、これだ、と。
Beaconをドローンに載せて位置情報を発信、Raspberry Piで受信することに決定。
(Beaconは固定された位置から発信するものだと勝手に思い込んでいました)
Beacon発信について調べてみると、以前から別で気になっていた忘れ物防止の「MAMORIO」が使えそうだったのでこれに決定。
MAMORIO S マモリオ エス Black&Black 世界最軽・最小・最薄クラスの紛失防止タグ/Bluetooth/
- 出版社/メーカー: MAMORIO
- メディア: エレクトロニクス
- この商品を含むブログを見る
上記で検討した内容をもとに、SAP ERPで行える処理を考えてみたところ、在庫管理モジュールでの在庫移動が簡単に実現できそうだなと。
そこで、上記をつなぎあわせた「プラント内の在庫移動を想定したデモ」をやってみようと思いました。
つなげたイメージはこちら
つなげたイメージはこちら
なんのこっちゃですよね。
ざっくりですが、今回のデモの手順は以下
- 保管場所Aから保管場所Bにドローンで品目を移動
- 保管場所Bで、ドローンに載せているMAMORIOのBeaconを受信したら、Beacon情報をGmail(添付ファイル付き)で送信
- SAPサーバ機でGmailの添付ファイルを取得
- 添付ファイルの情報をもとに、SAP ERPで入出庫伝票登録(在庫転送)
【検討補足】
ネットワーク
・保管場所B内のWifiでRaspberry Pi⇔SAPサーバを通信するとSORACOMを使用しないで済みますが、今回はあえてSORACOMで。
・SORACOMの別サービス(Canal?)や、中継サーバを用意することでRaspberry Piを固定IP⇒サーバからのSSH接続ができそうだが、今回はパス(勉強不足)
SAP ERP
・保管場所は同一プラント内に存在する想定で、保管場所転送を行う
・品目のロット:Mamorio = 1:1 を前提とする(移動前の保管場所に存在するロットの全数量を移動)
自動化
・可能な限り実装する (Raspberry Piでの処理、サーバ機のファイル取込、SAPのプログラム実行)
品目の選定
・せっかくなので、ドローンに何か品目を載せよう。重いとドローンの飛行に影響がありそうなため、小さくて軽いもの。「小さくて軽くてみんなが知っているもの」を想像したらチロルチョコが浮かんだので、こちらを採用
言い訳
・色々無理があることは十二分に承知
・そのうちQiitaにまとめ、、たい気持ちはあります
さて、実装します
【実装】
以下の内容で実装。
※実装時、以下の値を使用
保管場所A = '0100'
保管場所B = '0200'
ドローン(Tello)の制御
保管場所Aから保管場所Bへの飛行をプログラミングで制御します。
使用したのは、iOSアプリの「DroneBlocks」
こちらを参考にさせていただきました↓
このような制御に(保管場所間の距離は短めに)
飛ばしたドローンはこちら。
Telloに、チロルチョコとMAMORIOを載せてます。
※重さによる飛行への影響はあったのかな?
Tello = 80g
チロルチョコ = 3g
MAMORIO = 3g
動画はうまくとれなかったので、そのうち、、
保管場所Bへの移動の検知
市販のMAMORIOを使用。
MAMORIO S マモリオ エス Black&Black 世界最軽・最小・最薄クラスの紛失防止タグ/Bluetooth/
- 出版社/メーカー: MAMORIO
- メディア: エレクトロニクス
- この商品を含むブログを見る
MAMORIOのBeaconをRaspberry Piで受信(Node.js使用)。
MAMORIOの距離がRaspberry Piに近くなったら、ファイルに情報を書き出す。
こちらを参考にさせていただきました↓
RaspberryPi3でMAMORIOの信号を受信する - uepon日々の備忘録
Raspberry PiでiBeaconを受信する(Node.js + bleacon)
ファイル項目は「MAMORIOの個体情報(uuid/major/minor)」と「入庫先となる保管場所のコード(固定値)」。
MAMORIOの個体情報については、以下参照
MAMORIOが届いたので解析したかった - もみあげあしめ
※以下、上記より引用
iBeacon本体のデータ構造
値 割り当て内容 備考 b9407f30-f5f8-466e-aff9-25556b57fe6e UUID 企業・組織の識別 0xBE49 Major iBeaconのグループ 0xF747 Minor グループ内のID 0xB5 RSSI 1m 地点で -75dB
Raspberry Piの電源は、モバイルバッテリーを使用。ディスプレイの電源はRaspberry PiのUSBポートからとってます。
保管場所Bへの設置イメージはこんな感じ↓
移動情報ファイルの送信
Raspberry Piで受信した位置情報をファイルに書き出し、SORACOM AirでGmail送信。Gmail送信は、Pythonで。
※Cronで定期処理化
こちらを参考にさせていただきました↓
node.jsからExcelのCSVやTSVファイルを書き出す方法を解説します
Cronの使い方 - Raspberry Pi 3 & Python 開発ブログ☆彡
実際のGmailはこんな感じ
添付ファイルは、これ↓
移動情報ファイルの受信
サーバにて「Mail Attachment Downloader」を使用し、Gmailの添付ファイルをサーバに転送。
Mail Attachment Downloader の評価・使い方 - フリーソフト100
※「Mail Attachment Downloader」のスケジュール機能で定期処理に。
こんな感じ
引き続き、SAP ERPの実装を行います
SAP ERPの在庫転送
アドオンテーブルとプログラムを作成。
アドオンテーブルで「Mamoriteの個体情報(uuid/major/minor)」と「品目/ロット」の紐付けを管理。
アドオンプログラムの処理は以下(最低限の処理のみ)。
- ファイル読込
- 品目情報取得
- BAPI_GOODSMVT_CREATEを実行し、入出庫伝票を登録
入庫先の保管場所は、ファイルより取得。
出庫元の保管場所は、テーブルMCHBより取得(品目のロット:Mamorio = 1:1の前提より)。
入出庫伝票登録については、このへんを参照
入出庫予定を使用しないワンステップ処理: 保管場所 (SAP ライブラリ - 商品ロジスティクス)
アドオンテーブル
プログラム実行前の在庫
アドオンプログラム実行
登録した入出庫伝票
プログラム実行後の在庫
ということで、無事に在庫移動ができたので、デモ終わり。
最後まで繋げることができました。
最後までお読みいただき、ありがとうございました。
感想等ありましたら、コメント欄もしくはTwitterでお待ちしております。