Add support for iBeacons. (#1016)
This commit is contained in:
1 parent
4b135049a5
commit
45e9ba79d1
2 files changed
+22
No files matched your search
@@ -1363,6 +1363,14 @@ JsonObject& process_bledata(JsonObject& BLEdata) {
|
|||||||
createOrUpdateDevice(mac, device_flags_init, WS02);
|
createOrUpdateDevice(mac, device_flags_init, WS02);
|
||||||
return process_ws02(BLEdata);
|
return process_ws02(BLEdata);
|
||||||
}
|
}
|
||||||
|
Log.trace(F("Is it an iBeacon? %u" CR), strlen(manufacturerdata));
|
||||||
|
if (strlen(manufacturerdata) == 50 && strncmp(&manufacturerdata[0], "4c00", 4) == NULL) {
|
||||||
|
Log.trace(F("iBeacon data reading" CR));
|
||||||
|
BLEdata.set("model", "IBEACON");
|
||||||
|
if (device->sensorModel == -1)
|
||||||
|
createOrUpdateDevice(mac, device_flags_init, IBEACON);
|
||||||
|
return process_ibeacon(BLEdata);
|
||||||
|
}
|
||||||
# if !pubBLEManufacturerData
|
# if !pubBLEManufacturerData
|
||||||
Log.trace(F("Remove manufacturer data" CR));
|
Log.trace(F("Remove manufacturer data" CR));
|
||||||
BLEdata.remove("manufacturerdata");
|
BLEdata.remove("manufacturerdata");
|
||||||
@@ -1731,6 +1739,19 @@ JsonObject& process_mokobeaconXPro(JsonObject& BLEdata) {
|
|||||||
return BLEdata;
|
return BLEdata;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JsonObject& process_ibeacon(JsonObject& BLEdata) {
|
||||||
|
const char* manufacturerdata = BLEdata["manufacturerdata"].as<const char*>();
|
||||||
|
char mfid[5] = {NULL};
|
||||||
|
char proxUUID[33] = {NULL};
|
||||||
|
strncpy(&mfid[0], manufacturerdata, 4);
|
||||||
|
strncpy(&proxUUID[0], manufacturerdata + 8, 32);
|
||||||
|
BLEdata.set("MFID:", mfid);
|
||||||
|
BLEdata.set("UUID:", proxUUID);
|
||||||
|
BLEdata.set("Major:", (uint16_t)value_from_hex_data(manufacturerdata, 40, 4, false, false));
|
||||||
|
BLEdata.set("Minor:", (uint16_t)value_from_hex_data(manufacturerdata, 44, 4, false, false));
|
||||||
|
BLEdata.set("Power:", (int8_t)value_from_hex_data(manufacturerdata, 48, 4, false));
|
||||||
|
}
|
||||||
|
|
||||||
void hass_presence(JsonObject& HomePresence) {
|
void hass_presence(JsonObject& HomePresence) {
|
||||||
int BLErssi = HomePresence["rssi"];
|
int BLErssi = HomePresence["rssi"];
|
||||||
Log.trace(F("BLErssi %d" CR), BLErssi);
|
Log.trace(F("BLErssi %d" CR), BLErssi);
|
||||||
|
|||||||
@@ -154,6 +154,7 @@ enum ble_sensor_model {
|
|||||||
EDDYSTONE_TLM,
|
EDDYSTONE_TLM,
|
||||||
MOKOBEACON,
|
MOKOBEACON,
|
||||||
MOKOBEACONXPRO,
|
MOKOBEACONXPRO,
|
||||||
|
IBEACON,
|
||||||
GENERIC,
|
GENERIC,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user