• Support
  • Low power, always on, wakeup-by-socket-connection?

Hi
I planning to use the nrf91 Feather to wake up my remote system. I’ve got this to work fine by sending an SMS wakeup message. Now I’m wondering. Is it possible to do the same by opening a socket connection to the nrf91? (Probably not, but I have to ask)

…since I’m going to remote control stuff from an app, it would be nice to just wake up the system from the UI, without having to send an SMS first.

That’s mainly a question for your network provider and about your network setup.

In many cases, the device sends IP messages through the network provider’s “internet breakout” which uses a NAT. If that is also your case, your IP message from your server will not be forwarded to the device after a quiet period.
Some provider offer also to use a ip-tunnel and static private ip-addresses when using that tunnel. That reduces then the task to define, “how frequently” your device turns on the receiver. With PSM something as 1 hour may work, with eDRX also shorter periods work (with a higher energy consumption).
Finally you need to check the ip-configuration of your server. Sometimes the server side use also a “incoming” based function and doesn’t support “outgoing” well.

Depending on the “receiver interval”, you may also consider to use a device initiated “alive-message”. That helps a lot to also detect system failures. And makes it easy to send a cmd message back. It comes with extra data and extra energy costs, so I guess you need to check, if that works for your case as well. In my experience, if a “alive interval of 1h” does it, the costs seems to be affordable (using CoAP/DTLS 1.2 CID/UDP) and works “out-of-the-box” in many network environments. In practice my data volume for 3 months every hour, static location, was about 2 MByte and it consumed about 400mAh with a Thingy:91. I usually send sensor values as “alive message”. A feather should do it with less energy (lower quiescent current), but for now I had not the time for a test run with a feather v5.

A very good answer! Thank you! This is encouraging, so I’ll go a bit further with my research. This “alive-message”, what protocol are we talking about. Can it be a normal HTTP or HTTPS REST call to my server side? Are there any good examples around? Again, thanks for helping out!

…I guess the question is: Do you use an AT command like #XHTTPCCON or are there any other libraries that I can/should use?

I use CoAP/DTLS 1.2 CID (see Zephyr - coaps client ), because it works after an initial handshake mainly with one udp/ip message to the server and one back to the device. That’s very efficient and reliable. But it doesn’t work directly with AT cmds, the modem manufacturer would still need to invest some development time.
Using a TCP based protocol requires more ip-messages, using TLS even much more. And HTTP(S) or MQTT(S) are based on TCP/TLS. I’m not too common with the “best practice” there, so it would require the experience of someone else. A simple approach with TCP/TLS takes about 3 times more energy and assuming 400 bytes application data it also takes 8 times more data (including a x509 certificate for TLS).

Thanks for all the info and the example code. That’s great! I have to read up on this CoAP thing, I suppose… :-)

Terms and Conditions | Privacy Policy