Пример #1
0
def run(
    keep_running: bool,
    config_file: str = 'config.ini',
):
    """
    main cli entrypoint

    Args:
        keep_running (bool): Whether or not to keep running. Default: False
        config_file (str): The configuration file location to load.
    """
    file = pathlib.Path(config_file)
    if not file.exists():
        raise ConfigurationFileNotFoundException()

    CONFIG.read(config_file)

    logging_level = 'INFO'
    try:
        logging_level = CONFIG['general'].get('logging_level', 'INFO')
    except KeyError:
        pass
    LOGGER.setLevel(logging.getLevelName(logging_level))

    device = tilt_device.TiltDevice()
    signal.signal(signal.SIGINT, partial(terminate_process, device))
    device.start()
    threading.Thread(
        target=scan_and_emit_thread,
        name='tilty_daemon',
        args=(device, CONFIG, keep_running)
    ).start()
    if keep_running:
        while True:
            pass
Пример #2
0
def test_scan_for_tilt_data(mock_get_events, mock_hci_open_dev):
    t = tilt_device.TiltDevice()
    data = t.scan_for_tilt_data()

    assert data[0]['color'] == 'Black'
    assert data[0]['gravity'] == 0.998
    assert data[0]['temp'] == 70
    assert data[0]['mac'] == '00:0a:95:9d:68:16'
    assert data[0]['uuid'] == 'a495bb30c5b14b44b5121370f02d74de'

    assert data[1]['color'] == 'Blue'
    assert data[1]['gravity'] == 1.090
    assert data[1]['temp'] == 65
    assert data[1]['mac'] == '00:0a:95:9d:68:17'
    assert data[1]['uuid'] == 'a495bb60c5b14b44b5121370f02d74de'
Пример #3
0
def run(
    keep_running,
    config_file='config.ini',
):
    """ main cli entrypoint
    """
    CONFIG.read(config_file)
    click.echo('Scanning for Tilt data...')
    device = tilt_device.TiltDevice()
    signal.signal(signal.SIGINT, partial(terminate_process, device))
    device.start()
    threading.Thread(target=scan_and_emit_thread,
                     name='tilty_daemon',
                     args=(device, CONFIG, keep_running)).start()
    if keep_running:
        while True:
            pass
Пример #4
0
def run(
    keep_running: bool,
    config_file: str = 'config.ini',
):
    """
    main cli entrypoint

    Args:
        keep_running (bool): Whether or not to keep running. Default: False
        config_file (str): The configuration file location to load.
    """
    file = pathlib.Path(config_file)
    if not file.exists():
        raise ConfigurationFileNotFoundException()

    CONFIG.read(config_file)

    handler = logging.StreamHandler(sys.stdout)
    logging_level = 'INFO'
    try:
        logging_level = CONFIG['general'].get('logging_level', 'INFO')
        logfile = CONFIG['general'].get('logfile', None)
        if logfile:
            handler = logging.FileHandler(filename=logfile)
    except KeyError:
        pass
    LOGGER.setLevel(logging.getLevelName(logging_level))
    handler.setLevel(logging_level)
    LOGGER.addHandler(handler)

    keep_running_flag = threading.Event()
    if keep_running:
        keep_running_flag.set()

    device = tilt_device.TiltDevice()
    signal.signal(signal.SIGINT,
                  partial(terminate_process, device, keep_running_flag))
    device.start()
    main_thread = threading.Thread(target=scan_and_emit_thread,
                                   name='tilty_daemon',
                                   args=(device, CONFIG, keep_running_flag))
    main_thread.start()
    main_thread.join()
Пример #5
0
def test_scan_for_tilt_data(bt_events, ):
    t = tilt_device.TiltDevice()
    tilt_data = t.scan_for_tilt_data()
    bt_events.assert_called()
    assert tilt_data == [{
        'color': 'Black',
        'gravity': 0.001,
        'temp': 2.0,
        'mac': '00:0a:95:9d:68:16',
        'timestamp': mock.ANY,
        'uuid': 'a495bb30c5b14b44b5121370f02d74de'
    }]

    assert t.scan_for_tilt_data(
        temperature_offset=10,
        gravity_offset=-0.05,
    ) == [{
        'color': 'Black',
        'gravity': -0.049,
        'temp': 12,
        'mac': '00:0a:95:9d:68:16',
        'timestamp': mock.ANY,
        'uuid': 'a495bb30c5b14b44b5121370f02d74de'
    }]

    assert t.scan_for_tilt_data(
        temperature_offset=-5,
        gravity_offset=0.001,
    ) == [{
        'color': 'Black',
        'gravity': 0.002,
        'temp': -3.0,
        'mac': '00:0a:95:9d:68:16',
        'timestamp': mock.ANY,
        'uuid': 'a495bb30c5b14b44b5121370f02d74de'
    }]
Пример #6
0
def test_scan_for_tilt_data(
    mock_disable_le_scan,
):
    t = tilt_device.TiltDevice()
    t.stop()
    mock_disable_le_scan.assert_called()
Пример #7
0
def test_scan_for_tilt_data(bt_events, ):
    t = tilt_device.TiltDevice()
    t.scan_for_tilt_data()
    bt_events.assert_called()
Пример #8
0
def test_stop(mock_disable_le_scan, mock_hci_open_dev):
    t = tilt_device.TiltDevice()
    t.stop()
    mock_hci_open_dev.assert_called()
    mock_disable_le_scan.assert_called_with(t.sock)
Пример #9
0
def test_scan_for_tilt_data_no_uuid(mock_get_events, mock_hci_open_dev):
    t = tilt_device.TiltDevice()
    data = t.scan_for_tilt_data()
    assert len(data) == 0