首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >on_subscribe不工作-泛美卫生组织python与IBM物联网平台

on_subscribe不工作-泛美卫生组织python与IBM物联网平台
EN

Stack Overflow用户
提问于 2021-03-15 06:28:49
回答 1查看 83关注 0票数 0

我尝试了我的订阅服务器,它是使用HiveMQ代理使用Paho python客户端编写的,它工作得很好,但是它不适合于IBM。

订阅应用程序状态消息和这个问题中,我按照以下方式实现了suscriber客户机(我从IBM平台的应用程序部分获得了"a:<ORG-ID>:<App-ID>" ):

代码语言:javascript
复制
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()回调。我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-15 07:24:09

如果您想要订阅应用程序状态消息,那么

应用程序可以订阅一个或多个应用程序的监视状态,例如:

代码语言:javascript
复制
Subscribe to topic iot-2/app/appId/mon

注意:若要订阅所有应用程序的更新,请为appId comp使用MQTT "any“通配符(+)。

基于上述,这条线:

代码语言:javascript
复制
(result, mid) = client.subscribe("iot-2/app/MyAppID/sensordata", 2)

应该是

代码语言:javascript
复制
(result, mid) = client.subscribe("iot-2/app/MyAppID/mon", 2)

代码语言:javascript
复制
(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)

对于每一个可能的事件:

代码语言:javascript
复制
(result, mid) = client.subscribe("iot-2/type/+/id/+/evt/+/fmt/+",2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66633253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档