Meraki Developer Hub – Deploy, Build, & Engage Meraki APIs make it possible to deploy and manage networks at scale, build on a platform of intelligent, cloud-connected IT products and technologies.




1
x_cisco_meraki_api_key = "093b24e85df15a3e66f1fc359f4c48493eaa1b73" # Demo Read-only API key
from meraki_dashboard_api.meraki import Meraki
meraki = Meraki(x_cisco_meraki_api_key)
                                    
2
orgs = meraki.organizations.get_organizations()
print(orgs)
>>>
[
    {'id': 578149602163689118, 'name': 'Corporate'},
    {'id': 578149602163688606, 'name': 'Franchise'},
    {'id': 578149602163689039, 'name': 'TestLab'},
    {'id': 578149602163689144, 'name': 'Lab'},
    ...
                                    
3


1

from flask import Flask, request, render_template, redirect, url_for, json

app = Flask(__name__)

global base_grant_url
base_grant_url = ""
global user_continue_url
user_continue_url = ""
global success_url
success_url = ""


@app.route("/click", methods=["GET"])
def get_click():
    global base_grant_url
    global user_continue_url
    global success_url


    host = request.host_url
    base_grant_url = request.args.get('base_grant_url')
    user_continue_url = request.args.get('user_continue_url')
    node_mac = request.args.get('node_mac')
    client_ip = request.args.get('client_ip')
    client_mac = request.args.get('client_mac ')
    splashclick_time = request.args.get('splashclick_time')
    success_url = host + "dev/success"
    network_id=request.args.get("network_id")
    camera_serial=request.args.get("camera_serial")
    api_key=request.args.get("api_key")

    return render_template("click.html", client_ip=client_ip,
    client_mac=client_mac, node_mac=node_mac,
    user_continue_url=user_continue_url,success_url=success_url)

    .
    .
    .
    if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5004, debug=False)
                                    
2
$ ./ngrok http 5004
https://0a5c1166.ngrok.io/click
3
Dashboard > Wireless > Configure > Splash > SSID
4


1

from flask import Flask, json, request

# init a flash web app
app = Flask(__name__)

# validate web server from meraki
@app.route('/', methods=['GET'])
def get_validator():
    return "<Your validator from meraki dashboard>"

# receive location data
@app.route('/', methods=['POST'])
def get_cmxJSON():
    cmxdata = request.json

    # Determine device type
    if cmxdata['type'] == "DevicesSeen":
        print("WiFi Devices Seen")
    elif cmxdata['type'] == "BluetoothDevicesSeen":
        print("Bluetooth Devices Seen")
    else:
        print("Unknown Device 'type'")

    return "CMX POST Received"


if __name__ == '__main__':
    # run app
    app.run(port=5000, debug=False)
                                    
2
$ ./ngrok http 5000
https://0a5c1166.ngrok.io
3
Dashboard > Network Wide > General > Location and scanning
4






1

## Live API
print('MV Sense Live API')
meraki_live_url = 'https://api.meraki.com/api/v0/devices//camera/analytics/live'
meraki_headers = {'X-Cisco-Meraki-API-Key': ''}
meraki_live_response = requests.get(meraki_live_url, headers=meraki_headers)
meraki_live_response_json=json.loads(meraki_live_response.text)
num_of_person_detected=meraki_live_response_json['zones']['0']['person']

print(num_of_person_detected)

print('Snapshot API')

## Snapshot API
meraki_snapshot_url='https://api.meraki.com/api/v0/networks//cameras//snapshot'
meraki_snapshot_response = requests.post(meraki_snapshot_url, headers=meraki_headers)
time.sleep(10)
meraki_snapshot_response_json=json.loads(meraki_snapshot_response.text)
snapshot_url=meraki_snapshot_response_json['url']
                                    
2
3