クイックスタート
PHP言語で実装されたサンプルサーバープログラムを利用して、CloudPRNTシステムを構築、印刷を試す手順を説明します。
Memo
開発サポートツール:CPUtilとPHPサンプルサーバーのダウンロードについてはリンク先をご参照ください。
手順や参照先はOSによって異なります。表示するOSを選択してください。
PHPサンプルサーバープログラムについて
CloudPRNTの動作を確認できるPHPサンプルサーバープログラムを提供しています。
サンプルサーバーを構築し、CloudPRNT対応プリンターを接続してサンプルレシートを印刷してみましょう。
PHPサンプルサーバープログラムは、こちらでダウンロードできます。
PHPサンプルサーバープログラムは、こちらでダウンロードできます。
このサンプルプログラムは、PHPモジュールを使用してApache Webサーバーを中心に構築されています。 PHP言語環境に基づいていますがCloudPRNT固有のコードは汎用的であるため、PHP以外のサーバーサイドスクリプトのソリューションにも参考にしていただけます。
Note:
このサンプルプログラムは意図的に基本的なものであり、セキュリティ、顧客への通知、および実際の運用に必要なその他の事項については考慮されていません。
PHPサンプルサーバー セットアップフロー
Windows (x64) サーバーシステムにおける、PHPサンプルサーバープログラムのセットアップ方法を説明します。
以下の手順を参考に、ローカルエリアネットワークにCloudPRNTサーバーを構築し、印刷を行ってみましょう。
Memo
Step4, Step5はCloudPRNT Version MQTTの動作を試すための手順です。
動作の確認にはCloudPRNT Version MQTT対応プリンターが必要です。
Step1.サンプルサーバーの構築 : Apache/PHP/SQLiteのセットアップ
Apacheのセットアップ
1Apache HTTPサーバーをインストールします。
Apache よりダウンロードしてください。
本説明では httpd-2.4.57-win64-VS17.zip をダウンロードしています。
vc_redist_x64 をダウンロードして、インストール(VC_redist.x64.exeをダブルクリック)してください。
2ダウンロードしたビルド済みパッケージを任意の場所に展開します。
本説明では、C:\Apache
に Apache24
以下のフォルダーを配置します。
3環境変数の変数名(PATH)にApache24\bin
のパス (C:\Apache\Apache24\bin
) を登録します。
4コマンドプロンプトを起動し、httpd -v
コマンドを実行します。
バージョンが表示されれば成功です。
5C:\Apache\Apache24\conf\httpd.conf
をテキストエディタで開きます。
Define SRVROOT "c:/Apache24"
を環境に合わせて変更します。
#ServerName www.example.com:80
をServerName localhost:80
に変更します。
C:\Apache\Apache24\conf\httpd.conf
を保存します。
保存がうまくできない場合は、デスクトップにhttpd.conf
をコピーし上記の修正および保存をして、 C:\Apache\Apache24\conf\httpd.conf
へ上書き保存してください。
参考: httpd.conf
6コマンドプロンプトを管理者権限で起動し、httpd -k install
コマンドを実行します。
本説明では、C:\Apache に Apache24 以下のフォルダーを配置します。
7WebブラウザーのURL欄でlocalhost
と入力して、It works
が表示されたら設定成功です。
うまく表示されない場合、コマンドプロンプトを管理者権限で起動しhttpd -k restart
コマンドを実行してください。
PHP / SQLiteのセットアップ
1PHP Windows Downloadsから、Windows用 Thread Safe版のZipをダウンロードします。
本説明では、PHP8.2.10 VS16 x64 Thread Safe (2023-Aug-29 22:33:56)版のZip をダウンロードしました。
2ダウンロードしたZipを解凍し、php
にリネームして C:ドライブの直下にコピーします。
3C:\Apache\Apache24\conf\httpd.conf
をテキストエディタで開き、末尾に下記を追加して保存します。
参考: httpd.conf
# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
LoadFile "C:/php/php8ts.dll"
LoadFile "C:/php/libsqlite3.dll"
LoadModule php_module "C:/php/php8apache2_4.dll"
AddType application/x-httpd-php .php
# configure the path to php.ini
PHPIniDir "C:/php"
4C:\php\php.ini-development
をコピーして同じ場所にphp.ini
という名前で保存し、テキストエディタで開きます。 参考: php.ini
;extension_dir
をextension_dir = "c:\php\ext"
に変更します。
;extension=pdo_sqlite
をextension=pdo_sqlite
に、;extension=sqlite3
をextension=sqlite3
に変更します。
PHPサンプルサーバープログラムの配置
1PHPサンプルサーバープログラムphp_queue.tar.gzをダウンロードします。
ファイルを解凍し、php_queue
フォルダーをC:\Apache\Apache24\htdocs\
にコピーします。
2コマンドプロンプトを管理者権限で起動して、httpd -k restart
コマンドを実行します。
Step2.開発サポートツールのセットアップ : CPUtilのセットアップ
CPUtilのセットアップ
1cputilをダウンロードして、cputilを任意のユーザーが直接起動できるようにします。
C:\Apache\Apache24\htdocs\php_queue
の直下にC:\Apache\Apache24\htdocs\php_queue\cputil
フォルダーを作成し、cputil-win-x64
の中身をコピーします。
Memo
以下のどちらかを満たすことで、CPUtilを任意のユーザーが直接起動できるようになります。
- CPUtilを任意の場所に展開しグローバルに実行できるよう登録する
- Webサービスと同フォルダー等に配置する
Step3.CloudPRNT Version HTTP での印刷
PHPサンプルサーバーのインストール確認
1Webブラウザーを使用してhttp://<serverIP>/php_queue/management.html
を開くことによりインストールができているかテストします。
問題が発生した場合は、error.logを確認してください(Apacheの構成オプションによって異なる場合があります)。
Note:
ソースコードを簡略化するために、一部のパスはハードコーディングされていることに注意してください。
たとえば、データベースが <document_root>\php_queue\simplequeue.sqlite
にない場合には、cloudprnt.php、devices.php、print.php、queues.phpの$dbname
のファイルパスを変更してください。
PHPサンプルサーバー セットアップフロー
Linux Ubuntu 22.04 LTS サーバーシステムにおける、PHPサンプルサーバープログラムのセットアップ方法を説明します。
以下の手順を参考に、ローカルエリアネットワークにCloudPRNTサーバーを構築し、印刷を行ってみましょう。
Memo
Step4, Step5はCloudPRNT Version MQTTの動作を試すための手順です。
動作の確認にはCloudPRNT Version MQTT対応プリンターが必要です。
Step1.サンプルサーバーの構築 : Apache/PHP/SQLiteのセットアップ
Apache/PHP/SQLiteのセットアップ
1Apache HTTPサーバーをインストールします。
sudo apt-get install apache2
2PHPモジュールをインストールします。
sudo apt-get install php
3PHP-SQLiteモジュールをインストールします。
sudo apt-get install php-sqlite3
4Apache内のPHP利用を有効にします(例はPHPバージョン8.1.2です。)
sudo a2enmod php8.1
5Webサーバーを再起動します。
sudo systemctl restart apache2
PHPサンプルサーバープログラムの配置
1PHPサンプルサーバープログラムphp_queue.tar.gzをダウンロードします。
ダウンロードしたファイルを/var/www/html/
に展開します。
sudo tar -xvf php_queue_v200.tar.gz -C /var/www/html/
PHPサンプルの新規ファイルの所有者がwww-dataユーザーであることを確認してください。
これはwww-dataユーザーがデータベースに書き込み、データベース更新用のphp_queue
フォルダーにロックファイルを作成する権限を持っている必要があるためです。
sudo chown -R www-data:www-data /var/www/html/php_queue
Step2.開発サポートツールのセットアップ : CPUtilのセットアップ
CPUtilのセットアップ
1cputilをダウンロードして、cputilを任意のユーザーが直接起動できるようにします。
cputilをグローバルな場所(/opt/starmicronics/cputil
など)に展開し、/opt/starmicronics/cputil/
を指すシンボリックリンク/usr/local/bin/cputil
を作成します。
mkdir -p /opt/starmicronics/cputil
tar -zxvf ~/Downloads/cputil-linux-x64_v200.tar.gz -C /opt/starmicronics/cputil/
sudo chmod 755 /opt/starmicronics/cputil/cputil-linux-x64/cputil
ln -s /opt/starmicronics/cputil/cputil-linux-x64/cputil /usr/local/bin/cputil
Step3.CloudPRNT Version HTTP での印刷
PHPサンプルサーバーのインストール確認
1Webブラウザーを使用してhttp://<serverIP>/php_queue/management.html
を開くことによりインストールができているかテストします。
問題が発生した場合は、/var/log/apache2/error.log
を確認してください(Apacheの構成オプションによって異なる場合があります)。
Note:
ソースコードを簡略化するために、一部のパスはハードコーディングされていることに注意してください。
たとえば、データベースが <document_root>/php_queue/simplequeue.sqlite
にない場合には、cloudprnt.php、devices.php、print.php、queues.phpの$dbname
のファイルパスを変更してください。
使用方法
このサンプルサーバープログラムを使用するには、はじめに管理ページ(http://<serverIP>/php_queue/management.html
)にログインします。
このサーバーは、Sqlite3データベース内の顧客キューのリストを管理します。いくつかのキューの例は、デフォルトデータベースで定義されています。
登録されたプリンターのリストもデータベースに保存され、各プリンターは特定のキューに割り当てます。
登録されていないCloudPRNTプリンターは、サーバーに接続しようとしてもサーバーによって無視されます。
プリンターを登録する
management.htmlページの下部にある”Device Configuration”には、新しいプリンターを登録するために必要となる、このサーバーのCloudPRNTサービスを実装するURLが 表示されています(URLはサーバーのセットアップ方法によって異なる場合があります)。
クライアント設定を参考に、プリンターのCloudPRNT設定画面を開きます。
設定画面にて「CloudPRNT Service」をENABLEに、「Server URL」には上記で確認したURLを設定します。
上記の設定を行ったあと、management.htmlページにて以下の操作を行います。
1 [Register A New Device] リンクをクリックし、ダイアログが表示されたら、登録するデバイスのイーサネットLANのMACアドレスを(※)小文字で入力します。
プリンターのMACアドレスは自己印字のNetwork Configuration欄もしくはWebベースのユーザーインターフェイス上で確認できます。
(※)CloudPRNTプロトコルでは、無線LANで接続した場合でも、プリンターのイーサネットLANポートのMACアドレスを使用します。
2新しいプリンターにリンクするキューのID(1, 2, 3...等の数字)を入力するように求めらるので、任意の数字を入力します。
複数のプリンターを単一のキューにリンクすることもできます。
以上でプリンターが登録され、サーバーがデバイスの種類や印刷/用紙の寸法などの詳細情報をプリンターから取得します。
エンドユーザーのユーザーインターフェイスを表示する
新しく登録したプリンターは、management.htmlページのプリンターリストの新しい行に表示されます。
右端の列にある "Show" をクリックすると、このプリンターのユーザーページを表示します。
このページは、エンドカスタマーがチケットを印刷できるようにタブレットに表示されることを想定したものです。
[Print (HTTP)] ボタンをクリックして、新しいキューチケットを印刷します。
プリンターを削除する
management.htmlページの"Registered CloudPRNT Devices"テーブルの右端の列にある"Delete"ボタンをクリックすると、該当のプリンターを削除します。
このサンプルサーバープログラムでは、プリンターに関連付けられたキューIDを変更する機能はありません。
プリンターに関連付けられているキューIDを変更するには、一度プリンターを削除してから再度登録を行っていただく、または直接sqliteデータベースの変更を行ってください。
キューを追加する
management.htmlページの”Queues”テーブルの最下行にある "Add A New Queue" リンクをクリックします。キューの新しい名前を入力するように求められます。
キューを削除する
management.htmlページの”Queues”テーブルの、対象のキューの"Delete"リンクをクリックすると、該当のキューを削除します。
キューを設定する
management.htmlページの”Queues”テーブルの、対象のキューの"Reset"リンクをクリックすると、該当のキューの番号を"1"にリセットします。 この番号は、このキューが次に印刷されるときに用紙に印字される数字です。
なお本サンプルでの、上下のロゴ画像の変更やチケットの生成に使用されるStarドキュメントマークアップの定義など各キューの追加構成が可能です。 サンプルに複雑さを追加しないように、これはsqliteデータベースを直接変更することによってのみ可能です。
Step4.MQTTサーバーの構築 : MQTT/Mosquittoのセットアップ
CloudPRNT Version MQTTは、CloudPRNTサーバーとプリンター間の通信にMQTTを用いることで、より低遅延な印刷を行うことができます。
動作の確認にはCloudPRNT Version MQTT対応プリンターが必要です。
本サンプルプログラムでは、CloudPRNTサーバーに Eclipse MosquittoをセットアップすることでCloudPRNT Version MQTTの動作確認を行います。
Mosquittoのインストール
1Eclipse Mosquittoから、Windows x64用インストーラーをダウンロードし、インストールします。
本説明ではmosquitto-2.0.17-install-windows-x64.exeを利用しています。
MQTTブローカーのセットアップ
本サンプルでは、MQTTブローカーとプリンターとの接続を簡単にするために、以下の設定を行います。
1C:\Program Files\mosquitto\mosquitto.conf
をテキストエディタで開きます。
#allow_anonymous false
を allow_anonymous true
に変更します。
#listener
を listener 1883
に変更します。
以上の設定により、サーバーPCで動作するMQTTブローカーは、すべてのMQTTクライアントからの接続を受け入れます。
設定変更後、「Mosquitto Broker」サービスを再起動してください。
mosquitto.conf
に関する詳細情報はこちらをご参照ください。
MQTTブローカーの動作確認
1システム環境変数の変数名(PATH)にmosquitto_sub.exe
, mosquitto_pub.exe
のパスC:\Program Files\mosquitto
を登録します。
2PowerShellもしくはコマンドプロンプトを開き、以下のコマンドが動作することを確認します。
mosquitto_sub
mosquitto_pub
3以下のコマンドにより、MQTTメッセージの送受信が行えることを確認します。
ターミナル1:mosquitto_sub -h YourLocalIpAddress -p 1883 -t test/mqtt
ターミナル2:mosquitto_pub -h YourLocalIpAddress -p 1883 -t test/mqtt -m "Hello, MQTT."
ターミナル1でHello, MQTT.
のメッセージを受信できれば、設定は完了です。
Step5.CloudPRNT Version MQTTでの印刷
Trigger POST
プリンターからのPOSTリクエストを、CloudPRNTサーバーの任意のタイミングで実行させる「Trigger POST」の動作を確認します。
1. サーバー設定情報ファイルの準備
C:\Apache\Apache24\htdocs\php_queue
ディレクトリのcloudprnt-setting.json
ファイルに設定を記載します。
このファイルは、CloudPRNT Version MQTT対応プリンターが電源投入時など、特定のタイミングで実行する サーバー設定情報GETリクエスト に対してCloudPRNTサーバーが応答するレスポンスボディ(JSONファイル)です。
1php_queue\cloudprnt-setting_Sample
ディレクトリ中のcloudprnt-setting_mqtt_triggerpost.json
の内容を、cloudprnt-setting.json
ファイルにコピーします。
上記JSONファイル中のsettingForMQTT.mqttConnectionSetting.hostName
キーの値に、MQTTブローカーのURLを指定します。ここでは、サーバーPCのIPアドレスを指定します。
{
"title":"star_cloudprnt_server_setting",
"version":"1.0.0",
"serverSupportProtocol":["HTTP", "MQTT"],
"settingForMQTT":{
"useTriggerPOST":true,
"mqttConnectionSetting":{
"hostName":"172.16.212.228",
"portNumber":1883,
"useTls" : false,
"authenticationSetting":{
"username":"user",
"password":"pass"
}
}
}
}
settingForMQTT. useTriggerPOST
キーの値がtrue
であることに着目してください。この値が、Trigger POSTを利用することを表しています。
2. プリンターの登録とCloudPRNT Version MQTT:Trigger POSTでの動作開始
サーバー設定情報ファイルの準備ができたら、CloudPRNT Version MQTT対応プリンターをCloudPRNTサンプルサーバーへ登録します。
サンプルサーバープログラムの管理ページ(http://<serverIP>/php_queue/management.html
)を利用します。
詳細は3-2. 使用方法を参照ください。
登録完了後、プリンターの電源を投入します。プリンターがCloudPRNTサーバーに対してサーバー設定情報GETリクエストを実行し、
サーバーはレスポンスとしてサーバー設定情報ファイル(JSON)を返します。
プリンターはレスポンスに応じて、CloudPRNT Version MQTT:Trigger POST での動作を開始します。
3. プリンターにPOSTリクエストを実行させる
management.htmlページの右端の列に表示される“Get Status (MQTT)”をクリックします。
クリック後、以下のダイアログが表示されれば、CloudPRNTサーバーからのMQTTメッセージ発行は成功です。
CloudPRNTサーバーより[request-post]メッセージがプリンターに向けて発行されます。
プリンターはMQTTメッセージを受信したタイミングで、POSTリクエストを実行します。
management.htmlページのStatusが更新されれば、プリンターとの通信は正しく行われています。
4. 印刷を行う
management.htmlページの右端の列にある"Show"をクリックして表示されるページの、”Print (MQTT : Trigger POST)”をクリックします。
CloudPRNT Version HTTPより低遅延な印刷が行えることが確認できます。
Full MQTT / Pass URL
Trigger POSTより低遅延な通信を可能とする「Full MQTT / Pass URL」の動作を確認します。
1. サーバー設定情報ファイルの準備
C:\Apache\Apache24\htdocs\php_queue
ディレクトリのcloudprnt-setting.json
ファイルに設定を記載します。
1php_queue\cloudprnt-setting_Sample
ディレクトリ中のcloudprnt-setting_mqtt.json
の内容を、cloudprnt-setting.json
ファイルにコピーします。
上記JSONファイル中のsettingForMQTT.mqttConnectionSetting.hostName
キーの値に、MQTTブローカーのURLを指定します。ここでは、サーバーPCのIPアドレスを指定します。
{
"title":"star_cloudprnt_server_setting",
"version":"1.0.0",
"serverSupportProtocol":["HTTP", "MQTT"],
"settingForMQTT":{
"useTriggerPOST":false,
"mqttConnectionSetting":{
"hostName":"172.16.212.228",
"portNumber":1883,
"useTls" : false,
"authenticationSetting":{
"username":"user",
"password":"pass"
}
}
}
}
settingForMQTT. useTriggerPOST
キーの値がfalse
であることに着目してください。この値が、Full MQTT / Pass URLを利用することを表しています。
2. CloudPRNTサーバーのMQTTメッセージ受信プログラムの準備
CloudPRNTサーバーのMQTTメッセージ受信プログラムを設定します。
C:\Apache\Apache24\htdocs\php_queue
ディレクトリのmqtt_subscribe.ps1
をテキストエディタで開きます。
以下の行の-h
で指定されるブローカーのアドレスを、ご利用の環境に合わせて修正します。
& 'C:\Program Files\mosquitto\mosquitto_sub.exe' -h 172.16.212.228 -p 1883 -u user -P pass -t star/cloudprnt/to-server/# -v -V 311 | ForEach-Object {
ここでは上記のサーバー設定情報ファイルと同じIPアドレスを指定します。
3. プリンターの登録とCloudPRNT Version MQTT:Full MQTT / Pass URLでの動作開始
上記の準備ができたら、CloudPRNT Version MQTT対応プリンターをCloudPRNTサンプルサーバーへ登録します。
サンプルサーバープログラムの管理ページ(http://<serverIP>/php_queue/management.html
)を利用します。
詳細は3-2. 使用方法を参照ください。
登録完了後、プリンターの電源を投入します。プリンターがCloudPRNTサーバーに対してサーバー設定情報GETリクエストを実行し、サーバーはレスポンスとしてサーバー設定情報ファイル(JSON)を返します。
プリンターはレスポンスに応じて、CloudPRNT Version MQTT : Full MQTT / Pass URL での動作を開始します。
4. プリンターのステータスを取得する
management.htmlページの右端の列に表示される“Get Status (MQTT)”をクリックします。
クリック後、以下のダイアログが表示されれば、CloudPRNTサーバーからのMQTTメッセージ発行は成功です。
CloudPRNTサーバーより[request-client-status]メッセージがプリンターに向けて発行されます。
Full MQTT / Pass URLでは、プリンターのステータスはPOSTリクエストではなく、プリンターからの[client-status]メッセージによって通知されます。
[request-client-status]メッセージを受信した、プリンターは[client-status]メッセージを発行し、ステータス通知を行います。
management.htmlページのStatusが更新されれば、CloudPRNTサーバーは、プリンターの発行したメッセージを正しく受信できています。
5. 印刷を行う
management.htmlページの右端の列にある"Show"をクリックして表示されるページの、 ”Print (MQTT : Pass URL)” または ”Print (MQTT : Full MQTT)" をクリックすることで、それぞれの印刷動作を確認することができます。
Pass URLでは、CloudPRNTサーバーが発行するprint-jobメッセージのペイロードJSONに、
印刷データが格納されたサーバーURLの情報が記載されています。
プリンターはメッセージを受信すると、印刷ジョブリクエスト(GET)を実行し、印刷データを取得してから印刷を行います。
Full MQTTでは、CloudPRNTサーバーが発行するprint-jobメッセージのペイロードJSONに、
印刷データそのものが記載されています。
プリンターはメッセージを受信すると、ペイロードJSONに記載された印刷データを印刷します。
印刷動作実行後、プリンターはprint-resultメッセージを発行し、印刷結果をCloudPRNTサーバーに通知します。
Step4.MQTTサーバーの構築 : MQTT/Mosquittoのセットアップ
CloudPRNT Version MQTTは、CloudPRNTサーバーとプリンター間の通信にMQTTを用いることで、より低遅延な印刷を行うことができます。
動作の確認にはCloudPRNT Version MQTT対応プリンターが必要です。
本サンプルプログラムでは、CloudPRNTサーバーに Eclipse MosquittoをセットアップすることでCloudPRNT Version MQTTの動作確認を行います。
Mosquittoのインストール
1以下のコマンドを実行し、Mosquittoブローカーと、Mosquittoクライアントをインストールします。
sudo apt-get install mosquitto
sudo apt-get install mosquitto-clients
MQTTブローカーのセットアップ
本サンプルでは、MQTTブローカーとプリンターとの接続を簡単にするために、以下の設定を行います。
1/etc/mosquitto/mosquitto.conf
をテキストエディタで開き、以下の行を追加します。
allow_anonymous true
listener 1883
以上の設定により、サーバーPCで動作するMQTTブローカーは、すべてのMQTTクライアントからの接続を受け入れます。
設定変更後、以下のコマンドにより Mosquitto Broker サービスを再起動してください。
sudo systemctl restart mosquitto
mosquitto.conf
に関する詳細情報はこちらをご参照ください。
MQTTブローカーの動作確認
1Terminal を開き、以下のコマンドが動作することを確認します。
mosquitto_sub
mosquitto_pub
2以下のコマンドにより、MQTTメッセージの送受信が行えることを確認します。
ターミナル1:mosquitto_sub -h YourLocalIpAddress -p 1883 -t test/mqtt
ターミナル2:mosquitto_pub -h YourLocalIpAddress -p 1883 -t test/mqtt -m "Hello, MQTT."
ターミナル1でHello, MQTT.
のメッセージを受信できれば、設定は完了です。
Step5.CloudPRNT Version MQTTでの印刷
Trigger POST
プリンターからのPOSTリクエストを、CloudPRNTサーバーの任意のタイミングで実行させる「Trigger POST」の動作を確認します。
1. サーバー設定情報ファイルの準備
/var/www/html/php_queue/php_queue
ディレクトリのcloudprnt-setting.json
ファイルに設定を記載します。
このファイルは、CloudPRNT Version MQTT対応プリンターが、電源投入時など特定のタイミングで実行する サーバー設定情報GETリクエスト に対してCloudPRNTサーバーが応答するレスポンスボディ(JSONファイル)です。
1php_queue/cloudprnt-setting_Sample
ディレクトリ中のcloudprnt-setting_mqtt_triggerpost.json
の内容を、cloudprnt-setting.json
ファイルにコピーします。
上記JSONファイル中のsettingForMQTT.mqttConnectionSetting.hostName
キーの値に、MQTTブローカーのURLを指定します。ここでは、サーバーPCのIPアドレスを指定します。
{
"title":"star_cloudprnt_server_setting",
"version":"1.0.0",
"serverSupportProtocol":["HTTP", "MQTT"],
"settingForMQTT":{
"useTriggerPOST":true,
"mqttConnectionSetting":{
"hostName":"172.16.212.228",
"portNumber":1883,
"useTls" : false,
"authenticationSetting":{
"username":"user",
"password":"pass"
}
}
}
}
settingForMQTT. useTriggerPOST
キーの値がtrue
であることに着目してください。この値が、Trigger POSTを利用することを表しています。
2. プリンターの登録とCloudPRNT Version MQTT:Trigger POSTでの動作開始
サーバー設定情報ファイルの準備ができたら、CloudPRNT Version MQTT対応プリンターをCloudPRNTサンプルサーバーへ登録します。
サンプルサーバープログラムの管理ページ(http://<serverIP>/php_queue/management.html
)を利用します。
詳細は3-2. 使用方法を参照ください。
登録完了後、プリンターの電源を投入します。プリンターがCloudPRNTサーバーに対してサーバー設定情報GETリクエストを実行し、サーバーはレスポンスとしてサーバー設定情報ファイル(JSON)を返します。
プリンターはレスポンスに応じて、CloudPRNT Version MQTT:Trigger POST での動作を開始します。
3. プリンターにPOSTリクエストを実行させる
management.htmlページの右端の列に表示される“Get Status (MQTT)”をクリックします。
クリック後、以下のダイアログが表示されれば、CloudPRNTサーバーからのMQTTメッセージ発行は成功です。
CloudPRNTサーバーより[request-post]メッセージがプリンターに向けて発行されます。
プリンターはMQTTメッセージを受信したタイミングで、POSTリクエストを実行します。
management.htmlページのStatusが更新されれば、プリンターとの通信は正しく行われています。
4. 印刷を行う
management.htmlページの右端の列にある"Show"をクリックして表示されるページの、”Print (MQTT : Trigger POST)”をクリックします。
CloudPRNT Version HTTPより低遅延な印刷が行えることが確認できます。
Full MQTT / Pass URL
Trigger POSTより低遅延な通信を可能とする「Full MQTT / Pass URL」の動作を確認します。
1. サーバー設定情報ファイルの準備
/var/www/html/php_queue/php_queue
ディレクトリのcloudprnt-setting.json
ファイルに設定を記載します。
1php_queue/cloudprnt-setting_Sample
ディレクトリ中のcloudprnt-setting_mqtt.json
の内容を、cloudprnt-setting.json
ファイルにコピーします。
上記JSONファイル中のsettingForMQTT.mqttConnectionSetting.hostName
キーの値に、MQTTブローカーのURLを指定します。ここでは、サーバーPCのIPアドレスを指定します。
{
"title":"star_cloudprnt_server_setting",
"version":"1.0.0",
"serverSupportProtocol":["HTTP", "MQTT"],
"settingForMQTT":{
"useTriggerPOST":false,
"mqttConnectionSetting":{
"hostName":"172.16.212.228",
"portNumber":1883,
"useTls" : false,
"authenticationSetting":{
"username":"user",
"password":"pass"
}
}
}
}
settingForMQTT. useTriggerPOST
キーの値がfalse
であることに着目してください。この値が、Full MQTT / Pass URLを利用することを表しています。
2. CloudPRNTサーバーのMQTTメッセージ受信プログラムの準備
CloudPRNTサーバーのMQTTメッセージ受信プログラムを設定します。
/var/www/html/php_queue/php_queue
ディレクトリのmqtt_subscribe.sh
をテキストエディタで開きます。
以下の行の-h
で指定されるブローカーのアドレスを、ご利用の環境に合わせて修正します。
mosquitto_sub -h 172.16.212.228 -p 1883 -u user -P pass -t star/cloudprnt/to-server/# -v -V 311 | xargs -d'\n' -I@ bash -c "callPHP '@'"
ここでは上記のサーバー設定情報ファイルと同じIPアドレスを指定します。
上記設定が完了したら、mqtt_subscribe.sh
を管理者権限で実行します。
このプログラムは、プリンターが発行するMQTTメッセージを購読し、メッセージを受信するたび、PHPプログラムを呼び出すものです。
3. プリンターの登録とCloudPRNT Version MQTT:Full MQTT / Pass URLでの動作開始
上記の準備ができたら、CloudPRNT Version MQTT対応プリンターをCloudPRNTサンプルサーバーへ登録します。
サンプルサーバープログラムの管理ページ(http://<serverIP>/php_queue/management.html
)を利用します。
詳細は3-2. 使用方法を参照ください。
登録完了後、プリンターの電源を投入します。プリンターがCloudPRNTサーバーに対してサーバー設定情報GETリクエストを実行し、サーバーはレスポンスとしてサーバー設定情報ファイル(JSON)を返します。
プリンターはレスポンスに応じて、CloudPRNT Version MQTT : Full MQTT / Pass URL での動作を開始します。
4. プリンターのステータスを取得する
management.htmlページの右端の列に表示される“Get Status (MQTT)”をクリックします。
クリック後、以下のダイアログが表示されれば、CloudPRNTサーバーからのMQTTメッセージ発行は成功です。
CloudPRNTサーバーより[request-client-status]メッセージがプリンターに向けて発行されます。
Full MQTT / Pass URLでは、プリンターのステータスはPOSTリクエストではなく、プリンターからの[client-status]メッセージによって通知されます。
[request-client-status]メッセージを受信したプリンターは[client-status]メッセージを発行し、ステータス通知を行います。
management.htmlページのStatusが更新されれば、CloudPRNTサーバーは、プリンターの発行したメッセージを正しく受信できています。
5. 印刷を行う
management.htmlページの右端の列にある"Show"をクリックして表示されるページの、 ”Print (MQTT : Pass URL)” または ”Print (MQTT : Full MQTT)" をクリックすることで、それぞれの印刷動作を確認することができます。
Pass URLでは、CloudPRNTサーバーが発行するprint-jobメッセージのペイロードJSONに、
印刷データが格納されたサーバーURLの情報が記載されています。
プリンターはメッセージを受信すると、印刷ジョブリクエスト(GET)を実行し、印刷データを取得してから印刷を行います。
Full MQTTでは、CloudPRNTサーバーが発行するprint-jobメッセージのペイロードJSONに、
印刷データそのものが記載されています。
プリンターはメッセージを受信すると、ペイロードJSONに記載された印刷データを印刷します。
印刷動作実行後、プリンターはprint-resultメッセージを発行し、印刷結果をCloudPRNTサーバーに通知します。