Add miflora battery (#992)

This commit is contained in:
Florian authored and GitHub committed 2021-06-24 20:11:50 -05:00
1 parent 2708858754
commit 90f42990df
4 files changed
+55 -7

No files matched your search

+9
View File
@@ -45,5 +45,14 @@ public:
GENERIC_connect(NimBLEAddress& addr) : zBLEConnect(addr) {}
};
class HHCCJCY01HHCC_connect : public zBLEConnect {
std::vector<uint8_t> m_data;
void notifyCB(NimBLERemoteCharacteristic* pChar, uint8_t* pData, size_t length, bool isNotify);
public:
HHCCJCY01HHCC_connect(NimBLEAddress& addr) : zBLEConnect(addr) {}
void publishData() override;
};
#endif //ESP32
#endif //zBLEConnect_h
+33
View File
@@ -253,5 +253,38 @@ void DT24_connect::publishData() {
}
}
/*-----------------------HHCCJCY01HHCC HANDLING-----------------------*/
void HHCCJCY01HHCC_connect::publishData() {
NimBLEUUID serviceUUID("00001204-0000-1000-8000-00805f9b34fb");
NimBLEUUID charUUID("00001a00-0000-1000-8000-00805f9b34fb");
NimBLEUUID charUUID2("00001a02-0000-1000-8000-00805f9b34fb");
NimBLERemoteCharacteristic* pChar = getCharacteristic(serviceUUID, charUUID);
if (pChar) {
Log.trace(F("Read mode" CR));
uint8_t buf[2] = {0xA0, 0x1F};
pChar->writeValue(buf, 2, true);
int batteryValue = -1;
NimBLERemoteCharacteristic* pChar2 = getCharacteristic(serviceUUID, charUUID2);
if (pChar2) {
std::string value;
value = pChar2->readValue();
const char* val2 = value.c_str();
batteryValue = val2[0];
JsonObject& BLEdata = getBTJsonObject();
String mac_address = m_pClient->getPeerAddress().toString().c_str();
mac_address.toUpperCase();
BLEdata.set("model", "HHCCJCY01HHCC");
BLEdata.set("id", (char*)mac_address.c_str());
BLEdata.set("batt", (int)batteryValue);
pubBT(BLEdata);
} else {
Log.notice(F("Failed getting characteristic" CR));
}
} else {
Log.notice(F("Failed getting characteristic" CR));
}
}
# endif //ZgatewayBT
#endif //ESP32
+7 -2
View File
@@ -84,7 +84,7 @@ static bool oneWhite = false;
int minRssi = abs(MinimumRSSI); //minimum rssi value
void pubBTMainCore(JsonObject& data, bool haPresenceEnabled = true) {
if (abs((int)data["rssi"] | 0) < minRssi) {
if (abs((int)data["rssi"] | 0) < minRssi && data.containsKey("id")) {
String mac_address = data["id"].as<const char*>();
mac_address.replace(":", "");
String mactopic = subjectBTtoMQTT + String("/") + mac_address;
@@ -750,6 +750,11 @@ void BLEconnect() {
case GENERIC: {
GENERIC_connect BLEclient(addr);
BLEclient.processActions(BLEactions);
}
case HHCCJCY01HHCC: {
HHCCJCY01HHCC_connect BLEclient(addr);
BLEclient.processActions(BLEactions);
BLEclient.publishData();
break;
}
default:
@@ -1114,7 +1119,7 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
Log.trace(F("mi flora data reading" CR));
BLEdata.set("model", "HHCCJCY01HHCC");
if (device->sensorModel == -1)
createOrUpdateDevice(mac, device_flags_init, HHCCJCY01HHCC);
createOrUpdateDevice(mac, device_flags_connect, HHCCJCY01HHCC);
return process_sensors(2, BLEdata);
}
Log.trace(F("Is it a vegtrug ?" CR));