def get_temperatures(device = None): devs = None readings = [] #Building block of an API dev_info = load_config_file()['devices'] #We store a human-readable identification (aka a name) for each device in config.yaml try: th = TemperHandler() devs = th.get_devices() if(len(devs) > 0): #For every device if there is at least 1 connected for i, dev in enumerate(devs): if(device is None or device is i): readings.append({'device': i, 'c': dev.get_temperature(), 'f': dev.get_temperature(format="fahrenheit"), 'name': dev_info[i]['name'] }) else: #Output a dummy value (for two fake devices) if no devices are connected readings.append({'device': 0, 'c': 20, 'f': 70, 'name': dev_info[0]['name'] }) readings.append({'device': 1, 'c': 10, 'f': 45, 'name': dev_info[1]['name'] }) except: #Sometimes the Python driver experiences a kernel detatchment error... get_temperatures() #So try until we get it (this is probably dangerous!) finally: return readings
def fetch_room_temperature(location, metrics): th = TemperHandler() devs = th.get_devices() thermometer = devs[0] temp = thermometer.get_temperature(format='fahrenheit') logging.info("Temp in %s is %s Deg F" % (location, temp)) #build a metric key = {'measurement': 'TemperatureF', 'location': location} metric = (key, temp) metrics.append(metric) return temp
def get_sensor_reading(): sensor = TempSensor() devices = sensor.get_devices() sensors = range(devices[0].get_sensor_count()) # making an assumption here for one device temperatures = devices[0].get_temperatures(sensors=sensors) # print(temperatures) """ {0: {'ports': 2, 'temperature_f': 83.525, 'sensor': 0, 'temperature_mc': 28625.0, 'temperature_c': 28.625, 'temperature_k': 301.775, 'bus': 1}, 1: {'ports': 2, 'temperature_f': -165.79609375, 'sensor': 1, 'temperature_mc': -109886.71875, 'temperature_c': -109.88671875, 'temperature_k': 163.26328124999998, 'bus': 1}} """ return { 'fahrenheit': round(temperatures[0]['temperature_f']), 'celsius': round(temperatures[0]['temperature_c']) }
def main(): try: opts, args = getopt.getopt(sys.argv[1:], ":hpcfq", ["help"]) except getopt.GetoptError as err: print(str(err)) usage() sys.exit(2) disp_ports = False quiet_output = False for o, a in opts: if o == "-p": disp_ports = True elif o == "-q": quiet_output = True elif o in ("-h", "--help"): usage() sys.exit() else: assert False, "unhandled option" th = TemperHandler() devs = th.get_devices() readings = [] if not quiet_output: print("Found %i devices" % len(devs)) for i, dev in enumerate(devs): readings.append({ 'device': i, 'temperature': dev.get_temperature(), 'ports': dev.get_ports(), 'bus': dev.get_bus() }) for reading in readings: if quiet_output: print('%0.4f' % reading['temperature']) else: if disp_ports: portinfo = " (bus %s - port %s)" % (reading['bus'], reading['ports']) else: portinfo = "" print('Device #%i%s: %0.4f C' % (reading['device'], portinfo, reading['temperature']))
def __init__(self, tempermgr): self.tempermgr = tempermgr if tempermgr is None: raise RuntimeError("The TemperDeviceMgr class requires a" " TemperMgr but the argument was None.") if _enable_temperusb: self.th = None try: self.th = TemperHandler() except: print("A TEMPerV1 compatible device is not plugged in," " or you have no permission to the usb device." " Try running this script with sudo (sudo python" " TemperatureSanitizer.py) or search online for" " linux usb permissions.") exit(2) self.tds = self.th.get_devices() if len(self.tds) < 1: raise RuntimeError(no_dev_msg) self.tmpr = Temper()
class TemperDeviceMgr: def __init__(self, tempermgr): self.tempermgr = tempermgr if tempermgr is None: raise RuntimeError("The TemperDeviceMgr class requires a" " TemperMgr but the argument was None.") if _enable_temperusb: self.th = None try: self.th = TemperHandler() except: print("A TEMPerV1 compatible device is not plugged in," " or you have no permission to the usb device." " Try running this script with sudo (sudo python" " TemperatureSanitizer.py) or search online for" " linux usb permissions.") exit(2) self.tds = self.th.get_devices() if len(self.tds) < 1: raise RuntimeError(no_dev_msg) self.tmpr = Temper() def getTemp(self, deviceIndex=0): ''' Get the current temperature of the given device. raises: PermissionError (see the permission_help function) ValueError (bad settings['scale']) ''' if _enable_temperusb: return self.tds[deviceIndex].get_temperature( format=self.tempermgr.get('scale') ) devices = self.tmpr.read() c = devices[0]['internal temperature'] if self.tempermgr.isF(): return c_to_f(c) elif self.tempermgr.isC(): return c else: scale = self.tempermgr.get('scale') raise ValueError("The scale {} is unknown.".format(scale))
def getTemp(): th = TemperHandler() devs = th.get_devices() t = devs[0].get_temperatures() temp = quantity(t[0]['temperature_c'], ureg.degC) return temp
def get_sensors(): th = TemperHandler() devs = th.get_devices() if not devs: raise RuntimeError('No temperature sensors found') return devs
def _get_devices(self): self._devs = TemperHandler().get_devices() log.info("found %d device(s)" % len(self._devs))
import os import sys import time import traceback import requests from temperusb import TemperHandler URL = os.environ['DASHING_URL'] TOKEN = os.environ['DASHING_TOKEN'] SCALE = float(os.environ['TEMP_SCALE']) OFFSET = float(os.environ['TEMP_OFFSET']) SENSOR = int(os.environ['TEMP_SENSOR']) SLEEP = int(os.environ['SLEEP_TIME']) th = TemperHandler() devs = th.get_devices() if len(devs) != 1: print "Expected exactly one TEMPer device, found %d" % len(devs) sys.exit(1) dev = devs[0] dev.set_calibration_data(scale=SCALE, offset=OFFSET) chars = 0 while True: try: temperature = dev.get_temperature(sensor=SENSOR) except Exception, err: # pylint: disable=broad-except print "\nException on getting temperature\n" print traceback.format_exc()
def getTemperature(): th = TemperHandler() devs = th.get_devices() return int(devs[0].get_temperature())
server["host"], device["id"], temperature ) try: response = urlopen(url) data = response.read().decode("utf-8") feedback = json.loads(data) except urllib.error.HTTPError: feedback = {"error": "Bad URL: %s" % url} return feedback if __name__ == "__main__": settings = json.load(open('settings.json')) devices = json.load(open('devices.json')) temp_handler = TemperHandler() temp_devices = temp_handler.get_devices() for index, device in enumerate(devices): temperature = temp_devices[index].get_temperature() feedback = server_update(settings["server"], device, temperature) if feedback["error"]: print(feedback["error"]) else: print("%fC written to server" % temperature)
import os import sys import time import traceback import requests from temperusb import TemperHandler URL = os.environ["DASHING_URL"] TOKEN = os.environ["DASHING_TOKEN"] SCALE = float(os.environ["TEMP_SCALE"]) OFFSET = float(os.environ["TEMP_OFFSET"]) SENSOR = int(os.environ["TEMP_SENSOR"]) SLEEP = int(os.environ["SLEEP_TIME"]) th = TemperHandler() devs = th.get_devices() if len(devs) != 1: print "Expected exactly one TEMPer device, found %d" % len(devs) sys.exit(1) dev = devs[0] dev.set_calibration_data(scale=SCALE, offset=OFFSET) chars = 0 while True: try: temperature = dev.get_temperature(sensor=SENSOR) except Exception, err: # pylint: disable=broad-except print "\nException on getting temperature\n" print traceback.format_exc()