Very cool. The tinkerer in me wanted to see how quickly I could come up with a function that wouldn't be approximated well.
Math.cos(x * Math.exp(Math.cos(x * x))) is the best I got so far as it is highly composite, which leads to rapid oscillations and steep gradients that can't easily be approximated by Chebyshev.
Outstanding write-up! We actually built a business based on this technology (occuspace.io) and have had to address almost all the questions that you brought up. To answer some of them here:
Q: How accurate is BLE beacon count, as a proxy for occupancy?
A: It's very highly correlated but different dining locations, classrooms and library floors have very different correlation factors. Consider using other, perhaps more complex features, as well.
Q: How accurate is BLE beacon availability time, as a proxy for dwell time?
A: We don't believe it is very accurate given that BT MAC's randomize every 8-20 mins depending on manufacturer.
Q: Can we improve the accuracy by setting an RSSI minimum, for which devices weaker than it do not count, to ensure only those who are really nearby get counted?
A: That's a great idea. It's worth noting that different types of spaces and depending on where you installed your sensor, will have different threshold levels.
> How accurate is BLE beacon count, as a proxy for occupancy?
But how often is an accurate count needed? The initial requirement of the project was just for the OP to "avoid crowds in the dining hall", and for that all one needs is a general idea of highs and lows.
In your business, do customers expect high accuracy? All of them, or some of them?
Also, regarding MAC address, even if they're randomized, isn't there a way to know what kind of device it is? (to count only phones for example, and discard headphones, etc.)
Does this type of occupancy tracking work accurately outdoors? I'm assuming it would be difficult because signals would travel further. (My startup needs occupancy tracking for tennis courts.)
Maybe I could mount a BT device at a corner of the outdoor space and use its signal strength as the threshold value.
If you want to get really spicy, you can use two antennas and an SDR to compute angle of arrival using nothing but a BLE advertisement's data . This is different from BLE AoA as it doesn't require a cooperative transmitter.
It does but we don't have a battery powered option (yet) so power availability is the bigger issue. Our sensors can only be outlet powered. Each sensor can cover cover roughly 5,000 sq.ft. or about two tennis courts.
FWIW, Meraki gives you this as well as part of their cloud management of their network. They might be able to do a lot more if they track wifi, wifi macs, and vision and tie it together.
Just letting you know of one of your potential competitors.
The differing correlation factors seems like a difficult problem for productizing this. I would expect a STEM college building to have maybe >3 BT devices per person, while other venues may have less than 1.
Occuspace | Senior Full-Stack Engineer (Go, TypeScript & React) | Los Angeles and Remote | Full-time
We are looking for a Sr. Full Stack Engineer to join Occuspace's software engineering team. We are a Series A funded startup looking for candidates to take on a high impact role where they will have the opportunity to work on the core of Occuspace’s Spatial Intelligence Platform. This platform is built on a stack of React, Typescript, Go, and RDS, Serverless and GraphQL. We run our application in AWS.
Occuspace's Spatial Intelligence Platform helps customers understand their patterns of space usage throughout their portfolio while serving as the interface for all analytics data that Occuspace generates on behalf of customers. In this role you would help drive core customer facing features that are a part of this platform. This includes the visualizations and analytics presented to customers through our dashboards, the transferring, aggregation, and storage of data pertaining to these features, and the APIs that customers use to programmatically interface with Occuspace data.
Occuspace expects senior engineers to be technical leaders within the team possessing both depth of knowledge and broad influence. Senior engineers are strong communicators, passionate mentors, and effective cross-functional operators.
Reach out to "linus at occuspace dot io" with a letter and resume.