• Has anyone used the Sleep as Android app with their Bangle.js 2 (not v1)?

    In Sleep as Android's SettingsSleep trackingWearablesUse wearable section, there's an option for Bangle.js. If you don't have the Bangle.js Gadgetbridge installed, it'll direct you to the Play Store to get it. Otherwise, when testing, it waits to connect to my Bangle.js 2… and does nothing. I have all the Gadgetbridge and Bangle programming/intents/etc features enabled, and I've confirmed that I can send JavaScript code via Tasker (to auto-toggle Quiet mode).

    I'm guessing Sleep as Android's integration was written for the Bangle.js v1 since it doesn't mention heart-rate monitoring, and the v2 hardware/firmware may be different enough to break it.

    I did reach out to Sleep as Android's support, and apparently it's a third party integration:

    I did implement the PineTime integration myself.. but for the Bangle.js I'm sorry this is third party and I do not know anything about it :( I did not yet test this and do not have the device.. although I may get to Bangle.js in the future and hopefully integrate it.

    I'd be happy to try debugging this, but I figured I'd get an idea of what others know first.

    Aside, I know Bangle.js 2 has a self-contained sleep phase alarm/tracking app. However, I have over 2 years of sleep data in Sleep as Android and I've integrated it into my routine (controls bedroom lights/music, activates different modes on my phone, etc). Installing the sleep phase alarm app didn't seem to make this work, either.

  • I didn't know about this and my banglejs 2 also doesn't connect. I'm happy to test and support the integration.

  • I'm glad to know it's not just me :)

    My guess is the Sleep as Android app is sending JS code to the Bangle.js 2 watch via the Bangle.js Gadgetbridge app, and expecting some sort of reply (perhaps via Android Intents?) that it doesn't receive.

    I'll try to look into the Gadgetbridge debugging advice soon. You might be able to find something with it, too?
    https://www.espruino.com/Gadgetbridge#de­bugging

  • UPDATE: fetching Gadgetbridge debug logs, I see… nothing from Sleep as Android in Gadgetbridge's logs.

    I have my custom code snippet from Tasker successfully shown and parsed, though.

    Perhaps there's something between Bangle.js Gadgetbridge and Sleep as Android that needs fixed?

    I do frequently see the following, but I suspect it's unrelated:

    [JCould not load clock info "sched.clkinfo.js"
    

    Looking at adb logcat, it seems like Sleep as Android is listening for a com.urbandroid.sleep.watch.CONFIRM_CONNE­CTED broadcast:

    03-22 16:23:56.110 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.110, main]: Theme: setting last SmartWatchActivity 16
    03-22 16:23:56.110 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.110, main]: SmartWatchActivity:onCreate() {EX:null} [I: {EX:test_sensors (true) }]
    03-22 16:23:56.122 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.122, main]: onCreate SmartWatchActivity wearable Bangle.js
    03-22 16:23:56.123 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.123, main]: SmartWatchActivity:Async connecting smart watch 
    03-22 16:23:56.123 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.123, main]: SmartWatch: Async smart watch connect called
    03-22 16:23:56.123 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.123, main]: SleepPhaser: GET address null
    03-22 16:23:56.123 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.123, main]: SleepMaskBt: GET address null
    03-22 16:23:56.124 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.124, main]: Using watch accel: BaseWatchAccelManager
    03-22 16:23:56.124 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.124, main]: SmartWatch: ConnectivityChecker registering receiver for com.urbandroid.sleep.watch.CONFIRM_CONNE­CTED watch com.urbandroid.sleep.smartwatch.generic.­GenericWatch@6946671
    […]
    03-22 16:23:56.131 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.131, main]: SmartWatchActivity:onStart()
    03-22 16:23:56.132 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.132, main]: SmartWatchActivity:onResume()
    03-22 16:23:56.133 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.133, main]: Theme: onPostResume() SmartWatchActivity
    03-22 16:23:56.138  1810  4994 D CoreBackPreview: Window{d471394 u0 com.urbandroid.sleep/com.urbandroid.slee­p.SmartWatchActivity}: Setting back callback OnBackInvokedCallbackInfo{mCallback=andr­oid.window.IOnBackInvokedCallback$Stub$P­roxy@3722632, mPriority=0}
    03-22 16:23:56.145 20919 29298 E OpenGLRenderer: Unable to match the desired swap behavior.
    03-22 16:23:56.152 20919 29298 W Parcel  : Expecting binder but got null!
    03-22 16:23:56.167  1810  1933 I ActivityTaskManager: Displayed com.urbandroid.sleep/.SmartWatchActivity­: +81ms
    03-22 16:23:56.234 20919 20919 I SleepAsAndroid: [22Mar 16:23:56.233, main]: Theme: onPostResumeAfterRecreate()
    […]
    03-22 16:23:56.747 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.747, main]: AlarmClock:onStop()
    03-22 16:23:56.752 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.752, main]: SimpleSettingsActivity:onStop()
    03-22 16:23:56.753 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.753, main]: TrackSettingsActivity:onStop()
    03-22 16:23:56.754 20919 20919 D SleepAsAndroid: [22Mar 16:23:56.754, main]: SmartwatchSettingsActivity:onStop()
    

    This matches up with the Sleep as Android Wearable integration API documentation:
    https://docs.sleep.urbandroid.org/devs/w­earable_api.html#initiating-connection-t­o-phone

    I git-clone'd the Gadgetbridge source code and searched recursively for CONFIRM_CONNECTED, but didn't find it anywhere.

  • IGNORE THIS (can't delete)
    In Gadgetbridge, tap on the gear of your Bangle.js and enable "allow 3rd party apps to change wettings", maybe?

  • I use Gadgetbridge in German. For me, when I tap the gear at my BangleJS, there is no "allow 3rd party apps to change settings" or its translation. But I activated (translated by me): "Text as bitmap", "Allow internet access" and "Allow intents"
    Using Gadgetbridge version 0.71.2a-banglejs

  • Someone has stepped up to work on Sleep as Android support in Gadgetbridge!

    https://codeberg.org/Freeyourgadget/Gadg­etbridge/pulls/3188

    It looks like they are focusing on the Mi Band (based on the PR branch name), but this could potentially be used as the foundation for Bangle.js 2 support, too.

  • I have the same issue. It would be awesome if the Bangle.js2 can integrate with Sleep as Android.
    I would be glad to help debugging, testing, coding to find a solution. However I'm not sure where to start. Anyone with advice?

  • Gadgetbridge Sleep As Android integration imminent (Probably. For nightlies at least): https://codeberg.org/Freeyourgadget/Gadg­etbridge/pulls/3687#issuecomment-1765530­

    Bangle.js sleep sync is in talks also: https://github.com/espruino/BangleApps/i­ssues/3275

  • Hey,

    I just got hands-on experience and tried implementing the Sleep as Android integration for Banglejs. It was relatively straightforward, but I still need to figure out how to enable or disable my Bangle app from Gadgetbridge.

    My current solution is:

    • Create a simple app that provides all relevant measurements for Sleep as Android (Movement, Heart Rate). I've already got this working.
    • Make it possible to start/stop the app from Gadgetbridge. If you know of a good way to do this, feel free to chime in!
  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Sleep as Android's Bangle.js wearable integration with Bangle.js 2..?

Posted by Avatar for digitalcircuit @digitalcircuit

Actions