Connect an MQTT device
Get the template
Check template files at examples/mqttDeviceShifu.
Modify configuration
In examples/mqttDeviceShifu/mqtt_deploy/mqtt_edgedevice.yaml:
...
spec:
  sku: "testMQTT" # change this value
  connection: Ethernet
  address: 192.168.62.231:1883 # change this value
  protocol: MQTT
  protocolSettings:
    MQTTSetting:
      MQTTTopic: /test/test # change this value
In examples/mqttDeviceShifu/mqtt_deploy/mqtt_deviceshifu_configmap.yaml:
...
data:
  driverProperties: |
    driverSku: testMQTT
    driverImage: 
  instructions: | 
    instructions: # A command can subscribe to a topic, if you need to subscribe to multiple topics, just add a command
      get_topicmsg1: # change this value
        protocolPropertyList:
          MQTTTopic: "/test/test1" # change this value
      get_topicmsg2: 
        protocolPropertyList:
          MQTTTopic: "/test/test2" 
      ... # You can continue to configure commands and corresponding topics according to your own needs, just continue to add according to this format
Deploy deviceShifu
Run this command:
kubectl apply -f examples/mqttDeviceShifu/mqtt_deploy
Get the latest MQTT message from device
In your cluster:
curl deviceshifu-mqtt/get_topicmsg1
Where get_topicmsg1 is the embedded query string.
Return from MQTT deviceShifu:
{"mqtt_message":"test2333","mqtt_receive_timestamp":"2022-04-29 08:57:49.9492744 +0000 UTC m=+75.407609501"}
Where mqtt_message is the latest data string from device, mqtt_receive_timestamp is the timestamp when the message was received.
Publish MQTT messages through deviceShifu
In your cluster:
curl -X POST -d 'test_publish' deviceshifu-mqtt/get_topicmsg1
Where get_topicmsg1 is the embedded query or publish string.
After publishing, query MQTT deviceShifu again, The returned contents are as follows:
{"mqtt_message":"test_publish","mqtt_receive_timestamp":"2022-04-29 08:57:59.7397692 +0000 UTC m=+75.407609501"}