|
MQTTクライアントはPythonが王道のようですが、やっぱり小馴れたPHPでやりたい! 必要なファイルは phpMQTT.php のみです。
phpMQTT.phpの修正†3行目あたり 意味不明のnamespaceをコメントします。 //namespace Bluerhinos; 205行目あたり 固定ヘッダが違うようなので、修正します。 //$cmd = 0x80; $cmd = 0x82; sub.php†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†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";
}
動作確認†コンソールにてバックグラウンドでsubscriberを起動します。 $ nohup php sub.php > out.log & 別コンソールにてpublisherを起動します。 $ php pub.php out.logにメッセージが記録されていれば成功です。 subscriberの停止はプロセスをkillします。 $ kill PID |