phpMQTT
の編集
https://yassu.jp/pukiwiki/index.php?phpMQTT
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
[[MQTTめも]] MQTTクライアントはPythonが王道のようですが、やっぱり小馴れたPHPでやりたい!~ ということで[[phpMQTT:https://github.com/bluerhinos/phpMQTT]]にて試してみました。 必要なファイルは phpMQTT.php のみです。 -lib/phpMQTT.php -sub.php -pub.php *phpMQTT.phpの修正 [#j1aafd60] 3行目あたり 意味不明のnamespaceをコメントします。 //namespace Bluerhinos; 205行目あたり 固定ヘッダが違うようなので、修正します。 //$cmd = 0x80; $cmd = 0x82; *sub.php [#y0c8d693] subscriber側のプログラム <?php require_once "lib/phpMQTT.php"; $server = "127.0.0.1"; $port = 1883; $username = ""; $password = ""; $client_id = "phpMQTT-subscriber"; // make sure this is unique for connecting to sever - you could use uniqid() $mqtt = new phpMQTT($server, $port, $client_id); if (!$mqtt->connect(true, NULL, $username, $password)) { exit(1); } $topics['topics/test'] = array("qos" => 0, "function" => "procmsg"); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { } $mqtt->close(); function procmsg($topic, $msg){ echo "Msg Recieved: " . date("r") . "\n"; echo "Topic: {$topic}\n\n"; echo "\t$msg\n\n"; } *pub.php [#d6ee18af] publisher側のプログラム <?php require_once "lib/phpMQTT.php"; $server = "127.0.0.1"; $port = 1883; $username = ""; $password = ""; $client_id = "phpMQTT-publisher"; // make sure this is unique for connecting to sever - you could use uniqid() $mqtt = new phpMQTT($server, $port, $client_id); if ($mqtt->connect(true, NULL, $username, $password)) { $mqtt->publish("topics/test", "Hello World! at " . date("r"), 0); $mqtt->close(); echo "Published\n"; } else { echo "Time out!\n"; } *動作確認 [#sbd85ed1] コンソールにてバックグラウンドでsubscriberを起動します。 $ nohup php sub.php > out.log & 別コンソールにてpublisherを起動します。 $ php pub.php out.logにメッセージが記録されていれば成功です。 subscriberの停止はプロセスをkillします。 $ kill PID
タイムスタンプを変更しない
[[MQTTめも]] MQTTクライアントはPythonが王道のようですが、やっぱり小馴れたPHPでやりたい!~ ということで[[phpMQTT:https://github.com/bluerhinos/phpMQTT]]にて試してみました。 必要なファイルは phpMQTT.php のみです。 -lib/phpMQTT.php -sub.php -pub.php *phpMQTT.phpの修正 [#j1aafd60] 3行目あたり 意味不明のnamespaceをコメントします。 //namespace Bluerhinos; 205行目あたり 固定ヘッダが違うようなので、修正します。 //$cmd = 0x80; $cmd = 0x82; *sub.php [#y0c8d693] subscriber側のプログラム <?php require_once "lib/phpMQTT.php"; $server = "127.0.0.1"; $port = 1883; $username = ""; $password = ""; $client_id = "phpMQTT-subscriber"; // make sure this is unique for connecting to sever - you could use uniqid() $mqtt = new phpMQTT($server, $port, $client_id); if (!$mqtt->connect(true, NULL, $username, $password)) { exit(1); } $topics['topics/test'] = array("qos" => 0, "function" => "procmsg"); $mqtt->subscribe($topics, 0); while ($mqtt->proc()) { } $mqtt->close(); function procmsg($topic, $msg){ echo "Msg Recieved: " . date("r") . "\n"; echo "Topic: {$topic}\n\n"; echo "\t$msg\n\n"; } *pub.php [#d6ee18af] publisher側のプログラム <?php require_once "lib/phpMQTT.php"; $server = "127.0.0.1"; $port = 1883; $username = ""; $password = ""; $client_id = "phpMQTT-publisher"; // make sure this is unique for connecting to sever - you could use uniqid() $mqtt = new phpMQTT($server, $port, $client_id); if ($mqtt->connect(true, NULL, $username, $password)) { $mqtt->publish("topics/test", "Hello World! at " . date("r"), 0); $mqtt->close(); echo "Published\n"; } else { echo "Time out!\n"; } *動作確認 [#sbd85ed1] コンソールにてバックグラウンドでsubscriberを起動します。 $ nohup php sub.php > out.log & 別コンソールにてpublisherを起動します。 $ php pub.php out.logにメッセージが記録されていれば成功です。 subscriberの停止はプロセスをkillします。 $ kill PID
テキスト整形のルールを表示する