Asset Tracker - Active / Passive Mode

I need some clarification around Active / Passive mode and have read through most questions and docs for the Thingy91 Asset Tracker Example.

I am using the https://github.com/NordicSemiconductor/asset-tracker-cloud-firmware-aws v4.1.24 on a v1.4.0 Thingy:91 SDK v2.3.0 with updated connectivity_bridge and latest Modem Firmware (1.3.4) and everything works great sending data to AWS etc.

My goal is to have a device that use as low power as possible and wakes up if it is being moved and sends data every X minutes (for example 120 sec) if being moved until it stops and goes back to low power mode but I also need it to send a "heartbeat" packet even if it is not in motion at specific intervals to understand that the device is alive and works in case there is no movement for several hours/days/weeks.

So far my findings are as follows:

Setting it to Passive Mode:

1. In Passive Mode the device goes to sleep and can only be woken up by movement e.g external physical movement makes it wake up. Is this correct? My testing so far is that it detect movement and sends updates as configured, but if it is not being moved it goes into sleep until moved again (tested over 24 hours).

2. The CONFIG_DATA_MOVEMENT_TIMEOUT_SECONDS state that it should send a publication every X (default 3600 sec) in passive mode. I am not seeing this and my device is dead on LTE network (verified in LTE M2M provider console) and does not send any MQTT packets. What is the purpose of this setting?

In Active Mode:

I am able to tune it to send updates at a specific interval using CONFIG_DATA_DEVICE_MODE_ACTIVE=y and for example every 15 min CONFIG_DATA_ACTIVE_TIMEOUT_SECONDS=900 and it sends a heartbeat every 15 minutes. However it will not detect any movement with this configuration. 

Thanks in advance for clarification and suggested config parameters.

  • Here are some clarifications around the Active and Passive modes in the Asset Tracker sample:

    Passive mode:

    You are correct. In Passive mode, the device sleeps and wakes up only when movement is detected. It will send data updates for the duration that movement is detected, then go back to sleep.

    CONFIG_DATA_MOVEMENT_TIMEOUT_SECONDS acts as a failsafe to ensure updates are sent even if no movement is detected. However, the movement timeout is not currently working properly. This will be sorted out in github.com/.../11340.

    Active mode:

    In Active mode, the device wakes up at regular intervals (set by CONFIG_DATA_ACTIVE_TIMEOUT_SECONDS) to send data updates. Movement detection is disabled in this mode.

    To achieve your goal of low power with periodic "heartbeat" updates and movement-triggered updates, I would suggest the following configuration:

    Set the device to Passive mode (CONFIG_DATA_DEVICE_MODE_PASSIVE=y)
    Set CONFIG_DATA_MOVEMENT_RESOLUTION_SECONDS to your desired heartbeat interval (e.g. 900 seconds)
    Tune the accelerometer thresholds (CONFIG_DATA_ACCELEROMETER_*) to your desired sensitivity for movement detection

    With this configuration the device will send updates on movement, but restricted to min once every 15 minutes.

    Regards,
    Jonathan

  • Hey Jonathan,

    I am using thingy91 with the asset TrackerV2 example connected to the nRF cloud.

    My goal is to send data every 20s while the device is 'active'. When the accelerometer doesn't detect 'movement' for 60s the device should go to 'pasive (sleep)' mode and sends out data every 120s.

    In order to achieve this i used the following settings:

    The device sends updates every 120s while it stand on the table as intended.

    However, i am unable to get the device into the 'active' mode, even while shaking the device. I played with the accThreshold in/act values, but without succes.

    Any tips/ideas?

    Thanks in advance!

  • Hi Huba, could you also create a new ticket, and add info on what version of the nRF connect SDK you are using?

Related