Comments (7)
Great, thanks for the confirmation.
Merged this after adding the additional new no-mfgdata
model condition option to the docs.
from decoder.
Yes, very strange and unwanted recognition of your Meter Plus as a Tile tracker.
Not having a Meter Plus nor a Tile tracker, these two decoder have been solely based on user data and the BLE-API from the semi-offical SwitchBot repo.
For the Tile trackers the uuids for model recognition have been fine so far, with being unique to Tile, but obviously it seems that SwitchBot is now using the same uuid for a Meter Plus alternative broadcast, while at the same time the actual servicedata is a lot longer too, 20, compared to the expected 12, which is also being broadcast when your Meter Plus is being recognised correctly.
It seems that this longer alternative servicedata does not actually contain the temperature and humidity information which is gathered and decoded from the 12 long servicedata, unless it has been encoded in a very different way with this broadcasts.
Why your Meter Plus seems to broadcast two different kinds of servicedata we really don't know, even the first octet, which normally indicates the device type of a SwitchBot device is with 02 and undocumented type.
So with no apparent decodable data in these alternative broadcasts, this is more a situation of how to not recognise this as a Tile tracker, and not in trying to get it to be recognised as a Meter Plus with the possibility of getting useful information from it.
from decoder.
Agreed, this issue is mostly to avoid the 'false positive' case and not recognize it as a Tile
from decoder.
@brandonmpace Would you mind giving this test branch a go?
https://github.com/DigiH/decoder/tree/tile-test
Hopefully not wrongly recognising the new "feed" Meter Plus broadcasts as a Tile tracker any longer.
from decoder.
It is working for me. Tile is still recognized and the Meter is not categorized as a Tile.
In the changes I see both "no-mfgdata" and "no-mandata" and I'm curious what the difference is. It may also be helpful to add a note to adding-decoders.md if that was merged.
Below the debug print you added is the "match = true;" supposed to be outside the if?
from decoder.
Well spotted, but that part should have not actually been in the commit ;)
Could you try again please with the cleaned up version of the test decoder and possibly post a Meter Plus message with the actual servicedata when it's not recognised as a Tile?
from decoder.
Active scan for the meters works still (not currently sending the 'feed' uuid though)
CC:FF:FF:FF:FF:FF:AdvertisementData(manufacturer_data={2409: b'\xcc\x12{\x8c\x03=\x80\x03\x08\x96\xa9'}, service_data={'0000fd3d-0000-1000-8000-00805f9b34fb': b'T\x00\xe4\x08\x96\xa9'}, rssi=-63)
data sent to decoder: {"servicedatauuid": "fd3d", "servicedata": "5400e40896a9", "manufacturerdata": "6909ccffffffffff80030896a9", "id": "CC:FF:FF:FF:FF:FF", "rssi": -63}
TheengsDecoder found device: {"servicedatauuid":"fd3d","servicedata":"5400e40896a9","manufacturerdata":"6909ccffffffffff80030896a9","id":"CC:FF:FF:FF:FF:FF","rssi":-63,"brand":"SwitchBot","model":"Meter (Plus)","model_id":"THX1/W230150X","type":"THB","acts":true,"tempc":22.8,"tempf":73.04,"hum":41,"batt":100}
{"properties":{"tempc":{"unit":"°C","name":"temperature"},"hum":{"unit":"%","name":"humidity"},"batt":{"unit":"%","name":"battery"}}}
brand: SwitchBot , model: Meter (Plus)
DC:FF:FF:FF:FF:FF:AdvertisementData(manufacturer_data={2409: b'\xdc\xf8p\x06\xad#\xe1\x03\x08\x96\xa9'}, service_data={'0000fd3d-0000-1000-8000-00805f9b34fb': b'i\x00\xe4\x08\x96\xa9'}, rssi=-63)
data sent to decoder: {"servicedatauuid": "fd3d", "servicedata": "6900e40896a9", "manufacturerdata": "6909dcffffffffffe1030896a9", "id": "DC:FF:FF:FF:FF:FF", "rssi": -63}
TheengsDecoder found device: {"servicedatauuid":"fd3d","servicedata":"6900e40896a9","manufacturerdata":"6909dcffffffffffe1030896a9","id":"DC:FF:FF:FF:FF:FF","rssi":-63,"brand":"SwitchBot","model":"Meter (Plus)","model_id":"THX1/W230150X","type":"THB","acts":true,"tempc":22.8,"tempf":73.04,"hum":41,"batt":100}
{"properties":{"tempc":{"unit":"°C","name":"temperature"},"hum":{"unit":"%","name":"humidity"},"batt":{"unit":"%","name":"battery"}}}
brand: SwitchBot , model: Meter (Plus)
DD:FF:FF:FF:FF:FF:AdvertisementData(manufacturer_data={2409: b'\xdd\xb6x\xc1|\x9b\x1e\x03\t\x96*\x00'}, service_data={'0000fd3d-0000-1000-8000-00805f9b34fb': b'w\x00\xe4'}, rssi=-58)
data sent to decoder: {"servicedatauuid": "fd3d", "servicedata": "7700e4", "manufacturerdata": "6909ddffffffffff1e0309962a00", "id": "DD:FF:FF:FF:FF:FF", "rssi": -58}
TheengsDecoder found device: {"servicedatauuid":"fd3d","servicedata":"7700e4","manufacturerdata":"6909ddffffffffff1e0309962a00","id":"DD:FF:FF:FF:FF:FF","rssi":-58,"brand":"SwitchBot","model":"Outdoor Meter","model_id":"W340001X","type":"THB","acts":true,"tempc":22.9,"tempf":73.22,"hum":42,"batt":100,"mac":"DD:FF:FF:FF:FF:FF"}
{"properties":{"tempc":{"unit":"°C","name":"temperature"},"hum":{"unit":"%","name":"humidity"},"batt":{"unit":"%","name":"battery"},"mac":{"unit":"string","name":"MAC address"}}}
brand: SwitchBot , model: Outdoor Meter
And the tracker also still works:
F8:FF:FF:FF:FF:FF:AdvertisementData(service_data={'0000feed-0000-1000-8000-00805f9b34fb': b'\x02\x000rP\xb5\x86\x19\xabC'}, service_uuids=['0000feed-0000-1000-8000-00805f9b34fb'], rssi=-77)
data sent to decoder: {"servicedatauuid": "feed", "servicedata": "0200307250b58619ab43", "id": "F8:FF:FF:FF:FF:FF", "rssi": -77}
TheengsDecoder found device: {"servicedatauuid":"feed","servicedata":"0200307250b58619ab43","id":"F8:FF:FF:FF:FF:FF","rssi":-77,"brand":"Tile","model":"Smart Tracker","model_id":"TILE","type":"TRACK","cidc":false,"acts":true,"cont":true,"track":true,"device":"Tile Tracker"}
{"properties":{"device":{"unit":"string","name":"tracker device"}}}
brand: Tile , model: Smart Tracker
Since the odd brodcasts weren't happening I just manually tested the library to confirm the None was returned:
>>> import TheengsDecoder
>>> test_string = '{"servicedatauuid": "feed", "servicedata": "0200a30d59a8ff1814fa", "manufacturerdata": "6909dcffffffffff03030897ad", "id": "DC:FF:FF:FF:FF:FF", "rssi": -54}'
>>> TheengsDecoder.decodeBLE(test_string)
>>>
from decoder.
Related Issues (20)
- Compile error with v1.5.0 HOT 5
- BM2 battery monitor showing 100% battery only HOT 5
- No mqtt data on iOS HOT 4
- Automatic versioning to easily build development versions from Git
- Report HHCCJCY01HHCC battery HOT 3
- Add support for INKBIRD IAM-T1 Air Quality Monitor HOT 3
- BM2 fails to decode HOT 29
- more Mopeka Gas Level sensor options, extended range bit HOT 1
- Mi Band 7 ( NO NFC _ NO PRO ) HOT 2
- Support request for ThermoPro TP357S HOT 7
- Incorrect humidity value for Govee H5072/75 when temperature below 0 degree celsius HOT 4
- Include decoding support for SwitchBot Curtain 3 HOT 12
- Add support for PAX Calima HOT 2
- wifi inkbird HOT 1
- Integration of BLE connections to decoder
- add support for e-volve/fitdays smart scale HOT 24
- SwitchBot Meter models passive broadcast decoding HOT 12
- Add support for WoSensorTHP (passive THX1(W230150X)) HOT 7
- ScanAndDecode.ino connect or not connect ? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from decoder.