Closed ukBaz closed 7 years ago
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
Field | Details |
---|---|
Name | Science Journal |
UUID | 555a0001-0aaa-467a-9538-01f0652c74e8 |
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) |
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? |
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? |
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.
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
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
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.
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.
I've just stumbled across the Science Journal app from Google. It allows you to data log sensor data on your phone. https://play.google.com/store/apps/details?id=com.google.android.apps.forscience.whistlepunk
The bit that caught my attention was that it can also do the logging for sensors over BLE. Their GitHub repo has some Arduino examples. I would expect that this could be done with Bluezero also. The key bits of Arduino code with the BLE service and characteristic seem to be:
The app code is available at: https://github.com/google/science-journal