Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中ThingsBoard代理的MQTT订户_Python_Mqtt_Iot_Paho_Thingsboard - Fatal编程技术网

python中ThingsBoard代理的MQTT订户

python中ThingsBoard代理的MQTT订户,python,mqtt,iot,paho,thingsboard,Python,Mqtt,Iot,Paho,Thingsboard,情况: 我有一个python虚拟传感器(python程序),它通过MQTT协议将数据提交到ThingsBoard中的设备。 我可以可视化仪表板上的数据,因此我确信数据已收到 问题: 当我尝试使用paho将python订阅者连接到thingsboard代理(demo.thingsboard.io)时,我得到连接代码为0,因此连接正常,但是,我看到仪表板停止显示来自虚拟传感器的数据,但订阅者没有收到任何信息 虚拟传感器在v1/devices/me/telemetry上发布,订阅者在同一主题v1/de

情况: 我有一个python虚拟传感器(python程序),它通过MQTT协议将数据提交到ThingsBoard中的设备。 我可以可视化仪表板上的数据,因此我确信数据已收到

问题: 当我尝试使用paho将python订阅者连接到thingsboard代理(demo.thingsboard.io)时,我得到连接代码为0,因此连接正常,但是,我看到仪表板停止显示来自虚拟传感器的数据,但订阅者没有收到任何信息

虚拟传感器在v1/devices/me/telemetry上发布,订阅者在同一主题v1/devices/me/telemetry上订阅

有人能帮我弄清楚如何在我的订户客户端上显示虚拟传感器发布的数据吗

虚拟传感器代码:

import paho.mqtt.client as paho                     #mqtt library
import os
import json
import time
from datetime import datetime

ACCESS_TOKEN="vgFztmvT6bps7JCeOEZq"                 #Token of your device
broker="demo.thingsboard.io"                        #host name
port=1883                       #data listening port

def on_publish(client,userdata,result):             #create function for callback
    print("data published to thingsboard \n")
    pass
client1= paho.Client("control1")                    #create client object
client1.on_publish = on_publish                     #assign function to callback
client1.username_pw_set(ACCESS_TOKEN)               #access token from thingsboard device
client1.connect(broker,port,keepalive=60)           #establish connection

while True:

   payload="{"
   payload+="\"Humidity\":60,"; 
   payload+="\"Temperature\":25"; 
   payload+="}"
   ret= client1.publish("v1/devices/me/telemetry",payload) #topic-v1/devices/me/telemetry
   print("Please check LATEST TELEMETRY field of your device")
   print(payload);
   time.sleep(5)
客户订户代码:

import paho.mqtt.client as mqtt
import time

token = "vgFztmvT6bps7JCeOEZq"
broker="demo.thingsboard.io"                        # host name
port=1883
topic = "v1/devices/me/telemetry"

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc) :
    if (rc==0) :
        print("connected OK Returned code = ", rc)
    else :
        print("Bad connection Returned code = ", rc)

def on_message(client, userdata, msg) :
    print (msg.topic + " " + str(msg.payload))    


client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.username_pw_set(token)
client.connect(broker , port, 60)
client.subscribe(topic)

client.loop_forever()

编辑:添加了代码

在您的publisher客户端中,您使用的主题名为:
“v1/devices/me/telemetry”

但是,您不能使用订阅服务器客户端订阅同一主题

更改订阅服务器客户端程序中的以下行:

client.subscribe(令牌)

client.subscribe(主题)


这应该可以解决问题

编辑问题以向我们展示您的代码,如果没有它,我们基本上只是猜测对不起,这只是slackoverflow上的一个错误。在代码中,它是正确的,但不起作用。您可以再次检查,因为我已经使用建议的更改和MQTT代理检查了完全相同的程序。两个程序都运行良好!我认为这是一个Thingsboard限制:无法订阅。