iT邦幫忙

1

php mysql 和MQTT的連接問題

大家好:

想請教想把韌體的資料透過IP傳到mysql該怎麼做?
我試著用"TCP &UDP Dubuger"想傳資料到mysql但都失敗

我有參考這篇文章
http://scolin912.blogspot.com/2017/05/php-mysql-mqtt.html

但還是沒頭緒.....
而且測試PHP時,他都會出現https://ithelp.ithome.com.tw/upload/images/20190919/20102983QWzeTAfabf.png

以下是程式碼:

<?php
   require_once("phpMQTT.php"); //同個資料夾下,要有phpMQTT.php這個檔案
  $host = "127.0.0.1";
  $port = 1883;
  $username = "";
  $password = "";

  $mqtt = new phpMQTT($host, $port, "ClientID".rand());

  if(!$mqtt->connect(true,NULL,$username,$password)){
    exit(1);
  }

  //currently subscribed topics
  $topics_update_BLE['hello/update_BLE_data'] = array("qos"=>0, "function"=>"procmsg");
  $topics_add_data['hello/add_data'] = array("qos"=>0, "function"=>"procmsg1");
  $mqtt->subscribe($topics_update_BLE,0);
  $mqtt->subscribe($topics_add_data,0);

  while($mqtt->proc()){       
  }

  $mqtt->close();
  function procmsg($topic_update_BLE,$msg){
    $NewString = explode('\\', $msg,5);
      mysql_connect("localhost","","") or die("connect error!");
      mysql_select_db('test') or die("db error");
      mysql_query("insert into tt(acc) values ('333')");
      echo 'Update_data success ';
  }

?>

謝謝

看更多先前的討論...收起先前的討論...
dragonH iT邦超人 5 級 ‧ 2019-09-19 14:51:05 檢舉
鍵盤解題

你這個看起來是用來 connect MQTT的

阿你的 MQTT哩
神威 iT邦新手 1 級 ‧ 2019-09-19 14:57:51 檢舉
dragonH 其實我不太清楚MQTT說.....因為之前都沒用過,現在是第一次試這種的,所以MQTT是要再另外弄嗎?需要再灌其他程式嗎?
dragonH iT邦超人 5 級 ‧ 2019-09-19 15:04:19 檢舉
為了美觀

貼到下面了
slime iT邦大師 1 級 ‧ 2019-09-19 15:48:54 檢舉
看起來需要在本機(127.0.0.1)裝 MQTT Broker , 這樣 PHP 才能連到 MQTT Broker

參考:
https://medium.com/彼得潘的-swift-ios-app-開發教室/ios-x-iot-4-建立-mqtt-broker-d86fa8f34dc8
沒看到 phpMQTT.php
0
dragonH
iT邦超人 5 級 ‧ 2019-09-19 15:03:21
最佳解答

我對 MQTT 理解也有限

不過他如果是走 TCP/IP 的話

就至少要有個 Server 之類的東西(在 MQTT 好像叫 Broker?)

這點應該是不會錯的

錯誤訊息也是告訴你這樣

參考1

參考2

看更多先前的回應...收起先前的回應...
神威 iT邦新手 1 級 ‧ 2019-09-19 15:06:08 檢舉

所以我把自己的電腦當server這樣OK嗎?還是需要另一台電腦?
因為我用自己的電腦試都無法傳成功,我想是不是我少開了甚麼設定?

dragonH iT邦超人 5 級 ‧ 2019-09-19 15:10:38 檢舉

當然可以

你可以一直開開到你的 port 用完/images/emoticon/emoticon48.gif

我是不知道你的狀況

不過錯誤訊息就是告訴你連不到

dragonH iT邦超人 5 級 ‧ 2019-09-19 15:50:14 檢舉

我實測過

他這 php 是可以正常運行的

我是用 nodejs 的 mosca lib 建 server 的

小魚 iT邦大師 1 級 ‧ 2019-09-19 16:23:28 檢舉

所以是Server的問題.

dragonH iT邦超人 5 級 ‧ 2019-09-19 16:30:36 檢舉

錯誤訊息很明顯呀XD

要嘛 port 被擋住 要嘛 port 沒開

就算不是 MQTT也是一樣 /images/emoticon/emoticon07.gif

0
bestlong
iT邦研究生 5 級 ‧ 2019-09-20 21:18:50

先檢查 MQTT Server 是否設定好了
安裝後都會有命令列程式可以測試服務是否可用,以 mosquitto 來說會有

  • mosquitto_pub 處理發布
  • mosquitto_sub 處理訂閱

先開一個命令列視窗執行訂閱

mosquitto_sub -h 127.0.0.1 -t "testmqtt/#"

再開一個命令列視窗執行發布

mosquitto_pub -h 127.0.0.1 -t "testmqtt" -m "Test"

如果正常運作的話在訂閱視窗中就會收到發送的訊息,到這個階段沒問題再去處理 PHP 部分。

0
eric19740521
iT邦新手 3 級 ‧ 2020-01-18 10:50:00

https://swf.com.tw/images/books/IoT/MQTT/publisher_broker_subscriber.png
MQTT架構圖

有可能是:
1.MQTT沒架好... 那就裝一下服務器
https://swf.com.tw/?p=1005
2.127.0.0.1 1883發生錯誤訊息??還是空白
用 windows 常用網路指令netstat 查詢 1883是否正常

這邊有完整的範例
https://segmentfault.com/a/1190000014031341

pc發布(php) ,我測試正常...
android 訂閱(非php).這測試也正常...

0
laico12345
iT邦新手 5 級 ‧ 2021-01-11 17:15:22

MQTT需要有Broker 中間人
無法對聯 若只需要對連 可以使用Socket傳輸方式

我要發表回答

立即登入回答