Hi,
I tried to adapt the newly provided scripts to use the BLE functionality to receive Data from an Inkbird IBS-TH2 Temperature, Humidity Sensor to later publish it via MQTT. But it seems the received Data is incomplete, advertisment and scanrespsone is available but the Manufacturer Data which seems to hold the real information is empty.
Any Idea what I'm doing wrong or having any of the Inbird Sensors working?
KR
Running 0.12.0-beta2
Script:
JavaScript
let CONFIG = {
sensorName: "sps",
sensorAddress: "49:xx:xx:xx:xx:xx"
};
let IBSTH2_SERVICE_UUID = "FFF0";
function ParseIBSData(data, source)
{
//TBD
}
function bleResult(event, result)
{
if (event !== BLE.Scanner.SCAN_RESULT) return;
if (result === null) return;
let sensorName = BLE.GAP.ParseDataByEIRType(result.scanRsp, BLE.GAP.EIR_FULL_NAME);
let publicAdress = BLE.GAP.ParseDataByEIRType(result.scanRsp, BLE.GAP.ADDRESS_TYPE_PUBLIC);
//print("Sensor:" + sensorName + "Adress:" + result.addr + "publicAdress:" + publicAdress);
//print(result.local_name);
if (sensorName !== CONFIG.sensorName) return;
if (CONFIG.sensorAddress !== "" && result.addr !== CONFIG.sensorAddress) return;
print(result.local_name);
print(result.rssi);
let datas = BLE.GAP.ParseServiceData(result.advData, IBSTH2_SERVICE_UUID);
let data = BLE.GAP.ParseManufacturerData(result.advData);
let datam = BLE.GAP.ParseDataByEIRType(result.advData, BLE.GAP.EIR_MANUFACTURER_SPECIFIC_DATA);
print("Manfac data: " + data);
print("Manufac EIR data: " + datam);
print("advData: "result.advData);
print("scanRSP: "result.scanRsp);
print(result.manufacturer_data);
print(result.service_uuids);
print(result.service_data);
print(result.tx_power_level);
//for (let i=0; i < result.manufacturer_data.length; i++) {
//print(result.manufacturer_data[i]);
//}
let i;
for (let prop in result.manufacturer_data) {
print(prop, ' - ', typeof (result.manufacturer_data[i]));
}
}
// scan for ble devices
BLE.Scanner.Start({
duration_ms: -1,
active: true }, bleResult);
Alles anzeigen
Result: