我目前正在用Python编写一个脚本,它允许从连接的设备中侦听串口,以便在通过门时猜测人的身高。 最后的想法是通过http请求将此信息发送到Piwik,这是一个网络分析包。 代码如下:
import serial, httplib, uuid
arduino = serial.Serial('/dev/ttyACM0', 9600)
while True:
data = arduino.readline()
print data
conn = httplib.HTTPConnection("my-domain.com")
conn.request("HEAD","/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid="+str(uuid.uuid4())+"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"")
print conn.request
当我要求打印以下行时:
"/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid="+str(uuid.uuid4())+"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+""
它工作正常。但是,如果我查看托管我网站的服务器的日志,则不会发送请求。
如果我删除以下部分"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"
,那么它工作正常并发送请求。
如果我留下以下部分&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data)+"
并使用数字对以下值+str(data)+
进行硬编码,则也会发送请求。
我真的不是问题所在。如果有人能提供帮助那就太棒了。
在阅读完答案并继续工作之后,我找到了一种通过使用请求函数来优化代码的方法,但结果仍然是相同的,我无法在请求中获得str(数据)值:< / p>
import serial, requests, uuid
arduino = serial.Serial('/dev/ttyACM0', 9600)
while True:
data = arduino.readline()
print data
r = requests.get('http://my-domain.com/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid='+str(uuid.uuid4())+'&e_c=entree-magasin&e_a=passage&e_n=taille&e_v='+str(data)+'')
print r
答案 0 :(得分:0)
尝试以下代码,参数不是标题
的一部分resp, content = h.request("http://my-domain.com/piwik/piwik.php?idsite=1&rec=1&action_name=Entree-magasin&uid="+str(uuid.uuid4())+"&e_c=entree-magasin&e_a=passage&e_n=taille&e_v="+str(data), "GET")
答案 1 :(得分:0)
我想我明白了。我尝试使用Google Analytics而不是Piwik做同样的事情。它适用于谷歌分析,str(数据)在系统内正常运行,但由于某种原因,它不适用于Piwik :(