Contact Tracing Over Wi-Fi

As businesses reopen and bring employees back to the office, health and safety are at the forefront. Wi-Fi contact tracing emerges from the COVID-19 pandemic, and IT teams must utilize Wi-Fi access points as a solution.

Users already connect to enterprise Wi-Fi networks using their mobile devices, and many of them also have Bluetooth connectivity enabled. Wi-Fi access points are perfectly positioned for indoor contact tracing.

How Does Wi-Fi Contact Tracing Work

When a device connects to the Wi-Fi network, its unique identifier, the MAC address, is used for communicating with the network. By tracking where the MAC address has connected, location analytics can determine where the device has been.

Bluetooth Low Energy (BLE) is a better technology to use, which every mobile device has installed. Access points with BLE capabilities have higher accuracy in location compared to Wi-Fi.

Mist access points contain a BLE antenna array that delivers accuracy of up to 1-3 meters.

The key to the accuracy of contact tracing using access points is ensuring the device stays with the user. A policy could be in place, alerting users to keep mobile devices with them wherever they go.

With Wi-Fi and BLE identified as methods for contact tracing, let’s discuss how an enterprise can implement a solution.

Device proximity is of importance. The first goal is identifying who was in the building or room. Device proximity and accuracy of location determines whether an alert of a positive COVID-19 user was also in the same building and near others.

Contact tracing by Area Visited using Mist

Consider users who may be passing by the building and those who have been inside. For this reason, having a level of location accuracy is essential. 

Identifying the max occupancy within the building will set the boundary for how many people can assemble in a given space. There are occupancy details to iron out, such as:

  • Maximum building occupancy
  • Floor occupancy
  • Room occupancy

Users will need to keep a 6-foot distance from each other, which will help determine what those occupancy numbers will look like in your environment. 

Once occupancy numbers are determined, zones can be outlined within the floor plan. Mist makes this easy with its platform. Occupancy details are configured for each zone. For example, an open office area may be configured as a zone with a max occupancy of 10 devices (one mobile device per person).

Occupancy Analytics via Mist

Using Mist’s Premium Analytics, the enterprise will have real-time and historical data of device proximity and journey.

Another important aspect of contact tracing will be dwell time for each device, the amount of time a device has spent in a given zone. Using analytics, dwell time can be calculated for each device and aggregated over time. When a user has been identified as positive with COVID-19 or displaying symptoms, an enterprise can go through the historical data to see exactly where they were on the floor plan for a given time frame.

Receive Packet6 Insights

Sign up below


What do you need to support contact tracing today with your existing Wi-Fi infrastructure? It is possible to do it with your current hardware, but you may not have the ability to do location services or analytics.

Cloud-managed access points by Mist make contact tracing simple to get started. Existing Juniper customers with Mist access points can get started right away.

There’s no longer a need for more servers to your infrastructure, creating additional maintenance and support costs.

To support location services, you may have to upgrade your controller code to the latest version, which will have a significant impact on operations and create downtime. There may be access points no longer supported with the latest version of controller code.

The management servers supporting the controllers and access points will also have to be upgraded. Adding floor plans to these management servers can be a bottleneck due to their limited support.

Mist does not require any on-premises servers. If you’re using Ekahau for your designs, you can easily upload those files to the Mist cloud, which will include the floor plan and access point locations.

What are the use cases

Proximity Tracing

Identifying which employees were in the same building or room as a COVID-19 positive employee or someone exhibiting the symptoms.

Journey Mapping

Understanding how employees are utilizing the workspace. Supplements Proximity Tracing and provides a historical view of where employees may have been in the office. It increases the accuracy of contact tracing.

Hot Zone Alerting

Act quickly to areas of high congestion or areas exceeding the occupancy levels. Congested areas can create hot zone alerts through the API Mist provides. Using ChatOps, an alert can be delivered to the right people and channels via Slack, MS Teams, or WebEx Teams.

Get started with a demo

Contact us today and find out how Mist can deliver contact tracing.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

[gravityforms id=16 title=false description=false]
<div class='gf_browser_unknown gform_wrapper gravity-theme' id='gform_wrapper_16' ><form method='post' enctype='multipart/form-data' id='gform_16' action='/contact-tracing-wifi/' > <div class='gform_body gform-body'><div id='gform_fields_16' class='gform_fields top_label form_sublabel_below description_below'><fieldset id="field_16_1" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_16_1"><legend class='gfield_label gfield_label_before_complex' >Name<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_16_1'> <span id='input_16_1_3_container' class='name_first' > <input type='text' name='input_1.3' id='input_16_1_3' value='' aria-required='true' placeholder='First Name' /> <label for='input_16_1_3' >First</label> </span> </div></fieldset><div id="field_16_2" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_16_2"><label class='gfield_label' for='input_16_2' >Email<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_16_2' type='text' value='' class='large' placeholder='Business email address' aria-required="true" aria-invalid="false" /> </div></div><fieldset id="field_16_3" class="gfield gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_16_3"><legend class='gfield_label gfield_label_before_complex' >Consent<span class="gfield_required"><span class="gfield_required gfield_required_text">(Required)</span></span></legend><div class='ginput_container ginput_container_checkbox'><div class='gfield_checkbox' id='input_16_3'><div class='gchoice gchoice_16_3_1'> <input class='gfield-choice-input' name='input_3.1' type='checkbox' value='I consent to the processing and sharing with partners of the personal data that I provide Packet 6 for this activity in accordance with and as described in the &lt;a href=&quot;https://packet6.com/privacy-policy&quot; target=&quot;_new&quot;&gt;Privacy Policy&lt;/a&gt;' id='choice_16_3_1' /> <label for='choice_16_3_1' id='label_16_3_1'>I consent to the processing and sharing with partners of the personal data that I provide Packet 6 for this activity in accordance with and as described in the <a href="https://packet6.com/privacy-policy" target="_new">Privacy Policy</a></label> </div></div></div></fieldset><div id="field_16_4" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_16_4"><label class='gfield_label' for='input_16_4' >Name</label><div class='ginput_container'><input name='input_4' id='input_16_4' type='text' value='' /></div><div class='gfield_description' id='gfield_description_16_4'>This field is for validation purposes and should be left unchanged.</div></div></div></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_16' class='gform_button button' value='Get the report' onclick='if(window["gf_submitting_16"]){return false;} window["gf_submitting_16"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_16"]){return false;} window["gf_submitting_16"]=true; jQuery("#gform_16").trigger("submit",[true]); }' /> <input type='hidden' class='gform_hidden' name='is_submit_16' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='16' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_16' value='WyJbXSIsImY4MGVlNTA5MGVjMWYzYzU5NzUyOGFhOWE3ZGFiMzRlIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_16' id='gform_target_page_number_16' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_16' id='gform_source_page_number_16' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> <p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_3" name="ak_js" value="54"/><script>document.getElementById( "ak_js_3" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div>