python - 将 python 脚本的上行消息发布到 TTN(物联网)模拟节点

标签 python iot

出于测试目的,我尝试从普通计算机上的 python 脚本将 MQTT 消息(上行链路)发布到 TTN(事物网络)。这应该模拟来自节点的上行链路。

基于我在 stackoverflow 上找到的示例并在blog上我编写了以下代码:

#!/usr/bin/env python3
import paho.mqtt.client as paho

#settings
app_id = "<Application ID from the TTN console>"
access_key = "ttn-account-v2.etcetcetcetcetc.."

broker="eu.thethings.network"
port=1883

def on_publish(client,userdata,result):
    print("data published \n")
    print(client,userdata,result)
    pass

def on_log(mqttc, obj, level, string):
    print(string)

#setup
client = paho.Client()
client.username_pw_set(app_id,access_key)

#callbacks
client.on_publish = on_publish
client.on_log = on_log

#establish connection
client.connect(broker,port)
client.loop_start()

#publish
ret= client.publish("applicationID/bulb1","on",qos=1)
ret.wait_for_publish()

运行时输出

Received CONNACK (0, 0)
Received PUBACK (Mid: 1)
data published 

但是,当我检查应用程序的 TTN 页面时,我看不到数据。

有人有任何建议为什么这不起作用吗?

最佳答案

我不知道两个月后您是否仍然遇到这个问题,但我刚刚遇到了类似的问题并找到了答案。

首先,您要使用“ttn”python 库而不是 MQTT paho 库,因为它使连接更容易。您可以在以下链接中找到它:

https://www.thethingsnetwork.org/docs/applications/python/api-reference.html#mqttclient

如果您按照他们的指南进行操作,您首先也会遇到与此处相同的问题,因为他们没有解释如何正确发送下行链路消息,也没有提供相关示例。

以下是您在使用 ttn 库时发送消息所需执行的操作:

client.send("device_id", base64.encodebytes(bytes("DATA YOU WANT TO SEND", 'utf-8')).decode(), port=1, sched="replace")

关于python - 将 python 脚本的上行消息发布到 TTN(物联网)模拟节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51501611/

相关文章:

PHP socket_write 失败仅在下次调用时返回错误

visual-studio-2015 - 是什么导致此错误 : (Could not find SDK "windowsIoT, Version=10.0.10240.0")?

python - 使用替换的正则表达式来转换数字

python - 识别 python 中的纯函数

python - 在 Python 中将转义字符串显示为 Unicode

python - 'System.IO.FileNotFoundException : Unable to find assembly' in clr library on Python

python - 使用小部件 2 中断小部件 1_ 处理程序 (ipywidgets)

model - OPC UA 信息模型

javascript - Nodejs 服务器在解析之前的输入之前生成输入表单

firebase-realtime-database - ESP8266 无法从 Google Firebase 读取数据