Add Inkbird IBS-TH2 (#954)

Temperature sensor for freezer, fridge
This commit is contained in:
Florian authored and GitHub committed 2021-05-23 10:14:02 -05:00
1 parent 4706d75adc
commit fb7ad1b2ca
2 files changed
+54 -17

No files matched your search

+52 -16
View File
@@ -457,17 +457,29 @@ void MiBandDiscovery(const char* mac, const char* sensorModel) {
createDiscoveryFromList(mac, MiBandsensor, MiBandparametersCount, "MiBand", "Xiaomi", sensorModel); createDiscoveryFromList(mac, MiBandsensor, MiBandparametersCount, "MiBand", "Xiaomi", sensorModel);
} }
void InkBirdDiscovery(const char* mac, const char* sensorModel) { void InkBirdTH1Discovery(const char* mac, const char* sensorModel) {
# define InkBirdparametersCount 3 # define InkBirdTH1parametersCount 3
Log.trace(F("InkBirdDiscovery" CR)); Log.trace(F("InkBirdTH1Discovery" CR));
const char* InkBirdsensor[InkBirdparametersCount][8] = { const char* InkBirdTH1sensor[InkBirdTH1parametersCount][8] = {
{"sensor", "InkBird-batt", mac, "battery", jsonBatt, "", "", "%"}, {"sensor", "InkBirdTH1-batt", mac, "battery", jsonBatt, "", "", "%"},
{"sensor", "InkBird-temp", mac, "temperature", jsonTempc, "", "", "°C"}, {"sensor", "InkBirdTH1-temp", mac, "temperature", jsonTempc, "", "", "°C"},
{"sensor", "InkBird-hum", mac, "humidity", jsonHum, "", "", "%"} {"sensor", "InkBirdTH1-hum", mac, "humidity", jsonHum, "", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
}; };
createDiscoveryFromList(mac, InkBirdsensor, InkBirdparametersCount, "", "InkBird", sensorModel); createDiscoveryFromList(mac, InkBirdTH1sensor, InkBirdTH1parametersCount, "", "Inkbird", sensorModel);
}
void InkBirdTH2Discovery(const char* mac, const char* sensorModel) {
# define InkBirdTH2parametersCount 2
Log.trace(F("InkBirdTH2Discovery" CR));
const char* InkBirdTH2sensor[InkBirdTH2parametersCount][8] = {
{"sensor", "InkBirdTH2-batt", mac, "battery", jsonBatt, "", "", "%"},
{"sensor", "InkBirdTH2-temp", mac, "temperature", jsonTempc, "", "", "°C"},
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
createDiscoveryFromList(mac, InkBirdTH2sensor, InkBirdTH2parametersCount, "", "Inkbird", sensorModel);
} }
void LYWSD03MMCDiscovery(const char* mac, const char* sensorModel) { void LYWSD03MMCDiscovery(const char* mac, const char* sensorModel) {
@@ -539,7 +551,8 @@ void CLEARGRASSTRHKPADiscovery(const char* mac, const char* sensorModel) {}
void MiScaleDiscovery(const char* mac, const char* sensorModel) {} void MiScaleDiscovery(const char* mac, const char* sensorModel) {}
void MiLampDiscovery(const char* mac, const char* sensorModel) {} void MiLampDiscovery(const char* mac, const char* sensorModel) {}
void MiBandDiscovery(const char* mac, const char* sensorModel) {} void MiBandDiscovery(const char* mac, const char* sensorModel) {}
void InkBirdDiscovery(const char* mac, const char* sensorModel) {} void InkBirdTH1Discovery(const char* mac, const char* sensorModel) {}
void InkBirdTH2Discovery(const char* mac, const char* sensorModel) {}
void LYWSD03MMCDiscovery(const char* mac, const char* sensorModel) {} void LYWSD03MMCDiscovery(const char* mac, const char* sensorModel) {}
void MHO_C401Discovery(const char* mac, const char* sensorModel) {} void MHO_C401Discovery(const char* mac, const char* sensorModel) {}
void INodeEMDiscovery(const char* mac, const char* sensorModel) {} void INodeEMDiscovery(const char* mac, const char* sensorModel) {}
@@ -1041,7 +1054,8 @@ void launchBTDiscovery() {
if (p->sensorModel == MIBAND) MiBandDiscovery(macWOdots.c_str(), "MIBAND"); if (p->sensorModel == MIBAND) MiBandDiscovery(macWOdots.c_str(), "MIBAND");
if ((p->sensorModel == XMTZC04HM) || if ((p->sensorModel == XMTZC04HM) ||
(p->sensorModel == XMTZC05HM)) MiScaleDiscovery(macWOdots.c_str(), "XMTZC0xHM"); (p->sensorModel == XMTZC05HM)) MiScaleDiscovery(macWOdots.c_str(), "XMTZC0xHM");
if (p->sensorModel == INKBIRD) InkBirdDiscovery(macWOdots.c_str(), "INKBIRD"); if (p->sensorModel == IBSTH1) InkBirdTH1Discovery(macWOdots.c_str(), "IBS-TH1");
if (p->sensorModel == IBSTH2) InkBirdTH2Discovery(macWOdots.c_str(), "IBS-TH2");
if (p->sensorModel == LYWSD03MMC || p->sensorModel == LYWSD03MMC_ATC || p->sensorModel == LYWSD03MMC_PVVX) LYWSD03MMCDiscovery(macWOdots.c_str(), "LYWSD03MMC"); if (p->sensorModel == LYWSD03MMC || p->sensorModel == LYWSD03MMC_ATC || p->sensorModel == LYWSD03MMC_PVVX) LYWSD03MMCDiscovery(macWOdots.c_str(), "LYWSD03MMC");
if (p->sensorModel == MHO_C401) MHO_C401Discovery(macWOdots.c_str(), "MHO_C401"); if (p->sensorModel == MHO_C401) MHO_C401Discovery(macWOdots.c_str(), "MHO_C401");
if (p->sensorModel == INODE_EM) INodeEMDiscovery(macWOdots.c_str(), "INODE_EM"); if (p->sensorModel == INODE_EM) INodeEMDiscovery(macWOdots.c_str(), "INODE_EM");
@@ -1256,13 +1270,21 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
if (BLEdata.containsKey("name")) { if (BLEdata.containsKey("name")) {
const char* name = (const char*)(BLEdata["name"] | ""); const char* name = (const char*)(BLEdata["name"] | "");
Log.trace(F("name %s" CR), name); Log.trace(F("name %s" CR), name);
Log.trace(F("Is it a INKBIRD?" CR)); Log.trace(F("Is it a INKBIRD IBS-TH1?" CR));
if (strcmp(name, "sps") == 0) { if (strcmp(name, "sps") == 0) {
Log.trace(F("INKBIRD data reading" CR)); Log.trace(F("INKBIRD TH1 data reading" CR));
BLEdata.set("model", "INKBIRD"); BLEdata.set("model", "IBS-TH1");
if (device->sensorModel == -1) if (device->sensorModel == -1)
createOrUpdateDevice(mac, device_flags_init, INKBIRD); createOrUpdateDevice(mac, device_flags_init, IBSTH1);
return process_inkbird(BLEdata); return process_inkbird_th1(BLEdata);
}
Log.trace(F("Is it a INKBIRD IBS-TH2?" CR));
if (strcmp(name, "tps") == 0) {
Log.trace(F("INKBIRD TH2 data reading" CR));
BLEdata.set("model", "IBS-TH2");
if (device->sensorModel == -1)
createOrUpdateDevice(mac, device_flags_init, IBSTH2);
return process_inkbird_th2(BLEdata);
} }
} }
Log.trace(F("Is it a iNode Energy Meter?" CR)); Log.trace(F("Is it a iNode Energy Meter?" CR));
@@ -1386,7 +1408,7 @@ JsonObject& process_scale_v2(JsonObject& BLEdata) {
return BLEdata; return BLEdata;
} }
JsonObject& process_inkbird(JsonObject& BLEdata) { JsonObject& process_inkbird_th1(JsonObject& BLEdata) {
const char* manufacturerdata = BLEdata["manufacturerdata"].as<const char*>(); const char* manufacturerdata = BLEdata["manufacturerdata"].as<const char*>();
double temperature = (double)value_from_hex_data(manufacturerdata, 0, 4, true) / 100; double temperature = (double)value_from_hex_data(manufacturerdata, 0, 4, true) / 100;
@@ -1402,6 +1424,20 @@ JsonObject& process_inkbird(JsonObject& BLEdata) {
return BLEdata; return BLEdata;
} }
JsonObject& process_inkbird_th2(JsonObject& BLEdata) {
const char* manufacturerdata = BLEdata["manufacturerdata"].as<const char*>();
double temperature = (double)value_from_hex_data(manufacturerdata, 0, 4, true) / 100;
double battery = (double)value_from_hex_data(manufacturerdata, 14, 2, true);
//Set Json values
BLEdata.set("tempc", (double)temperature);
BLEdata.set("tempf", (double)convertTemp_CtoF(temperature));
BLEdata.set("batt", (double)battery);
return BLEdata;
}
JsonObject& process_miband(JsonObject& BLEdata) { JsonObject& process_miband(JsonObject& BLEdata) {
const char* servicedata = BLEdata["servicedata"].as<const char*>(); const char* servicedata = BLEdata["servicedata"].as<const char*>();
+2 -1
View File
@@ -131,7 +131,7 @@ enum ble_sensor_model {
MIBAND, //10 MIBAND, //10
XMTZC04HM, XMTZC04HM,
XMTZC05HM, XMTZC05HM,
INKBIRD, IBSTH1,
LYWSD03MMC, LYWSD03MMC,
MHO_C401, MHO_C401,
LYWSD03MMC_ATC, LYWSD03MMC_ATC,
@@ -141,6 +141,7 @@ enum ble_sensor_model {
CGH1, CGH1,
CGPR1, CGPR1,
WS02, WS02,
IBSTH2,
}; };
/*-------------------PIN DEFINITIONS----------------------*/ /*-------------------PIN DEFINITIONS----------------------*/