Receiving (downlink) messages using Sigfox
I have been testing with Sigfox for a while.
When sending to the Sigfox backend (uplink), my messages always get received with at least 4/5 bars of reception according to the Sigfox backend.
But the 4 downlink messages do not get received, while the Sigfox backend reports that the downlink was successful.
After many days (because of the limited attempts) of trying things, I came to the conclusion that I can receive in other physical locations without problems, while the Sigfox backend also reports 4/5 bars of reception. Is there anyone else with a supposedly good uplink that also works all the time, but no downlink?
The following code was used:
from network import Sigfox import socket # init Sigfox for RCZ1 (Europe) sigfox = Sigfox(mode=Sigfox.SIGFOX, rcz=Sigfox.RCZ1) # create a Sigfox socket s = socket.socket(socket.AF_SIGFOX, socket.SOCK_RAW) # make the socket blocking s.setblocking(True) # configure it as DOWNLINK specified by 'True' s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, True) # send some bytes and request DOWNLINK s.send(bytes([1, 2, 3])) # await DOWNLINK message r = s.recv(32) print(ubinascii.hexlify(r))
(@pycom just letting r = s.recv(32) return the error would be great instead of quitting the program with the ENET_TIMEOUT error... I need to save my runtime to flash before calling s.recv()...).
I don't know anything about sigfox, but I know a fair bit about radios.
If operating from other locations which are a similar distance from the peer sigfox device is successful, then there is a good chance that, all other things being equal, you have a local noise source that is decreasing the signal to noise ratio in your sigfox receiver below that at which the modem works.
Options to mitigate this might include some combination of:
- Operating from a different location
- Using a directional antenna pointed at the peer node. This may increase received signal and reduce pickup of local noise.
- Identify and remove the noise source, or if very localised, move your device a bit further away.
- Operate on a different frequency or an entirely different frequency band.
You could try using some sort of communications receiver or scanner to listen to the operating frequency, but these days using something like an RTL-SDR with suitable software defined radio software should allow you to see the state of the appropriate part of the radio spectrum and ascertain what kind of problem you may have.
As a radio ham, with lots of radios, I find that they have a high tendency to interfere with each other, even when operating in separate bands, as they are usually harmonically related, thus transmissions around 145 MHZ interfered with stuff around 435 MHz, whilst stuff on 434MHz hit stuff in the 868MHz ISM band. Note that USB cables have a tendency to radiate strongly around the 430-440MHz band and may affect the 868MHz band quite strongly too, so you might have some luck in avoiding proximity to USB cables and perhaps also monitors or TV screens.