2017-01-20 3 views
3

Ich bin neu in Python, und habe keinen Programmierhintergrund. Ich versuche mit meinem Raspberry Pi Daten an Google Analytics zu senden. Das Problem besteht darin, dass das Google Analytics Measurement Protocol HTTP S verwendet - mit dem mein Code nicht funktioniert.urllib2 zu öffnen HTTPS

So sieht mein aktueller Code wie diese

import urllib2 
import time 
import RPi.GPIO as io 
io.setmode(io.BCM) 


door_sensor = 18 
sensorTrigger = True 

io.setup(door_sensor, io.IN, pull_up_down=io.PUD_UP) 

# function for the door opening 
def door_open(): 
    print("Door Open") 
    urllib2.urlopen("https://www.google-analytics.com/collect?v=1&tid=UA- 3458xxxx-1&cid=555&t=event&ec=doors&ea=open&el=office").close 

# function for the door closing 
def door_close(): 
    print("Door Close") 

while True: 
    if io.input(door_sensor): # if door is opened 
     if (sensorTrigger): 
      door_open() # fire GA code 
      sensorTrigger = False # make sure it doesn't fire again 
    if not io.input(door_sensor): # if door is closed 
     if not (sensorTrigger): 
      door_close() # fire GA code 
      sensorTrigger = True # make sure it doesn't fire again 

und die Fehler, die ich erhalte ist ...

Traceback (most recent call last): 
File "/home/pi/Desktop/GADoorSensor.py", line 23, in <module> 
door_open() # fire GA code 
File "/home/pi/Desktop/GADoorSensor.py", line 14, in door_open 
urllib2.urlopen("https://www.google-analytics.com/collect?v=1&tid=UA-3458xxxx-1&cid=555&t=event&ec=doors&ea=open&el=office").close 
File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen 
return opener.open(url, data, timeout) 
File "/usr/lib/python2.7/urllib2.py", line 431, in open 
response = self._open(req, data) 
File "/usr/lib/python2.7/urllib2.py", line 449, in _open 
'_open', req) 
File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain 
result = func(*args) 
File "/usr/lib/python2.7/urllib2.py", line 1240, in https_open 
context=self._context) 
File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open 
raise URLError(err) 
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:581)> 

Ich folgte THIS Anleitung, ob das hilft.

Ich habe ein paar wenige Artikel online darüber gelesen, wie man das umgehen kann, aber weil ich neu bin, ist es alles andere als verwirrend.

Wenn mir jemand eine Hand geben könnte oder mir einen Anfängerleitfaden geben könnte, wäre ich sehr dankbar!

+0

Haben Sie versucht, 'https: //' auf nur 'http: //' zu ändern. Es sollte Sie um diese Hürde von versuchen, eine verschlüsselte (ssl) Verbindung mit urllib2 zu erstellen. – Matt

Antwort

0

Ich habe mehr Glück mit http.client hatte, thusly ...

import http.client 

myDestination = "https://www.google-analytics.com/collect?v=1&tid=UA- 3458xxxx-1&cid=555&t=event&ec=doors&ea=open&el=office" 

conn = http.client.HTTPSConnection(myDestination) 

dann ...

conn.response() 

nicht

conn.request() 

und

verwenden vergessen ...

conn.close()