Skip to content

Commit 59ae5e2

Browse files
Merge pull request #111 from TheRealMoeder/raw_mqtt
Add support for raw power numbers via MQTT
2 parents 454a1dc + 6c23c5e commit 59ae5e2

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/parsers/MqttParser.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,26 @@
33

44
void mqtt_callback(char *topic, byte *payload, unsigned int length) {
55
JsonDocument json;
6-
deserializeJson(json, payload, length);
7-
setJsonPathPower(json);
6+
7+
// Try to parse as JSON first
8+
DeserializationError error = deserializeJson(json, payload, length);
9+
10+
if (error) {
11+
// If JSON parsing fails, try to parse as a raw number
12+
String payloadStr = String((char*)payload);
13+
payloadStr.trim();
14+
15+
// Check if payload is a valid number
16+
if (payloadStr.length() > 0 && (isdigit(payloadStr[0]) || payloadStr[0] == '-' || payloadStr[0] == '.')) {
17+
float rawValue = payloadStr.toFloat();
18+
setPowerData(rawValue);
19+
} else {
20+
DEBUG_SERIAL.print("Error parsing MQTT payload");
21+
}
22+
} else {
23+
// Successfully parsed as JSON
24+
setJsonPathPower(json);
25+
}
826
}
927

1028
void mqtt_reconnect() {

0 commit comments

Comments
 (0)