我有一个非常奇怪的问题。前提是我对mqtt和python都一无所知(后者我现在至少有5-6年没有用过了),但我正在使用3D跟踪系统(www.pozyx.io)为一家博物馆制作Unity应用程序,我需要我的每台机器都运行一个小型的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()`
现在我正在准备部署,当然是在新安装的windows10机器上(我在NUC和Lenovo Thinkpad上都试过了),什么都不能用,每次我都会得到以下错误
C:\Users\Vattenkikare1\Desktop\osc_hans>py osc_hans.py回溯(最近一次调用):文件"osc_hans.py",67行,在client.connect( port=port)文件返回行839,在connect return self.reconnect()文件返回行994,在重新连接"C:\Users\Vattenkikare1\AppData\Local\Programs\Python\Python37-32\lib\ssl.py",()文件sock.do_handshake行1117中,在do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: SSL: CERTIFICATE_VERIFY_FAILED证书验证失败:无法获取本地颁发者证书(_ssl.c:1056)
我的笔记本电脑连接到同一个WiFi上,并且我确实拥有所有机器的管理员权限。你知道是什么导致了这个问题吗?为什么这种情况只发生在其他计算机上,而不发生在我的计算机上?我首先在这些机器上部署了一个可执行文件,然后在其中一台机器上对所有模块进行了快速的python设置,但没有任何变化。
我确实发现了一些类似的问题,但没有一个问题可以与我的解决方案直接相关。
发布于 2019-03-15 17:36:29
我似乎以最随机的方式找到了解决方案。我在一篇文章中注意到Pozyx.io网站使用了"COMODO RSA Domain Validation Secure Server CA“证书,尽管应用编程接口文档没有提到它,但我在测试计算机上安装了它,一切都开始工作了。
https://stackoverflow.com/questions/55176763
复制相似问题