I have done this, several times, with no difference ...
But I found a solution, I think:
iw dev wlan0 station get $MAC_ADDR0
iw dev wlan1 station get $MAC_ADDR1
This returns an increasing packet count when client with mac address is downloading something.
There is a whole bunch of options to check, apart from rx bytes:
root@OpenWrt:~# iw dev wlan1 station get $MAC_ADDR1
Station $MAC_ADDR1 (on wlan1)
inactive time: 610 ms
rx bytes: 1091985
rx packets: 8046
tx bytes: 33095867
tx packets: 19724
tx retries: 1345
tx failed: 1
rx drop misc: 3
signal: -72 [-73, -72] dBm
signal avg: -70 [-70, -71] dBm
tx bitrate: 526.6 MBit/s VHT-MCS 6 80MHz VHT-NSS 2
rx bitrate: 24.0 MBit/s
rx duration: 316223 us
last ack signal:0 dBm
expected throughput: 64.819Mbps
authorized: yes
authenticated: yes
associated: yes
preamble: long
WMM/WME: yes
MFP: yes
TDLS peer: no
DTIM period: 2
beacon interval:100
short slot time:yes
connected time: 1205 seconds
To get the value of a list only, I have to awk the line number.
root@OpenWrt:~# iw dev wlan1 station get $MAC_ADDR1 | awk 'NR==3 {print $NF}'
1091985
Yes, this is it. The solution. I can check within a set interval, if this or that line number changes, increases or stays the same, and if not, can restart wifi. Painless, much less painless that restarting the router.
Much success. So OpenWrt. Many Linux.
For noobs: substitute the variable $MAC_ADDR1 outside of scripts with your device MAC address in the format 00:02:03:04:05:06
Alternative solution:
cron job to restart wifi every morning at 6 o'clock.
But this longer one on top is much more interesting ...