---
# System prepended metadata

title: R語言(reticulate)調用 Python MQTT套件
tags: [R & python]

---

---
disqus: ahb0222
GA : G-VF9ZT413CG
---
# R語言(reticulate)調用 Python MQTT套件
> [color=#40f1ef][name=LHB阿好伯, 2021/11/08][:earth_africa:](https://www.facebook.com/LHB0222/)
###### tags: `R & python`

[TOC]

![](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)



![](https://i.imgur.com/nHEcVmm.jpg)


