オンプレ

MotionBoard

MotionBoardDr.Sum

※Dr.Sum Ver 5.5 で追加されたDS Scriptを含みます。

MotionBoard×Dr.Sum×Pythonの連携とは?

Dr.SumとPythonを連携させる方法をご存じの方は多いかもしれませんが、MotionBoardと組み合わせた活用方法はご存じでしょうか?

本記事では、MotionBoard×Dr.Sum×Pythonの連携方法を解説します。具体的には、MotionBoardで入力した文字をDr.Sumに渡し、Pythonのライブラリを使ってQRコード化し、MotionBoard上に表示する方法を紹介します。

このように、製品間のスムーズな連携を実現することで、データ活用の幅が広がります。

例えば、QRコードを発行する作業の業務改善や、QRコード印刷業務を省きペーパーレスに大きく寄与することができます!

 

前提

Python連携とは

本記事でのPythonはDr.Sumのサーバー上で動くものです。Dr.SumのPython連携機能とは異なります。
Dr.SumのPython連携の詳細はマニュアルを参考にしてください。

Dr.Sumマニュアル:Pythonプログラムとの連携

 

またDr.SumのPython連携を使用した記事はこちらです。

 

サーバー環境

本記事ではDr.SumとMotionBoardを同一のサーバーにインストールしている前提です。それぞれの連携はlocalhost連携をしていますのでご了承ください。

 

必要な環境、推奨知識レベル

必要な環境、推奨知識レベルを下記に記載します。

Pythonライブラリのインストール等は下記を参考にしてください。

 

製品間の連携イメージ

大きく下記4つの手順で連携を図ります。

  1. MotionBoardで入力した文字列をDr.Sumに格納し、変数をDS Scriptに渡す
  2. DS ScriptにてPythonファイルを呼び出す
  3. Pythonにて文字列をQRコード化し、エンコードした文字列をDr.Sumに格納する
  4. MotionBoard上でQRコードを表示する

 

MotionBoardで入力した文字列をDr.Sumに格納し、変数をDS Scriptに渡す

まず、MotionBoardで入力した文字列を${DATA}とし、データベース入力機能を使いDr.Sumに格納します。次に、現在の時分秒を日付変数で取得し${QRCODE_ID}とし、サーバープログラムのパラメーター(引数)としてバッチファイルへ渡します。

バッチファイルでは、set p1=%1やset p2=%2のように記述することで、%1(最初の引数)を p1 に、%2(2番目の引数)を p2 に設定することができます。

サーバープログラムの詳細はマニュアルを参考にしてください。

MotionBoardマニュアル:サーバープログラム

 

MotionBoardからDS Scriptを呼び出すバッチファイル

下記にサンプルの記述例を紹介します。

@echo off
set p1=%1
set p2=%2

set COMMAND_PATH=%DWODS_TOOLS_PATH%\cmd\JPN
call "%COMMAND_PATH%\dwscr_execute" "localhost" 6001 "Administrator" "" "SCRIPT_ROOT/QRCODE.dhn" "" "$QRCODE_ID" "%p1%" "$DB" "%p2%"
if not %errorlevel% == 0 exit /b %errorlevel

:end
exit /b %errorlevel%

 

DS ScriptにてPythonファイルを呼び出す

このスクリプトは、QRCODE_ID に対応する QRCODE_IMG を取得し、そのデータを Python スクリプト QRCODE.py に渡して処理を実行します。後述のPython スクリプトの実行結果(変換後のQRコード画像、処理結果、エラーメッセージ)を取得し、それらのデータを QRCODE テーブルに更新します。最後に、設定された条件を満たしていればスクリプトを終了します。

 

DS Scriptのファイル

下記に記述例を記載します。

SET() {
$condition = 1;
$QRCODE_ID := "";
$DB := ""
}

CONNECT($DB) {
}

SET_FROM_QUERY() {
$DATA = select QRCODE_IMG from QRCODE where QRCODE_ID = '${QRCODE_ID}';
}

EXECUTE($_CONSOLE_ENCODE_ANSI) {
($RESULT1, $STD1, $STDERROR1) = python.exe "C:\bidata\drsum_batch\QRCODE.py" "${DATA}";
}

SQL($_SQL_AUTO_COMMIT_ON) {
update QRCODE set QRCODE_IMG='${STD1}',RESULT='${RESULT1}',STDERROR='${STDERROR1}'
where QRCODE_ID='${QRCODE_ID}';
}

EXIT ($condition == 1) {
}

 

Pythonにて文字列をQRコード化し、エンコードした文字列をDr.Sumに格納する

このpyファイルでは、渡された文字列を QR コードに変換し、一時的に画像ファイルとして保存します。保存した画像を Base64 にエンコードして標準出力し、前述のDS Scriptの標準出力${STD1}として出力します。その後、不要になった画像ファイルを削除します。

 

文字列をQRコード化し標準出力を行うPyファイル

下記に記述例を記載します。

import os,sys,datetime
import qrcode
import base64


outfile = str(datetime.datetime.now())
outfile = outfile.replace(":","")
outfile = outfile + ".png"


img = qrcode.make(sys.argv[1])
img.save(outfile)


with open(outfile,"rb") as f:
img = base64.b64encode(f.read()).decode('utf-8')
print(img)


os.remove(outfile)

 

MotionBoard上でQRコードを表示する

MotionBoardでカード型明細を用意し、接続先を上述したQRコードの格納先とします。QRCODE_IMGの編集ボタンより、[リンク/イメージ]-「設定」をクリックします。[イメージURL]-「Base64」に変更します。

 

さいごに

「MotionBoard×Dr.Sum×Python」の連携について解説しました。 スムーズな製品間連携でデータ活用の幅を広げましょう。その他にもDr.Sum×Python連携を紹介した記事があります。ぜひご覧ください。

この記事にリアクションしてみませんか?

What do you think of this post?
  • 分かりやすい (0)
  • 問題が解決した (0)
いいね!ボタンありがとうございます!

塚田 涼太郎

プロフィールへ >

2020年からDr.Sum MotionBoard のプリセールスとして活動しています。ユーザー様のお困りごと/お悩みごとを解決できるようブログ執筆の活動をしています。お困りごとが解決したら是非「いいね」ボタンのクリックをお願いします!

Related article

Related article関連記事

Pick up

Pick upおすすめ記事

【Connect】開発コスト・運用コストを抑えたスクリプトの構築方法

公開:2025.02.06
更新:2025.02.06

分かりやすい

1

解決した

0
  • データ取り込み
  • データ加工

Dr.Sum

invoiceAgent【「業務を変える動画たち」シリーズ】記事まとめ

公開:2025.01.16
更新:2025.01.31

分かりやすい

0

解決した

0
  • 業務を変えるシリーズ

invoiceAgent

【脱Excel】MotionBoardの入力機能で業務アプリをつくる

公開:2024.08.05
更新:2024.08.05

分かりやすい

3

解決した

0
  • データ入力
  • デザイン
  • コンテナ

MotionBoard

Ranking

Rankingランキング

1

棒グラフを大きい順番に並び替えたい!(ソートしたい)

公開:2019.06.15
更新:2023.11.27

分かりやすい

13

解決した

13
  • デザイン
  • グラフ
  • 集計表

MotionBoard

2

経過時間を時:分:秒で時刻表示したい!【320秒→05:20】

公開:2022.08.02
更新:2024.05.08

分かりやすい

12

解決した

8
  • グラフ

MotionBoard

3

カスタム項目の書き方 よく使う関数からIfまで

公開:2023.07.28
更新:2024.10.30

分かりやすい

27

解決した

7
  • データ加工

MotionBoard

Info

Information

ウイングアーク1stからのお知らせ