- 追加された行はこの色です。
- 削除された行はこの色です。
[[MQTTめも]]
MQTTクライアントはPythonが王道のようですが、やっぱり小馴れたPHPでやりたい!ということで[[phpMQTT:https://github.com/bluerhinos/phpMQTT]]にて試してみました。
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