[{"id":"42854746.798a88","type":"device-manager","z":"eedb5d66.527a6","auth":"bluemix","name":"","apiKey":"","deviceType":"devices","method":"Create","deviceId":"","password":"","ignore":false,"x":740,"y":80,"wires":[["387b09d0.c577e6"]]},{"id":"b01d58dc.1f5298","type":"inject","z":"eedb5d66.527a6","name":"Delete device","topic":"","payload":"{\"numberDevices\":1,\"deviceType\":\"simulate-iot\",\"deviceName\":\"motor\"}","payloadType":"json","repeat":"","crontab":"","once":false,"x":110,"y":120,"wires":[["aa902e5f.06689"]]},{"id":"225b03c8.583a8c","type":"device-manager","z":"eedb5d66.527a6","auth":"bluemix","name":"","apiKey":"","deviceType":"","method":"Delete","deviceId":"","password":"","ignore":false,"x":700,"y":120,"wires":[["3bc6e07a.27159"]]},{"id":"5672d5c1.0bc48c","type":"function","z":"eedb5d66.527a6","name":"Set message event","func":"var numberDevices = parseInt(msg.payload.numberDevices);\nvar deviceCount = 0;\nvar chunkSize = parseInt(msg.payload.chunkSize) || 500;\n\nchunkSize > 2000 ? 2000 : chunkSize;\nchunkSize > numberDevices ? numberDevices : chunkSize;\n\nvar typeId = msg.payload.typeId || \"devices\";\nvar password = msg.payload.authToken;\nvar deviceName = msg.payload.deviceName;\n\nvar chunks = numberDevices / chunkSize;\nvar deviceCreateCallback = function() {\n var devicePointer = 0;\n for (var cycle = 0 ; cycle <= chunks ; cycle++) {\n msg.payload=[];\n for (var i = 0 ; devicePointer < numberDevices && i < chunkSize ; i++) {\n var singleDevice = {};\n devicePointer++;\n singleDevice.deviceId = deviceName + devicePointer;\n singleDevice.typeId = typeId;\n if(password) {\n singleDevice.authToken = password; \n }\n msg.payload.push(singleDevice);\n }\n if(msg.payload.length !== 0)\n node.send(msg);\n }\n}\ndeviceCreateCallback();\n//var timerId = setInterval(deviceCreateCallback, timerId);","outputs":1,"noerr":0,"x":510,"y":80,"wires":[["42854746.798a88"]]},{"id":"aaaeb0c.82be45","type":"http in","z":"eedb5d66.527a6","name":"","url":"/createdevices","method":"get","upload":false,"swaggerDoc":"","x":110,"y":80,"wires":[["a0664d1.a750ab","95aef892.0ef538"]]},{"id":"dbb8d138.3b745","type":"http in","z":"eedb5d66.527a6","name":"","url":"deletedevices","method":"post","upload":false,"swaggerDoc":"","x":110,"y":160,"wires":[["a0664d1.a750ab","f36f67b5.054838"]]},{"id":"2dc85fba.31dee","type":"delay","z":"eedb5d66.527a6","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":300,"y":40,"wires":[["5672d5c1.0bc48c"]]},{"id":"cc2b57f8.3823f8","type":"inject","z":"eedb5d66.527a6","name":"create device","topic":"","payload":"{\"numberDevices\":1,\"typeId\":\"simulate-iot\",\"authToken\":\"mypassword\",\"chunkSize\":1,\"deviceName\":\"motor\"}","payloadType":"json","repeat":"","crontab":"","once":false,"x":110,"y":40,"wires":[["2dc85fba.31dee","ca2198b1.7db0f8"]]},{"id":"aa902e5f.06689","type":"function","z":"eedb5d66.527a6","name":"Count and Assign Props","func":"var numberDevices = msg.payload.numberDevices;\ndeviceArray = [];\nfor(count = 0 ; count < numberDevices ; count++) {\n singleDevice = {};\n singleDevice.typeId = msg.payload.deviceType;\n singleDevice.deviceId = msg.payload.deviceName + (count+1); \n deviceArray[count] = singleDevice;\n}\nmsg.payload = deviceArray;\nreturn msg;","outputs":1,"noerr":0,"x":410,"y":120,"wires":[["225b03c8.583a8c"]]},{"id":"387b09d0.c577e6","type":"debug","z":"eedb5d66.527a6","name":"","active":false,"console":"false","complete":"payload","x":770,"y":220,"wires":[]},{"id":"a0664d1.a750ab","type":"http response","z":"eedb5d66.527a6","name":"","x":570,"y":180,"wires":[]},{"id":"f0288296.94fd9","type":"device-type-manager","z":"eedb5d66.527a6","auth":"bluemix","name":"","apiKey":"","deviceType":"","classId":"Device","method":"Create","deviceTypeId":"","serialNumber":"","manufacturer":"","model":"","deviceClass":"","infoDescription":"","firmwareVersion":"","hardwareVersion":"","descriptiveLocation":"","metadata":"","password":"","properties":[],"ignore":false,"x":760,"y":40,"wires":[["387b09d0.c577e6"]]},{"id":"ca2198b1.7db0f8","type":"function","z":"eedb5d66.527a6","name":"Override device type","func":"msg.payload.deviceType = msg.payload.typeId\nreturn msg;","outputs":1,"noerr":0,"x":520,"y":40,"wires":[["f0288296.94fd9"]]},{"id":"6198d82d.229c08","type":"function","z":"eedb5d66.527a6","name":"Set message event","func":"var msgevt = 0 ;\nvar msgCount = 0;\nvar numberEvents = msg.payload.numberEvents;\nvar numberDevices = msg.payload.numberDevices;\nvar timeInterval = msg.payload.timeInterval;\nvar deviceType = msg.payload.deviceType;\nvar deviceName = msg.payload.deviceName;\nvar speed = msg.payload.speed;\nvar time = msg.payload.timestamp;\n\nvar rpmLow = 1.0;\nvar rpmHigh = 3.0;\nvar ayLow = -1.0;\nvar ayHigh = 1.0;\nvar rpmArray = [];\nvar ayArray = [];\n\nfor (var j = 0 ; j < numberDevices ; j++) {\n rpmArray[j] = parseFloat(((Math.random() * (rpmHigh - rpmLow /* + 1.0 */) + rpmLow)).toFixed(1));\n ayArray[j] = parseFloat(((Math.random() * (ayHigh - ayLow) /* + 1.0 */)).toFixed(3));\n}\n\nvar callbackFunc = function() {\n msgevt += 1;\n \n if(msgevt >= numberEvents) {\n clearInterval(timerId);\n }\n \n for (var i = 1 ; i <= numberDevices ; i++) {\n \n msgCount += 1;\n msg.payload = {};\n msg.payload.d = {};\n\n msg.payload.d.id = deviceName + i;\n msg.payload.d.ts = new Date().getTime();\n msg.payload.d.ay = ayArray[i-1];\n msg.payload.d.running = true;\n msg.payload.d.rpm = rpmArray[i-1];\n msg.payload.d.speed = speed;\n msg.payload.d.timestamp = time; \n \n direction = msg.payload.d.ts % 2 === 0 ? -0.1 : 0.1; \n rpmArray[i-1] = parseFloat((rpmArray[i-1] + direction).toFixed(1));\n direction = msg.payload.d.ts % 2 === 0 ? -0.05 : 0.05;\n ayArray[i-1] = parseFloat((ayArray[i-1] + direction).toFixed(3));\n \n msg.payload.d.msgCount = msgCount;\n msg.deviceId = deviceName + i;\n msg.deviceType = deviceType;\n node.send(msg);\n }\n}\nvar timerId = setInterval(callbackFunc, timeInterval);","outputs":1,"noerr":0,"x":530,"y":320,"wires":[["a63e333a.247f7","3bc6e07a.27159"]]},{"id":"64ca8b55.b1a394","type":"inject","z":"eedb5d66.527a6","name":"Simulate device","topic":"","payload":"{\"numberDevices\":1,\"numberEvents\":3,\"timeInterval\":1000,\"deviceType\":\"simulate-iot\",\"deviceName\":\"motor\"}","payloadType":"json","repeat":"","crontab":"","once":false,"x":120,"y":360,"wires":[["6198d82d.229c08"]]},{"id":"a63e333a.247f7","type":"ibmiot out","z":"eedb5d66.527a6","authentication":"boundService","apiKey":"","outputType":"evt","deviceId":"xxx","deviceType":"simulate-iot","eventCommandType":"eventData","format":"json","data":"{\"d\":{\"speed\":22}}","qos":"","name":"IBM IoT","service":"registered","x":760,"y":340,"wires":[]},{"id":"2af68ca6.e8fa74","type":"http in","z":"eedb5d66.527a6","name":"","url":"/increasespeed","method":"get","upload":false,"swaggerDoc":"","x":110,"y":280,"wires":[["b517cd3c.3012e"]]},{"id":"9cdc5b34.ce2708","type":"function","z":"eedb5d66.527a6","name":"update start time","func":"msg.payload.timestamp = new Date().toUTCString();\nreturn msg;","outputs":1,"noerr":0,"x":530,"y":280,"wires":[["3bc6e07a.27159"]]},{"id":"3bc6e07a.27159","type":"debug","z":"eedb5d66.527a6","name":"","active":false,"console":"false","complete":"true","x":750,"y":280,"wires":[]},{"id":"4e959d91.7fd9f4","type":"http in","z":"eedb5d66.527a6","name":"","url":"/decreasespeed","method":"get","upload":false,"swaggerDoc":"","x":110,"y":320,"wires":[["b517cd3c.3012e"]]},{"id":"b517cd3c.3012e","type":"function","z":"eedb5d66.527a6","name":"Speed Props","func":"msg.payload.speed = msg.payload.message;\nmsg.payload.numberEvents = 1;\nmsg.payload.numberDevices = 1;\nmsg.payload.timeInterval = 10;\nmsg.payload.deviceType = \"simulate-iot\";\nmsg.payload.deviceName = \"motor\";\nmsg.payload.timestamp = new Date().toUTCString();\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":300,"wires":[["6198d82d.229c08","9cdc5b34.ce2708","387b09d0.c577e6"]]},{"id":"d0b43ca6.a4e9f","type":"http in","z":"eedb5d66.527a6","name":"","url":"/belt","method":"get","upload":false,"swaggerDoc":"","x":80,"y":200,"wires":[["5e6a3d04.e15d14"]]},{"id":"5e6a3d04.e15d14","type":"template","z":"eedb5d66.527a6","name":"UI Displaysubmit","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"\n\n \n \n \n \n IoT\n \n \n
\n
\n \n \n \n \n
\n

IBM IoT Device Simulation

\n

Create, connect and simulate devices with Watson Data Platform

\n

\n \n \n \n \n \n \n

Manage Device:


\n \n \n \n   \n \n \n

Control Device:

\n \n \n \n \n \n \n

\n \n
\n        
\n \n \n","x":330,"y":240,"wires":[["387b09d0.c577e6","a0664d1.a750ab"]]},{"id":"83144346.1431","type":"http in","z":"eedb5d66.527a6","name":"","url":"/sp","method":"get","upload":false,"swaggerDoc":"","x":70,"y":240,"wires":[["b517cd3c.3012e"]]},{"id":"95aef892.0ef538","type":"function","z":"eedb5d66.527a6","name":"Create Props","func":"msg.payload = {\"numberDevices\":1,\"typeId\":\"simulate-iot\",\"authToken\":\"mypassword\",\"chunkSize\":1,\"deviceName\":\"motor\"};\nreturn msg;","outputs":1,"noerr":0,"x":290,"y":80,"wires":[["2dc85fba.31dee"]]},{"id":"f36f67b5.054838","type":"function","z":"eedb5d66.527a6","name":"Delete Props","func":"msg.payload = {\"numberDevices\":1,\"deviceType\":\"simulate-iot\",\"deviceName\":\"motor\"};\nreturn msg;","outputs":1,"noerr":0,"x":310,"y":180,"wires":[["aa902e5f.06689"]]},{"id":"f5545b1f.c66d98","type":"ibmiot in","z":"eedb5d66.527a6","authentication":"boundService","apiKey":"","inputType":"evt","deviceId":"","applicationId":"","deviceType":"+","eventType":"eventData","commandType":"","format":"json","name":"IBM IoT","service":"registered","allDevices":true,"allApplications":"","allDeviceTypes":true,"allEvents":"","allCommands":"","allFormats":"","qos":0,"x":330,"y":360,"wires":[["14a2bc7.fe03344"]]},{"id":"6592b7bf.d36848","type":"http response","z":"eedb5d66.527a6","name":"","statusCode":"","headers":{},"x":430,"y":400,"wires":[]},{"id":"e8bd1fd7.67b1f","type":"http in","z":"eedb5d66.527a6","name":"","url":"/events","method":"get","upload":false,"swaggerDoc":"","x":90,"y":400,"wires":[["9b4e6dc2.f3b92"]]},{"id":"14a2bc7.fe03344","type":"cloudant out","z":"eedb5d66.527a6","name":"events","cloudant":"","database":"events","service":"simulate-iot-cloudantNoSQLDB","payonly":true,"operation":"insert","x":550,"y":360,"wires":[]},{"id":"9b4e6dc2.f3b92","type":"cloudant in","z":"eedb5d66.527a6","name":"","cloudant":"","database":"events","service":"simulate-iot-cloudantNoSQLDB","search":"_all_","design":"evt","index":"display","x":230,"y":400,"wires":[["6592b7bf.d36848","3bc6e07a.27159"]]}]