# Help choosing correct SLEEP mode w/ Asset Tracker v2

**URL:** <https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811>\
**Category:** Troubleshooting\
**Created:** [February 22, 2018, 3:50am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811 "2018-02-22T03:50:30Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 22, 2018, 3:50am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/1 "2018-02-22T03:50:31Z")

</div>

Greetings! I’m a newbie at this. I’ve done lots of searching, and I’m coming up blank. If it’s been answered elsewhere, then I’m happy to follow a link rather than re-create the wheel. (Most of the posts on the subject were c. 2016 which seemed to be a point when lots of the sleep stuff changed.)

My situation is a bit different than others. I’m making a tracker for my church’s tractor (TractorTracker!) which has been stolen a few times now. I have no problem spending lots of data but I since I’m hiding the tracker and won’t have access to recharging, I need to save as much power as possible (again, even if the cost is data usage).

I’ve been trying to follow the [fancy asset tracker project](https://github.com/dmiddlecamp/fancy-asset-tracker) but I’m not really getting it to work as expected. After some research it seems like it might be a v1 vs v2 thing(?).

I’ve decided to go back to the 3\_WAKEONMOVE.ino example from the Asset Tracker Library. The problem(?) that I’m running into is the use of the `SLEEP_NETWORK_STANDBY` rather than deep sleep mode,

```auto
System.sleep(WKP, RISING, TIME_PUBLISH_BATTERY_SEC, SLEEP_NETWORK_STANDBY);

```

because it seems like it takes a bit more power to keep the network standby mode activated than the “deep” sleep mode ([see this](https://www.voltaicsystems.com/blog/particle-electron-power-consumption-analysis/)). _Please correct me if I’m wrong, but again I’m trying to save as much energy as possible!_

**So here’s the question:**  
What would be the best way to put the tracker into a deep sleep mode? I want it to wake up on movement, and every x hours to check in, and (obviously) would make it stay awake long enough to get a GPS signal lock, etc. I don’t have a coin cell _yet_ but realize that’ll help get the lock quicker.

Thanks much! I’ve been impressed at this community when reading other posts (and I’ve read lots).

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 22, 2018, 5:08am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/2 "2018-02-22T05:08:07Z")

</div>

> [@jschwalbe](#):
>
> I’m running into is the use of the SLEEP\_NETWORK\_STANDBY rather than deep sleep mode

`SLEEP_NETWORK_STANDBY` is just a flag that can be used with either Stop Mode sleep (the one you use) or deep sleep (aka Standby Mode).  
And if you are not intending to wake every 23 minutes to keep the cloud connecction active, `SLEEP_NETWORK_STANDBY` won't really help your purpose.

If your prime target is to conserve energy and you are _not_ chargning the device while asleep then you may rather want to use `System.sleep(SLEEP_MODE_SOFTPOWEROFF, seconds)`  
[https://docs.particle.io/reference/firmware/electron/#sleep-sleep-](https://docs.particle.io/reference/firmware/electron/#sleep-sleep-)

BTW, [`AssetTrackerRK`](https://build.particle.io/libs/AssetTrackerRK/0.1.4/tab/AssetTrackerRK.cpp) library is a better evolution of that library you may reather want to use.

---

<div class="post-metadata">

**Author:** ![gusgonnet](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/gusgonnet/32/27491_2.png) [@gusgonnet](https://community.particle.io/u/gusgonnet)\
**Post date:** [February 22, 2018, 3:50pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/3 "2018-02-22T15:50:49Z")

</div>

> [@ScruffR](#):
>
> you may rather want to use System.sleep(SLEEP\_MODE\_SOFTPOWEROFF, seconds)

Hi,  
one question I always had about this was the following:  
if we use

> System.sleep(SLEEP\_MODE\_SOFTPOWEROFF, seconds)

Is there a way so the Electron wakes up on move when using SLEEP\_MODE\_SOFTPOWEROFF?

Or in order to use wake up on move there is no other way but to sacrifice battery and use:

> System.sleep(WKP, RISING, TIME\_PUBLISH\_BATTERY\_SEC, SLEEP\_NETWORK\_STANDBY);

?

Thanks!  
Gustavo.

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 22, 2018, 3:59pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/4 "2018-02-22T15:59:39Z")

</div>

As the docs state `SLEEP_MODE_SOFTPOWEROFF` is just a special mode of deep sleep and as such waking via WKP does still apply.

---

<div class="post-metadata">

**Author:** ![gusgonnet](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/gusgonnet/32/27491_2.png) [@gusgonnet](https://community.particle.io/u/gusgonnet)\
**Post date:** [February 22, 2018, 5:32pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/5 "2018-02-22T17:32:17Z")

</div>

Hey @ScruffR,

Oh I get it now, this mix will wake the Electron at "X seconds" and if it moves:

> System.sleep(uint16\_t wakeUpPin, uint16\_t edgeTriggerMode, SLEEP\_MODE\_SOFTPOWEROFF, long seconds);

So a practical example that would wake on move and every 6 hours could look like:

> ```
> System.sleep(WKP, RISING, SLEEP_MODE_SOFTPOWEROFF, 6*3600);
> 
> ```

Thanks!  
Gustavo.

---

<div class="post-metadata">

**Author:** ![gusgonnet](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/gusgonnet/32/27491_2.png) [@gusgonnet](https://community.particle.io/u/gusgonnet)\
**Post date:** [February 22, 2018, 5:39pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/6 "2018-02-22T17:39:14Z")

</div>

@ScruffR  
Seems like I still don't get it.

If I try:

> ```
> System.sleep(WKP, RISING, SLEEP_NETWORK_STANDBY, 60);
> 
> ```

that compiles ok.

But what I'm after is something like this:

> ```
> System.sleep(WKP, RISING, SLEEP_MODE_SOFTPOWEROFF, 60);
> 
> ```

And that does not compile:

```auto
3_WakeOnMove.ino: In function 'void loop()':
3_WakeOnMove.ino:214:56: error: call of overloaded 'sleep(int, InterruptMode, Spark_Sleep_TypeDef, int)' is ambiguous
   System.sleep(WKP, RISING, SLEEP_MODE_SOFTPOWEROFF, 60);
                                                        ^
3_WakeOnMove.ino:214:56: note: candidates are:
In file included from ../wiring/inc/spark_wiring.h:46:0,
                 from ./inc/application.h:40,
                 from ./inc/Particle.h:5,
                 from 3_WakeOnMove.cpp:4:
../wiring/inc/spark_wiring_system.h:126:17: note: static void SystemClass::sleep(uint16_t, InterruptMode, long int, SleepNetworkFlag)
     static void sleep(uint16_t wakeUpPin, InterruptMode edgeTriggerMode, long seconds=0, SleepNetworkFlag flag=SLEEP_NETWORK_OFF);
                 ^
In file included from ../wiring/inc/spark_wiring.h:46:0,
                 from ./inc/application.h:40,
                 from ./inc/Particle.h:5,
                 from 3_WakeOnMove.cpp:4:
../wiring/inc/spark_wiring_system.h:127:24: note: static void SystemClass::sleep(uint16_t, InterruptMode, SleepNetworkFlag, long int)
     inline static void sleep(uint16_t wakeUpPin, InterruptMode edgeTriggerMode, SleepNetworkFlag flag, long seconds=0) {
                        ^
../build/module.mk:267: recipe for target '../build/target/user/platform-10-m3_WakeOnMove.o' failed
make[2]: *** [../build/target/user/platform-10-m3_WakeOnMove.o] Error 1
make[2]: Leaving directory '/firmware/user'
../../../build/recurse.mk:11: recipe for target 'user' failed
make[1]: Leaving directory '/firmware/modules/electron/user-part'
../build/recurse.mk:11: recipe for target 'modules/electron/user-part' failed
make[1]: *** [user] Error 2
make: *** [modules/electron/user-part] Error 2

```

Are you able to see what I got wrong?  
Thanks,  
Gustavo.

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 22, 2018, 6:59pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/7 "2018-02-22T18:59:04Z")

</div>

Why not just try my syntax (which I copied from the docs)?

> [@ScruffR](#):
>
> ```cpp
> System.sleep(SLEEP_MODE_SOFTPOWEROFF, seconds)
> 
> ```

There is _ **no** _ need to state the WKP pin as deep sleep (and all its derivatives) is "hard wired" to WKP as the wake pin.

---

<div class="post-metadata">

**Author:** ![gusgonnet](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/gusgonnet/32/27491_2.png) [@gusgonnet](https://community.particle.io/u/gusgonnet)\
**Post date:** [February 22, 2018, 7:15pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/8 "2018-02-22T19:15:48Z")

</div>

> [@ScruffR](#):
>
> There is no need to state the WKP pin as deep sleep (and all its derivatives) is “hard wired” to WKP as the wake pin.

Ah-ha! that is what I was missing in this puzzle.  
one googol thanks!  
Gustavo.

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 23, 2018, 1:45pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/9 "2018-02-23T13:45:40Z")

</div>

Thanks @ScruffR (and @gusgonnet for jumping in!).

At your suggestion, I’m using `System.sleep(SLEEP_MODE_SOFTPOWEROFF, TIME_PUBLISH_BATTERY_SEC);` which seems to work _mostly_. At times it just won’t wake up though, unless I press the reset button. Seems to be related to [this issue](https://github.com/particle-iot/firmware/issues/1262).

I have yet to try the AssetTrackerRK you mentioned earlier, but in your opinion, does it offer a better/more reliable “wake up from sleep on movement” experience? As is, if I cannot trust this to wake up when there’s motion, then I might as well throw it away.

@gusgonnet, do you have issues with yours waking on movement? (Or are you doing something else with yours?)

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 23, 2018, 1:54pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/10 "2018-02-23T13:54:20Z")

</div>

> [@jschwalbe](#):
>
> I have yet to try the AssetTrackerRK you mentioned earlier, but in your opinion, does it offer a better/more reliable “wake up from sleep on movement” experience?

Yes, but I see the creator is about to answer 😉

> [@jschwalbe](#):
>
> As is, if I cannot trust this to wake up when there’s motion, then I might as well throw it away.

Actually, not necessarily. When your tracktor is stolen, it might not wake up on first move, but then your regular timed check might still do 😉  
And after that chances are that a subsequent move will do again too.

---

<div class="post-metadata">

**Author:** ![rickkas7](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/rickkas7/32/8681_2.png) [@rickkas7](https://community.particle.io/u/rickkas7)\
**Post date:** [February 23, 2018, 1:54pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/11 "2018-02-23T13:54:43Z")

</div>

I wrote both implementations of wake-on-move. The one in AssetTrackerRK is way better than then one in the official AssetTracker library. I’ve been meaning to merge the change into the official version but I haven’t had a chance to.

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 23, 2018, 2:08pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/12 "2018-02-23T14:08:33Z")

</div>

> [@ScruffR](#):
>
> Actually, not necessarily. When your tracktor is stolen, it might not wake up on first move, but then your regular timed check might still do 😉
> 
> And after that chances are that a subsequent move will do again too.

You'd think so.. but in my limited testing since flashing it last night, it doesn't seem to wake up (at all - timed or motion-activated) if it goes to sleep while moving or (perhaps) if it wakes up and continues moving lots while waking up. I'm going to watch for messages on the console thru the day. Should know within 4 hours.

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 23, 2018, 2:09pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/13 "2018-02-23T14:09:23Z")

</div>

That’ll be my homework tonight. 🙂 If I can’t figure out how to get it working, I know where to come! Thanks both of you.

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 24, 2018, 1:55am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/14 "2018-02-24T01:55:41Z")

</div>

@rickkas7 I’m afraid I might’ve encountered a bug. Wondering if you have any thoughts.

I loaded [AsstTrackerRK](https://github.com/rickkas7/AssetTrackerRK) example 3-wakeonmove, and just like the non-RK version, it still has problems if the device is moving when it falls asleep. Basically what I did was shake the device until it fell back asleep. Then if I smack it again later, it will not wake back up. I waited `TIME_PUBLISH_BATTERY_SEC` seconds but it _never woke itself back up again_. The device is dead to the world until I hit reset.

Here is the serial output (modified slightly to reduce repetition):

```auto
Opening serial monitor for com port: "/dev/cu.usbmodem1411"
waiting to come online
no location
<repeated>
resetting accelerometer
no location
<repeated>
failed to get GPS fix
resetting lastMovement int1_src=0x59
recalibrating
resetting lastMovement int1_src=0x69
recalibrating
resetting lastMovement int1_src=0x59
recalibrating
resetting lastMovement int1_src=0x69
recalibrating
going to sleep

```

I have pretty much no idea, but might it have something to do with this: `accel.calibrateFilter(2000);` just before sleeping? Would it maybe be smart to determine if the accelerometer is firing, and not go to sleep until it’s quiet?

I’ve searched around and this seems like it might be a known issue. I can’t tell if it’s been resolved. Is this how your devices respond as well?

EDIT: looks like [this bug](https://community.particle.io/t/asset-tracker-accelerometer-gps-problem/20602/38?u=jschwalbe) still. @rickkas7 were you ever able to replicate that bug? Because it certainly seems as though I am!

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 24, 2018, 6:24am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/15 "2018-02-24T06:24:32Z")

</div>

> [@jschwalbe](#):
>
> Would it maybe be smart to determine if the accelerometer is firing, and not go to sleep until it’s quiet?

This currently seems to be the best workaround (if you need the timed wake).  
In order to minimise power consumption in case of "permanent" movement for a long time (e.g. during legitimate use of the tractor) you could send the device to sleep (e.g. 15 minutes) without a wake-pin set (0.8.0-rc.2 allows this for deep sleep, otherwise `System.sleep(BTN, FALLING, 15*60)` should work and gives you the option to wake the device via the SETUP/MODE button).

The underlying problem is in the Particle firmware issue #1262 that you already found.  
The resolution for this issue is planned for 0.8.0 (providing it's not an unresolvable hardware bug of the STM32F2 µC).

Alternatively you could rely on the WKP pin only and drop the timed wake, as this issue should not apply for `System.sleep(SLEEP_MODE_DEEP)` (stated in #1262 comment).  
And in that connection, you could implement an external wake-trigger - e.g. with a CD4541B (or other low power, long periode timer chip) that just pulls RESET when needed.

---

<div class="post-metadata">

**Author:** ![rickkas7](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/rickkas7/32/8681_2.png) [@rickkas7](https://community.particle.io/u/rickkas7)\
**Post date:** [February 24, 2018, 10:28am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/16 "2018-02-24T10:28:25Z")

</div>

What ScruffR said. Plus:

Sleep while moving is problem inherent in how the LIS3DH works, and yes, you need to wait until you stop moving until you go to sleep with wake-on-move. Here’s why:

In order to do wake-on-move, the accelerometer has to compensate for the force of gravity. Higher-end inertial measurement units have gyroscopes that can determine the tilt of the device, but the LIS3DH does not.

The official AssetTracker library just ignores the Z axis to do this. The problem is that if you don’t set the AssetTracker down flat, it does not work.

The AssetTrackerRK uses the concept of calibration before sleep, so it can figure out which way the device is oriented and cancel out the effect of gravity in any axis (or a combination).

The issue is that this only works when you are not moving. If you calibrate while moving, you’ll get incorrect values.

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 25, 2018, 4:40am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/17 "2018-02-25T04:40:00Z")

</div>

> [@ScruffR](#):
>
> This currently seems to be the best workaround (if you need the timed wake).

> [@rickkas7](#):
>
> The issue is that this only works when you are not moving. If you calibrate while moving, you’ll get incorrect values.

So my next step: determine when I'm not moving.

Here's what _hasn't worked_:

```auto
bool readyForSleep = accel.calibrateFilter(2000); // <<-- this doesn't work! need to figure out how to detect non-movement.
if (readyForSleep) { do stuff }

```

Giving it more time ala `accel.calibrateFilter(2000, MORE_SECONDS);` is more of the same, but takes longer. I was hoping the bool would be `false` if it wasn't able to calibrate b/c of movement, but it appears to _always_ be `true`(?). Any chance this is a good fix but I'm implementing it wrong?

Also what doesn't seem to work is using something like this from [4\_Position](https://github.com/rickkas7/LIS3DH/blob/master/examples/4_Position/4_Position.cpp) to figure out when the detector is not moving:

```auto
void loop() {
    
        LIS3DHConfig config;
    	config.setPositionInterrupt(16);
    	LIS3DHSample sample;
        
        if (accel.getSample(sample)) {
			Serial.printlnf("%d,%d,%d", sample.x, sample.y, sample.z);
		}

```

I was hoping I could watch on the serial monitor that once it's flat and not moving it would either show (0,0,0) or at the very least (stable, stable, stable) but it's sitting here, undisturbed on my couch and it's oscillating like crazy.. 256,0,512 -\> -256,0,0 -\> 0,256,-768 -\> 0,0,0 -\> -256,-256,768 -\> etc and it happens very quickly despite no noticable movement!

Is there a solution here that I'm perhaps implementing incorrectly? Or something completely different? I'm struggling here.. 😐

---

<div class="post-metadata">

**Author:** ![ScruffR](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/scruffr/32/6952_2.png) [@ScruffR](https://community.particle.io/u/ScruffR)\
**Post date:** [February 25, 2018, 6:38am UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/18 "2018-02-25T06:38:38Z")

</div>

> [@jschwalbe](#):
>
> Giving it more time ala accel.calibrateFilter(2000, MORE\_SECONDS); is more of the same, but takes longer

Actually that is exactly the opposite. The second parameter doesn't allow for more time to calibrate but actually limits the max time the calibration process is allowed to take. If you omit this parameter (or set it as 0) the calibration will wait indefinetly for a periode of 2000ms "silence". With a value != 0 the process will be terminated even when no silence was detected and _in that case_ you should see `false` returned.

This is the (current) implementation of the function

```cpp
bool LIS3DH::calibrateFilter(unsigned long stationaryTime, unsigned long maxWaitTime) {
	bool ready = false;

	unsigned long start = millis();
	unsigned long lastMovement = start;
	unsigned long lastRecalibrate = start - RECALIBRATION_MOVEMENT_DELAY;

	while(maxWaitTime == 0 || millis() - start < maxWaitTime) {
		uint8_t int1_src = readRegister8(REG_INT1_SRC);
		if ((int1_src & INT1_SRC_IA) != 0) {
			Serial.printlnf("resetting lastMovement int1_src=0x%x", int1_src);
			lastMovement = lastRecalibrate = millis();
			clearInterrupt();
		}

		if (lastRecalibrate != 0 && millis() - lastRecalibrate >= RECALIBRATION_MOVEMENT_DELAY) {
			Serial.println("recalibrating");
			lastRecalibrate = 0;
			readRegister8(REG_REFERENCE);
			clearInterrupt();
		}

		if (millis() - lastMovement >= stationaryTime) {
			ready = true;
			break;
		}
	}

	return ready;
}

```

---

<div class="post-metadata">

**Author:** ![jschwalbe](https://avatars.discourse-cdn.com/v4/letter/j/5f8ce5/32.png) [@jschwalbe](https://community.particle.io/u/jschwalbe)\
**Post date:** [February 27, 2018, 3:49pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/19 "2018-02-27T15:49:16Z")

</div>

Bummer. I feel like i was sold a false bill of goods!

Can you explain what you mean by “regular movement-interruption”? Thanks

---

<div class="post-metadata">

**Author:** ![peekay123](https://sea2.discourse-cdn.com/flex026/user_avatar/community.particle.io/peekay123/32/810_2.png) [@peekay123](https://community.particle.io/u/peekay123)\
**Post date:** [February 27, 2018, 5:36pm UTC](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811/20 "2018-02-27T17:36:34Z")

</div>

@Vitesze, you share link is no longer valid so you must have deleted the app. I have a strong suspicion that your FSM is not working as you would expect.

@jschwalbe, not sure which “bill of goods” you feel cheated on. @Vitesze’s challenges with coding a solution is not a reflection of the Asset Tracker’s capabilities!

[Next page](https://community.particle.io/t/help-choosing-correct-sleep-mode-w-asset-tracker-v2/39811.md?page=2)
