This is my test app (shortened):
def get_state_safe(self, state):
''' Survive possible exception (e.g. when value is not available yet). Ask before fetch '''
if not self.drone.connection_state():
return None
if self.drone.check_state(state):
return self.drone.get_state(state)
return None
def report_status(self):
if self.drone.connection_state():
rssi = self.get_state_safe(wifi.rssi_changed)
rssi_state = rssi["rssi"] if rssi is not None else '??'
self.logger.info(f"wifi state: rssi: {rssi_rssi}")
report_status
is called once per second from a timer.
Generally it works, but it freaks out from time to time, reporting an RSSI value of 0 dBm.
2022-10-14 11:32:03,300 [INFO] wifitest.py: wifi rssi: ??
2022-10-14 11:32:04,294 [INFO] wifitest.py: wifi rssi: ??
2022-10-14 11:32:05,295 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:06,295 [INFO] wifitest.py: wifi rssi: -26
2022-10-14 11:32:07,307 [INFO] wifitest.py: wifi rssi: -29
2022-10-14 11:32:08,307 [INFO] wifitest.py: wifi rssi: -27
2022-10-14 11:32:09,307 [INFO] wifitest.py: wifi rssi: -28
2022-10-14 11:32:10,308 [INFO] wifitest.py: wifi rssi: -28
2022-10-14 11:32:11,308 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:12,309 [INFO] wifitest.py: wifi rssi: -34
2022-10-14 11:32:13,323 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:14,324 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:15,324 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:16,325 [INFO] wifitest.py: wifi rssi: -53
2022-10-14 11:32:17,326 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:18,328 [INFO] wifitest.py: wifi rssi: -52
2022-10-14 11:32:19,327 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:20,327 [INFO] wifitest.py: wifi rssi: -53
2022-10-14 11:32:21,328 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:22,328 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:23,331 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:24,329 [INFO] wifitest.py: wifi rssi: -52
2022-10-14 11:32:25,330 [INFO] wifitest.py: wifi rssi: -52
2022-10-14 11:32:26,333 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:27,336 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:28,337 [INFO] wifitest.py: wifi rssi: -50
2022-10-14 11:32:29,368 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:30,357 [INFO] wifitest.py: wifi rssi: -56
2022-10-14 11:32:31,357 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:32,358 [INFO] wifitest.py: wifi rssi: -51
2022-10-14 11:32:33,359 [INFO] wifitest.py: wifi rssi: 0
2022-10-14 11:32:34,374 [INFO] wifitest.py: wifi rssi: -53
The following video captures this application run on a Raspberry PI. In parallel I’m running wavemon
in a PI console. wavemon
does capture the RSSI way more often than once per second, it should see the “0” if there would be really one.
I never noticed to see RSSI=0 if I use the value reported by vmeta in the video stream.
The question is: Why does the SDK report “0” out of the sudden?