Esempio n. 1
0
    def test(self):
        measurement = Measurement(datetime=datetime.datetime(2015, 1, 1, 15, 11, 17), sensor_id='0a45', type='temperature', value=11.1)
        expected_measurement_dict = {
            'datetime': '2015-01-01T15:11:17',
            'sensor_id': '0a45',
            'type': 'temperature',
            'value': 11.1
        }
        measurement_dict = Measurement.to_dict(measurement)
        self.assertEqual(measurement_dict, expected_measurement_dict)

        measurement2 = Measurement(datetime=datetime.datetime(2015, 1, 1, 16, 11, 17),
                                   sensor_id='0a45',
                                   type='temperature',
                                   value=15.1)
        expected_measurement2_dict = {
            'datetime': '2015-01-01T16:11:17',
            'sensor_id': '0a45',
            'type': 'temperature',
            'value': 15.1
        }
        
        measurements = [measurement, measurement2]
        
        measurements_list = Measurement.to_dict(measurements)
        self.assertEqual(measurements_list, [expected_measurement_dict, expected_measurement2_dict])
Esempio n. 2
0
    def test_single_measurement(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"0a45","+":2,"vac|h":9}'
        
        measurements = Measurement.create_from_udp(msg)

        MockMeasurement.assert_called_once_with(datetime=get_current_datetime(), sensor_id="0a45", type="vacancy", value=9)
        self.assertEqual(measurements['success'][0], MockMeasurement.return_value)
Esempio n. 3
0
    def test_supplied_datetime(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"0a45","+":2,"vac|h":9}'
        mock_datetime = mock.Mock()

        measurements = Measurement.create_from_udp(msg, mock_datetime)

        MockMeasurement.assert_called_once_with(datetime=mock_datetime, sensor_id="0a45", type="vacancy", value=9)
Esempio n. 4
0
    def test_battery_with_centivolts(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"819c","T|C16":71,"L":5,"B|cV":256}'
        expected_calls = [
            mock.call(datetime=get_current_datetime(), sensor_id="819c", type="temperature", value=4.4375),
            mock.call(datetime=get_current_datetime(), sensor_id="819c", type="light", value=5),
            mock.call(datetime=get_current_datetime(), sensor_id="819c", type="battery", value=2.56)
        ]
        mock_measurements = [mock.Mock(), mock.Mock(), mock.Mock()]
        MockMeasurement.side_effect = mock_measurements

        measurements = Measurement.create_from_udp(msg)
        
        self.assertEqual(MockMeasurement.call_args_list, expected_calls)
        self.assertEqual(measurements['success'], mock_measurements)
Esempio n. 5
0
    def test_multiple_measurements(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"0a45","+":2,"vac|h":9,"T|C16":201,"L":0}'
        expected_calls = [
            mock.call(datetime=get_current_datetime(), sensor_id="0a45", type="vacancy", value=9),
            mock.call(datetime=get_current_datetime(), sensor_id="0a45", type="temperature", value=12.5625),
            mock.call(datetime=get_current_datetime(), sensor_id="0a45", type="light", value=0)
        ]
        mock_measurements = [mock.Mock(), mock.Mock(), mock.Mock()]
        MockMeasurement.side_effect = mock_measurements

        measurements = Measurement.create_from_udp(msg)
        
        self.assertEqual(MockMeasurement.call_args_list, expected_calls)
        self.assertEqual(measurements['success'], mock_measurements)
Esempio n. 6
0
def api(request):
    response = {'status': 200, 'content': None, 'errors': []}
    try:
        query = build_query(request.GET)
        measurements = Measurement.objects.filter(*query.args, **query.kwargs).order_by('datetime')
        measurements = Measurement.to_dict(measurements)
        response['content'] = measurements
    except Exception as e:
        response['status'] = 300
        if hasattr(e, 'errors'):
            response['errors'].extend(e.errors)
        else:
            response['errors'].append(str(e))

    return JsonResponse(response)
Esempio n. 7
0
def api(request):
    response = {'status': 200, 'content': None, 'errors': []}
    try:
        query = build_query(request.GET)
        measurements = Measurement.objects.filter(
            *query.args, **query.kwargs).order_by('datetime')
        measurements = Measurement.to_dict(measurements)
        response['content'] = measurements
    except Exception as e:
        response['status'] = 300
        if hasattr(e, 'errors'):
            response['errors'].extend(e.errors)
        else:
            response['errors'].append(str(e))

    return JsonResponse(response)
Esempio n. 8
0
    def test_battery_millivolts(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"414a","+":4,"B|mV":3}'
        expected_calls = [
            mock.call(datetime=get_current_datetime(), sensor_id="414a", type="battery", value=0.003),
        ]
        mock_measurements = [mock.Mock()]
        MockMeasurement.side_effect = mock_measurements
        expected_measurements = {
            'success': mock_measurements,
            'failure': []
        }

        measurements = Measurement.create_from_udp(msg)

        self.assertEqual(MockMeasurement.call_args_list, expected_calls)
        self.assertEqual(measurements['success'], expected_measurements['success'])
        self.assertEqual(measurements['failure'], expected_measurements['failure'])
Esempio n. 9
0
    def test_cumulative_valve_travel(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"414a","+":4,"vac|h":3,"v|%":0,"tT|C":7,"vC|%":50}'
        expected_calls = [
            mock.call(datetime=get_current_datetime(), sensor_id="414a", type="vacancy", value=3),
            mock.call(datetime=get_current_datetime(), sensor_id="414a", type="valve_open_percent", value=0),
            mock.call(datetime=get_current_datetime(), sensor_id="414a", type="target_temperature", value=7),
            mock.call(datetime=get_current_datetime(), sensor_id="414a", type="valve_travel", value=50),
        ]
        mock_measurements = [mock.Mock(), mock.Mock(), mock.Mock(), mock.Mock()]
        MockMeasurement.side_effect = mock_measurements
        expected_measurements = {
            'success': mock_measurements,
            'failure': []
        }

        measurements = Measurement.create_from_udp(msg)

        for call in MockMeasurement.call_args_list:
            self.assertIn(call, expected_calls)
        self.assertEqual(measurements['success'], expected_measurements['success'])
        for failure in expected_measurements['failure']:
            self.assertIn(failure, measurements['failure'])
Esempio n. 10
0
from opentrv_sensor.models import Measurement

sample_data_filepath = os.path.join(sample_data_dir, '201501.json')

if __name__ == '__main__':

    f = open(sample_data_filepath, 'rb')

    lines = [line.replace('\n', '') for line in f]

    Measurement.objects.all().delete()

    n_successes = 0
    n_failures = 0
    success_types = set()
    failure_types = set()
    for line in lines[:]:
        print line
        measurements = Measurement.create_from_udp(line)
        n_successes += len(measurements['success'])
        n_failures += len(measurements['failure'])
        for x in measurements['failure']:
            failure_types.add(x['type'])
        # for x in measurements['success']:
        #     success_types.add(x.type)

    print 'n_successes:', n_successes
    print 'n_failures:', n_failures
    print 'failure_types:', failure_types
    # print 'success_types:', success_types
Esempio n. 11
0
from opentrv_sensor.models import Measurement

sample_data_filepath = os.path.join(sample_data_dir, "201501.json")

if __name__ == "__main__":

    f = open(sample_data_filepath, "rb")

    lines = [line.replace("\n", "") for line in f]

    Measurement.objects.all().delete()

    n_successes = 0
    n_failures = 0
    success_types = set()
    failure_types = set()
    for line in lines[:]:
        print line
        measurements = Measurement.create_from_udp(line)
        n_successes += len(measurements["success"])
        n_failures += len(measurements["failure"])
        for x in measurements["failure"]:
            failure_types.add(x["type"])
        # for x in measurements['success']:
        #     success_types.add(x.type)

    print "n_successes:", n_successes
    print "n_failures:", n_failures
    print "failure_types:", failure_types
    # print 'success_types:', success_types
Esempio n. 12
0
    def test_invalid_boiler_measurement_raises_error(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"0a45","+":2,"b":2}'

        with self.assertRaises(Exception) as e:
            measurements = Measurement.create_from_udp(msg)
Esempio n. 13
0
    def test_boiler_measurement(self, MockMeasurement, get_current_datetime):
        msg = '{"@":"0a45","+":2,"b":0}'

        measurements = Measurement.create_from_udp(msg)

        MockMeasurement.assert_called_once_with(datetime=get_current_datetime.return_value, sensor_id="0a45", type="boiler", value=0)
Esempio n. 14
0
    def test(self, create_from_udp, convert_datetime):
        msg = '[ "2015-01-01T00:01:19Z", "", {"@":"414a","+":4,"vac|h":3,"v|%":0,"tT|C":7,"vC|%":50} ]'

        measurements = Measurement.create_from_log(msg)

        create_from_udp.assert_called_once_with('{"@":"414a","+":4,"vac|h":3,"v|%":0,"tT|C":7,"vC|%":50}', datetime=convert_datetime())