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
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
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()
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()
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")
import time from temperature_sensor import TemperatureSensor cur_temp_data = None temperature = TemperatureSensor() while True: cur_temp_data = temperature.publish_data() time.sleep(30)
# 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)
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))
# 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()