This package is still in testing/beta
Written in Javascript and utilizes the BlueZ Linux Bluetooth stack via its native D-Bus interface.
| Device | Screenshot |
|---|---|
| Oral-B Smart Toothbrushes | ![]() |
When running magic mirror and you open the web interface, if not already, the node_helper will start connecting and listening to your configured bluetooth device(s).
Navigate into your MagicMirror's modules folder and execute:
git clone https://github.com/timodejong95/MMM-BluetoothDevices.git
cd MMM-BluetoothDevices
npm install
sudo cp setup/MMM.conf /etc/dbus-1/system.d/MMM.confTo run own services (GATT) we need to permission to start a service on the system D-Bus.
Copy and move the setup/MMM.conf into the following directory: /etc/dbus-1/system.d/.
In the file the users pi and root are granted permission.
If your running MagicMirror in docker you need to add the following volume mounts:
- /var/run/dbus/system_bus_socket:/var/run/dbus/system_bus_socket
- /etc/dbus-1/system.d/MMM.conf:/etc/dbus-1/system.d/MMM.conf
| Key | Type | Default | Description |
|---|---|---|---|
| name | String | raspberrypi |
the name for the running bluetooth adapter |
| mode | String | le |
|
| hci | String | hci0 |
which hci adapter to use, run hciconfig to see your available hci adapters |
| interfaceName | String | org.bluez.Adapter1 |
the bluetooth adapter name to take |
| hideAfter | Number | 600 |
the time in seconds when a device should hide |
| debugLogs | Boolean | false |
enable debug logging |
| services | Array | { type: "CurrentTimeService" } |
bluetooth GATT services |
| services.type | String | the service name, see services | |
| devices | Array | [] |
the bluetooth devices |
| devices[] | Object | a bluetooth device | |
| devices[].type | String | the device name, see devices | |
| devices[].name | String | the name for the devices, can be used in layout.data.fields |
|
| devices[].mac | String | the device bluetooth mac | |
| devices[].format | String | the device format, see devices format | |
| devices[].tracks | Array | [] |
custom devices tracks |
| devices[].tracks[] | String | the track key, see devices tracks | |
| devices[].servicesResolvedTimeout | String | 15000 |
the amount of milliseconds to wait for the devices to resolve the services |
| layout | Object | ||
| layout.title | Object | ||
| layout.title.position | String | bottom |
either top or bottom |
| layout.title.key | String | name |
the key of the device data to show |
| layout.data | Object | ||
| layout.data.position | String | bottom |
either top or bottom |
| layout.data.fields | Array | { key: "mode", text: "mode" } |
the custom fields |
| layout.data.fields[] | Object | a custom field | |
| layout.data.fields[].key | String | the label | |
| layout.data.fields[].text | String | the key of the device data to show |
{
module: "MMM-BluetoothDevices",
position: "top_bar",
config: {
devices: [
{ type: "OralBToothbrush", name: "oralb", mac: "XX:XX:XX:XX:XX:XX" }
]
}
}
- OralBToothbrush
| Key | Type |
|---|---|
| state | String |
| pressure | String |
| time | Int |
| mode | String |
| sector | String |
| battery | Int |
| Key | Description |
|---|---|
| counter | time |
| formatted | M:SS |
| Key | Description |
|---|---|
| Battery | Can only be fetched when connected (device auto disconnect after ~20 seconds). So we got data when starting up and we try to reconnect in the first 5 seconds of your brush session. |
- CurrentTimeService
When occurring exceptions, that are thrown by the module, there is a troubleshooting key provided which corresponds to the following possible solutions:
| Keys | Possible Solutions |
|---|---|
| services#destroy | - |
| services#invalid-adapter dongle#interface |
make sure your hci adapter is configure correctly, run hciconfig to see which hci adapters are available |
| devices#could-not-connect dongle#device-interface |
make sure your bluetooth mac is correct, device is on and ready for pairing when the node_helper is triggered |
| devices#connect-error | - |
| devices#resolve-services | - |
| devices#characteristics | - |
| devices#service-interface | - |
| devices#service-characteristic-interface | - |
| dongle#stop-discovery | you might have re-started the magic-mirror to many times in a short period, please wait 30 seconds before the next start |
| dongle#start-discovery-filter | - |
| dongle#start-discovery | - |
I tried to make this package as generic as possible to allow support for more devices. If you have any tips/suggestions or want to create support for a new bluetooth device let me know.
Credits to Hypfer/Cybele I used this package to see how to make connection with bluetooth devices.
