示例#1
0
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
示例#3
0
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'])
    }
示例#4
0
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']))
示例#5
0
 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()
示例#6
0
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
示例#8
0
def getTemp():
    th = TemperHandler()
    devs = th.get_devices()
    t = devs[0].get_temperatures()
    temp = quantity(t[0]['temperature_c'], ureg.degC)
    return temp
示例#9
0
def get_sensors():
    th = TemperHandler()
    devs = th.get_devices()
    if not devs:
        raise RuntimeError('No temperature sensors found')
    return devs
示例#10
0
 def _get_devices(self):
     self._devs = TemperHandler().get_devices()
     log.info("found %d device(s)" % len(self._devs))
示例#11
0
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)

示例#14
0
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()