Skip to content

Commit b2b48a8

Browse files
committed
WIP3-1
1 parent 7ab977e commit b2b48a8

13 files changed

+23
-408
lines changed

main/battery.c

+5-12
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,6 @@ int64_t last_battery_measurement_time = 0;
3535
bool do_calibration1_chan0;
3636

3737

38-
uint8_t test_percentage = 200;
39-
uint8_t test_voltage = 255;
40-
4138
void batteryUpdate(void) {
4239
batterySetup();
4340
batteryReadVolts();
@@ -79,11 +76,12 @@ void batteryReadVolts() {
7976

8077
if (do_calibration1_chan0) {
8178
ESP_ERROR_CHECK(adc_cali_raw_to_voltage(adc1_cali_chan0_handle, adc_avg, &battery_millivolts));
82-
// ESP_ERROR_CHECK(adc_cali_raw_to_voltage(adc1_cali_chan0_handle, adc_raw, &battery_millivolts));
8379

8480
ESP_LOGI(TAG, "ADC%d Channel[%d] Cali Voltage: %d mV", ADC_UNIT_1 + 1, ADC_CHANNEL, battery_millivolts);
8581
battery_millivolts = battery_millivolts * 2; // divider
86-
battery_voltage = battery_millivolts / 1000.0;
82+
83+
// battery_voltage = battery_millivolts / 1000.0;
84+
battery_voltage = roundf(battery_millivolts / 100.0) / 10.0;
8785

8886
last_battery_measurement_time = millis();
8987
ESP_LOGW(TAG, "LAST READ BATT %d millis", (int)last_battery_measurement_time);
@@ -113,14 +111,9 @@ void batteryPercentage(void) {
113111
ESP_LOGI(TAG, "vIN: %.3f, percentage: %d", battery_voltage, battery_percentage);
114112
battery_percentage = battery_percentage * 2; // zigbee scale
115113

114+
float voltage_to_send = (float)battery_millivolts;
116115
update_attribute_value(HA_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_POWER_CONFIG, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_PERCENTAGE_REMAINING_ID, &battery_percentage, "battery percentage");
117-
update_attribute_value(HA_ENDPOINT + 10, ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT, ESP_ZB_ZCL_ATTR_ANALOG_INPUT_PRESENT_VALUE_ID, &battery_voltage, "battery voltage");
118-
119-
// test_percentage = test_percentage - 1;
120-
// test_voltage = test_voltage - 1;
121-
// float voltage_val = (float)test_voltage;
122-
// update_attribute_value(HA_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_POWER_CONFIG, ESP_ZB_ZCL_ATTR_POWER_CONFIG_BATTERY_PERCENTAGE_REMAINING_ID, &test_percentage, "battery percentage");
123-
// update_attribute_value(HA_ENDPOINT + 10, ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT, ESP_ZB_ZCL_ATTR_ANALOG_INPUT_PRESENT_VALUE_ID, &voltage_val, "battery voltage");
116+
update_attribute_value(HA_ENDPOINT + 10, ESP_ZB_ZCL_CLUSTER_ID_ANALOG_INPUT, ESP_ZB_ZCL_ATTR_ANALOG_INPUT_PRESENT_VALUE_ID, &voltage_to_send, "battery voltage");
124117
}
125118

126119
static void adc_calibration_deinit(adc_cali_handle_t handle) {

main/common.h

+4-6
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,18 @@ static const char *ModuleName = {"Air Wick"};
3434
#define OTA_UPGRADE_MANUFACTURER 2810 /* The attribute indicates the file version of the downloaded image on the device*/
3535
#define OTA_UPGRADE_IMAGE_TYPE 4113
3636

37-
#define FIRMWARE_VERSION 0x0000006D
38-
#define FW_BUILD_DATE "20250213"
37+
#define FIRMWARE_VERSION 0x0000006E
38+
#define FW_BUILD_DATE "20250214"
3939

40-
#define AIR_WICK_CUSTOM_CLUSTER 0xFFF2
41-
#define SPRAY_COUNTER_ATTR_ID 0x00
4240

4341
#define USE_BATTERY_MOD
4442
#define READ_BATT_INTERVAL 60 //min
4543

46-
#define DEFAULT_SPRAY_INTERVAL 120 //min
47-
4844
#define BATTERY_FULL_VOLTAGE 4.2
4945
#define BATTERY_LOW_VOLTAGE 3.2
5046

47+
#define DEFAULT_SPRAY_INTERVAL 120 //min
48+
5149

5250
#define MOTOR_UP_PIN 11
5351
#define MOTOR_DOWN_PIN 12

main/esp_zigbee.c

+3-11
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ void esp_zb_app_signal_handler(esp_zb_app_signal_t *signal_struct) {
9393
case ESP_ZB_COMMON_SIGNAL_CAN_SLEEP:
9494
ESP_LOGI(TAG, "Zigbee can sleep");
9595
#ifdef USE_BATTERY_MOD
96-
// if( (millis() - last_battery_measurement_time) > 40000){
96+
// if( (millis() - last_battery_measurement_time) > 30000){
9797
if( (millis() - last_battery_measurement_time) > MINUTES_TO_MS(READ_BATT_INTERVAL)){
9898
batteryUpdate();
9999
}
@@ -129,7 +129,7 @@ static esp_err_t zb_attribute_handler(const esp_zb_zcl_set_attr_value_message_t
129129

130130
if (message->info.cluster == ESP_ZB_ZCL_CLUSTER_ID_ANALOG_OUTPUT && message->attribute.id == ESP_ZB_ZCL_ATTR_ANALOG_OUTPUT_PRESENT_VALUE_ID){
131131
int new_interval = *(float *)message->attribute.data.value;
132-
// ESP_LOGW(TAG,"NEW spray interval %.2f", new_interval);
132+
133133
ESP_LOGW(TAG,"NEW spray interval %d", new_interval);
134134
if (new_interval == 0){
135135
autoSpray = false;
@@ -145,7 +145,7 @@ static esp_err_t zb_attribute_handler(const esp_zb_zcl_set_attr_value_message_t
145145
static esp_err_t zb_privileged_cmd_handler(const esp_zb_zcl_privilege_command_message_t *message) {
146146
// Check if cluster and command correspond to "ON_OFF TOGGLE" command
147147
if (message->info.cluster == ESP_ZB_ZCL_CLUSTER_ID_ON_OFF && message->info.command.id == ESP_ZB_ZCL_CMD_ON_OFF_TOGGLE_ID) {
148-
ESP_LOGI(TAG, "Command PRESS");
148+
ESP_LOGI(TAG, "Spray command received");
149149
airWickSpray();
150150
} else {
151151
ESP_LOGE(TAG, "bad command in zb_privileged_cmd_handler");
@@ -250,14 +250,6 @@ static void esp_zb_task(void *pvParameters) {
250250
ESP_ERROR_CHECK(esp_zb_cluster_list_add_power_config_cluster(esp_zb_cluster_list, esp_zb_create_power_cfg_cluster(), ESP_ZB_ZCL_CLUSTER_SERVER_ROLE));
251251
#endif
252252

253-
const uint8_t attr_type = ESP_ZB_ZCL_ATTR_TYPE_U32;
254-
const uint8_t attr_access = ESP_ZB_ZCL_ATTR_ACCESS_READ_ONLY | ESP_ZB_ZCL_ATTR_ACCESS_REPORTING;
255-
esp_zb_attribute_list_t *custom_air_wick_custom_attributes_list = esp_zb_zcl_attr_list_create(AIR_WICK_CUSTOM_CLUSTER);
256-
ESP_ERROR_CHECK(esp_zb_custom_cluster_add_custom_attr(custom_air_wick_custom_attributes_list, SPRAY_COUNTER_ATTR_ID, attr_type, attr_access, &spray_counter));
257-
ESP_ERROR_CHECK(esp_zb_cluster_list_add_custom_cluster(esp_zb_cluster_list, custom_air_wick_custom_attributes_list, ESP_ZB_ZCL_CLUSTER_SERVER_ROLE));
258-
259-
260-
261253
ESP_ERROR_CHECK(esp_zb_zcl_add_privilege_command(HA_ENDPOINT, ESP_ZB_ZCL_CLUSTER_ID_ON_OFF, ESP_ZB_ZCL_CMD_ON_OFF_TOGGLE_ID));
262254

263255

main/switch_driver.c

-4
Original file line numberDiff line numberDiff line change
@@ -84,26 +84,22 @@ static void switch_driver_button_detected(void *arg)
8484
switch_driver_gpios_intr_enabled(false);
8585
evt_flag = true;
8686
start_evt_time = esp_timer_get_time();
87-
ESP_LOGW(TAG, "EVT START TIME!!!!");
8887
}
8988
while (evt_flag) {
9089
bool value = gpio_get_level(io_num);
9190
switch (switch_state) {
9291
case SWITCH_IDLE:
9392
switch_state = (value == GPIO_INPUT_LEVEL_ON) ? SWITCH_PRESS_DETECTED : SWITCH_IDLE;
94-
ESP_LOGW(TAG, "THIS IDLE");
9593
break;
9694
case SWITCH_PRESS_DETECTED:
9795
switch_state = (value == GPIO_INPUT_LEVEL_ON) ? SWITCH_PRESS_DETECTED : SWITCH_RELEASE_DETECTED;
98-
// ESP_LOGW(TAG, "THIS PRESS_DETECTED");
9996
break;
10097
case SWITCH_RELEASE_DETECTED:
10198
if (((esp_timer_get_time() - start_evt_time) / 1000ULL) > 1000){
10299
(*func_ptr)(BTN_LONG_PRESS);
103100
} else {
104101
(*func_ptr)(BTN_SINGLE_CLICK);
105102
}
106-
// ESP_LOGW(TAG, "THIS SWITCH_RELEASE_DETECTED, go to CB");
107103
switch_state = SWITCH_IDLE;
108104
start_evt_time = 0;
109105

main/tools.c

+1-2
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ bool write_NVS(const char *nvs_key, int value) {
156156
void print_chip_info() {
157157
esp_chip_info_t chip_info;
158158
uint32_t flash_size;
159-
uint8_t mac[6];
160-
159+
161160
esp_chip_info(&chip_info);
162161

163162
ESP_LOGW(__func__, "This is %s chip with %d CPU core(s), %s%s%s%s, ",

main/zb_ota.c

+1-170
Original file line numberDiff line numberDiff line change
@@ -309,173 +309,4 @@ esp_err_t zb_ota_upgrade_status_handler(esp_zb_zcl_ota_upgrade_value_message_t m
309309
}
310310

311311
return ret;
312-
}
313-
314-
// esp_err_t
315-
// zb_ota_upgrade_status_handler(esp_zb_zcl_ota_upgrade_value_message_t
316-
// message){
317-
// static uint32_t total_size = 0;
318-
// static uint32_t offset = 0;
319-
// static int64_t start_time = 0;
320-
// esp_err_t ret = ESP_OK;
321-
// if (message.info.status == ESP_ZB_ZCL_STATUS_SUCCESS) {
322-
// switch (message.upgrade_status) {
323-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_START:
324-
// ESP_LOGI(TAG, "-- OTA upgrade start");
325-
// ota_upgrade_subelement_ = false;
326-
// ota_data_len_ = 0;
327-
// ota_header_len_ = 0;
328-
// start_time = esp_timer_get_time();
329-
// s_ota_partition = esp_ota_get_next_update_partition(NULL);
330-
// assert(s_ota_partition);
331-
// ret = esp_ota_begin(s_ota_partition, OTA_WITH_SEQUENTIAL_WRITES,
332-
// &s_ota_handle); ESP_RETURN_ON_ERROR(ret, TAG, "Failed to begin
333-
// OTA partition, status: %s", esp_err_to_name(ret)); break;
334-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_RECEIVE:
335-
// size_t payload_size = message.payload_size;
336-
// const uint8_t *payload = message.payload;
337-
338-
// total_size = message.ota_header.image_size;
339-
// offset += payload_size;
340-
341-
// ESP_LOGI(TAG, "-- OTA Client receives data: progress [%ld/%ld]",
342-
// offset, total_size);
343-
344-
// /* Read and process the first sub-element, ignoring everything
345-
// else */
346-
// while (ota_header_len_ < 6 && payload_size > 0) {
347-
// ota_header_[ota_header_len_] = payload[0];
348-
// ota_header_len_++;
349-
// payload++;
350-
// payload_size--;
351-
// }
352-
353-
// if (!ota_upgrade_subelement_ && ota_header_len_ == 6) {
354-
// if (ota_header_[0] == 0 && ota_header_[1] == 0)
355-
// { ota_upgrade_subelement_ = true; ota_data_len_ =
356-
// (((int)ota_header_[5] & 0xFF)
357-
// << 24) | (((int)ota_header_[4] & 0xFF) << 16) | (((int)ota_header_[3] & 0xFF)
358-
// << 8 ) | ((int)ota_header_[2] & 0xFF); ESP_LOGD(TAG, "OTA sub-element size
359-
// %zu", ota_data_len_); } else { ESP_LOGE(TAG, "OTA sub-element type %02x%02x
360-
// not supported", ota_header_[0], ota_header_[1]); return ESP_FAIL;
361-
// }
362-
// }
363-
364-
// if (ota_data_len_) {
365-
// if (payload_size > ota_data_len_)
366-
// payload_size = ota_data_len_;
367-
// // payload_size = min(ota_data_len_, payload_size);
368-
// ota_data_len_ -= payload_size;
369-
370-
// if (message.payload_size && message.payload) {
371-
// ret = esp_ota_write(s_ota_handle, payload, payload_size);
372-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to write OTA data
373-
// to partition, status: %s", esp_err_to_name(ret));
374-
// }
375-
// }
376-
// break;
377-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_APPLY:
378-
// ESP_LOGI(TAG, "-- OTA upgrade apply");
379-
// break;
380-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_CHECK:
381-
// ret = offset == total_size ? ESP_OK : ESP_FAIL;
382-
// ESP_LOGI(TAG, "-- OTA upgrade check status: %s",
383-
// esp_err_to_name(ret)); break;
384-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_FINISH:
385-
// ESP_LOGI(TAG, "-- OTA Finish");
386-
// ESP_LOGI(TAG,
387-
// "-- OTA Information: version: 0x%lx, manufactor code:
388-
// 0x%x, image type: 0x%x, total size: %ld bytes, cost
389-
// time: %lld ms,", message.ota_header.file_version,
390-
// message.ota_header.manufacturer_code,
391-
// message.ota_header.image_type,
392-
// message.ota_header.image_size, (esp_timer_get_time() -
393-
// start_time) / 1000);
394-
// ret = esp_ota_end(s_ota_handle);
395-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to end OTA partition,
396-
// status: %s", esp_err_to_name(ret)); ret =
397-
// esp_ota_set_boot_partition(s_ota_partition);
398-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to set OTA boot partition,
399-
// status: %s", esp_err_to_name(ret)); ESP_LOGW(TAG, "Prepare to
400-
// restart system"); esp_restart(); break;
401-
// default:
402-
// ESP_LOGI(TAG, "OTA status: %d", message.upgrade_status);
403-
// break;
404-
// }
405-
// }
406-
// return ret;
407-
// }
408-
409-
// esp_err_t
410-
// zb_ota_upgrade_status_handler(esp_zb_zcl_ota_upgrade_value_message_t message)
411-
// {
412-
// static uint32_t total_size = 0;
413-
// static uint32_t offset = 0;
414-
// static int64_t start_time = 0;
415-
// esp_err_t ret = ESP_OK;
416-
417-
// if (message.info.status == ESP_ZB_ZCL_STATUS_SUCCESS) {
418-
// switch (message.upgrade_status) {
419-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_START:
420-
// ESP_LOGI(TAG, "-- OTA upgrade start");
421-
// start_time = esp_timer_get_time();
422-
// s_ota_partition = esp_ota_get_next_update_partition(NULL);
423-
// assert(s_ota_partition);
424-
// #if CONFIG_ZB_DELTA_OTA
425-
// ret = esp_delta_ota_begin(s_ota_partition, 0, &s_ota_handle);
426-
// #else
427-
// ret = esp_ota_begin(s_ota_partition, 0, &s_ota_handle);
428-
// #endif
429-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to begin OTA partition, status:
430-
// %s", esp_err_to_name(ret)); break;
431-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_RECEIVE:
432-
// total_size = message.ota_header.image_size;
433-
// offset += message.payload_size;
434-
// ESP_LOGI(TAG, "-- OTA Client receives data: progress [%ld/%ld]",
435-
// offset, total_size); if (message.payload_size && message.payload) {
436-
// #if CONFIG_ZB_DELTA_OTA
437-
// ret = esp_delta_ota_write(s_ota_handle, message.payload,
438-
// message.payload_size);
439-
// #else
440-
// ret = esp_ota_write(s_ota_handle, (const void *)message.payload,
441-
// message.payload_size);
442-
// #endif
443-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to write OTA data to
444-
// partition, status: %s", esp_err_to_name(ret));
445-
// }
446-
// break;
447-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_APPLY:
448-
// ESP_LOGI(TAG, "-- OTA upgrade apply");
449-
// break;
450-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_CHECK:
451-
// ret = offset == total_size ? ESP_OK : ESP_FAIL;
452-
// ESP_LOGI(TAG, "-- OTA upgrade check status: %s",
453-
// esp_err_to_name(ret)); break;
454-
// case ESP_ZB_ZCL_OTA_UPGRADE_STATUS_FINISH:
455-
// ESP_LOGI(TAG, "-- OTA Finish");
456-
// ESP_LOGI(TAG, "-- OTA Information: version: 0x%lx, manufacturer code:
457-
// 0x%x, image type: 0x%x, total size: %ld bytes, cost time: %lld ms,",
458-
// message.ota_header.file_version,
459-
// message.ota_header.manufacturer_code,
460-
// message.ota_header.image_type,
461-
// message.ota_header.image_size, (esp_timer_get_time() -
462-
// start_time) / 1000);
463-
// #if CONFIG_ZB_DELTA_OTA
464-
// ret = esp_delta_ota_end(s_ota_handle);
465-
// #else
466-
// ret = esp_ota_end(s_ota_handle);
467-
// #endif
468-
// ESP_RETURN_ON_ERROR(ret, TAG, "Failed to end OTA partition, status:
469-
// %s", esp_err_to_name(ret)); ret =
470-
// esp_ota_set_boot_partition(s_ota_partition); ESP_RETURN_ON_ERROR(ret,
471-
// TAG, "Failed to set OTA boot partition, status: %s",
472-
// esp_err_to_name(ret)); ESP_LOGW(TAG, "Prepare to restart system");
473-
// esp_restart();
474-
// break;
475-
// default:
476-
// ESP_LOGI(TAG, "OTA status: %d", message.upgrade_status);
477-
// break;
478-
// }
479-
// }
480-
// return ret;
481-
// }
312+
}

0 commit comments

Comments
 (0)