Data that is received via bluetooth advertising will be relayed over
MQTT in the following format:
/ble/presence/DEVICE - 1 or 0 depending on whether device has been seen or not
/ble/advertise/DEVICE - JSON for device's broadcast name, rssi and manufacturer-specific data (if mqtt_advertise=true in config.json -the default)
/ble/advertise/DEVICE/manufacturer/COMPANY - Manufacturer-specific data (without leading company code) encoded in base16. To decode use var data = Buffer.from(msg.payload, 'hex'); (if mqtt_advertise_manufacturer_data=true in config.json - the default)
/ble/advertise/DEVICE/rssi - Device signal strength
/ble/advertise/DEVICE/SERVICE - Raw service data (as a JSON Array of bytes) (if mqtt_advertise_service_data=true in config.json)
/ble/advertise/DEVICE/PRETTY or /ble/PRETTY/DEVICE - Decoded service data based on the decoding in attributes.js
1809 decodes to temp (Temperature in C)
180f decodes to battery
feaa decodes to url (Eddystone)
2a6d decodes to pressure (Pressure in pa)
2a6e decodes to temp (Temperature in C)
2a6f decodes to humidity (Humidity in %)
ffff decodes to data (This is not a standard - however it's useful for debugging or quick tests)
/ble/json/DEVICE/UUID - Decoded service data (as above) as JSON, eg /ble/json/DEVICE/1809 => {"temp":16.5} (if mqtt_format_json=true in config.json - the default)
/ble/advertise/DEVICE/espruino - If manufacturer data is broadcast Espruino's manufacturer ID 0x0590 and it is valid JSON, it is rebroadcast. If an object like {"a":1,"b":2} is sent,
/ble/advertise/DEVICE/a and /ble/advertise/DEVICE/b will also be sent. (A JSON5 parser is used, so the more compact {a:1,b:2} is also valid).
I have multiple devices and would like to register for messages from any of them. Sometimes I take one to my Mom's house where one is in use for her to have a panic button that sends me an SMS when she presses it. I have a lab setup at home here. I have another one etc etc.
Rather than having to change the ID for each environment it would be nice to register for any messages coming from manufacturer ID == x.
Is it correct that that isn't available using the current broadcasting/registration model?
Espruino is a JavaScript interpreter for low-power Microcontrollers. This site is both a support community for Espruino and a place to share what you are working on.
Re:
Advertising
I have multiple devices and would like to register for messages from any of them. Sometimes I take one to my Mom's house where one is in use for her to have a panic button that sends me an SMS when she presses it. I have a lab setup at home here. I have another one etc etc.
Rather than having to change the ID for each environment it would be nice to register for any messages coming from manufacturer ID == x.
Is it correct that that isn't available using the current broadcasting/registration model?