我有一个python脚本轮询5个临时传感器并通过http将结果发布到mysql。其中一个传感器与其他4个传感器一样准确,因此我希望在发布到数据库之前将其乘以1.02来修改avgtemperatures [2]。
如何在系列中修改传感器int / string?
import requests
import hashlib
import time
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
sensorids = ["28-05168023f3ee", "28-0516803623ee", "28-0416807d93ee", "28-0516801a63ee", "28-0516801b03ee"]
avgtemperatures = []
for sensor in range(len(sensorids)):
temperatures = []
for polltime in range(0,3):
text = '';
while text.split("\n")[0].find("YES") == -1:
tfile = open("/sys/bus/w1/devices/"+ sensorids[sensor] +"/w1_slave")
text = tfile.read()
tfile.close()
time.sleep(1)
secondline = text.split("\n")[1]
temperaturedata = secondline.split(" ")[9]
temperature = float(temperaturedata[2:])
temperatures.append(temperature / 1000)
avgtemperatures.append(sum(temperatures) / float(len(temperatures)))
print avgtemperatures[0]
print avgtemperatures[1]
print avgtemperatures[2]
print avgtemperatures[3]
print avgtemperatures[4]
session = requests.Session()
nonce = session.get(url='http://server.local/saveTemp.php?step=nonce').text
response = hashlib.sha256(nonce + 'password' + str(avgtemperatures[0]) + str(avgtemperatures[1]) + str(avgtemperatures[2]) + str(avgtemperatures[3]) + str(avgtemperatures[4])).hexdigest()
post_data = {'response':response, 'temp1':avgtemperatures[0], 'temp2': avgtemperatures[1], 'temp3': avgtemperatures[2], 'temp4': avgtemperatures[3], 'temp5': avgtemperatures[4]}
post_request = session.post(url='http://server.local/saveTemp.php', data=post_data)
if post_request.status_code == 200 :
print post_request.text
答案 0 :(得分:0)
使用带有权重因子的第二个列表,zip
列表并相应地乘以每个值:
avgtemperatures = [1.0, 2.0, 3.0, 4.0, 5.0]
weights = [1.0, 1.0, 1.02, 1.0, 1.0]
weightedaverages = [a * w for a, w in zip(avgtemperatures, weights)]
print(weightedaverages)
# [1.0, 2.0, 3.06, 4.0, 5.0]