Ситуация: У меня есть виртуальный датчик python (программа python), который передает данные по протоколу MQTT на мое устройство в ThingsBoard. Я могу визуализировать данные на приборной панели, поэтому я уверен, что данные получены.
Проблема: Когда я пытаюсь подключить python подписчика к брокеру раскладок (демонстрационная версия. thingsboard.io) с помощью paho я получаю, что код соединения равен 0, поэтому соединение в порядке, однако Я вижу, что панель управления перестает визуализировать данные с виртуального датчика, но абонент ничего не получает.
Виртуальный датчик публикует на v1 / devices / me / telemetry , а подписчик подписывается на ту же самую topi c 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()
РЕДАКТИРОВАТЬ: добавленный код