diff --git a/main/ZgatewayBT.ino b/main/ZgatewayBT.ino index 181f5b8..8418871 100644 --- a/main/ZgatewayBT.ino +++ b/main/ZgatewayBT.ino @@ -249,6 +249,33 @@ void MiScaleDiscovery(char * mac){ devices.push_back(device); } +void MiLampDiscovery(char * mac){ + #define MiLampparametersCount 1 + trc(F("MiLampDiscovery")); + char * MiLampsensor[MiLampparametersCount][8] = { + {"sensor", "MiLamp-presence", mac, "presence","{{ value_json.presence}}","", "", "d"} , + //component type,name,availability topic,device class,value template,payload on, payload off, unit of measurement + }; + + for (int i=0;i(),"181d") != NULL){ // Mi Scale V1 trc(F("Mi Scale V1 data reading")); @@ -402,7 +439,7 @@ void MiBandDiscovery(char * mac){ #endif process_scale_v2(service_data,mac); } - if (strstr(BLEdata["servicedatauuid"].as(),"fee0") != NULL){ // Mi Band //0000fee0-0000-1000-8000-00805f9b34fb + if (strstr(BLEdata["servicedatauuid"].as(),"fee0") != NULL){ // Mi Band //0000fee0-0000-1000-8000-00805f9b34fb // ESP32 only trc(F("Mi Band data reading")); //example "servicedata":a21e0000 #ifdef ZmqttDiscovery @@ -615,6 +652,16 @@ void MiBandDiscovery(char * mac){ #endif bool result = process_scale_v1((char *)service_data.c_str(),d[0].extract); } + pos = -1; + pos = strpos(d[5].extract,"4030dd"); + if (pos != -1){ + trc(F("Mi Lamp data reading")); + //example "servicedata":4030dd31d0300010100 + #ifdef ZmqttDiscovery + if(!isDiscovered(d[0].extract)) MiLampDiscovery(d[0].extract); + #endif + process_milamp((char *)service_data.c_str(),d[0].extract); + } return true; } } @@ -776,6 +823,28 @@ bool process_miband(char * rest_data, char * mac_adress){ return true; } +bool process_milamp(char * rest_data, char * mac_adress){ + //example "servicedata":"4030dd31d0300010100" + trc("rest_data"); + trc(rest_data); + + trc(F("Creating BLE buffer")); + StaticJsonBuffer jsonBuffer; + JsonObject& BLEdata = jsonBuffer.createObject(); + + long darkness = value_from_service_data(rest_data, 8, 2); + + //Set Json value + BLEdata.set("presence", (bool)"true"); + BLEdata.set("darkness", (long)darkness); + + // Publish + String mactopic(mac_adress); + mactopic = subjectBTtoMQTT + mactopic; + pub((char *)mactopic.c_str(),BLEdata); + return true; +} + #ifdef subjectHomePresence void haRoomPresence(JsonObject& HomePresence){ int BLErssi = HomePresence["rssi"];