Cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Strong vibration

ANSWERED

The Sense and Versa 3 have very weak hardware vibration compared to older Versas. Compounded by the fact that it deteriorates rapidly with decreasing battery levels.

 

Does anyone know how to compensate for this?

 

Eg. A standard coding technique for making a strong vibration and a way to increase it as the battery levels decline?

 

There seems no way to enhance the vibration.

Author | ch, passion for improvement.

Best Answer
1 BEST ANSWER

Accepted Solutions

I've tested the code below, and it works for what you suggested, @Guy_. I had to think through the maths, but it really wasn't that tricky. The code delivers two one-second bursts of alert, with a 0.1-second wait between them. You can change the variables to whatever you want.

 

That said, I haven't noticed that the vibration strength feels much different than the one I suggested above. I didn't try it with the "ring" vibration, as Jon indicates that it is no longer supported.

 

Anyway, let me know if this helps.

 

const milliseconds = 1;
const vibe_delay = 5 * milliseconds
const seconds = 1000 * milliseconds;
const minutes = seconds * 60;
const hours = minutes * 60;
const days = hours * 24;

let vibe_repeat = 2; let vibe_length=1.0*seconds; let vibe_pause=0.1*seconds;
for(let i=0; i<vibe_repeat; i++) {
  setTimeout(() => vibration.start("alert"), vibe_length*i + vibe_pause*i);
  setTimeout(() => vibration.stop(), vibe_length*(i + 1) + vibe_pause*i);
}

 

View best answer in original post

Best Answer
19 REPLIES 19

Unfortunately there's no way to control the strength of vibration with the SDK.

Best Answer
0 Votes

Hi Jon, but is there a sequence that produces a more noticeable effect.

 

For instance, how does the standard watch alarm to wake up in the morning produce a noticeable vibrate when vibration.start("nudge"); is barely detectable.

 

There must a sequence commands or technique that simulates a strong vibrate.

Author | ch, passion for improvement.

Best Answer
0 Votes

You'll just need to experiment with the available options and see which you prefer, perhaps nudge-max?

 

"alert"
"bump"
"confirmation"
"confirmation-max"
"nudge"
"nudge-max"
"ping"
"ring"

Best Answer
0 Votes

I tried all those and none were any good on the Sense - however do you have access to the code and method used for the alarm to wake up.

 

Even standard notifications are barely detectable, the only standard vibrate that actually produces enough vibration is this alarm one.

 

In one of your posts I saw a mention of a call format such as vibration.start("nudge-max",5,100,7);

 

Is this operational?  or does only the short version with no additional parameters work?

Author | ch, passion for improvement.

Best Answer
0 Votes

I don't know if you found an answer since April, but I, too, have found all the provided watch vibrations to be crap. Each vibration only lasts for one-tenth of a second, and it's hard to notice anything in that short amount of time.

 

I'm experimenting with the following routine and feel that it's good enough for my purposes. The vibration patterns this makes are unpredictable, but at the very least, the results are noticeable.

for(let i=0;i<10;i++) {
   setTimeout(() => vibration.start("nudge-max"), 150*i)
}

This is supposed to launch ten "nudge-max" vibrations in a row, separated by one-twentieth of a second. It doesn't really do that. Sometimes I'll usually feel two or three sub-vibrations. Sometimes I'll feel a randomish vibration pattern. But, the point is, I always notice some kind of vibration, which is really all I want.

 

If someone tweaks this to make it work better, would you mind posting it here?

Best Answer
0 Votes

@CluelessExpertThanks for your input.

 

A couple of things to bear in mind.

 

1) As the battery level on the Sense and Versa 3 decline the vibrate gets even worse, so you may want longer or more vibrates

2) Not sure but think a vibration.start when vibration is busy is ignored. It will require some testing to see how long a pause is necessary or to issue a vibration.stop.

 

Did find a reference to this:

The available patterns from the documentation are:

 

    "alert"

    "bump"

    "confirmation"

    "confirmation-max"

    "nudge"

    "nudge-max"

    "ping"

    "ring"

 

The calling structure seems to be

 

vibration.start(Name, Repeat, Time, Strength, Ramp);

 

 

where:

 

Name (A pattern name),

Repeat (0-6, 7=infinite),

Time (ms) (5ms granularity),

Strength (1-7, 0=off),

Ramp "yes" to ramp to next point

 

Not sure how valid that is, it may not apply on OS 5.0, or at all, but from some initial tests the results were inconclusive.

 

Rather than reinventing the wheel, was hoping that someone had come up with a sure working model to cater for battery level and repeat or alternating sequences to equal how an original Versa reacts, which is fine, a vibration is always detected.

Author | ch, passion for improvement.

Best Answer

@CluelessExpert  -  This vibration analysis you might find useful.

Author | ch, passion for improvement.

Best Answer
0 Votes

@Guy_ I discovered your response this morning and I'm already testing it. I think it's going to be great. Thanks!

Best Answer

@Guy_  It works beautifully. I'm using the following code on a Versa 3:

 

 

const milliseconds = 1;
const vibe_delay = 5 * milliseconds
const seconds = 1000 * milliseconds;
const minutes = seconds * 60;
const hours = minutes * 60;
const days = hours * 24;

let vibe_repeat = 5;
for(let i=0; i<vibe_repeat; i++) {
     setTimeout(() => vibration.start("ping"), 60*vibe_delay*i);
}

 

 

I'm laying this out so that people can use the results of your app directly in their code. The value of 60 gives me exactly the delay I need for a "ping" with five perfect repeats.

 

Best Answer

Thanks @CluelessExpert - your code gave me an idea though.

 

It is still weak on the poor model 3 watches.

 

How about a vibrate alert or ring with vibrate.stop after N ms. That seems stronger and you can define the length and the interval for firing?

 

Therefore using short partial bursts of alert is possibly stronger and more alerting than any builtin native patterns?

Author | ch, passion for improvement.

Best Answer
0 Votes

I've tested the code below, and it works for what you suggested, @Guy_. I had to think through the maths, but it really wasn't that tricky. The code delivers two one-second bursts of alert, with a 0.1-second wait between them. You can change the variables to whatever you want.

 

That said, I haven't noticed that the vibration strength feels much different than the one I suggested above. I didn't try it with the "ring" vibration, as Jon indicates that it is no longer supported.

 

Anyway, let me know if this helps.

 

const milliseconds = 1;
const vibe_delay = 5 * milliseconds
const seconds = 1000 * milliseconds;
const minutes = seconds * 60;
const hours = minutes * 60;
const days = hours * 24;

let vibe_repeat = 2; let vibe_length=1.0*seconds; let vibe_pause=0.1*seconds;
for(let i=0; i<vibe_repeat; i++) {
  setTimeout(() => vibration.start("alert"), vibe_length*i + vibe_pause*i);
  setTimeout(() => vibration.stop(), vibe_length*(i + 1) + vibe_pause*i);
}

 

Best Answer

@CluelessExpert-  Thanks for your time and sample code. That may be the foundation of the answer. I'm trying it with different values to find the right combination.

"ring" is a valid pattern still.

 

Author | ch, passion for improvement.

Best Answer
0 Votes

@JonFitbit Would you mind being a bit more specific in regards to the behavior of the following vibrations? I cannot find my actual Versa and have just been testing on the simulator, which does not replicate vibrations.

 


@JonFitbit wrote:

You'll just need to experiment with the available options and see which you prefer, perhaps nudge-max?

 

"alert"
"bump"
"confirmation"
"confirmation-max"
"nudge"
"nudge-max"
"ping"
"ring"


Best Answer
0 Votes

Hi @Sagrawal8 - you can test vibrations and see the accompanying documentation using the SimpleVibrate app.

Author | ch, passion for improvement.

Best Answer
0 Votes

@Guy_ wrote:

Hi @Sagrawal8 - you can test vibrations and see the accompanying documentation using the SimpleVibrate app.


@Guy_ It appears that you did not read my entire post. I do not know where my physical Versa is onto which I can download the app. I would simply like to know the nature of the vibrations i.e. how long each one lasts and/or the pattern of the vibration.

Best Answer
0 Votes

@Sagrawal8 - as given in my post, the details you want are in the documentation of the app, search for the app and consult the description and the associated documentation.

 

Either use Google or the gallery in the Fitbit App to locate it.

Author | ch, passion for improvement.

Best Answer
0 Votes

@Guy_ I found the documentation and while it is helpful in terms of the ms time of each vibration, what is the difference between ping and nudge? Also, nudge-max and confirmation-max are simply more prominent versions of nudge and confirmation, respectively, right?

Best Answer
0 Votes

This might help.

Peter McLennan
Gondwana Software
Best Answer

@Gondwana wrote:

This might help.


Thank you so much. That clarified my questions.

Best Answer