Hi,
I am building a API for MR33 AP. I follow the https://developer.cisco.com/meraki/ 's Location Services steps.
1. In my PC, use sample Meraki Python script, import Flask, run API server => successful
2. In my PC, run ngrok http 5000 => successful
3. In Meraki Dashboard, Enable Scanning API, Got Validator key, Enter Validation key into step1, Enter Post URL from ngrok in Step2, run "Validate" button => Validated successfully
4.In my PC, Flask showed "200 OK" and Python program was waiting for POST data to come...
However, there was no data from Meraki Dashboard coming.
So, I checked at Meraki Dashboard, I saw the Post URLs status is red, and scanning message said "HTTP 404 : Host is dropping Scanning API POSTs"
What has i missed, please anyone advise?
Thanks,
Sakul
p.s. I noticed that in the Meraki Dashboard > Location and scanning > Post URL, there is a "Secret" field.
However, in your https://developer.cisco.com/meraki/ Location Services, I do not see any line verifying the "secret" key in the Python sample script. Is that the case ?
Solved! Go to solution.
The secret is verified on line 73.
The secret is verified on line 73.
Thanks PhilipDAth.. You pointed me to the right Python script. Now I can see POST data coming to my Flask... 😊
But there is still some error as the POST data is printed only when I hit Ctrl-C (breaking the Python script). Sure, there is something in the script I need to adjust to fix this problem. (as I am new to Python, i need to study more). I will update again once I got it fixed.
btw, here is the POST data I got..
ADMIN@ITP-L14 MINGW64 ~/src (master)
$ python Test2.py
validator: df736cd94e69dd73798eafe13817133e1689b4aa
secret: AbCdE123
* Serving Flask app "Test2" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:5001/ (Press CTRL+C to quit)
127.0.0.1 - - [03/Feb/2020 16:48:47] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [03/Feb/2020 16:49:34] "POST / HTTP/1.1" 400 -
127.0.0.1 - - [03/Feb/2020 16:50:26] "GET / HTTP/1.1" 200 -
validator sent to: 127.0.0.1
{'data': {'apFloors': ['Floor1'],
'apMac': '68:3a:1e:32:7a:ac',
'apTags': [],
'observations': [{'clientMac': 'ed:e7:3c:cf:85:b1',
'location': {'lat': 12.688286142539678,
'lng': 101.20759695768356,
'unc': 49.0,
'x': [82.30788682382314],
'y': [78.04068234754824]},
'name': '',
'rssi': -91,
'seenEpoch': 1580721296,
'seenTime': '2020-02-03T09:14:56Z'}]},
'secret': 'AbCdE123',
'type': 'BluetoothDevicesSeen',
'version': '2.1'}
Received POST from 127.0.0.1
secret verified: AbCdE123
invalid version
validator sent to: 127.0.0.1
ADMIN@ITP-L14 MINGW64 ~/src (master)
>invalid version
You have the wrong version configured in the dashboard (needs to be "2.0").
Yes, PhilipDAth... Meraki API is sending version "2.1"
so I changed the Python script (line 43) to "2.1", and now I have POST / 200 OK status...
Thanks again!
'type': 'BluetoothDevicesSeen',
'version': '2.1'}
Received POST from 127.0.0.1
secret verified: AbCdE123
version verified: 2.1
Bluetooth Devices Seen
No. The real problem has started now. What to do with the data!
If you have enabled it in the dashboard, yes.