def setUp(self):
        """ Creates a test fixture before each test method is run """
        self.logPoint()

        # This mocks the csv reader to return our test readings
        csv.reader = MagicMock(
            return_value=TestTemperatureSensor.TEST_READINGS)
        self.test_temperature_sensor = TemperatureSensor("testresults.csv")
    def test_invalid_temperature_sensor_parameter(self):
        """ 010B - Invalid Construction of the sensor """

        # Must reject an undefined sensor path
        with self.assertRaises(ValueError):
            TemperatureSensor(None)

        # Must reject an empty sensor path
        with self.assertRaises(ValueError):
            TemperatureSensor("")
class TemperatureTracker:

    def __init__(self) -> None:
        self.sensor = TemperatureSensor()
        self.start_temp = 0

    def record_initial_temperature(self):
        self.start_temp = self.sensor.check_temperature()

    def find_temperature_change(self):
        return self.sensor.check_temperature() - self.start_temp
示例#4
0
def detectOneWireSensors():
    w1_root_path = "/sys/bus/w1/devices"
    devices = []
    for file_name in os.listdir(w1_root_path):
        file_path = os.path.join(w1_root_path, file_name)
        if os.path.isdir(file_path) and "w1_bus_master" not in file_name:
            device_path = os.path.join(file_path, "w1_slave")
            devices.append(TemperatureSensor(file_name, device_path))

    logger.debug("Found {} onewire devices: \n\t{}".format(
        len(devices), '\n\t'.join([str(d) for d in devices])))
    return devices
示例#5
0
def main():
    # Temperature Sensor Object (Deals with API and provides graphable data (x, y) values)
    temp_sensor = TemperatureSensor(Constants.group_id,
                                    Constants.temp_widget_id)

    # Sensor Graph Object (Takes in the sensor object, reads sensor data periodically, and plots it)
    interval = 3 * 60  # Seconds
    graph_points = 10  # At an instance, this many latest data points will be plotted
    sensor_graph = SensorGraph(interval, graph_points, temp_sensor)

    # Starts the plotting process (Shows the graph and gets updates for sensor in a while loop)
    sensor_graph.start_plotting()
示例#6
0
def main():
    vehicles = [
        Plane('CDA-100', '787', 70, 100),
        Plane('AH-100', '474', 150, 50),
        Car('Renault Latitud', 45, 5)
    ]
    sensors = []
    for vehicle in vehicles:
        print(
            f'{vehicle}:\t'
            f'Capacity: {vehicle.passengers}'
        )
        sensors.append(GasolineSensor(vehicle))
        sensors[-1].check_level()
        vehicle.move()
        sensors[-1].check_level()
        sensors.append(TemperatureSensor(vehicle))
        sensors[-1].check_level()
    
    vehicles[2].temperature_level = 150
    sensors[-1].check_level()
示例#7
0
def main():
    """Main program  --  calls other methods and prints results in a human-readable format
    """

    sensor = TemperatureSensor(sensor_results_file)
    print()
    print("Sensor: %s" % (sensor.get_sensor_name()))
    print("Period: %s to %s" % (sensor.get_time_period()))
    print("Lowest Temp: %f%cC" %
          (sensor.get_reading_stats().get_lowest_reading(), DEGREE_SIGN))
    print("Average Temp: %f%cC" %
          (sensor.get_reading_stats().get_average_reading(), DEGREE_SIGN))
    print("Highest Temp: %f%cC" %
          (sensor.get_reading_stats().get_highest_reading(), DEGREE_SIGN))
    print(
        "Largest Temp Range: %f%cC" %
        (sensor.get_reading_stats().get_largest_reading_range(), DEGREE_SIGN))
    if isinstance(sensor.get_error_messages(), list) > 0:
        print("Error Messages:")
        for msg in sensor.get_error_messages():
            print("  " + msg)
    else:
        print("No Error Readings")

    sensor = PressureSensor(sensor_results_file2)
    print()
    print("Sensor: %s" % (sensor.get_sensor_name()))
    print("Period: %s to %s" % (sensor.get_time_period()))
    print("Lowest Pressure: %f %s" %
          (sensor.get_reading_stats().get_lowest_reading(), PRESSURE_SIGN))
    print("Average Pressure: %f %s" %
          (sensor.get_reading_stats().get_average_reading(), PRESSURE_SIGN))
    print("Highest Pressure: %f %s" %
          (sensor.get_reading_stats().get_highest_reading(), PRESSURE_SIGN))
    print("Largest Pressure Range: %f %s" %
          (sensor.get_reading_stats().get_largest_reading_range(),
           PRESSURE_SIGN))
    if isinstance(sensor.get_error_messages(), list) > 0:
        print("Error Messages:")
        for msg in sensor.get_error_messages():
            print("  " + msg)
    else:
        print("No Error Readings")
示例#8
0
import time
from temperature_sensor import TemperatureSensor

cur_temp_data = None
temperature = TemperatureSensor()

while True:
    cur_temp_data = temperature.publish_data()
    time.sleep(30)
示例#9
0
文件: main.py 项目: caoanle13/Rise
# LED setup
from led import LED

led = LED(1000, 1000, 1000, 100, 100, 100)

# sensor setup
# distance
from distance_sensor import DistanceSensor

handDetected = False

# temperature
from temperature_sensor import TemperatureSensor

temperature_data = []
temperature = TemperatureSensor()

# humidity
from temperature_sensor import HumiditySensor

humidity_data = []
humidity = HumiditySensor()

# Timing set up
time_data = []
t = Timing()

# mqtt setup
import paho.mqtt.client as mqtt

piTopic = "IC.embedded/tEEEm/TO_PI"
#!/usr/bin/env python

import pywapi
from temperature_logger import TemperatureLogger
from temperature_sensor import TemperatureSensor

# get area temperature
sensor = TemperatureSensor()
tempF = sensor.getTemperature()

# get outside temperature
noaaData = pywapi.get_weather_from_noaa('KCAK')
airportTempF = noaaData['temp_f']

# log temperature
logger = TemperatureLogger('garage')
logger.log(tempF, airportTempF)

示例#11
0
from flask import Flask
from temperature_sensor import TemperatureSensor
from datetime import datetime, timedelta
from regulator import *

app = Flask(__name__)

temperature_sensor = TemperatureSensor(4, "Indoor humidity/temperature")

regulator = Regulator(timedelta(days=1), timedelta(seconds=15))
regulator.add_input(temperature_sensor)
regulator.start()


@app.route('/')
def index():
    mesured_field = regulator.actualize()
    page = str()
    for value in mesured_field:
        print(value)
        page = page + "<p>" + value[0] + ": " + value[1] + " = " + str(
            value[2][0]) + value[3] + ".</p>"
    for value in mesured_field[1][2]:
        page = page + "<p>" + str(value) + ".</p>"
    return page


if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
 def __init__(self) -> None:
     self.sensor = TemperatureSensor()
     self.start_temp = 0
 def temperaturecelsius(self, mess, args):
     """Get the temperature of the room where the Raspberry Pi is located in celsius"""
     sensor = TemperatureSensor()
     return sensor.getTemperatureCelsius()
 def temperature(self, mess, args):
     """Get the temperature of the room where the Raspberry Pi is located in fahrenheit"""
     sensor = TemperatureSensor()
     return sensor.getTemperature()
class TestTemperatureSensor(TestCase):
    """ Unit Tests for the TemperatureSensor Class """

    TEST_READINGS = [
        [
            "2018-09-23 19:56:01.345", "1", "ABC Sensor Temp M301A", "20.152",
            "21.367", "22.005", "OK"
        ],
        [
            "2018-09-23 19:57:02.321", "1", "ABC Sensor Temp M301A", "20.163",
            "21.435", "22.103", "OK"
        ],
        [
            "2018-09-23 19:58:01.324", "3", "ABC Sensor Temp M301A", "20.142",
            "21.528", "21.803", "OK"
        ],
        [
            "2018-09-23 19:59:04.000", "4", "ABC Sensor Temp M301A", "20.212",
            "21.641", "22.017", "OK"
        ],
        [
            "2018-09-23 20:00:01.453", "5", "ABC Sensor Temp M301A", "100.000",
            "100.000", "100.000", "HIGH_TEMP"
        ],
        [
            "2018-09-23 20:01:01.111", "6", "ABC Sensor Temp M301A", "21.244",
            "21.355", "22.103", "OK"
        ],
        [
            "2018-09-23 20:02:02.324", "7", "ABC Sensor Temp M301A", "21.112",
            "22.345", "22.703", "OK"
        ],
        [
            "2018-09-23 20:03:02.744", "8", "ABC Sensor Temp M301A", "20.513",
            "21.745", "22.105", "OK"
        ],
        [
            "2018-09-23 20:04:01.123", "9", "ABC Sensor Temp M301A", "20.333",
            "21.348", "21.943", "OK"
        ],
        [
            "2018-09-23 20:04:01.999", "10", "ABC Sensor Temp M301A", "20.332",
            "21.445", "22.013", "OK"
        ],
        [
            "2018-09-23 20:04:02.001", "11", "ABC Sensor Temp M301A",
            "-50.000", "-50.000", "-50.000", "LOW_TEMP"
        ]
    ]

    # This mocks the builtin file open method in python always return '1' for the file data (we don't care
    # since we are mocking the csv reader as well.

    @patch('builtins.open', mock_open(read_data='1'))
    def setUp(self):
        """ Creates a test fixture before each test method is run """
        self.logPoint()

        # This mocks the csv reader to return our test readings
        csv.reader = MagicMock(
            return_value=TestTemperatureSensor.TEST_READINGS)
        self.test_temperature_sensor = TemperatureSensor("testresults.csv")

    def test_temperature_sensor_readings(self):
        """ 010A - Valid Construction of the sensor """
        self.assertIsNotNone(self.test_temperature_sensor,
                             "Test readings must be defined")

    def test_invalid_temperature_sensor_parameter(self):
        """ 010B - Invalid Construction of the sensor """

        # Must reject an undefined sensor path
        with self.assertRaises(ValueError):
            TemperatureSensor(None)

        # Must reject an empty sensor path
        with self.assertRaises(ValueError):
            TemperatureSensor("")

    def test_provide_sensor_name(self):
        """ 020A - Valid sensor name return """
        self.assertEqual(self.test_temperature_sensor.get_sensor_name(),
                         "ABC Sensor Temp M301A")

    def test_get_time_period(self):
        """ 030A - Valid sensor time period return """
        self.assertEqual(self.test_temperature_sensor.get_time_period()[0],
                         '2018/09/23 19:56')
        self.assertEqual(self.test_temperature_sensor.get_time_period()[1],
                         '2018/09/23 20:04')

    def test_get_reading_stats(self):
        """ 040A - Valid temperature stats return """
        self.assertEqual(
            self.test_temperature_sensor.get_reading_stats().
            get_lowest_reading(), 20.142)
        self.assertEqual(
            self.test_temperature_sensor.get_reading_stats().
            get_average_reading(), 21.578777777777777)
        self.assertEqual(
            self.test_temperature_sensor.get_reading_stats().
            get_highest_reading(), 22.703)
        self.assertEqual(
            self.test_temperature_sensor.get_reading_stats().
            get_largest_reading_range(), 1.9400000000000013)

    def test_get_error_readings(self):
        """ 050A - Valid error readings return """
        self.assertEqual(self.test_temperature_sensor.get_error_messages(), [
            'High Temperature (100°C) at 2018/09/23 20:00, Sequence: 5',
            'Low Temperature (-50°C) at 2018/09/23 20:04, Sequence: 11'
        ])

    def tearDown(self):
        """ Prints a log point when test is finished """
        self.logPoint()

    def logPoint(self):
        """ Utility function used for module functions and class methods """
        current_test = self.id().split('.')[-1]
        calling_function = inspect.stack()[1][3]
        print('in %s - %s()' % (current_test, calling_function))
示例#16
0
    # LED Azul de Prendido
    GPIO.setup(38, GPIO.OUT, initial=1)

    min_max_per_plant = json.load(codecs.open('min_max.json', 'r', 'utf-8-sig'))
    cred = './credentials.json'
    firebase_admin.initialize_app(credentials.Certificate(cred))
    conn = DbConnection(db_name='local.db')
    fsm = FirestoreManager(cred=cred, col_name='crops')
    mnt = FirestoreManager(cred=cred, col_name='monitor')
    mnt.retrieve_doc(doc_id='plant')

    power_sensor = PowerSupplySensor(pin=36, conn=conn)
    image_processor = ImageProcessor(conn=conn)
    photo_sensor = PhotoSensor(spi=spi, conn=conn, lamp_pin=22, pin=0)
    humidity_sensor = HumiditySensor(spi=spi, conn=conn, pump_pin=18, pin=1)
    temperature_sensor = TemperatureSensor(conn=conn, heater_pin=11, pin=22)
    sensor_data_uploader = SensorDataUploader(conn=conn, fsm=fsm)

    query_watch = None
    species = None

    while True:
        prev_species = species
        species, _, _ = image_processor.run()

        if species != 'vacio':

            # If it's the first run, or species changed
            if query_watch is None or (species != prev_species and prev_species is not None):
                if query_watch is not None:
                    photo_sensor.unset_min_max()