Change colorpicker val to color attribute

This commit is contained in:
fvanroie 2021-01-24 02:27:32 +01:00
parent 1b64ec7747
commit 847647272e
7 changed files with 51 additions and 59 deletions

View File

@ -1446,13 +1446,6 @@ bool hasp_process_obj_attribute_val(lv_obj_t * obj, const char * attr, const cha
lv_roller_set_selected(obj, (uint16_t)intval, LV_ANIM_ON);
} else if(check_obj_type(obj, LV_HASP_BAR)) {
update ? lv_bar_set_value(obj, intval, LV_ANIM_ON) : hasp_out_int(obj, attr, lv_bar_get_value(obj));
} else if(check_obj_type(obj, LV_HASP_CPICKER)) {
if(update) {
lv_color_t color;
if(haspPayloadToColor(payload, color)) lv_cpicker_set_color(obj, color);
} else {
hasp_out_color(obj, attr, lv_cpicker_get_color(obj));
}
} else {
return false;
}
@ -1612,6 +1605,19 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
hasp_process_obj_attribute_txt(obj, attr, payload, update);
break; // attribute_found
case ATTR_COLOR:
if(check_obj_type(obj, LV_HASP_CPICKER)) {
if(update) {
lv_color_t color;
if(haspPayloadToColor(payload, color)) lv_cpicker_set_color(obj, color);
} else {
hasp_out_color(obj, attr, lv_cpicker_get_color(obj));
}
} else {
goto attribute_not_found;
}
break; // attribute_found
case ATTR_VAL:
if(!hasp_process_obj_attribute_val(obj, attr, payload, update)) goto attribute_not_found;
break; // attribute_found

View File

@ -271,6 +271,7 @@ _HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
#define ATTR_MIN 46130
#define ATTR_MAX 45636
#define ATTR_VAL 15809
#define ATTR_COLOR 58979
#define ATTR_TXT 9328
#define ATTR_SRC 4964
#define ATTR_ID 6715

View File

@ -269,22 +269,32 @@ void dispatch_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char *
{
if(!attribute || !data) return;
char topic[12];
char payload[32 + strlen(data) + strlen(attribute)];
snprintf_P(topic, sizeof(payload), PSTR("p%ub%u"), pageid, btnid);
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":\"%s\"}"), attribute, data);
mqtt_send_state_str(topic, payload);
mqtt_send_object_state(pageid, btnid, payload);
}
void dispatch_send_obj_attribute_int(uint8_t pageid, uint8_t btnid, const char * attribute, int32_t val)
{
if(!attribute) return;
char topic[12];
char payload[64 + strlen(attribute)];
snprintf_P(topic, sizeof(payload), PSTR("p%ub%u"), pageid, btnid);
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":%d}"), attribute, val);
mqtt_send_state_str(topic, payload);
mqtt_send_object_state(pageid, btnid, payload);
}
void dispatch_send_obj_attribute_color(uint8_t pageid, uint8_t btnid, const char * attribute, uint8_t r, uint8_t g,
uint8_t b)
{
if(!attribute) return;
char payload[64 + strlen(attribute)];
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d}"), attribute, r, g,
b, r, g, b);
mqtt_send_object_state(pageid, btnid, payload);
}
#if HASP_USE_CONFIG > 0
@ -796,7 +806,7 @@ void dispatch_factory_reset(const char *, const char *)
static void dispatch_add_command(const char * p_cmdstr, void (*func)(const char *, const char *))
{
if(nCommands >= sizeof(commands) / sizeof(haspCommand_t)) {
Log.fatal(TAG_MSGR, F("Dispatchcer command array overflow: %d"), nCommands);
Log.fatal(TAG_MSGR, F("CMD overflow %d"), nCommands);
while(1) {
}
} else {

View File

@ -56,7 +56,9 @@ void dispatch_normalized_group_value(uint8_t groupid, uint16_t value, lv_obj_t *
void dispatch_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char * attribute, const char * data);
void dispatch_send_obj_attribute_int(uint8_t pageid, uint8_t btnid, const char * attribute, int32_t val);
void dispatch_send_obj_attribute_color(uint8_t pageid, uint8_t btnid, const char * attribute, uint8_t r, uint8_t g,
uint8_t b);
/* ===== Getter and Setter Functions ===== */
/* ===== Read/Write Configuration ===== */

View File

@ -230,13 +230,14 @@ void hasp_send_obj_attribute_int(lv_obj_t * obj, const char * attribute, int32_t
void hasp_send_obj_attribute_color(lv_obj_t * obj, const char * attribute, lv_color_t color)
{
char buffer[40]; // "#ffffff","r":"255","g":"255","b":"255"
lv_color32_t c32;
uint8_t pageid;
uint8_t objid;
c32.full = lv_color_to32(color);
snprintf_P(buffer, sizeof(buffer), PSTR("#%02x%02x%02x\",\"r\":\"%d\",\"g\":\"%d\",\"b\":\"%d"), c32.ch.red,
c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue);
hasp_send_obj_attribute_str(obj, attribute, buffer);
if(hasp_find_id_from_obj(obj, &pageid, &objid)) {
lv_color32_t c32;
c32.full = lv_color_to32(color);
dispatch_send_obj_attribute_color(pageid, objid, attribute, c32.ch.red, c32.ch.green, c32.ch.blue);
}
}
// ##################### Value Senders ########################################################

View File

@ -130,45 +130,18 @@ void mqtt_send_lwt(bool online)
// mqttResult(res, tmp_topic, tmp_payload);
}
void IRAM_ATTR mqtt_send_state_str(char * subtopic, char * payload)
void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, char * payload)
{
char tmp_topic[strlen(mqttNodeTopic) + 20];
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/%s"), mqttNodeTopic, subtopic);
bool res = mqttPublish(tmp_topic, payload);
// mqttResult(res, tmp_topic, payload);
}
void IRAM_ATTR mqtt_send_state(const __FlashStringHelper * subtopic, const char * payload)
{
char tmp_topic[strlen(mqttNodeTopic) + 20];
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/%s"), mqttNodeTopic, subtopic);
bool res = mqttPublish(tmp_topic, payload);
// mqttResult(res, tmp_topic, payload);
}
void IRAM_ATTR mqtt_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char * attribute, const char * data)
{
// if(mqttIsConnected()) {
char tmp_topic[strlen(mqttNodeTopic) + 12];
char payload[25 + strlen(data) + strlen(attribute)];
// snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/json"), mqttNodeTopic);
// unsigned int len =
// snprintf_P(payload, sizeof(payload), PSTR("{\"p[%u].b[%u].%s\":\"%s\"}"), pageid, btnid, attribute, data);
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/p%ub%u"), mqttNodeTopic, pageid, btnid);
unsigned int len = snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":\"%s\"}"), attribute, data);
bool res = mqttPublish(tmp_topic, payload);
}
bool res = mqttPublish(tmp_topic, payload, len); //, false);
// mqttResult(res, tmp_topic, payload);
// } else {
// return mqtt_log_no_connection();
// }
// Log after char buffers are cleared
// Log.notice(TAG_MQTT_PUB, F("%sstate/json = {\"p[%u].b[%u].%s\":\"%s\"}"), mqttNodeTopic, pageid, btnid,
// attribute,
// data);
void mqtt_send_state(const __FlashStringHelper * subtopic, const char * payload)
{
char tmp_topic[strlen(mqttNodeTopic) + 20];
snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/%s"), mqttNodeTopic, subtopic);
bool res = mqttPublish(tmp_topic, payload);
}
////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -12,9 +12,8 @@ void mqttEvery5Seconds(bool wifiIsConnected);
void mqttStart();
void mqttStop();
void IRAM_ATTR mqtt_send_state_str(char * subtopic, char * payload);
void IRAM_ATTR mqtt_send_state(const __FlashStringHelper * subtopic, const char * payload);
void IRAM_ATTR mqtt_send_obj_attribute_str(uint8_t pageid, uint8_t btnid, const char * attribute, const char * data);
void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, char * payload);
void mqtt_send_state(const __FlashStringHelper * subtopic, const char * payload);
bool IRAM_ATTR mqttIsConnected();