Я устанавливаю PHP-клиент для MQTT, используя Mosquitto-PHP
Библиотека в малине
php библиотека москитов/
после этого создайте pub.php в /var/www/html/mqtt
когда пишешь в браузере http://xxx.xxx.xxx.xx/mqtt/pup.php
и не вижу никаких данных
Я тогда попробовал
$mosquitto_pub -h localhost -t "/mqtt" -m "HelloWorld"
и получить
bash: -h: command not found
Я не знаю, где проблема, для информации напишите в команде
$mosquitto -v
1464002857: mosquitto version 1.4.8 (build date Tue, 17 May 2016 11:26:59 +0100) starting
1464002857: Using default config.
1464002857: Opening ipv4 listen socket on port 1883.
1464002857:Error: Address already in use
У меня также есть такая же проблема в моих окнах, я устанавливаю москит, см. Эту ссылку шаг за шагом-установка-и-настраиваемой-mosquitto-с-Windows-7
Я вижу, что сервис для Mosquitto Broker (брокер MQTT v3.1) работает и
проверьте пример pub.php, чтобы протестировать результат — ошибка Mosquitto\Client()
не найден
Я искал и нашел mosquitto.php и положил этот код в pub.php
require "mosquitto.php";
Я не знаю, в чем проблема, может ли кто-нибудь помочь мне запустить москит в моих окнах и малину.
Мне нужно попробовать mqtt, связанный с localhost, и проверить, что соединение в порядке или нет, а также подписаться, опубликовать и прочитать сообщение.
эта информация для установки москиттолиба с php в малину
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key
cd /etc/apt/sources.list.d/
sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
sudo apt-get update
apt-get install mosquitto
sudo apt-get install mosquitto-clients
sudo apt-get install php5-dev
sudo apt-get install libmosquitto-dev
sudo pecl install Mosquitto-alpha
и в /etc/php5/mods-available/mosquitto.ini
добавить этот код
extension=mosquitto.so
этот код для проверки версии библиотеки Mosquitto
dpkg -l | grep mosquito
и конец позволил, что с комара sudo php5enmod
sudo php5enmod mosquitto
echo "<?php phpinfo(); ?>" > ~/tester.php
php ~/tester.php
код pub.php
<?php
$client = new Mosquitto\Client();
$client->onConnect('connect');
$client->onDisconnect('disconnect');
$client->onPublish('publish');
$client->connect("localhost", 1883, 5);
while (true) {
try{
$client->loop();
$mid = $client->publish('/hasan', "Hello from PHP");
$client->loop();
}catch(Mosquitto\Exception $e){
return;
}
sleep(2);
}
$client->disconnect();
unset($client);
function connect($r) {
echo "I got code {$r}\n";
}
function publish() {
global $client;
echo "Mesage published\n";
$client->disconnect();
}
function disconnect() {
echo "Disconnected cleanly\n";
}
код sub.php
<?php
$client = new Mosquitto\Client();
$client->onConnect('connect');
$client->onDisconnect('disconnect');
$client->onSubscribe('subscribe');
$client->onMessage('message');
$client->connect("localhost", 1883, 60);
$client->subscribe('/hasan', 1);while (true) {
$client->loop();
sleep(2);
}
$client->disconnect();
unset($client);
function connect($r) {
echo "I got code {$r}\n";
}
function subscribe() {
echo "Subscribed to a topic\n";
}
function message($message) {
printf("\nGot a message on topic %s with payload:%s",
$message->topic, $message->payload);
}
function disconnect() {
echo "Disconnected cleanly\n";
}
Ошибка при запуске посредника заключается в том, что mosquitto уже работает как служба. Если вы хотите запустить его на переднем плане в подробном режиме, вам придется сначала остановить его.
Запустите следующее на TRaspberry Pi, чтобы остановить службу.
sudo service stop mosquitto
Ошибка с mosquitto_pub
подразумевает, что вы нажимаете возврат между mosquitto
и -h localhost...
Проблемы с PHP должны быть подняты как отдельный вопрос.
Теперь мне нужен тестовый код pub.php и sub.php, как это можно сделать
Я поставил sup.php & pub.php в / var / www / html
sub.php
<?php
$client = new Mosquitto\Client();
$client->onConnect('connect');
$client->onDisconnect('disconnect');
$client->onSubscribe('subscribe');
$client->onMessage('message');
$client->connect("localhost", 1883, 60);
$client->subscribe('/#', 1);while (true) {
$client->loop();
sleep(2);
}
$client->disconnect();
unset($client);
function connect($r) {
echo "I got code {$r}\n";
}
function subscribe() {
echo "Subscribed to a topic\n";
}
function message($message) {
printf("\nGot a message on topic %s with payload:%s",
$message->topic, $message->payload);
}
function disconnect() {
echo "Disconnected cleanly\n";
}
pub.php
<?php
$client = new Mosquitto\Client();
$client->onConnect('connect');
$client->onDisconnect('disconnect');
$client->onPublish('publish');
$client->connect("localhost", 1883, 5);
while (true) {
try{
$client->loop();
$mid = $client->publish('/mqtt', "Hello from PHP");
$client->loop();
}catch(Mosquitto\Exception $e){
return;
}
sleep(2);
}
$client->disconnect();
unset($client);
function connect($r) {
echo "I got code {$r}\n";
}
function publish() {
global $client;
echo "Mesage published\n";
$client->disconnect();
}
function disconnect() {
echo "Disconnected cleanly\n";
}
Сейчас работа
Установите в этой команде по этой ссылке
http://mosquitto.org/2013/01/mosquitto-debian-repository/
также установить москитные клиенты
sudo apt-get install mosquitto-clients
после этого я использую эти команды для тестирования
$ mosquitto_sub -h 192.168.1.2 -d -t hello/world
а также
$ mosquitto_pub -h 192.168.1.2 -d -t hello/world -m "Message To Send"
Где 192.168.1.2 — IP-адрес вашего Raspberry Pi
пожалуйста, смотрите эту ссылку
https://rasspberrypi.wordpress.com/2012/09/16/mosquitto-mqtt-on-raspberry-pi-broker-publish-and-subscribe-client/
pi @ raspberrypi: ~ $ mosquitto_sub -h 210.201.4.114 -d -t привет / мир
Клиент mosqsub / 1796-raspberryp отправляет CONNECT
Клиент mosqsub / 1796-raspberryp получил CONNACK
Клиент mosqsub / 1796-raspberryp отправляет ПОДПИСАТЬСЯ (Mid: 1, Тема: hello / world, QoS: 0)
Клиент mosqsub / 1796-raspberryp получил SUBACK
Подписано (середина: 1): 0
Клиент mosqsub / 1796-raspberryp отправляющий PINGREQ
Клиент mosqsub / 1796-raspberryp получил PINGRESP
Клиент mosqsub / 1796-raspberryp отправляющий PINGREQ
Клиент mosqsub / 1796-raspberryp получил PINGRESP
Клиент mosqsub / 1796-raspberryp получил PUBLISH (d0, q0, r0, m0, «привет / мир», … (15 байт))
Сообщение для отправки
Клиент mosqsub / 1796-raspberryp отправляющий PINGREQ
Клиент mosqsub / 1796-raspberryp получил PINGRESP
============================================
pi @ raspberrypi: ~ $ mosquitto_pub -h 210.201.4.114 -d -t hello / world -m «Сообщение для отправки»
Клиент mosqpub / 1800-raspberryp отправляет CONNECT
Клиент mosqpub / 1800-raspberryp получил CONNACK
Клиент mosqpub / 1800-raspberryp отправляет PUBLISH (d0, q0, r0, m1, «привет / мир», … (15 байт))
Клиент mosqpub / 1800-raspberryp отправляет DISCONNECT