a first try for mi flora and mi jia auto discovery on hass

#361
This commit is contained in:
Florian committed 2019-03-01 23:50:30 +01:00
1 parent 7eb231c41e
commit 97e8217380
2 files changed
+65 -3

No files matched your search

+62
View File
@@ -101,12 +101,18 @@ Thanks to wolass https://github.com/wolass for suggesting me HM 10 and dinosd ht
pos = strpos(service_data,"209800");
if (pos != -1){
trc("mi flora data reading");
#ifdef ZmqttDiscovery
MiFloraDiscovery(mac);
#endif
boolean result = process_data(pos - 24,service_data,mac);
}
pos = -1;
pos = strpos(service_data,"20aa01");
if (pos != -1){
trc("mi jia data reading");
#ifdef ZmqttDiscovery
MiJiaDiscovery(mac);
#endif
boolean result = process_data(pos - 26,service_data,mac);
}
@@ -271,12 +277,18 @@ Thanks to wolass https://github.com/wolass for suggesting me HM 10 and dinosd ht
pos = strpos(d[5].extract,"209800");
if (pos != -1) {
trc("mi flora data reading");
#ifdef ZmqttDiscovery
MiFloraDiscovery(d[0].extract);
#endif
boolean result = process_data(pos - 38,(char *)Service_data.c_str(),d[0].extract);
}
pos = -1;
pos = strpos(d[5].extract,"20aa01");
if (pos != -1){
trc("mi jia data reading");
#ifdef ZmqttDiscovery
MiJiaDiscovery(d[0].extract);
#endif
boolean result = process_data(pos - 40,(char *)Service_data.c_str(),d[0].extract);
}
return true;
@@ -302,7 +314,57 @@ Thanks to wolass https://github.com/wolass for suggesting me HM 10 and dinosd ht
#endif
#ifdef ZmqttDiscovery
void MiFloraDiscovery(char * mac){
#define MiFloraparametersCount 4
trc(F("MiFloraDiscovery"));
char * MiFlorasensor[MiFloraparametersCount][8] = {
{"sensor", "MiFlora-lux", mac, "illuminance","{{ value_json.lux }}","", "", "lu"} ,
{"sensor", "MiFlora-tem", mac,"","{{ value_json.tem }}","", "", "°C"} ,
{"sensor", "MiFlora-fer", mac,"","{{ value_json.fer }}","", "", ""} ,
{"sensor", "MiFlora-moi", mac,"","{{ value_json.moi }}","", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
for (int i=0;i<MiFloraparametersCount;i++){
trc(F("CreateDiscoverySensor"));
trc(MiFlorasensor[i][1]);
String discovery_topic = String(subjectBTtoMQTT) + String(mac);
String unique_id = String(mac) + "-" + MiFlorasensor[i][1];
createDiscovery(MiFlorasensor[i][0],
(char *)discovery_topic.c_str(), MiFlorasensor[i][1], (char *)unique_id.c_str(),
will_Topic, MiFlorasensor[i][3], MiFlorasensor[i][4],
MiFlorasensor[i][5], MiFlorasensor[i][6], MiFlorasensor[i][7],
true, false, 0,"","",true,"");
}
}
void MiJiaDiscovery(char * mac){
#define MiJiaparametersCount 3
trc(F("MiJiaDiscovery"));
char * MiJiasensor[MiJiaparametersCount][8] = {
{"sensor", "MiJia-batt", mac, "illuminance","{{ value_json.batt }}","", "", "V"} ,
{"sensor", "MiJia-tem", mac,"","{{ value_json.tem }}","", "", "°C"} ,
{"sensor", "MiJia-hum", mac,"","{{ value_json.hum }}","", "", "%"}
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
};
for (int i=0;i<MiJiaparametersCount;i++){
trc(F("CreateDiscoverySensor"));
trc(MiJiasensor[i][1]);
String discovery_topic = String(subjectBTtoMQTT) + String(mac);
String unique_id = String(mac) + "-" + MiJiasensor[i][1];
createDiscovery(MiJiasensor[i][0],
(char *)discovery_topic.c_str(), MiJiasensor[i][1], (char *)unique_id.c_str(),
will_Topic, MiJiasensor[i][3], MiJiasensor[i][4],
MiJiasensor[i][5], MiJiasensor[i][6], MiJiasensor[i][7],
true, false, 0,"","",true,"");
}
}
#endif
boolean process_data(int offset, char * rest_data, char * mac_adress){
trc(F("Creating BLE buffer"));
StaticJsonBuffer<JSON_MSG_BUFFER> jsonBuffer;
JsonObject& BLEdata = jsonBuffer.createObject();
+3 -3
View File
@@ -291,7 +291,7 @@ void pubMqttDiscovery()
#endif
#ifdef ZgatewayIR
// Sensor to display RF received value
// Sensor to display IR received value
trc(F("gatewayIRDiscovery"));
char * gatewayIR[8] = {"sensor", "gatewayIR", "", "","{{ value_json.value }}","", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
@@ -306,7 +306,7 @@ void pubMqttDiscovery()
#endif
#ifdef Zgateway2G
// Sensor to display RF received value
// Sensor to display 2G received value
trc(F("gateway2GDiscovery"));
char * gateway2G[8] = {"sensor", "gateway2G", "", "","{{ value_json.message }}","", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement
@@ -321,7 +321,7 @@ void pubMqttDiscovery()
#endif
#ifdef ZgatewayBT
// Sensor to display RF received value
// Sensor to display BT received value
trc(F("gatewayBTDiscovery"));
char * gatewayBT[8] = {"sensor", "gatewayBT", "", "","{{ value_json.message }}","", "", ""};
//component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement