Publish battery level to MQTT
This commit is contained in:
22
src/main.cpp
22
src/main.cpp
@@ -45,6 +45,7 @@ void startFetchingPosition(uint16_t shadeID, int8_t targetPosition);
|
|||||||
|
|
||||||
void publishPosition(const String& shadeName, const uint8_t position);
|
void publishPosition(const String& shadeName, const uint8_t position);
|
||||||
void publishState(const String& shadeName, const String& state);
|
void publishState(const String& shadeName, const String& state);
|
||||||
|
void publishBattery(const String& shadeName, const uint8_t battery);
|
||||||
|
|
||||||
void publishDiscoveryTopics();
|
void publishDiscoveryTopics();
|
||||||
|
|
||||||
@@ -130,6 +131,15 @@ void processPacket(const Packet *packet) {
|
|||||||
publishPosition(shades[i].name, position);
|
publishPosition(shades[i].name, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else if (field.identifier == 0x42) {
|
||||||
|
for (size_t i = 0; i < shades.size(); i++) {
|
||||||
|
if (packet->source == shades[i].ID) {
|
||||||
|
uint8_t value = std::get<uint8_t>(field.value);
|
||||||
|
uint8_t battery = uint8_t(((float)value / 200) * 100);
|
||||||
|
|
||||||
|
publishBattery(shades[i].name, battery);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -207,9 +217,11 @@ bool sendFetchPosition(uint16_t destination) {
|
|||||||
|
|
||||||
std::vector<Field> fields;
|
std::vector<Field> fields;
|
||||||
|
|
||||||
uint8_t identifier = 0x50; // position
|
// position
|
||||||
FieldType type = FieldType::FETCH;
|
fields.push_back(Field{0x50, FieldType::FETCH, false, std::monostate{}});
|
||||||
fields.push_back(Field{identifier, type, false, std::monostate{}});
|
|
||||||
|
// battery
|
||||||
|
fields.push_back(Field{0x42, FieldType::FETCH, false, std::monostate{}});
|
||||||
|
|
||||||
packet.parameters = FieldsParameters {fields};
|
packet.parameters = FieldsParameters {fields};
|
||||||
|
|
||||||
@@ -331,6 +343,10 @@ void publishPosition(const String& shadeName, const uint8_t position) {
|
|||||||
client.publish("hotdog/" + shadeName + "/position", String(position), true);
|
client.publish("hotdog/" + shadeName + "/position", String(position), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void publishBattery(const String& shadeName, const uint8_t battery) {
|
||||||
|
client.publish("hotdog/" + shadeName + "/battery", String(battery), true);
|
||||||
|
}
|
||||||
|
|
||||||
void publishDiscoveryTopics() {
|
void publishDiscoveryTopics() {
|
||||||
char buffer[1024];
|
char buffer[1024];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user