Comments (6)
This is a work-in-progress of what the understanding is of the Bluetooth profile required by Google Science Journal to be able to read Bluetooth (BLE) sensors
Service
Field | Details |
---|---|
Name | Science Journal |
UUID | 555a0001-0aaa-467a-9538-01f0652c74e8 |
Characteristic
Field | Details |
---|---|
Name | Value |
UUID | 555a0003-0aaa-467a-9538-01f0652c74e8 |
Flags | Read, Notify |
Fields | utf8s |
Summary | Sends the value of the sensor as a string (Max 20 characters) |
Characteristic
Field | Details |
---|---|
Name | Config |
UUID | 555a0010-0aaa-467a-9538-01f0652c74e8 |
Flags | Write |
Fields | utf8s |
Notes | Send instructions to the sensor as a string (Max 20 characters) ?What instructions does the app send? |
Characteristic
Field | Details |
---|---|
Name | Version |
UUID | 555a0011-0aaa-467a-9538-01f0652c74e8 |
Flags | Read |
Fields | ?unit8? |
Notes | ?It is unclear to me what this should be set to but it looks like we might be on version 1 and it might be optional? |
from python-bluezero.
I've been looking around the app files. The heavy lifting for the Bluetooth sensors seems to happen in the following file:
https://github.com/google/science-journal/blob/master/OpenScienceJournal/whistlepunk_library/src/main/java/com/google/android/apps/forscience/whistlepunk/sensors/BluetoothSensor.java#L204
The above link is to a comment which states:
For Value (UUID:555a0003), it's a protobuf
Which I think is referring to Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data called Protocol Buffers
It is looking like the value is made up of a timestamp and value although the exact details are still a mystery at the time of writing.
from python-bluezero.
I asked a question in the Google Science Journal Support Forum about the Bluetooth Profile required and they have come back with "We do not have a BLE protocol layer that we are yet ready to support long-term"
The solution is to build an Android application package (APK) that interfaces between Science Journal and the Bluetooth as detailed here:
https://github.com/google/science-journal/blob/master/api/ScienceJournalApi/README-api.md
Writing the APK seems outside the scope of this project so I'm closing this
from python-bluezero.
Just wanted to capture here for future reference that the Bluetooth SIG has an adopted GATT specification for Environmental Sensing Profile and Environmental Sensing Service.
More information can be found at: https://www.bluetooth.com/specifications/adopted-specifications
This PDF and XML is probably the most useful
from python-bluezero.
Did you get any further with this? Now that the science journal has gone over to arduino and they can link to the arduino nano sense, it should be possible to pursue this. I want to make a physics sensor based on the adafruit feather sense but would prefer to work in circuitpython because arduino is a pain.
from python-bluezero.
This idea got abandoned previously because there was not a documented API accessible from the Raspberry Pi. I believe this is still the situation. If you know of some documentation then please share and I can take a look.
from python-bluezero.
Related Issues (20)
- Feture request: Implement Agent for pairing support HOT 4
- how to return simple string from update value? HOT 8
- create 2 services from the same source? HOT 3
- Force disconnect clients from peripheral HOT 2
- How best to get extra information like RSSI and tx_power during scan HOT 2
- Disabling BlueZ request to pair with central on connect. HOT 5
- AttributeError: module 'bluezero.async_tools' has no attribute 'EventLoop' HOT 9
- Tests failing and blocking release HOT 1
- Can't install dbus-python to use bluezero HOT 3
- Error "dbus.exceptions.DBusException: org.bluez.Error.NotAvailable: Operation currently not available" on central HOT 8
- using class methods as callbacks fails for writes HOT 2
- Method to determinate current/negotiated MTU for connection HOT 7
- Documentation about PIN on pairing HOT 6
- Name a service and a characteristic HOT 1
- Method to retrieve remote device path in StartNotify and StopNotify HOT 9
- Advertisment of peripheral HOT 3
- Unable to set `DiscoverableTimeout` HOT 2
- What is srv_id 0 zero? HOT 1
- Enable services changed on Generic Attribute service HOT 1
- Wait notification functionality feature HOT 2
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 python-bluezero.