我遇到一个非常奇怪的问题。前提是我对mqtt和python都一无所知(后者至少从5-6年起就不再使用了),但是我正在使用3D跟踪系统(www.python.org)为博物馆制作Unity应用。 pozyx.io),我需要每台机器都运行一个小的mqtt-to-OSC客户端,以便我的Unity应用可以从客户端读取位置数据。
在我的开发机器上,使用传感器生产者提供的脚本的稍作修改的版本,所有这些工作都像一个魅力。
`
API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
import paho.mqtt.client as mqtt
import ssl
import json
from pythonosc.udp_client import SimpleUDPClient
host = "mqtt.cloud.pozyxlabs.com"
port = 443
topic = "5c500595601a3f5871a17685"
username = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
ip = "127.0.0.1" # IP for the OSC UDP
network_port = 8888 # network port for the OSC UDP
osc_udp_client = SimpleUDPClient(ip, network_port)
def on_connect(client, userdata, flags, rc):
print(mqtt.connack_string(rc))
def on_message(client, userdata, msg):
tag_data = json.loads(msg.payload.decode())
for tag in tag_data:
try:
network_id = tag["tagId"]
#print(network_id)
timestamp = tag["timestamp"]
position = tag["data"]["coordinates"]
yaw = tag["data"]["orientation"]["yaw"]
osc_udp_client.send_message("/position", [network_id, timestamp, position["x"], position["y"], position["z"], yaw])
except:
print("Received a bad packet?")
pass
def on_subscribe(client, userdata, mid, granted_qos):
print("Subscribed to topic!")
client = mqtt.Client(transport="websockets")
client.username_pw_set(username, password=password)
client.tls_set_context(context=ssl.create_default_context())
client.on_connect = on_connect
client.on_message = on_message
client.on_subscribe = on_subscribe
client.connect(host, port=port)
client.subscribe(topic)
client.loop_forever()
`
现在,我很想部署,当然是在新设置的Windows 10计算机上(我在NUC和Lenovo Thinkpad上都尝试过),但没有任何效果,每次出现以下错误>
C:\ Users \ Vattenkikare1 \ Desktop \ osc_hans> py osc_hans.py 追溯(最近一次通话): 在第67行的文件“ osc_hans.py”中 client.connect(主机,端口=端口) 连接中的文件“ C:\ Users \ Vattenkikare1 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ paho \ mqtt \ client.py”,行839 返回self.reconnect() 重新连接的文件“ C:\ Users \ Vattenkikare1 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ paho \ mqtt \ client.py”,第994行 sock.do_handshake() do_handshake中的文件“ C:\ Users \ Vattenkikare1 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ ssl.py”,行1117 self._sslobj.do_handshake() ssl.SSLCertVerificationError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地发行者证书(_ssl.c:1056)
我的笔记本电脑已插入同一WiFi,并且我对所有计算机都具有管理员权限。您对导致问题的原因有任何想法吗?那为什么只能在其他计算机上而不在我的计算机上发生这种情况呢? 我确实首先在这些计算机上部署了一个exe,但是随后在其中一台计算机上,我对所有模块进行了快速python设置,但是没有任何改变。
我确实发现了一些类似的问题,但是就解决方案而言,我没有一个直接与我有关。
答案 0 :(得分:0)
我似乎以最随机的方式找到了解决方案。我在帖子中注意到Pozyx.io网站使用了“ COMODO RSA域验证安全服务器CA”证书,即使API文档中未提及该证书,我也将其安装在测试计算机上,并且全部开始工作。 >