尝试“将 Raspberry Pi 连接到 Azure IoT 中心 (Python)”教程,今天早上效果很好,但现在收到错误消息:
pi@raspberrypi:~/iot-hub-python-raspberrypi-client-app $ python app.py HostName=RPiHub.azure-devices.net;DeviceId=MyPi;SharedAccessKey=Rd++cewght3xMyzpzKeQkKIUxwLokI5BQpvanXYntXE=
Device connection string is not correct.
这是我尝试简单地运行应用程序时的情况。
在 app.py 中检查此错误的代码:
def is_correct_connection_string():
m = re.search("HostName=.*;DeviceId=.*;", CONNECTION_STRING)
if m:
return True
else:
return False
教程说该字符串应该是“您的 Azure IoT 中心设备连接字符串”,我正是从教程所说的获取它的地方获取它。
奇怪的是,这一切之前都工作得很好,但现在尝试在新的 Pi 上再次执行此操作,但它只是拒绝工作。
我删除了Azure门户中的所有内容、所有资源等,从头开始尝试。是否有我遗漏或遗留的东西可能导致此问题?
您应该在命令中的设备连接字符串中添加引号。
python app.py "{Device Connection String}"
如果没有,CONNECTION_STRING将如下所示。
HostName=*.azure-devices.net
有点晚了,但是教程中输出的连接字符串实际上是三个不同的值:连接字符串、设备 ID 和共享访问密钥,它们之间用分号分隔
;
。
从您提供的字符串中
RPiHub.azure-devices.net;DeviceId=MyPi;SharedAccessKey=Rd++cewght3xMyzpzKeQkKIUxwLokI5BQpvanXYntXE=
您只需要直到第一个分号。
在您的示例中,您应该使用
RPiHub.azure-devices.net
,但是,应该删除当前项目,因为它现在容易受到公开暴露的令牌的攻击。