2017-10-10 4 views
0

나는 Google 클라우드의 IoT 코어 일하고 거기 나는 온라인 문서에서 제공하는 샘플 (엔드 - 투 - 엔드 예) 중 하나에 문제가 건너 온 : google cloud iot exerciseGoogle 클라우드의 IoT 핵심 운동

이 두 있습니다 스크립트, 나는이 문제에 직면하고있는 장치 스크립트를 실행하는 서버 및 장치에 대한, 그리고 동안 :

+0

코드는 다음과 같습니다 - https://github.com/aadharbhatt/pub-sub-work/blob/master/cloudiot_pubsub_example_mqtt_device.py https://github.com/aadharbhatt/ pub-sub-work/blob/master/cloudiot_pubsub_example_server.py –

+0

__ 게시물 자체 및 제목에 몇 가지 세부 정보를 추가하십시오 .____ 이것은 채팅 상자가 아니라 문제 해결 라이브러리입니다. 질문은 조심스럽게 편집하여 해결 방법을 제공 할 수있을뿐만 아니라 다른 상황에서 비슷한 문제가있는 질문도 미래에 문제를 찾을 수 있습니다. –

답변

0

그것은 (예를 들어, 클라우드 쉘 machine) 방화벽이 포트 8883. 수를 통해 연결하는 파이썬을 차단하고있을 가능성을 포트를 443으로 설정하여 cloudiot_pubsub_example_mqtt_device.py 스크립트를 호출 해보십시오.

python <your_existing_parameters> --mqtt_bridge_port=443 

은 또한 그것은 또한 네트워크에서 차단 될 수 있습니다 포트 8883을 사용하지 않는 메시지를 게시 할 the HTTP device sample을 사용하여 시도 할 수 있습니다.

내 테스트에서 포트를 443으로 설정 한 후에 만 ​​Google Cloud Shell에서 연습을 실행할 수 있었으므로 문제가 해결 될 것입니다.

서버 인증서를 확인하는 문제가 발생하는 경우 호출하여 Google 루트 인증서를 다운로드해야합니다 : 명령 줄의 인수에서

wget https://pki.google.com/roots.pem 
+0

포트 443 ssl 인증서 확인에 실패했습니다 –

+0

덧글을 추가 했으므로 아마도 wget https://pki.google.com/roots.pem을 호출해야합니다. – class

0

error image

Traceback (most recent call last): 
    File "cloudiot_pubsub_example_mqtt_device.py", line 249, in <module> 
    main() 
    File "cloudiot_pubsub_example_mqtt_device.py", line 213, in main 
    client.connect(args.mqtt_bridge_hostname, args.mqtt_bridge_port) 
    File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 
768, in connect 
    return self.reconnect() 
    File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 
927, in reconnect 
    sock.do_handshake() 
    File "/usr/lib/python2.7/ssl.py", line 788, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 
(_ssl.c:581) 
1

, SSL 개인 키인 rsa_cert.pem을 전달하는 것처럼 보입니다. @class가 말했듯이, Google 루트 인증서 (wget https://pki.google.com/roots.pem)를 wget 한 다음 다운로드 한 roots.pem에 --ca_certs 인수를위한 경로를 전달해야합니다. 그 스크립트의