Use Dashboard and Location API to display wifi users based on rssi signals

SOLVED
Boundless
Getting noticed

Use Dashboard and Location API to display wifi users based on rssi signals

Hi guys,

 

It's still January so I wish you all the best for 2019!

 

We have been asked to work on a dashboard that would display wifi users based on their rssi signals on a floor plan. The client wants to monitor the quality of service with red/orange/green colour of each of his site.

 

I guess we need to use both dashboard and location API to do that but is it feasible? Has it already been done somewhere?

 

Thanks for your help!

Best,

Boundless

Noel-Edouard Chenu
1 ACCEPTED SOLUTION
PhilipDAth
Kind of a big deal
Kind of a big deal

I've given this some consideration - and I don't think this will achieve that you are thinking.  RSSI will not give you an indication of "quality of service".

 

For example, a client might reduce their power right down to conserve battery but still have a good quality connection.  If you based some kind of output on RSSI you would mistakenly show this using as having a poor quality of service.

 

You really need to use the wireless health API in some way.

https://dashboard.meraki.com/api_docs#wireless-health

 

Perhaps you could use the scanning API to get the client location, and then you this API to get a break down of latency measurements.

https://dashboard.meraki.com/api_docs#aggregated-latency-info-for-a-given-client-on-this-network

View solution in original post

6 REPLIES 6
NolanHerring
Kind of a big deal

Does the 'Wireless>Location Heatmap' do anything for you?


Nolan Herring | nolanwifi.com
TwitterLinkedIn

Hey Nolan,

 

Client doesn't want to track density but signal strength to monitor coverage and network health.

Noel-Edouard Chenu

Hmm..we'll that might be a request more than what Meraki offers in-house. Unless there is some way to utilize the Scanning-API etc., which I"m not familiar with.

This might be something that could be useful:
https://7signal.com/products/what-is-wireless-network-monitoring/

Nolan Herring | nolanwifi.com
TwitterLinkedIn

I played around with something very similar to what you're asking not too long ago. Using the Meraki Scanning API and a modified version of cmxreceiver-python that @DexterLaBora created I was able to use geojson.io to plot client devices on a map.

 

The cmxreceiver geojson example it doesn't quite convert to geojson format correctly (and it doesn't overwrite the key correctly) so I had to modify that to output the correct syntax. You can compare what I did with the original script (it's the mongoDB version of the script):

 

def save_data(data):
    # print("---- RECEIVING CMX DATA ----")
    # CHANGE ME - send 'data' to a database or storage system
    # pprint(data, indent=1)

    data["secret"] = "hidden"
    data["geoJSON"] = {"type": "FeatureCollection", "features": []}

    for i in data["data"]["observations"]:

        if i["location"] is None:
            print(i["clientMac"] + " is NONE location... Skipping!")
            continue

        lat = i["location"]["lat"]
        lng = i["location"]["lng"]
        clientmac = i["clientMac"]

        data["geoJSON"]["features"].append({
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [lng, lat]
            },
            "properties": {
                "name": clientmac
            }
        })

For my script I just copied a single AP report to the clipboard, and then exited the script (not shown). I then had to manually paste that geojason formatted output into geojson.io to plot the client devices. 

 

Like I said, this was just a PoC 😉

 

For your ask specifically, the RSSI data for each client is included in the scanning API report from an AP, so you have that available in whatever solution you end up building. I discarded it in my code, but you'll want to add that (probably into the "properties" field of the geojson).

 

Good luck!

PhilipDAth
Kind of a big deal
Kind of a big deal

I've given this some consideration - and I don't think this will achieve that you are thinking.  RSSI will not give you an indication of "quality of service".

 

For example, a client might reduce their power right down to conserve battery but still have a good quality connection.  If you based some kind of output on RSSI you would mistakenly show this using as having a poor quality of service.

 

You really need to use the wireless health API in some way.

https://dashboard.meraki.com/api_docs#wireless-health

 

Perhaps you could use the scanning API to get the client location, and then you this API to get a break down of latency measurements.

https://dashboard.meraki.com/api_docs#aggregated-latency-info-for-a-given-client-on-this-network

Thanks Philip.

 

We will gather info from Syslog, SNMP traps, the dashboard API and the wireless health API. Not sure we won't have to dig into the CMX one.

 

If we get a go from the customer, I'll share our work.

 

Thank you all for your help!

Noel-Edouard Chenu
Get notified when there are additional replies to this discussion.
Welcome to the Meraki Community!
To start contributing, simply sign in with your Cisco account. If you don't yet have a Cisco account, you can sign up.