Ejemplo n.º 1
0
def test_derivative():
    """Test calculation of derivative value."""
    from dsmr_parser.objects import MBusObject

    config = {'platform': 'dsmr'}

    entity = DerivativeDSMREntity('test', '1.0.0', config)
    yield from entity.async_update()

    assert entity.state is None, 'initial state not unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': 1},
            {'value': 1, 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert entity.state is None, \
        'state after first update should still be unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': 2},
            {'value': 2, 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert entity.state == 1, \
        'state should be difference between first and second update'

    assert entity.unit_of_measurement == 'm3/h'
Ejemplo n.º 2
0
def test_derivative():
    """Test calculation of derivative value."""
    from dsmr_parser.objects import MBusObject

    entity = DerivativeDSMREntity('test', '1.0.0')
    yield from entity.async_update()

    assert entity.state == STATE_UNKNOWN, 'initial state not unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': 1},
            {'value': 1, 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert entity.state == STATE_UNKNOWN, \
        'state after first update shoudl still be unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': 2},
            {'value': 2, 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert entity.state == 1, \
        'state should be difference between first and second update'

    assert entity.unit_of_measurement == 'm3/h'
Ejemplo n.º 3
0
def test_derivative():
    """Test calculation of derivative value."""
    from dsmr_parser.objects import MBusObject

    config = {'platform': 'dsmr'}

    entity = DerivativeDSMREntity('test', '1.0.0', config)
    yield from entity.async_update()

    assert entity.state is None, 'initial state not unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': datetime.datetime.fromtimestamp(1551642213)},
            {'value': Decimal(745.695), 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert entity.state is None, \
        'state after first update should still be unknown'

    entity.telegram = {
        '1.0.0': MBusObject([
            {'value': datetime.datetime.fromtimestamp(1551642543)},
            {'value': Decimal(745.698), 'unit': 'm3'},
        ])
    }
    yield from entity.async_update()

    assert abs(entity.state - 0.033) < 0.00001, \
        'state should be hourly usage calculated from first and second update'

    assert entity.unit_of_measurement == 'm3/h'
Ejemplo n.º 4
0
def test_derivative():
    """Test calculation of derivative value."""
    from dsmr_parser.objects import MBusObject

    config = {'platform': 'dsmr'}

    entity = DerivativeDSMREntity('test', '1.0.0', config)
    yield from entity.async_update()

    assert entity.state is None, 'initial state not unknown'

    entity.telegram = {
        '1.0.0':
        MBusObject([
            {
                'value': datetime.datetime.fromtimestamp(1551642213)
            },
            {
                'value': Decimal(745.695),
                'unit': 'm3'
            },
        ])
    }
    yield from entity.async_update()

    assert entity.state is None, \
        'state after first update should still be unknown'

    entity.telegram = {
        '1.0.0':
        MBusObject([
            {
                'value': datetime.datetime.fromtimestamp(1551642543)
            },
            {
                'value': Decimal(745.698),
                'unit': 'm3'
            },
        ])
    }
    yield from entity.async_update()

    assert abs(entity.state - 0.033) < 0.00001, \
        'state should be hourly usage calculated from first and second update'

    assert entity.unit_of_measurement == 'm3/h'