R語言(reticulate)調用 Python MQTT套件

markdown ![](https://hackmd.io/_uploads/BktVwiIPF.png) R是我最常用的程式語言然而並沒有MQTT的相關套件可以使用 所以使用reticulate調用Python的paho-mqtt套件 來達成一些R語言做不到的東西 首先先安裝paho-mqtt的套件資料 `pip3 install paho-mqtt` 在Rstudio中可以直接調用Terminal編輯器 執行Python的標準庫管理器(pip3)安裝套件超方便 ![](https://hackmd.io/_uploads/ry5tJR58F.png) 安裝與載入reticulate套件 這套件可以很簡單調用Python相關資源 包括在Rmackdown中就是使用reticulate套件執行python程式區的程式碼 ```r= install.packages("reticulate") library(reticulate) ``` ### 載入python paho-mqtt套件 ```r= mqtt <- import("paho.mqtt.subscribe") ``` 等於python的 ```python= from paho.mqtt import subscribe as mqtt ``` #### 調用套件函數訂閱MQTT 使用paho.mqtt.subscribe套件提供的simple函數訂閱MQTT的 Topic ```r= AHB0222 <- mqtt$simple("AHB0222/test", hostname="mqtt.eclipseprojects.io") ``` 等於python的 ```python= AHB0222 = mqtt.simple("AHB0222/test", hostname="mqtt.eclipseprojects.io") ``` ![](https://hackmd.io/_uploads/Byrg6q8PK.png) 執行訂閱後會處於執行狀態直到有訊息進來 ![](https://hackmd.io/_uploads/HJdJ8oUDt.png) #### 輸出訂閱的數據 推送一筆數據後可以看到不在處於執行狀態 ![](https://hackmd.io/_uploads/S11dHs8Dt.png) ![](https://hackmd.io/_uploads/rkU3BoIPY.png) 這時就可以輸出剛剛接收到的訊息了 ```r= print(AHB0222$payload) ``` 等於python的 ```python= print(AHB0222.payload) ``` #### 調用套件函數傳遞訊息 ```r= mqtt2 <- import("paho.mqtt.publish") mqtt2$single("AHB0222/test", payload=1234, hostname="mqtt.eclipseprojects.io") ``` 等於python 的 ```python= from paho.mqtt import publish as mqtt2 mqtt2$single("AHB0222/test", payload=1234, hostname="mqtt.eclipseprojects.io") ``` ![](https://hackmd.io/_uploads/r1Ap35UwY.png) > 參考資料 https://rstudio.github.io/reticulate/ https://github.com/eclipse/paho.mqtt.python 🌟全文可以至下方連結觀看或是補充 全文分享至 https://www.facebook.com/LHB0222/ https://www.instagram.com/ahb0222/ 有疑問想討論的都歡迎於下方留言 喜歡的幫我分享給所有的朋友 \o/ 有所錯誤歡迎指教 # [:page_with_curl: 全部文章列表](https://hackmd.io/@LHB-0222/AllWritings)

留言

這個網誌中的熱門文章

Excel_統計_簡單線性回歸_檢量線

分享超實用數學神器!!!再複雜的數學式都可以辨識_擷取圖片自動轉成LaTex

軟體分享_Imagej_顆粒計算_孔隙率計算_孔徑分布