-
Ok, I've just dug a working one out. I'm not 100% sure on the battery - without the case/back on it I have to hold the cable on, but with power applied it definitely boots and the LCD doesn't seem to have noticeable issues at a quick glance.
Does £10 plus postage work for you?
On the waterproofing front, you can try making sure you grease around the button holes - as long as the rear seal was on correctly that's the only other potential point of water ingress.
We do have spare case fronts (just not the backs) so I could send you one of them and you could pull the buttons out and glue up the holes, and then as it sounds like you have your own software you could use the accelerometer/touchscreen to control the app instead?
-
-
Also, just to add you can try the IDE relay out on the same PC. Click the
Remote Connection
text in one browser window, then copy the URL into another browser window. It'd be interesting to see if it works.... or what happens if you scan the QR code with your phone (so not using Gadgetbridge but just chrome on your phone)
-
The offending code is at https://github.com/espruino/EspruinoTools/blob/d809a2bacbe609edb189b82bcfb7782a4cd277c2/libs/webrtc-connection.js#L328
There's a bit of documentation about what's meant to happen at the head of that file.
... but the
[WebRTC] No activity on connection - closing 79543ed0-aa61-435f-ac9a-38ac3d01ac00
message is exactly what I get on mine when I have the wrong UUID or the App Loader relay isn't running on the phone I'm connected to.As I understand it with Peerjs you basically open a connection and it's a bit like going into a chatroom. The connection opens, but there may not be anyone there.
The IDE connects using that UUID (the Phone is supposed to be the host) and it keeps sending
ping
messages once a second, but it it doesn't get any response in a second it times out.I guess it's possible that something about your connection means the messages take more that a second to arrive??
-
-
the one contact which always has a voltage applied is corroded quite a bit, but this should not translate to inside the watch over time, hm?
No, that should be fine, but it's worth covering up anyway in case it increases corrosion on the two outside pins that you need to charge it.
If pinching it makes it appear on Bluetooth then that would kind of clinch it - and might even bring it back to life.
-
I can get long GUID that I can type on PC into Settings -> Communications -> Remote Connection Bridge Peer ID.
Yes, if you're connecting through Gadgetbridge then that should be fine.
You need to have the App Loader still open, and if you closed it you need to have clicked "WebIDE remote" again (it'll have the same ID).
Then it should pop up in the IDE after you paste in the UUID and click connect and it should appear in the list - it's possible you may have to refresh the page with F5 to get it to pick up
-
I just tried one here and the connector should come off pretty easily - you just want to pull up with a fingernail on the silver bit.
But if it's not coming off easily it's possible that there has been some corrosion in that connector and it's causing it to stick on (in which case if you can fix that, maybe it'll sort out the display).
But it's hard to know what to suggest - you could try applying some electrical contact cleaner or maybe even penetrating oil (which you could then take off after with some isopropyl alcohol)?
-
If touchdesigner doesn't support getting data from Bluetooth, as you say you're going to have to have something inbetween to forward the data to it. You won't be able to do it direct from the Web IDE but you'll need to make a webpage that uses Web Bluetooth to get data from the Puck and then forward it to Touchdesigner.
As a start, maybe look at https://www.espruino.com/Web+Bluetooth#two-way-communications
which shows you how to use the light value from the Puck. Instead ofsetInterval(function(){Bluetooth.println(Puck.light());},100);
for the light instead do:Puck.accelOn();Puck.on("accel", e=>Bluetooth.println(JSON.stringify(e)))
to send the accel data out.And then in
function onLine(v)
do something like:try { var obj = JSON.parse(v); // do something with obj here to pass it to the WebSocket connection } catch (e) { // if something else got printed by the puck JSON.parse will fail but we just ignore it }
There's also something similar where a Bangle.js is used as well at https://www.espruino.com/Bangle.js+Data+Streaming - but no websockets used there either so you'd have to figure that bit out
-
The UUID should be accessible from
Settings -> Communications -> Remote Connection Bridge Peer ID
- or was it something else?But I'm not sure I understand the issue? So you were using the remote connections option to connect via your phone, but then I guess maybe your phone lost the UUID so they couldn't connect?
But then you should be able to click the
Remote Connection
button in the Web IDE's connection menu, scan the QR code and reconnect - or are you saying that doing that didn't work? -
sometimes it does measure something even though I'm not wearing the watch
Yes, it's a shame the binary blob HRM isn't a bit smarter. If the Bangle isn't facing anything it knows it's not being worn and you don't get an HRM but if the HRM is pointing at something and getting a reflection it thinks it is worn and you're just being very still.
I guess one option is we add a specific check for a lack of movement plus the bangle being pretty much flat on a surface (which I guess is 95% of times it's left) and disable the HRM in that case
-
-
That's from the FAT filesystem again. It's the
WebServer
module you're using: https://github.com/espruino/EspruinoDocs/blob/master/modules/WebServer.js#L188-L189Looks like when you init the webserver you need to be sure you specifically list your file:
memory: { 'web.html': { 'content': require("Storage").read('web.html'), 'type': 'text/html' },
See https://www.espruino.com/WebServer#how-to-use-the-webserver-module
-
I guess this is not the case then, and the pre-processing is supposed to be made by the watch?
Yes, that's correct. I don't believe Gadgetbridge has anything built in.
I was not aware of sleep not being processed either.
We try to be entirely open with everything Bangle.js can/can't do, but we can't just have a list of everything Bangle.js doesn't do out the box. At the end of the day it's at least open, so if you're a developer you can at least get stuck in and have a go at adding the features you need.
I had a look at the Gadgetbridge Bangle.js code and right now it doesn't provide any way of sending the type of activity to Gadgetbridge from the Bangle, so I'm looking at at least adding that, and then maybe the Bangle.js firmware can be changed to report the data at a later date.
edit: I submitted a PR at https://codeberg.org/Freeyourgadget/Gadgetbridge/pulls/4323
-
-
Hi, sorry to hear about your Bangle... Were you swimming in salt water?
I'd start off by unscrewing the rear cover and checking inside (https://www.espruino.com/Bangle.js+Disassembly) if it's damp I'd take the inner 'puck' out of it and put the puck somewhere warm and dry for a few days to make sure it's totally dried out.
It may be after that it starts working again after that. If not, the LCD is held on by a connector that you can pop off (although you have to dismantle the 'puck' a bit to get to it) - but you could take that off and reseat it and see if that helps.
Otherwise if the LCD itself is broken I'm afraid there's not that much to be done. We did have a bunch of replacement LCDs, but the last set of Bangles we got from the manufacturer were in a terrible state and we had to replace the LCDs on many of them, so we used up our stock.
I believe we do still have some of the complete inner Bangle.js units, but with LCDs that had uneven backlighting that we felt we couldn't sell. So we could supply one of those to you - the LCD wouldn't be perfect but it'd be a lot better than what you have there!
But the ideal thing would be if it dried out and started working again!
-
-
-
Hi - yes, by default the Bangle doesn't detect activity or wear state. It's not a bug as such, it's just not implemented yet.
There's a 'sleep log' app that detects sleep phases and might help? https://banglejs.com/apps/?id=sleeplog
I'm not sure if that forwards the info to Gadgetbridge though
-
I think E.getConsole() can return USB also if it is not connected when it is the default in board file.
Yes, that's true, or if you force it with
USB.setConsole(1)
.So right now I don't think we have a way, except to alter the code as @fanoush has done. IMO a Serial.isConnected might be quite good. It would be handy for Bluetooth, but also for Serial1/etc it could still return true/false depending on whether they've been set up.
What board are you using @MarkBloom? Is it your own custom one?
-
Thanks for checking on that. That's not a good sign then - it sounds like a battery issue as you say. I haven't really come across this before, but maybe being left to run flat for those ~3 years did cause the battery issues.
You could try leaving it on charge for several days, just in case there's a chance it'll recover a bit more?
-
Thanks! I could be wrong on this but looking at the log it seems like you receive messages which then may stay showing on your watch with a flashing messages widget for half an hour or more.
There was another thread on this recently where @WizardStan tracked the battery use down to the messages widget: https://forum.espruino.com/conversations/398746/
You could try uninstalling it (or disabling flashing in the messages settings page)? The widget isn't vital, but if it's flashing every second for several hours a day on average, that would definitely hit your battery life.
-
Great! Then it might be worth using the code above plus the code to handle the step count clockinfo: https://github.com/espruino/BangleApps/blob/master/apps/clock_info/lib.js#L81-L89
Then adding the multiplication should be quite easy I hope!
-
Hi! Yes, this is definitely the right place to ask.
The first port of call is always to make sure you load your app with the Web IDE running and see if any errors appear.
I guess you're adding the clockinfo here? https://github.com/4o4R/Bangle-Meander/blob/main/clean%20meander.app.js#L88-L92
I'm pretty sure you're putting the clockinfo in the wrong place - if you just want to add it to your clock, it's best to start from the code from an app that creates its own clockinfos like: https://github.com/espruino/BangleApps/blob/master/apps/analogquadclk/app.js#L158-L210
It does something like:
let clockInfoItems = require("clock_info").load(); let clockInfoItemsBangle = clockInfoItems.find(i=>i.name=="Bangle"); if (clockInfoItemsBangle) { clockInfoItemsBangle.items.push({ name : "MyItem", get : () => { }, show : function() { }, hide : function() { }); }
... or you could just make your own standalone clockinfo like is shown on https://www.espruino.com/Bangle.js+Clock+Info and then it'd work with any clock you install? That might be more sensible...
However I'm not entirely sure where the
distance
module is defined forrequire("distance")
? I don't see it used in any other apps.What kind of distance are you after? The distance from a run that you're currently doing in the
Run
app, or the distance that I think some clocks display which is based on the step count multiplied by an average step size?
Great! If you had another spare pin (UARX?) you could put the piezo between the two which effectively doubles the voltage swing on it: https://www.espruino.com/NRF52LL#create-a-square-wave-on-pin-d0-with-the-inverse-of-the-square-wave-on-d1-
Just a thought, but if you're getting rid of the HRM I'd maybe think about drilling out the HRM hole and then gluing the piezo to the back of the case. That way the case would be sealed but you'd have a way for the sound to escape.
As for extra IO, if you're willing to dig around on the board you might be able to find something. For instance I don't know if
GPS BOOT
is actually the GPS power signal or some other pin that I haven't noticed so far.Or maybe if you're disconnecting the HRM then the pins for that might be on testpoints?
https://www.espruino.com/Bangle.js2+Technical is a good start but I imagine you found that already!