示例#1
0
void b3_short()
{
	if (hm_is_waiting_for_pairing)
	{
		hm_do_stop_pairing = true;
	}		
	else 
	{
		switch (dim_level_percent)	// step trough different levels to ease setup and installation
		{
			case 0:
				dimmer_set(100);
				break;
			case 100:
				dimmer_set(50);
				break;
			case 50:
				dimmer_set(96);
				break;
			case 96:
				dimmer_set(4);
				break;
			default:
				dimmer_set(0);
		}
	}
}
示例#2
0
void dimmer_init()
{
	DIM_REL_PORT &= ~_BV(DIM_REL_BIT);
	DIM_REL_DDR |= _BV(DIM_REL_BIT);

	DIM_PWM_DDR &= ~_BV(DIM_PWM_BIT);	// direction input during setup
	DIM_PWM_PORT &= ~_BV(DIM_PWM_BIT);	// disable pullup
	DIM_PWM_INIT();
	dimmer_set(0);						// set initial state
}
示例#3
0
void ICACHE_FLASH_ATTR dimmer_handler(
	struct espconn *pConnection, 
	request_method method, 
	char *url, 
	char *data, 
	uint16 data_len, 
	uint32 content_len, 
	char *response,
	uint16 response_len
) {
	i2c_status status = I2C_OK;
	i2c_config *config = i2c_init_handler(DIMMER_STR, DIMMER_URL, dimmer_init, url, response);
	if (config == NULL) {
		return;
	}
	
	dimmer_config_data *config_data = (dimmer_config_data *)config->data;
	
	struct jsonparse_state parser;
	int type;

	if (method == POST && data != NULL && data_len != 0) {
		jsonparse_setup(&parser, data, data_len);

		while ((type = jsonparse_next(&parser)) != 0) {
			if (type == JSON_TYPE_PAIR_NAME) {
				if (jsonparse_strcmp_value(&parser, "Relay") == 0) {
					jsonparse_next(&parser);
					jsonparse_next(&parser);
					config_data->relay = jsonparse_get_value_as_int(&parser);
				} else if (jsonparse_strcmp_value(&parser, "Brightness") == 0) {
					jsonparse_next(&parser);
					jsonparse_next(&parser);
					config_data->brightness = jsonparse_get_value_as_int(&parser);
				} else if (jsonparse_strcmp_value(&parser, "Refresh") == 0) {
					jsonparse_next(&parser);
					jsonparse_next(&parser);
					dimmer_refresh = jsonparse_get_value_as_int(&parser) * 1000;
				} else if (jsonparse_strcmp_value(&parser, "Each") == 0) {
					jsonparse_next(&parser);
					jsonparse_next(&parser);
					dimmer_each = jsonparse_get_value_as_int(&parser);
				} else if (jsonparse_strcmp_value(&parser, "Threshold") == 0) {
					jsonparse_next(&parser);
					jsonparse_next(&parser);
					dimmer_threshold = jsonparse_get_value_as_int(&parser);
				}
			}
		}
		
		dimmer_timer_init();
		status = dimmer_set(config);
	}
	
	char address_str[MAX_I2C_ADDRESS];
	json_i2c_address(address_str, config->address);
	
	if (status == I2C_OK) {
		dimmer_response(config, response, true);
	} else {
		json_error(response, DIMMER_STR, i2c_status_str(status), address_str);
	}
}