mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 13:46:36 +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)
|
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 pageid;
|
||||||
uint8_t objid;
|
uint8_t objid;
|
||||||
|
|
||||||
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||||
|
|
||||||
|
const size_t size = 32 + strlen(attribute) + strlen(data);
|
||||||
char payload[size];
|
char payload[size];
|
||||||
|
{
|
||||||
{
|
StaticJsonDocument<64> doc; // Total (recommended) size for const char*
|
||||||
StaticJsonDocument<size> doc; // Total (recommended) size
|
if(data)
|
||||||
if(data)
|
doc[attribute].set(data);
|
||||||
doc[attribute].set(data);
|
else
|
||||||
else
|
doc[attribute].set(nullptr);
|
||||||
doc[attribute].set(nullptr);
|
serializeJson(doc, payload, size);
|
||||||
serializeJson(doc, payload, MQTT_MAX_PACKET_SIZE);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
object_dispatch_state(pageid, objid, payload);
|
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;
|
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||||
|
|
||||||
char payload[64 + strlen(attribute)];
|
const size_t size = 32 + strlen(attribute);
|
||||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":%d}"), attribute, val);
|
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);
|
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;
|
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||||
|
|
||||||
char payload[16 + strlen(attribute)];
|
const size_t size = 32 + strlen(attribute);
|
||||||
if(val)
|
char payload[size];
|
||||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":true}"), attribute);
|
{
|
||||||
else
|
StaticJsonDocument<64> doc; // Total (recommended) size for const char*
|
||||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":false}"), attribute);
|
doc[attribute].set(val);
|
||||||
|
serializeJson(doc, payload, size);
|
||||||
|
}
|
||||||
object_dispatch_state(pageid, objid, payload);
|
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;
|
if(!attribute || !hasp_find_id_from_obj(obj, &pageid, &objid)) return;
|
||||||
|
|
||||||
char payload[64 + strlen(attribute)];
|
const size_t size = 64 + strlen(attribute);
|
||||||
lv_color32_t c32;
|
char payload[size];
|
||||||
c32.full = lv_color_to32(color);
|
{
|
||||||
|
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.full = lv_color_to32(color);
|
||||||
c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue);
|
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);
|
object_dispatch_state(pageid, objid, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user