Skip to content

Instantly share code, notes, and snippets.

@dexterlabora
dexterlabora / LICENSE
Last active March 26, 2019 10:13
Meraki Group Policy - Zapier Javascript Template
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
@dexterlabora
dexterlabora / meraki-api-group-policy
Created October 17, 2017 13:10
JavaScript code snip to add a Meraki client to a Group Policy.
// Set Variables
var apiKey = "";
var shard = "";
var netId = "";
var policyId = "";
var clientMac = inputData.clientMac;
// API Call
var headers = {
@dexterlabora
dexterlabora / Meraki Location Scanning CMX.postman_collection.json
Last active August 16, 2017 15:49
Postman Collection - Meraki Location Sample Data
{
"variables": [],
"info": {
"name": "Meraki Location Scanning CMX",
"_postman_id": "5c1af082-2d85-b2ed-f4b6-13dc649e8ff7",
"description": "",
"schema": "https://schema.getpostman.com/json/collection/v2.0.0/collection.json"
},
"item": [
{
@dexterlabora
dexterlabora / meraki-location-worldmap-stub.json
Created August 4, 2017 10:25
A stub flow that will take Meraki location data and place it on a Node-RED worldmap.
[{"id":"35687765.53fbc8","type":"worldmap","z":"c1ec8b84.64df38","name":"","lat":"","lon":"","zoom":"","layer":"OSM","cluster":"3","maxage":"","usermenu":"show","panit":"false","x":570,"y":280,"wires":[]},{"id":"cafe58c6.9b4928","type":"function","z":"c1ec8b84.64df38","name":"format data","func":"var data = msg;\nmsg = {};\nmsg.payload = {};\nmsg.payload.name = data.payload.clientMac;\nmsg.payload.lat = data.payload.location.lat;\nmsg.payload.lon = data.payload.location.lng;\nmsg.payload.ipv4 = data.payload.ipv4;\nmsg.payload.ssid = data.payload.ssid;\nmsg.payload.os = data.payload.os;\nmsg.payload.rssi = data.payload.rssi;\nmsg.payload.manufacturer = data.payload.manufacturer;\nmsg.payload.type = data.type;\nmsg.payload.apMac = data.apMac;\nmsg.payload.layer = \"Meraki\";\nmsg.payload.icon = \"globe\";\nmsg.payload.iconColor = \"orange\";\nreturn msg;\n\n","outputs":1,"noerr":0,"x":150,"y":240,"wires":[["35687765.53fbc8","e8dfe5c6.6136e8","c8de7d51.5625d"]]},{"id":"e8dfe5c6.6136e8","type":"debug","z":"c1ec8b
@dexterlabora
dexterlabora / LICENSE
Last active March 25, 2019 10:14
Cisco Meraki and Spark Demo Flows
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
@dexterlabora
dexterlabora / Node-RED_MerakiScanningWorldmapSample.json
Created July 14, 2017 10:49
A Node-RED example flow using the new Meraki CMX/Scanning node. The location data is placed onto a Worldmap using a node-red node.
[{"id":"15a6d95.594a427","type":"split","z":"e3826fbf.d69e6","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":390,"y":180,"wires":[["7bf5bee5.e3c79","99b5f7e7.7f00c8"]]},{"id":"bde4e23.55fe92","type":"function","z":"e3826fbf.d69e6","name":"Extract Observations","func":"// Flatten JSON\nmsg.type = msg.payload.type;\nmsg.apMac = msg.payload.data.apMac;\nmsg.apFloors = msg.payload.data.apFloors\nmsg.apTags = msg.payload.data.apTags;\nmsg.payload = msg.payload.data.observations;\n\nreturn msg;","outputs":1,"noerr":0,"x":300,"y":140,"wires":[["15a6d95.594a427"]]},{"id":"7bf5bee5.e3c79","type":"debug","z":"e3826fbf.d69e6","name":"Observation","active":true,"console":"false","complete":"true","x":550,"y":180,"wires":[]},{"id":"5ba45261.184b5c","type":"worldmap","z":"e3826fbf.d69e6","name":"","lat":"","lon":"","zoom":"","layer":"OSM","cluster":"3","maxage":"","usermenu":"show","panit":"false","x":550,"y":340,"wires":[]},{"id":"c920ea6e.f4b198","type":"Me
@dexterlabora
dexterlabora / Node-RED_MerakiScanningBasicSample.json
Created July 14, 2017 10:46
A Node-RED flow to demonstrate the Meraki CMX/Scanning Node (updated version with BLE support)
[{"id":"8d0a63e4.7ff19","type":"debug","z":"9560177e.d80b58","name":"Data","active":true,"console":"false","complete":"payload","x":510,"y":120,"wires":[]},{"id":"e6a6b005.01677","type":"Meraki CMX","z":"9560177e.d80b58","name":"","url":"/scanning","settings":"","radioType":"BluetoothDevicesSeen","x":100,"y":140,"wires":[["8d0a63e4.7ff19","23f1e4d9.3149ec"],["a303ae76.9149d"]]},{"id":"6b254578.dfd17c","type":"debug","z":"9560177e.d80b58","name":"Status: Data","active":true,"console":"false","complete":"true","x":490,"y":200,"wires":[]},{"id":"aa97b7a4.7e4b18","type":"split","z":"9560177e.d80b58","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":330,"y":520,"wires":[["5700cec1.0367b"]]},{"id":"cb89fe11.4c4b5","type":"function","z":"9560177e.d80b58","name":"Extract Observations","func":"// Flatten JSON\nmsg.type = msg.payload.type;\nmsg.apMac = msg.payload.data.apMac;\nmsg.apFloors = msg.payload.data.apFloors\nmsg.apTags = msg.payload.data.apTags;\n
@dexterlabora
dexterlabora / MerakiScanningNative.json
Last active July 12, 2017 21:21
Meraki CMX Location Scanning API
[
{
"id": "ab588013.cfa1f",
"type": "comment",
"z": "3e08f755.c41b78",
"name": "Meraki Location Scanning API - Native Receiver README",
"info": "This flow demonstrates the core mechanics of the\nMeraki Scanning API.\n\nLocation observation data is sent periodically from\nthe Meraki Dashboard. \n\n\n# Setup\n*Configure Meraki Network*\n- In the Meraki Dashboard, add a Post URL pointing to this server\n`http://yourserver:1880/scanningNative`\n* note your validator key provided and define your secret\n\n*Validator*\n- Update the function node with your validator key\n\n*Secret*\n- Update the switch node with your secret\n\n\n# How it works\n\n\nMeraki must first perform a GET request, in which\nit expects a response string that is the Validator\ndefined in the Meraki Dashboard (Network-wide settings)\n\nOnce validated, Meraki will periodically send\nPOSTs. This array of objects should contain a \nsecret that was defined on the Meraki Dashboard.\nThis flow will check fo
@dexterlabora
dexterlabora / node-red_merakiAPI_DemoLabs.json
Last active July 19, 2017 10:59
Node-RED Cisco Meraki API Demo Labs
[{"id":"23e64752.6bedb8","type":"tab","label":"Location API"},{"id":"466595c5.4621ec","type":"tab","label":"Captive Portal"},{"id":"1f491da9.9d14e2","type":"tab","label":"Dashboard API - Admin Form"},{"id":"394a1eba.47a102","type":"tab","label":"Cisco Spark"},{"id":"ff3c6aec.eaab38","type":"mongodb","hostname":"127.0.0.1","port":"27017","db":"test","name":""},{"id":"ddd53c8a.50174","type":"Spark Authentication","z":"","name":"Cory"},{"id":"d1246adf.32e488","type":"mongodb2","z":"23e64752.6bedb8","uri":"mongodb://localhost:27017/test","name":"test","options":"","parallelism":"-1"},{"id":"34e2ddd5.605be2","type":"mongodb in","z":"23e64752.6bedb8","mongodb":"ff3c6aec.eaab38","name":"cmx data","collection":"cmx","operation":"find","x":480,"y":620,"wires":[["5543ec24.5d4b14","61baad59.306584"]]},{"id":"2cd857e8.de1398","type":"mongodb out","z":"23e64752.6bedb8","mongodb":"ff3c6aec.eaab38","name":"cmx data","collection":"cmx","payonly":true,"upsert":false,"multi":false,"operation":"store","x":600,"y":340,"wires":[]
@dexterlabora
dexterlabora / basics.json
Created June 13, 2017 13:23
Node-RED Basic Flows
[{"id":"cf8e54cb.3685b8","type":"inject","z":"27bac376.4fd3bc","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"x":140,"y":100,"wires":[["32541133.2047ae"]]},{"id":"32541133.2047ae","type":"function","z":"27bac376.4fd3bc","name":"Format Date","func":"var time = new Date(msg.payload);\nmsg.payload = \"Message sent at: \"+time;\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":100,"wires":[["ae8630a2.c0c39","43b585ec.232abc"]]},{"id":"ae8630a2.c0c39","type":"debug","z":"27bac376.4fd3bc","name":"formatted message","active":true,"console":"false","complete":"payload","x":550,"y":100,"wires":[]},{"id":"63c73248.c3599c","type":"http in","z":"27bac376.4fd3bc","name":"","url":"/time","method":"get","swaggerDoc":"","x":140,"y":180,"wires":[["d1712c04.48f36"]]},{"id":"d1712c04.48f36","type":"function","z":"27bac376.4fd3bc","name":"timestamp","func":"msg.payload = new Date().getTime();\nreturn msg;","outputs":1,"noerr":0,"x":350,"y":180,"wires":[["32541133.2047ae"]]},{"id":"43b