mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 05:36:37 +00:00
Use ArduinoJson in attr_out functions
This commit is contained in:
parent
09ae100b27
commit
43ef2426da
@ -2063,22 +2063,21 @@ static hasp_attribute_type_t attribute_common_bool(lv_obj_t* obj, uint16_t attr_
|
||||
|
||||
void attr_out_str(lv_obj_t* obj, const char* attribute, const char* data)
|
||||
{
|
||||
const size_t size = 64 + strlen(data);
|
||||
uint8_t pageid;
|
||||
uint8_t objid;
|
||||
|
||||
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||
|
||||
const size_t size = 32 + strlen(attribute) + strlen(data);
|
||||
char payload[size];
|
||||
|
||||
{
|
||||
StaticJsonDocument<size> doc; // Total (recommended) size
|
||||
if(data)
|
||||
doc[attribute].set(data);
|
||||
else
|
||||
doc[attribute].set(nullptr);
|
||||
serializeJson(doc, payload, MQTT_MAX_PACKET_SIZE);
|
||||
}
|
||||
|
||||
{
|
||||
StaticJsonDocument<64> doc; // Total (recommended) size for const char*
|
||||
if(data)
|
||||
doc[attribute].set(data);
|
||||
else
|
||||
doc[attribute].set(nullptr);
|
||||
serializeJson(doc, payload, size);
|
||||
}
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
}
|
||||
|
||||
@ -2089,9 +2088,13 @@ void attr_out_int(lv_obj_t* obj, const char* attribute, int32_t val)
|
||||
|
||||
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||
|
||||
char payload[64 + strlen(attribute)];
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":%d}"), attribute, val);
|
||||
|
||||
const size_t size = 32 + strlen(attribute);
|
||||
char payload[size];
|
||||
{
|
||||
StaticJsonDocument<64> doc; // Total (recommended) size for const char*
|
||||
doc[attribute].set(val);
|
||||
serializeJson(doc, payload, size);
|
||||
}
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
}
|
||||
|
||||
@ -2102,12 +2105,13 @@ void attr_out_bool(lv_obj_t* obj, const char* attribute, bool val)
|
||||
|
||||
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||
|
||||
char payload[16 + strlen(attribute)];
|
||||
if(val)
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":true}"), attribute);
|
||||
else
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":false}"), attribute);
|
||||
|
||||
const size_t size = 32 + strlen(attribute);
|
||||
char payload[size];
|
||||
{
|
||||
StaticJsonDocument<64> doc; // Total (recommended) size for const char*
|
||||
doc[attribute].set(val);
|
||||
serializeJson(doc, payload, size);
|
||||
}
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
}
|
||||
|
||||
@ -2118,12 +2122,22 @@ void attr_out_color(lv_obj_t* obj, const char* attribute, lv_color_t color)
|
||||
|
||||
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||
|
||||
char payload[64 + strlen(attribute)];
|
||||
lv_color32_t c32;
|
||||
c32.full = lv_color_to32(color);
|
||||
const size_t size = 64 + strlen(attribute);
|
||||
char payload[size];
|
||||
{
|
||||
StaticJsonDocument<128> doc; // Total (recommended) size for const char*
|
||||
char buffer[16];
|
||||
lv_color32_t c32;
|
||||
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":\"#%02x%02x%02x\",\"r\":%d,\"g\":%d,\"b\":%d}"), attribute,
|
||||
c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue);
|
||||
c32.full = lv_color_to32(color);
|
||||
snprintf_P(buffer, sizeof(buffer), PSTR("#%02x%02x%02x"), c32.ch.red, c32.ch.green, c32.ch.blue);
|
||||
|
||||
doc[attribute].set(buffer);
|
||||
doc["r"].set(c32.ch.red);
|
||||
doc["g"].set(c32.ch.green);
|
||||
doc["b"].set(c32.ch.blue);
|
||||
serializeJson(doc, payload, size);
|
||||
}
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user