クイックスタート

PHP言語で実装されたサンプルサーバープログラムを利用して、CloudPRNTシステムを構築、印刷を試す手順を説明します。

Memo
開発サポートツール:CPUtilPHPサンプルサーバーのダウンロードについてはリンク先をご参照ください。


手順や参照先はOSによって異なります。表示するOSを選択してください。

Windows Linux Ubuntu


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:\ApacheApache24 以下のフォルダーを配置します。


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:80ServerName localhost:80に変更します。
C:\Apache\Apache24\conf\httpd.confを保存します。 保存がうまくできない場合は、デスクトップにhttpd.confをコピーし上記の修正および保存をして、 C:\Apache\Apache24\conf\httpd.confへ上書き保存してください。 参考: httpd.conf


6コマンドプロンプトを管理者権限で起動し、httpd -k installコマンドを実行します。
本説明では、C:\ApacheApache24 以下のフォルダーを配置します。


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_dirextension_dir = "c:\php\ext"に変更します。

;extension=pdo_sqliteextension=pdo_sqliteに、;extension=sqlite3extension=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 falseallow_anonymous true に変更します。

#listenerlistener 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サーバーに通知します。