UNPKG

@iotile/iotile-cloud

Version:

A typescript library for interfacing with the IOTile Cloud API

1,406 lines (1,405 loc) 163 kB
"use strict"; /* * Mock data for two projects that can be used to test the IOTile Companion App. */ Object.defineProperty(exports, "__esModule", { value: true }); var models_1 = require("../models"); var iotile_common_1 = require("@iotile/iotile-common"); var clonedeep = require("lodash.clonedeep"); var MockAdapter = require("axios-mock-adapter"); var axios = require("axios"); var Response; (function (Response) { Response[Response["Success"] = 200] = "Success"; Response[Response["Fail401"] = 401] = "Fail401"; Response[Response["Fail402"] = 402] = "Fail402"; })(Response = exports.Response || (exports.Response = {})); var MockCloud = /** @class */ (function () { function MockCloud(cloud) { this.cloud = cloud; this.cloud['Config'].ENV.SERVER_URLS = [{ "shortName": "PRODUCTION", "longName": "Production Server", "url": "https://iotile.cloud/api/v1", "default": true }]; this.cloud.server = { "shortName": "PRODUCTION", "longName": "Production Server", "url": "https://iotile.cloud/api/v1", "default": true }; this.projects = [new models_1.Project(soil_proj), new models_1.Project(water_proj)]; var deviceList = []; devices.forEach(function (element) { deviceList.push(new models_1.Device(element)); }); this.devices = deviceList; var varList = []; variables.forEach(function (element) { varList.push(new models_1.Variable(element)); }); this.variables = varList; var streamList = []; streams.forEach(function (element) { streamList.push(new models_1.Stream(element)); }); this.streams = streamList; var sgList = []; sg.forEach(function (element) { sgList.push(new models_1.SensorGraph(element)); }); this.sensorGraphs = sgList; var vartypeList = []; vartypes.forEach(function (element) { vartypeList.push(new models_1.VarType(element)); }); this.varTypes = vartypeList; var pts = []; project_templates.forEach(function (element) { pts.push(new models_1.ProjectTemplate(element)); }); this.projTemplates = pts; } MockCloud.prototype.buildListResponse = function (objects) { var obj = { "count": objects.length, "next": null, "prev": null, "results": objects }; return clonedeep(obj); }; MockCloud.prototype.buildParamResponse = function (getType, paramType, param) { var retrieved = []; switch (getType) { case 'project': for (var _i = 0, _a = this.projects; _i < _a.length; _i++) { var p = _a[_i]; if (p[paramType] == param) { retrieved.push(p.serialize()); } } break; case 'device': for (var _b = 0, _c = this.devices; _b < _c.length; _b++) { var d = _c[_b]; if (d[paramType] == param) { retrieved.push(d.toJson()); } } break; case 'sensorgraph': for (var _d = 0, _e = this.sensorGraphs; _d < _e.length; _d++) { var sg_1 = _e[_d]; if (sg_1[paramType] == param) { retrieved.push(sg_1.toJson()); } } break; case 'variable': for (var _f = 0, _g = this.variables; _f < _g.length; _f++) { var v = _g[_f]; if (v[paramType] == param) { retrieved.push(v.toJson()); } } break; case 'stream': for (var _h = 0, _j = this.streams; _h < _j.length; _h++) { var s = _j[_h]; if (s[paramType] == param) { retrieved.push(s.toJson()); } } break; case 'vartype': for (var _k = 0, _l = this.varTypes; _k < _l.length; _k++) { var vt = _l[_k]; if (vt[paramType] == param) { retrieved.push(vt.toJson()); } } break; case 'pt': for (var _m = 0, _o = this.projTemplates; _m < _o.length; _m++) { var pt = _o[_m]; if (pt[paramType] == param) { retrieved.push(pt.toJson()); } } break; } var obj = this.buildListResponse(retrieved); return clonedeep(obj); }; MockCloud.prototype.getStream = function (slug) { for (var _i = 0, _a = this.streams; _i < _a.length; _i++) { var stream = _a[_i]; if (stream.slug == slug) { return new models_1.Stream(stream); } } throw new iotile_common_1.ArgumentError("Unknown stream slug: " + slug); }; MockCloud.prototype.getDevice = function (slug) { for (var _i = 0, _a = this.devices; _i < _a.length; _i++) { var device = _a[_i]; if (device.slug == slug) { return new models_1.Device(device); } } throw new iotile_common_1.ArgumentError("Unknown device slug: " + slug); }; MockCloud.prototype.expectStreamPatch = function (slug, data, responseType, responseData) { if (responseData == null) { responseData = {}; } var url = '/stream/' + slug + '/'; this.MockAdapter.onPatch(url, data).reply(Response, responseData); }; // FIXME: we need a helper to mock pagination, and the onGet to parse page_size & page filters MockCloud.prototype.defaultSetup = function () { this.MockAdapter = new MockAdapter(axios); var that = this; this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/project\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse([water_proj, soil_proj])); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/org\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse([arch_internal_org, arch_systems_org])); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/device\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(devices)); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/stream\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(streams)); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/variable\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(variables)); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/vartype\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(vartypes)); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/sg\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(sg)); this.MockAdapter.onGet(/https:\/\/iotile\.cloud\/api\/v1\/pt\/(\?([\w-]+(=[\w-]*)?(&[\w-]+(=[\w-]*)?)*))?$/).reply(200, that.buildListResponse(project_templates)); this.MockAdapter.onGet("https://iotile.cloud/api/v1/org/" + arch_internal_org.slug + "/membership/").reply(200, arch_internal_membership); this.MockAdapter.onGet("https://iotile.cloud/api/v1/org/" + arch_systems_org.slug + "/membership/").reply(200, arch_systems_membership); // this.MockAdapter.onGet(`https://iotile.cloud/api/v1/project/(.+)/`, undefined, ['id']).reply(this.buildParamResponse('project', 'project', params['id'])); // this.MockAdapter.onGet(`https://iotile.cloud/api/v1/device/?project=(.+)`, undefined, ['id']).reply(this.buildParamResponse('device', 'project', params['id'])); // this.MockAdapter.onGet(`https://iotile.cloud/api/v1/stream/?project=(.+)`, undefined, ['id']).reply(this.buildParamResponse('stream', 'project', params['id'])); // this.MockAdapter.onGet(`https://iotile.cloud/api/v1/variable/(.+)`, undefined, ['id']).reply(this.buildParamResponse('variable', 'project', params['id'])); }; return MockCloud; }()); exports.MockCloud = MockCloud; var project_templates = [ { "id": 2, "name": "Default Template", "slug": "default-template-v1-0-0", "org": "arch-systems", "version": "v1.0.0", "extra_data": { "web": { "projectTemplateSlug": "default" } }, "created_on": "2017-01-22T22:50:24.512275Z" }, { "id": 8, "name": "Shipping Template", "slug": "shipping-template-v1-0-0", "org": "arch-systems", "version": "v1.0.0", "extra_data": { "web": { "projectTemplateSlug": "shipping" } }, "created_on": "2017-08-31T01:52:39.851213Z" }, { "id": 9, "name": "Simple Template", "slug": "simple-template-v1-0-0", "org": "arch-systems", "version": "v1.0.0", "extra_data": { "web": { "projectTemplateSlug": "simple" } }, "created_on": "2017-09-04T23:45:16.642470Z" }, { "id": 7, "name": "Water Meter", "slug": "water-meter-v1-1-0", "org": "arch-systems", "version": "v1.1.0", "extra_data": { "web": { "projectTemplateSlug": "default" } }, "created_on": "2017-03-17T06:15:44.410131Z" } ]; var arch_internal_org = { "id": "564c54b5-19df-4fe0-9655-92542a2d0932", "name": "Arch - Internal", "slug": "arch-internal", "about": "Internal Projects for Testing", "created_on": "2016-11-04T00:48:13.033551Z", "created_by": "david", "avatar": { "thumbnail": "https://media.iotile.cloud/prod/images/3e5554ff-0e4d-4a10-b299-415e143c6931/thumbnail.jpg", "tiny": "https://media.iotile.cloud/prod/images/3e5554ff-0e4d-4a10-b299-415e143c6931/tiny.jpg" } }; var arch_systems_org = { "id": "0e1031ba-b4b1-48e1-873c-73155b30c038", "name": "Arch Systems", "slug": "arch-systems", "about": "", "created_on": "2016-11-04T00:42:34.151136Z", "created_by": "david", "avatar": { "thumbnail": "https://media.iotile.cloud/prod/images/09592eb4-0a84-4394-bcc6-e2205235a8b8/thumbnail.jpg", "tiny": "https://media.iotile.cloud/prod/images/09592eb4-0a84-4394-bcc6-e2205235a8b8/tiny.jpg" } }; var arch_internal_membership = { "user": "kaylie", "user_details": { "email": "kaylie@arch-iot.com", "username": "kaylie", "name": "Kaylie DeHart", "tagline": "Software Engineer [Mobile] @Arch", "avatar": { "tiny": "https://secure.gravatar.com/avatar/59dfdaa43783adc9adebdaa55a768c27?s=28&d=identicon", "thumbnail": "https://secure.gravatar.com/avatar/59dfdaa43783adc9adebdaa55a768c27?s=80&d=identicon" } }, "created_on": "2017-04-17T23:00:06Z", "is_active": true, "is_org_admin": true }; var arch_systems_membership = { "user": "kaylie", "user_details": { "email": "kaylie@arch-iot.com", "username": "kaylie", "name": "Kaylie DeHart", "tagline": "Software Engineer [Mobile] @Arch", "avatar": { "tiny": "https://secure.gravatar.com/avatar/59dfdaa43783adc9adebdaa55a768c27?s=28&d=identicon", "thumbnail": "https://secure.gravatar.com/avatar/59dfdaa43783adc9adebdaa55a768c27?s=80&d=identicon" } }, "created_on": "2017-04-17T23:00:06Z", "is_active": true, "is_org_admin": false }; var soil_proj = { "id": "5311e938-1150-4d40-bc66-e2319d112655", "name": "Mobile App Testing Project - Soil", "slug": "p--0000-006d", "gid": "0000-006d", "org": "arch-internal", "about": "", "project_template": null, "page": { "label": "Water Meter", "id": 2, "slug": "water-meter" }, "created_on": "2017-03-20T01:02:56.295859Z", "created_by": "david" }; var water_proj = { "id": "04d10130-db9e-452e-a725-5cbb1a1e1ae4", "name": "Mobile App Testing Project - Water", "slug": "p--0000-006e", "gid": "0000-006e", "org": "arch-internal", "about": "", "project_template": null, "page": { "label": "Water Meter", "id": 2, "slug": "water-meter" }, "created_on": "2017-03-20T01:02:56.314521Z", "created_by": "david" }; var sg = [ { "id": 18, "name": "4-420-1-flow ProtoPod", "slug": "4-420-1-flow-protopod-v1-0-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 49, "label": "IO 1", "lid_hex": "5001", "derived_lid_hex": "", "var_type": "water-meter-volume", "default_input_unit": "in--water-meter-volume--gallons", "default_output_unit": "out--water-meter-volume--gallons", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 50, "label": "IO 2", "lid_hex": "5005", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 51, "label": "IO 3", "lid_hex": "500c", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 52, "label": "IO 4", "lid_hex": "500d", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 53, "label": "IO 5", "lid_hex": "500e", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 54, "label": "Pulse 1", "lid_hex": "100b", "derived_lid_hex": "", "var_type": "water-meter-flow", "default_input_unit": "in--water-meter-flow--gallons", "default_output_unit": "out--water-meter-flow--gallons-per-min", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 55, "label": "RT 2", "lid_hex": "1011", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 56, "label": "RT 3", "lid_hex": "1016", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 57, "label": "RT 4", "lid_hex": "1017", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 58, "label": "RT 5", "lid_hex": "1018", "derived_lid_hex": "", "var_type": "420-milliamps", "default_input_unit": "in--420-milliamps--milliamps", "default_output_unit": "out--420-milliamps--milliamps", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false } ], "display_widget_templates": [ { "id": 41, "label": "IO 1", "lid_hex": "5001", "var_type": "water-meter-volume", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 42, "label": "IO 2", "lid_hex": "5005", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 43, "label": "IO 3", "lid_hex": "500c", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 44, "label": "IO 4", "lid_hex": "500d", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 45, "label": "IO 5", "lid_hex": "500e", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 46, "label": "RT 1", "lid_hex": "100b", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 47, "label": "RT 2", "lid_hex": "1011", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 48, "label": "RT 3", "lid_hex": "1016", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 49, "label": "RT 4", "lid_hex": "1017", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 50, "label": "RT 5", "lid_hex": "1018", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "5001": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "Flow 1", "lid": "100b" } } }, "500d": { "label": "IO 4", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "IO 4", "lid": "1017" } } }, "500e": { "label": "IO 5", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "IO 5", "lid": "1018" } } }, "5005": { "label": "IO 2", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "IO 2", "lid": "1011" } } }, "500c": { "label": "IO 3", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "IO 3", "lid": "1016" } } } }, "order": [ "5001", "5005", "500c", "500d", "500e" ] }, "other": null }, "web": { "pageTemplateSlug": "default" } }, "major_version": 1, "minor_version": 0, "patch_version": 0, "created_on": "2017-06-15T22:16:25.050506Z" }, { "id": 12, "name": "Accelerometer", "slug": "accelerometer-v0-1-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 32, "label": "RT X", "lid_hex": "1012", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 33, "label": "RT Y", "lid_hex": "1013", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 34, "label": "RT Z", "lid_hex": "1014", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 27, "label": "ACC ST", "lid_hex": "5006", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 28, "label": "ACC X", "lid_hex": "5007", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 29, "label": "ACC Y", "lid_hex": "5008", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 30, "label": "ACC Z", "lid_hex": "5009", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 31, "label": "ACC SLEEP", "lid_hex": "500a", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false } ], "display_widget_templates": [ { "id": 19, "label": "Status", "lid_hex": "5006", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 20, "label": "X", "lid_hex": "5007", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 21, "label": "Y", "lid_hex": "5008", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 22, "label": "Z", "lid_hex": "5009", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 23, "label": "Sleep", "lid_hex": "500a", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 24, "label": "RT X", "lid_hex": "1012", "var_type": "default", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 25, "label": "RT Y", "lid_hex": "1013", "var_type": "default", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 26, "label": "RT Z", "lid_hex": "1014", "var_type": "default", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "5008": { "label": "Y", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "RT Y", "lid": "1013" } } }, "5009": { "label": "Z", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "RT Z", "lid": "1014" } } }, "5007": { "label": "X", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "RT X", "lid": "1012" } } } }, "order": [ "5007", "5008", "5009" ] }, "other": null }, "web": { "pageTemplateSlug": "default" } }, "major_version": 0, "minor_version": 1, "patch_version": 0, "created_on": "2017-03-28T00:15:01.377573Z" }, { "id": 19, "name": "Development", "slug": "development-v1-0-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [], "display_widget_templates": [], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": null, "other": null }, "web": { "pageTemplateSlug": "proto" } }, "major_version": 1, "minor_version": 0, "patch_version": 0, "created_on": "2017-06-23T05:40:38.385443Z" }, { "id": 3, "name": "Double Soil Moisture", "slug": "double-soil-moisture-v1-0-0", "org": "arch-systems", "project_template": null, "variable_templates": [], "display_widget_templates": [], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "5001": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings" }, "5002": { "label": "IO 2", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings" } }, "order": [ "5001", "5002" ] }, "other": null } }, "major_version": 1, "minor_version": 0, "patch_version": 0, "created_on": "2017-01-26T06:26:21.206491Z" }, { "id": 7, "name": "Double Soil Moisture", "slug": "double-soil-moisture-v1-1-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 7, "label": "IO 1", "lid_hex": "5001", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 8, "label": "IO 2", "lid_hex": "5002", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 9, "label": "Sensor 1", "lid_hex": "100a", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 10, "label": "Sensor 2", "lid_hex": "100b", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false } ], "display_widget_templates": [ { "id": 1, "label": "IO 1", "lid_hex": "5001", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 8, "label": "IO Realtime 1", "lid_hex": "100a", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 2, "label": "IO 2", "lid_hex": "5002", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 9, "label": "IO Realtime 2", "lid_hex": "100b", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "5001": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "Realtime IO 1", "lid": "100a" } } }, "5002": { "label": "IO 2", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "Realtime IO 2", "lid": "100b" } } } }, "order": [ "5001", "5002" ] }, "other": null } }, "major_version": 1, "minor_version": 1, "patch_version": 0, "created_on": "2017-03-17T06:27:58.682673Z" }, { "id": 10, "name": "Double Soil Moisture", "slug": "double-soil-moisture-v2-0-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 19, "label": "IO 1", "lid_hex": "5003", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 20, "label": "IO 2", "lid_hex": "5004", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 21, "label": "Sensor 1", "lid_hex": "100f", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false }, { "id": 22, "label": "Sensor 2", "lid_hex": "1010", "derived_lid_hex": "", "var_type": "soil-moisture-percent", "default_input_unit": "in--soil-moisture-percent--percent", "default_output_unit": "out--soil-moisture-percent--percent", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false } ], "display_widget_templates": [ { "id": 11, "label": "IO 1", "lid_hex": "5003", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 12, "label": "IO Realtime 1", "lid_hex": "100f", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": true, "show_in_web": false }, { "id": 13, "label": "IO 2", "lid_hex": "5004", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 14, "label": "IO Realtime 2", "lid_hex": "1010", "var_type": "soil-moisture-percent", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "5004": { "label": "IO 2", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "Realtime IO 2", "lid": "1010" } } }, "5003": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "Realtime IO 1", "lid": "100f" } } } }, "order": [ "5003", "5004" ] }, "other": null }, "web": { "pageTemplateSlug": "default" } }, "major_version": 2, "minor_version": 0, "patch_version": 0, "created_on": "2017-03-22T02:36:28.932715Z" }, { "id": 14, "name": "Dust Sensor", "slug": "dust-sensor-v1-0-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 35, "label": "IO 1", "lid_hex": "500b", "derived_lid_hex": "", "var_type": "dust-density", "default_input_unit": "in--dust-density--mgm3", "default_output_unit": "out--dust-density--mgm3", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 36, "label": "Fast Density 1", "lid_hex": "1015", "derived_lid_hex": "", "var_type": "dust-density", "default_input_unit": "in--dust-density--mgm3", "default_output_unit": "out--dust-density--mgm3", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false } ], "display_widget_templates": [ { "id": 27, "label": "IO 1", "lid_hex": "500b", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 28, "label": "Fast Density 1", "lid_hex": "1015", "var_type": "420-milliamps", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "500b": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings", "derived": { "realtime": { "label": "IO 1", "lid": "1015" } } } }, "order": [ "500b" ] }, "other": null }, "web": { "pageTemplateSlug": "default" } }, "major_version": 1, "minor_version": 0, "patch_version": 0, "created_on": "2017-04-14T06:07:18.184517Z" }, { "id": 15, "name": "Dust Sensor", "slug": "dust-sensor-v1-1-0", "org": "arch-systems", "project_template": "default-template-v1-0-0", "variable_templates": [ { "id": 37, "label": "IO 1", "lid_hex": "500b", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": false, "web_only": false }, { "id": 38, "label": "Fast Density 1", "lid_hex": "1015", "derived_lid_hex": "", "var_type": "default", "default_input_unit": "in--default--unit", "default_output_unit": "out--default--unit", "m": 1, "d": 1, "o": 0.0, "app_only": true, "web_only": false } ], "display_widget_templates": [ { "id": 29, "label": "IO 1", "lid_hex": "500b", "var_type": "default", "derived_unit_type": "", "show_in_app": false, "show_in_web": true }, { "id": 30, "label": "Fast Density 1", "lid_hex": "1015", "var_type": "default", "derived_unit_type": "", "show_in_app": true, "show_in_web": false } ], "ui_extra": { "mobile": { "controller": "defaultCtrl", "template": "default", "ioInfo": { "map": { "500b": { "label": "IO 1", "settingsController": "defaultSettingsCtrl", "settingsTemplate": "default-settings",