mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-24 11:46:34 +00:00
Serialize text in string attribute messages #140
This commit is contained in:
parent
8194744387
commit
e420b722b9
@ -1776,10 +1776,18 @@ void attr_out_str(lv_obj_t* obj, const char* attribute, const char* data)
|
||||
if(hasp_find_id_from_obj(obj, &pageid, &objid)) {
|
||||
if(!attribute || !data) return;
|
||||
|
||||
char payload[32 + strlen(data) + strlen(attribute)];
|
||||
snprintf_P(payload, sizeof(payload), PSTR("{\"%s\":\"%s\"}"), attribute, data);
|
||||
StaticJsonDocument<32> doc; // Total (recommended) size
|
||||
doc[attribute].set(data);
|
||||
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
size_t size = measureJson(doc); // strlen(data) + strlen(attribute);
|
||||
if(size < MQTT_MAX_PACKET_SIZE) {
|
||||
char payload[MQTT_MAX_PACKET_SIZE];
|
||||
serializeJson(doc, payload);
|
||||
object_dispatch_state(pageid, objid, payload);
|
||||
|
||||
} else {
|
||||
LOG_ERROR(TAG_ATTR, F(D_MQTT_PAYLOAD_TOO_LONG), size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,6 +47,7 @@
|
||||
#define D_MQTT_SUBSCRIBED "Subscribed to %s"
|
||||
#define D_MQTT_NOT_SUBSCRIBED "Failed to subscribe to %s"
|
||||
#define D_MQTT_HA_AUTO_DISCOVERY "Register HA auto-discovery"
|
||||
#define D_MQTT_PAYLOAD_TOO_LONG "Payload too long (%d bytes)"
|
||||
|
||||
#define D_TELNET_CLOSING_CONNECTION "Closing session from %s"
|
||||
#define D_TELNET_CLIENT_LOGIN_FROM "Client login from %s"
|
||||
|
@ -47,6 +47,7 @@
|
||||
#define D_MQTT_SUBSCRIBED "Feliratkozva: %s"
|
||||
#define D_MQTT_NOT_SUBSCRIBED "Nem sikerült feliratkozni: %s"
|
||||
#define D_MQTT_HA_AUTO_DISCOVERY "Regisztrálás HA automatikus felfedezésre"
|
||||
#define D_MQTT_PAYLOAD_TOO_LONG "$$$Payload too long (%d bytes)"
|
||||
|
||||
#define D_TELNET_CLOSING_CONNECTION "Munkamenet befejezése %s-el"
|
||||
#define D_TELNET_CLIENT_LOGIN_FROM "Kliens bejelentkezés innen: %s"
|
||||
|
@ -47,6 +47,7 @@
|
||||
#define D_MQTT_SUBSCRIBED "Ingeschreven op %s"
|
||||
#define D_MQTT_NOT_SUBSCRIBED "Inschrijving op %s mislukt"
|
||||
#define D_MQTT_HA_AUTO_DISCOVERY "Registeren HA auto-configuratie"
|
||||
#define D_MQTT_PAYLOAD_TOO_LONG "Payload is te lang (%d bytes)"
|
||||
|
||||
#define D_TELNET_CLOSING_CONNECTION "Sessie sluiten van %s"
|
||||
#define D_TELNET_CLIENT_LOGIN_FROM "Client aangemeld van %s"
|
||||
|
@ -47,6 +47,7 @@
|
||||
#define D_MQTT_SUBSCRIBED "Abonat la %s"
|
||||
#define D_MQTT_NOT_SUBSCRIBED "Abonarea la %s a eșuat"
|
||||
#define D_MQTT_HA_AUTO_DISCOVERY "Înregistrare la auto-descoperire în HA"
|
||||
#define D_MQTT_PAYLOAD_TOO_LONG "$$$Payload too long (%d bytes)"
|
||||
|
||||
#define D_TELNET_CLOSING_CONNECTION "Terminarea sesiunii de la %s"
|
||||
#define D_TELNET_CLIENT_LOGIN_FROM "Conectare client de la %s"
|
||||
|
@ -149,7 +149,7 @@ int mqtt_send_state(const char* subtopic, const char* payload)
|
||||
static void mqtt_message_cb(char* topic, byte* payload, unsigned int length)
|
||||
{ // Handle incoming commands from MQTT
|
||||
if(length + 1 >= mqttClient.getBufferSize()) {
|
||||
LOG_ERROR(TAG_MQTT_RCV, F("Payload too long (%d bytes)"), length);
|
||||
LOG_ERROR(TAG_MQTT_RCV, F(D_MQTT_PAYLOAD_TOO_LONG), length);
|
||||
return;
|
||||
} else {
|
||||
payload[length] = '\0';
|
||||
|
Loading…
x
Reference in New Issue
Block a user