--
參考
--
PHP Publish
PHP 的應用場景可能發生在需要從網頁發出 publish 控制需求,Hoyo 尚未在 PHP 上撰寫常駐程式
安裝,跳過 PHP 版本需求
1 |
> composer require php-mqtt/client --ignore-platform-reqs |
程式範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php spl_autoload_register(function ($class_name) { $load_FileName = str_replace('\\', '/', $class_name); $file_name = __DIR__ ."/php/". $load_FileName .".php"; if ( is_file($file_name) === true ) { require_once( $file_name ); } }); $server = 'test.mosquitto.org'; $port = 1883; $clientId = 'test-publisher'; $mqtt = new \PhpMqtt\Client\MQTTClient($server, $port, $clientId); $mqtt->connect(); $mqtt->publish('aa/Get/DemandRange', 'Hello World!', 0); $mqtt->close(); |
--
Python
使用證書連接 SSL
1 2 |
client = mqtt.Client() client.tls_set(ca_certs="my_root_ca.pem", certfile="client.pem", keyfile="client.key") |
不使用證書連接
1 2 |
client.tls_set(cert_reqs=ssl.CERT_NONE) client.tls_insecure_set(True) |
完整範例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import paho.mqtt.client as mqtt # 當地端程式連線伺服器得到回應時,要做的動作 def on_connect(client, userdata, flags, rc): logging.info("Connected with result code %s", str(rc)) client.subscribe("v1/devices/me/rpc/request/+") # 當接收到從伺服器發送的訊息時要進行的動作 def on_message(client, userdata, msg): # logging.info(userdata) # 轉換編碼utf-8才看得懂中文 # 設定連線的動作 client.on_connect = on_connect # 設定接收訊息的動作 client.on_message = on_message # 設定登入帳號密碼 client.username_pw_set(mqtt_username, mqtt_password) # 設定連線資訊(IP, Port, 連線時間) try: client.connect(mqtt_broker, int(mqtt_port), 60) except Exception as e: logging.info(e) # def loop_forever(): client.loop_forever() m = threading.Thread(target=loop_forever) m.start() |
--
CLI
CLI 執行方式除了可以滿足單機執行外,讓 PHP 直接呼叫執行應該是更佳的方式,尤其是剛剛上述的 PHP Publish 效能不彰的情況
因為加上了 MySQL 認證
1 |
# mosquitto_pub -h 172.16.1.220 -p 1883 -u emqx -P public -t aa/Get/DemandRange -m "0000" |
完整範例
1 |
# mosquitto_pub -h 172.16.1.220 -p 8883 -u emqx -P public --cafile my_root_ca.pem --cert client.pem --key client.key -t aa/Get/DemandRange -m "0000" |
- -h host
- -p port
- -u 使用者帳號
- -P 使用者密碼
- --cafile SSL CA 證書檔案路徑
- --cert SSL 證書檔案路徑
- --key SSL Key 檔案路徑
- -t Topic
- -m Message
--
1,607 total views, 1 views today