我尝试了我的订阅服务器,它是使用HiveMQ代理使用Paho python客户端编写的,它工作得很好,但是它不适合于IBM。
在订阅应用程序状态消息和这个问题中,我按照以下方式实现了suscriber客户机(我从IBM平台的应用程序部分获得了"a:<ORG-ID>:<App-ID>" ):
def on_connect(client, userdata, flags, rc):
print("CONNACK received with code %d." % (rc))
(result, mid) = client.subscribe("iot-2/app/MyAppID/sensordata", 2)
print("result: ", result, ", mid: ", mid)
if result == paho.MQTT_ERR_SUCCESS:
print("success in subscribing.")
def on_subscribe(client, userdata, mid, granted_qos):
print("Subscribed: "+str(mid)+" "+str(granted_qos))
client = paho.Client("a:<ORG-ID>:<App-ID>")
# adding callbacks to client
client.on_connect = on_connect
client.on_subscribe = on_subscribe
client.on_message = on_message
client.username_pw_set("a-<ORG-ID>-<App-ID>","my authentication token")
client.tls_set( ca_certs=None, certfile=None, keyfile=None, cert_reqs=ssl.CERT_REQUIRED,
tls_version=ssl.PROTOCOL_TLS, ciphers=None)
client.connect("<ORG-ID>.messaging.internetofthings.ibmcloud.com", 8883, 60)
client.loop_start()当我运行这个项目时,我得到的rc值为0,意思是successful connection。
这是on_connect()回调打印:
CONNACK收到代码为0。结果:0,mid: 2成功订阅。
并且没有调用on_subscribe()回调。我做错什么了?
发布于 2021-03-15 07:24:09
如果您想要订阅应用程序状态消息,那么
应用程序可以订阅一个或多个应用程序的监视状态,例如:
Subscribe to topic iot-2/app/appId/mon注意:若要订阅所有应用程序的更新,请为appId comp使用MQTT "any“通配符(+)。
基于上述,这条线:
(result, mid) = client.subscribe("iot-2/app/MyAppID/sensordata", 2)应该是
(result, mid) = client.subscribe("iot-2/app/MyAppID/mon", 2)或
(result, mid) = client.subscribe("iot-2/app/+/mon", 2)如果要接收传感器数据,请使用下面的一行:
订阅主题iot-2/type/device_type/id/device_id/evt/event_id/fmt/format_string
您需要替换: device_type、device_id、event_id、format_string(可能是json,txt)
对于每一个可能的事件:
(result, mid) = client.subscribe("iot-2/type/+/id/+/evt/+/fmt/+",2)https://stackoverflow.com/questions/66633253
复制相似问题