Last active
December 20, 2015 09:40
-
-
Save michaelmyers/6109665 to your computer and use it in GitHub Desktop.
Post temperature data to http://novum.io on a Raspberry Pi using the DS18B20 1-wire temperature sensor
See http://help.novum.io/index.php/posting-temperature-data-with-the-ds18b20/ for more information
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ''' | |
| Post temperature data to novum.io on a Raspberry Pi using the DS18B20 1-wire temperature sensor | |
| See http://help.novum.io/index.php/posting-temperature-data-with-the-ds18b20/ for more information | |
| @author: novum.io | |
| ''' | |
| import os | |
| import glob | |
| import time | |
| import httplib | |
| import urllib | |
| import time | |
| os.system('modprobe w1-gpio') | |
| os.system('modprobe w1-therm') | |
| base_dir = '/sys/bus/w1/devices/' | |
| device_folder = glob.glob(base_dir + '28*')[0] | |
| device_file = device_folder + '/w1_slave' | |
| def read_temp_raw(): | |
| f = open(device_file, 'r') | |
| lines = f.readlines() | |
| f.close() | |
| return lines | |
| def read_temp(): | |
| lines = read_temp_raw() | |
| while lines[0].strip()[-3:] != 'YES': | |
| time.sleep(0.2) | |
| lines = read_temp_raw() | |
| equals_pos = lines[1].find('t=') | |
| if equals_pos != -1: | |
| temp_string = lines[1][equals_pos+2:] | |
| temp_c = float(temp_string) / 1000.0 | |
| temp_f = temp_c * 9.0 / 5.0 + 32.0 | |
| #return temp_c, temp_f | |
| return temp_f | |
| def postDataToNovumIO(data): | |
| apiKey = "{{apiKey}}" | |
| uuid = "{{uuid}}" | |
| timestamp = int(time.time()) | |
| headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain", "api_key": apiKey} | |
| url = "/channels/" + uuid | |
| #print "Posting " + url #uncomment to debug | |
| conn = httplib.HTTPConnection("api.novum.io") | |
| conn.request("POST", url, "data=" + str(data) + "&time=" + str(timestamp), headers) | |
| response = conn.getresponse() | |
| print response.status, response.reason #uncomment to debug | |
| conn.close() | |
| postDataToNovumIO(read_temp()) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment