예제 #1
0
def save_timezone(offset_h):
    from config_files import save_py_config
    save_py_config(module_name=constants.TIMEZONE_PY_CFG_NAME, value=offset_h)

    del save_py_config
    del sys.modules['config_files']
    gc.collect()
예제 #2
0
def set_power_led_level(dim_level):
    Pins.power_led.set_dim_level(dim_level=dim_level)

    from config_files import save_py_config
    save_py_config(module_name=_LED_DIM_LEVEL_PY_CFG_NAME, value=dim_level)

    del save_py_config
    del sys.modules['config_files']
    def test_py_config(self):
        with mock_py_config_context():

            # test_py_config() # will not work!

            save_py_config(module_name='test_int', value=1)
            assert restore_py_config(module_name='test_int') == 1

            save_py_config(module_name='test_dict', value={'foo': 1.2})
            assert restore_py_config(module_name='test_dict') == {'foo': 1.2}
예제 #4
0
def test_py_config():
    try:
        save_py_config(module_name='test', value=1)
        assert restore_py_config(module_name='test') == 1

        save_py_config(module_name='test', value=2)
        save_py_config(module_name='test', value=2)  # skip save?
        assert restore_py_config(module_name='test') == 2
    finally:
        os.remove('_config_test.py')
예제 #5
0
def save_active_days(active_days):
    print('save_active_days():', active_days)
    save_py_config(module_name=constants.ACTIVE_DAYS_PY_CFG_NAME,
                   value=tuple(active_days))
예제 #6
0
def save_timers(times):
    print('save_timers():', times)
    save_py_config(module_name=constants.TIMERS_PY_CFG_NAME, value=times)
async def get_submit(server, reader, writer, querystring, body):
    """
    Note: POST request doesn't work:
    https://forum.micropython.org/viewtopic.php?f=2&t=7432
    """
    from urllib_parse import request_query2dict
    data = request_query2dict(querystring)

    del request_query2dict
    gc.collect()

    import times_utils
    try:
        timers = tuple(times_utils.parse_timers(data['timers']))
        gc.collect()
    except ValueError as e:
        gc.collect()
        server.message = 'Timers error: %s' % e
    else:
        print('Save timers:', timers)
        # Save timers to flash:
        from config_files import save_py_config

        save_py_config(module_name=constants.TIMERS_PY_CFG_NAME, value=timers)
        save_py_config(module_name=constants.ACTIVE_DAYS_PY_CFG_NAME,
                       value=tuple(
                           [no for no in range(7) if 'd%i' % no in data]))

        del save_py_config
        del sys.modules['config_files']
        gc.collect()

        power_timer_active = data.get('active') == 'on'

        del data  # can be collected
        gc.collect()

        from rtc import update_rtc_dict
        update_rtc_dict(
            data={
                constants.POWER_TIMER_ACTIVE_KEY:
                power_timer_active,
                #
                # Deactivate manual overwrite, so that timers are used:
                constants.RTC_KEY_MANUAL_OVERWRITE_TYPE:
                None,
            })

        del update_rtc_dict
        del sys.modules['rtc']
        gc.collect()

        # Update power timer:
        if power_timer_active:
            server.message = 'Timers saved and activated.'
        else:
            server.message = 'Timers saved and deactivated.'

        # Force set values by update_power_timer():
        server.context.power_timer_active = None
        server.context.power_timer_today_active = None

        from power_timer import update_power_timer
        update_power_timer(context=server.context)

    gc.collect()

    from http_utils import send_redirect
    await send_redirect(writer, url='/set_timer/form/')