diff --git a/.codeclimate.yml b/.codeclimate.yml new file mode 100644 index 0000000..92ea735 --- /dev/null +++ b/.codeclimate.yml @@ -0,0 +1,31 @@ +--- +engines: + csslint: + enabled: true + duplication: + enabled: true + config: + languages: + - ruby + - javascript + - python + - php + eslint: + enabled: true + fixme: + enabled: true +ratings: + paths: + - "**.css" + - "**.inc" + - "**.js" + - "**.jsx" + - "**.module" + - "**.php" + - "**.py" + - "**.rb" +exclude_paths: +- .git/ +- examples/ +- ghpages/ +- node_modules/ diff --git a/.csslintrc b/.csslintrc new file mode 100644 index 0000000..aacba95 --- /dev/null +++ b/.csslintrc @@ -0,0 +1,2 @@ +--exclude-exts=.min.css +--ignore=adjoining-classes,box-model,ids,order-alphabetical,unqualified-attributes diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..96212a3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1 @@ +**/*{.,-}min.js diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..9faa375 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,213 @@ +ecmaFeatures: + modules: true + jsx: true + +env: + amd: true + browser: true + es6: true + jquery: true + node: true + +# http://eslint.org/docs/rules/ +rules: + # Possible Errors + comma-dangle: [2, never] + no-cond-assign: 2 + no-console: 0 + no-constant-condition: 2 + no-control-regex: 2 + no-debugger: 2 + no-dupe-args: 2 + no-dupe-keys: 2 + no-duplicate-case: 2 + no-empty: 2 + no-empty-character-class: 2 + no-ex-assign: 2 + no-extra-boolean-cast: 2 + no-extra-parens: 0 + no-extra-semi: 2 + no-func-assign: 2 + no-inner-declarations: [2, functions] + no-invalid-regexp: 2 + no-irregular-whitespace: 2 + no-negated-in-lhs: 2 + no-obj-calls: 2 + no-regex-spaces: 2 + no-sparse-arrays: 2 + no-unexpected-multiline: 2 + no-unreachable: 2 + use-isnan: 2 + valid-jsdoc: 0 + valid-typeof: 2 + + # Best Practices + accessor-pairs: 2 + block-scoped-var: 0 + complexity: [2, 6] + consistent-return: 0 + curly: 0 + default-case: 0 + dot-location: 0 + dot-notation: 0 + eqeqeq: 2 + guard-for-in: 2 + no-alert: 2 + no-caller: 2 + no-case-declarations: 2 + no-div-regex: 2 + no-else-return: 0 + no-empty-label: 2 + no-empty-pattern: 2 + no-eq-null: 2 + no-eval: 2 + no-extend-native: 2 + no-extra-bind: 2 + no-fallthrough: 2 + no-floating-decimal: 0 + no-implicit-coercion: 0 + no-implied-eval: 2 + no-invalid-this: 0 + no-iterator: 2 + no-labels: 0 + no-lone-blocks: 2 + no-loop-func: 2 + no-magic-number: 0 + no-multi-spaces: 0 + no-multi-str: 0 + no-native-reassign: 2 + no-new-func: 2 + no-new-wrappers: 2 + no-new: 2 + no-octal-escape: 2 + no-octal: 2 + no-proto: 2 + no-redeclare: 2 + no-return-assign: 2 + no-script-url: 2 + no-self-compare: 2 + no-sequences: 0 + no-throw-literal: 0 + no-unused-expressions: 2 + no-useless-call: 2 + no-useless-concat: 2 + no-void: 2 + no-warning-comments: 0 + no-with: 2 + radix: 2 + vars-on-top: 0 + wrap-iife: 2 + yoda: 0 + + # Strict + strict: 0 + + # Variables + init-declarations: 0 + no-catch-shadow: 2 + no-delete-var: 2 + no-label-var: 2 + no-shadow-restricted-names: 2 + no-shadow: 0 + no-undef-init: 2 + no-undef: 0 + no-undefined: 0 + no-unused-vars: 0 + no-use-before-define: 0 + + # Node.js and CommonJS + callback-return: 2 + global-require: 2 + handle-callback-err: 2 + no-mixed-requires: 0 + no-new-require: 0 + no-path-concat: 2 + no-process-exit: 2 + no-restricted-modules: 0 + no-sync: 0 + + # Stylistic Issues + array-bracket-spacing: 0 + block-spacing: 0 + brace-style: 0 + camelcase: 0 + comma-spacing: 0 + comma-style: 0 + computed-property-spacing: 0 + consistent-this: 0 + eol-last: 0 + func-names: 0 + func-style: 0 + id-length: 0 + id-match: 0 + indent: 0 + jsx-quotes: 0 + key-spacing: 0 + linebreak-style: 0 + lines-around-comment: 0 + max-depth: 0 + max-len: 0 + max-nested-callbacks: 0 + max-params: 0 + max-statements: [2, 30] + new-cap: 0 + new-parens: 0 + newline-after-var: 0 + no-array-constructor: 0 + no-bitwise: 0 + no-continue: 0 + no-inline-comments: 0 + no-lonely-if: 0 + no-mixed-spaces-and-tabs: 0 + no-multiple-empty-lines: 0 + no-negated-condition: 0 + no-nested-ternary: 0 + no-new-object: 0 + no-plusplus: 0 + no-restricted-syntax: 0 + no-spaced-func: 0 + no-ternary: 0 + no-trailing-spaces: 0 + no-underscore-dangle: 0 + no-unneeded-ternary: 0 + object-curly-spacing: 0 + one-var: 0 + operator-assignment: 0 + operator-linebreak: 0 + padded-blocks: 0 + quote-props: 0 + quotes: 0 + require-jsdoc: 0 + semi-spacing: 0 + semi: 0 + sort-vars: 0 + space-after-keywords: 0 + space-before-blocks: 0 + space-before-function-paren: 0 + space-before-keywords: 0 + space-in-parens: 0 + space-infix-ops: 0 + space-return-throw-case: 0 + space-unary-ops: 0 + spaced-comment: 0 + wrap-regex: 0 + + # ECMAScript 6 + arrow-body-style: 0 + arrow-parens: 0 + arrow-spacing: 0 + constructor-super: 0 + generator-star-spacing: 0 + no-arrow-condition: 0 + no-class-assign: 0 + no-const-assign: 0 + no-dupe-class-members: 0 + no-this-before-super: 0 + no-var: 0 + object-shorthand: 0 + prefer-arrow-callback: 0 + prefer-const: 0 + prefer-reflect: 0 + prefer-spread: 0 + prefer-template: 0 + require-yield: 0 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4d13582 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +/node_modules/ +/.idea/ +/doc/ +/coverage/ +/site +/report/ +/.c9revisions/ +/.settings/ + +.settings +.classpath +.project +.metadata +npm-debug.log + diff --git a/.gjslintrc b/.gjslintrc new file mode 100644 index 0000000..0492419 --- /dev/null +++ b/.gjslintrc @@ -0,0 +1,8 @@ +--jsdoc +--summary +--beep +--check_html +--nomultiprocess +--debug_indentation +--time +--max_line_length=120 \ No newline at end of file diff --git a/.jshintrc b/.jshintrc new file mode 100644 index 0000000..7615545 --- /dev/null +++ b/.jshintrc @@ -0,0 +1,18 @@ +{ + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "quotmark": "single", + "undef": true, + "unused": true, + "trailing": true, + "maxparams": 7, + "maxdepth": 4, + "camelcase": true, + "maxlen": 120, + "node": true +} diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..f7b602e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,30 @@ +language: node_js + +node_js: + - "0.10" + - "4" + +branches: + only: + - master + +sudo: false + +env: + - CXX=g++-4.8 + +before_install: + - npm install -g grunt-cli + +install: + - npm install + +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.8 + - g++-4.8 + code_climate: + repo_token: 3af78c71b999d36106cc3ec8761fa5d664515fef7b8c8698e9d5f091a9d5c5a3 diff --git a/CHANGES_NEXT_RELEASE b/CHANGES_NEXT_RELEASE new file mode 100644 index 0000000..aff9d07 --- /dev/null +++ b/CHANGES_NEXT_RELEASE @@ -0,0 +1 @@ +- [FEATURE] Better informative messages in the scheduled updates timeline diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..8e67d62 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,281 @@ +'use strict'; + +/** + * Grunt tasks definitions + * + * @param {Object} grunt + */ +module.exports = function(grunt) { + + // Project configuration. + grunt.initConfig({ + pkgFile: 'package.json', + pkg: grunt.file.readJSON('package.json'), + + clean: { + reportTest: ['report/test'], + reportLint: ['report/lint'], + reportCoverage: ['report/coverage'], + siteCoverage: ['site/coverage'], + siteDoc: ['site/doc'], + siteReport: ['site/report'] + }, + + mkdir: { + reportTest: { + options: { + create: ['<%= clean.reportTest[0] %>'] + } + }, + reportLint: { + options: { + create: ['<%= clean.reportLint[0] %>'] + } + }, + reportCoverage: { + options: { + create: ['<%= clean.reportCoverage[0] %>'] + } + }, + siteCoverage: { + options: { + create: ['<%= clean.siteCoverage[0] %>'] + } + }, + siteDoc: { + options: { + create: ['<%= clean.siteDoc[0] %>'] + } + }, + siteReport: { + options: { + create: ['<%= clean.siteReport[0] %>'] + } + } + }, + + jshint: { + gruntfile: { + src: 'Gruntfile.js', + options: { + jshintrc: '.jshintrc' + } + }, + lib: { + src: ['lib/**/*.js'], + options: { + jshintrc: 'lib/.jshintrc' + } + }, + test: { + src: ['test/**/*.js'], + options: { + jshintrc: 'test/.jshintrc' + } + }, + reportGruntfile: { + src: 'Gruntfile.js', + options: { + reporter: 'checkstyle', + reporterOutput: '<%= clean.reportLint[0] %>/jshint-gruntfile.xml', + jshintrc: '.jshintrc' + } + }, + reportLib: { + src: 'lib/**/*.js', + options: { + reporter: 'checkstyle', + reporterOutput: '<%= clean.reportLint[0] %>/jshint-lib.xml', + jshintrc: 'lib/.jshintrc' + } + }, + reportTest: { + src: 'test/**/*.js', + options: { + reporter: 'checkstyle', + reporterOutput: '<%= clean.reportLint[0] %>/jshint-test.xml', + jshintrc: 'test/.jshintrc' + } + } + }, + + watch: { + gruntfile: { + files: '<%= jshint.gruntfile.src %>', + tasks: ['jshint:gruntfile'] + }, + lib: { + files: '<%= jshint.lib.src %>', + tasks: ['jshint:lib', 'test'] + }, + test: { + files: '<%= jshint.test.src %>', + tasks: ['jshint:test', 'test'] + } + }, + + mochaTest: { + unit: { + options: { + ui: 'bdd', + reporter: 'spec' + }, + src: [ + 'tools/mocha-globals.js', + '<%= jshint.test.src %>' + ] + }, + unitReport: { + options: { + ui: 'bdd', + reporter: 'tap', + quiet: true, + captureFile: '<%= clean.reportTest[0] %>/unit_tests.tap' + }, + src: [ + 'tools/mocha-globals.js', + '<%= jshint.test.src %>' + ] + } + }, + + githubPages: { + target: { + options: { + commitMessage: 'UPDATE Doc' + }, + src: 'site' + } + }, + + dox: { + options: { + title: 'fiware-device-simulator documentation' + }, + files: { + src: ['<%= jshint.lib.src %>'], + dest: '<%= clean.siteDoc[0] %>' + } + }, + + exec: { + istanbul: { + cmd: + 'bash -c "./node_modules/.bin/istanbul cover --root lib/ --dir <%= clean.siteCoverage[0] %>' + + ' --preload-sources -- \\"`npm root -g`/grunt-cli/bin/grunt\\" test && ' + + './node_modules/.bin/istanbul report --dir <%= clean.siteCoverage[0] %> text-summary"' + }, + istanbulCobertura: { + cmd: + 'bash -c "./node_modules/.bin/istanbul report --dir <%= clean.siteCoverage[0] %> cobertura && ' + + 'mv <%= clean.siteCoverage[0] %>/cobertura-coverage.xml <%= clean.reportCoverage[0] %>"' + }, + githubPagesInit: { + cmd: 'bash tools/github-pages.sh' + } + }, + + plato: { + options: { + jshint: grunt.file.readJSON('.jshintrc') + }, + lib: { + files: { + '<%= clean.siteReport[0] %>': '<%= jshint.lib.src %>' + } + } + }, + + githooks: { + all: { + 'pre-commit': 'lint test' + } + }, + + gjslint: { + options: { + reporter: { + name: 'console' + }, + flags: [ + '--flagfile .gjslintrc' //use flag file' + ], + force: false + }, + gruntfile: { + src: '<%= jshint.gruntfile.src %>' + }, + lib: { + src: '<%= jshint.lib.src %>' + }, + test: { + src: '<%= jshint.test.src %>' + }, + report: { + options: { + reporter: { + name: 'gjslint_xml', + dest: '<%= clean.reportLint[0] %>/gjslint.xml' + }, + flags: [ + '--flagfile .gjslintrc' + ], + force: false + }, + src: ['<%= jshint.gruntfile.src %>', '<%= jshint.lib.src %>', '<%= jshint.test.src %>'] + } + } + }); + + // These plugins provide necessary tasks. + grunt.loadNpmTasks('grunt-contrib-clean'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-mocha-test'); + grunt.loadNpmTasks('grunt-github-pages'); + grunt.loadNpmTasks('grunt-exec'); + grunt.loadNpmTasks('grunt-plato'); + grunt.loadNpmTasks('grunt-gjslint'); + grunt.loadNpmTasks('grunt-dox'); + grunt.loadNpmTasks('grunt-mkdir'); + grunt.loadNpmTasks('grunt-githooks'); + + grunt.loadTasks('tools/tasks'); + + grunt.registerTask('init-pages', ['exec:githubPagesInit']); + + grunt.registerTask('test', 'Run tests', ['mochaTest:unit']); + + grunt.registerTask('test-report', 'Generate tests reports', + ['clean:reportTest', 'mkdir:reportTest', 'mochaTest:unitReport']); + + grunt.registerTask('coverage', 'Print coverage report', + ['clean:siteCoverage', 'exec:istanbul']); + + grunt.registerTask('coverage-report', 'Generate Cobertura report', + ['clean:reportCoverage', 'mkdir:reportCoverage', 'coverage', 'exec:istanbulCobertura']); + + grunt.registerTask('complexity', 'Generate code complexity reports', ['plato']); + + grunt.registerTask('doc', 'Generate source code JSDoc', ['dox']); + + grunt.registerTask('lint-jshint', 'Check source code style with JsHint', + ['jshint:gruntfile', 'jshint:lib', 'jshint:test']); + + grunt.registerTask('lint-gjslint', 'Check source code style with Google Closure Linter', + ['gjslint:gruntfile', 'gjslint:lib', 'gjslint:test']); + + grunt.registerTask('lint', 'Check source code style', ['lint-jshint', 'lint-gjslint']); + + grunt.registerTask('lint-report', 'Generate checkstyle reports', + ['clean:reportLint', 'mkdir:reportLint', 'jshint:reportGruntfile', 'jshint:reportLib', + 'jshint:reportTest', 'gjslint:report']); + + grunt.registerTask('site', ['doc', 'coverage', 'complexity', 'githubPages']); + + grunt.registerTask('init-dev-env', ['githooks']); + + // Default task. + grunt.registerTask('default', ['lint-jshint', 'test']); + +}; diff --git a/README.md b/README.md new file mode 100644 index 0000000..d8ad6c7 --- /dev/null +++ b/README.md @@ -0,0 +1,2124 @@ +# FIWARE Device Simulator + +* [Introduction](#introduction) +* [FIWARE Device Simulator CLI tool](#fiware-device-simulator-cli-tool) + * [Simulation configuration file](#simulation-configuration-file) +* [FIWARE Device Simulator library](#fiware-device-simulator-library) +* [Development documentation](#development-documentation) + * [Project build](#project-build) + * [Testing](#testing) + * [Coding guidelines](#coding-guidelines) + * [Continuous testing](#continuous-testing) + * [Source code documentation](#source-code-documentation) + * [Code coverage](#code-coverage) + * [Code complexity](#code-complexity) + * [PLC](#plc) + * [Development environment](#development-environment) + * [Site generation](#site-generation) +* [Contact](#contact) + +## Introduction + +The FIWARE Device Simulator is a tool to generate data for the FIWARE ecosystem in the shape of entities and its associated attributes. + +The FIWARE Device Simulator is composed of 2 main elements: + +1. A **CLI tool** to run FIWARE-compatible devices. +2. The **device simulator library** itself. + +Let's cover each one of them. + +[Top](#top) + +## FIWARE Device Simulator CLI tool + +The FIWARE Device Simulator CLI tool is located in the [./bin](./bin) directory and it is called [`fiwareDeviceSimulatorCLI`](./bin/fiwareDeviceSimulatorCLI.js). + +Before running the FIWARE Device Simulator CLI tool, you have to resolve and to download the Node package dependencies at least once. To do it, execute: + +```bash +npm install +``` + +To run the FIWARE Device Simulator CLI tool just run: + +```bash +./bin/fiwareDeviceSimulatorCLI +``` + +This will show the FIWARE Device Simulator CLI tool help which will guide you to learn how to properly use it: + +``` +Usage: fiwareDeviceSimulatorCLI [options] + + Options: + + -h, --help output usage information + -V, --version output the version number + -c, --configuration Absolute or relative path (from the root of the Node application) to the device simulator configuration file (mandatory) + -d, --delay The delay in milliseconds for future updates when the number of update requests waiting for response is bigger than the value set with the -m option (defaults to 1 second if -m is set and -d is not set, it has no effect if -m is not set) + -m, --maximumNotRespondedRequests The maximum number of update requests not responded before applying delay + -p, --progressInfoInterval The interval in milliseconds to show progress information for fast-forward simulation + -s, --silent No progress information will be output by the console + -w, --dweet Configuration information to publish the simulation progress information in dweet.io (it must be an object containing a 'name' property for the dweet thing and optionally an 'apiKey' property in case the thing is locked, for example: -w "{\"name\": \"fds:Test:001\"}") + -l, --timeline The start date to begin the fast-forward simulation (if not set, the current time will be used) + -t, --to The end date to stop the fast-forward simulation (if not set, the fast-forward will progress to the future and never end) +``` + +As you can see, the FIWARE Device Simulator CLI tool requires the path to a simulation configuration file detailing the simulation to be run. This simulation configuration file is the cornerstone of the FIWARE Device Simulator tool and is detailed in the next section. + +On the other hand, the FIWARE Device Simulator CLI tool supports a fast-forward simulation functionality which makes it possible to run the simulation from some date to certain date (in the past or in the future). Time will move forward automatically from the `from` date to the `to` date updating entities or sending device updates accordingly. + +In the case of fast-forward simulations, it is possible to control the number of requests sent to the Context Broker per second using the `-m` and `-d` options. Usually setting the `-m` is more than enough. Increase the value passed to the `-m` option to increase the throughput, in case the Context Broker or IoT Agents you are sending requests to is able to deal with it. + +When running fast-forward simulations which make use of the `attribute-function-interpolator` using the value of attributes hosted by the Context Broker instance, it is recommended to pass `0` as the `-m` option. This will assure that new updates will not be sent to the Context Broker until the previous one has been completed and the value of the attributes associated to this previous request have been updated by the Context Broker. This is important in case of updates where the attribute values depend on the values updated by previous requests. + +In case you would like to get information about the evolution of the simulation, use the `-p` option passing the number of milliseconds between progress information updates. Set the `-s` option if you do not want the progress information to be output by the console. You can use the `-w` option in case you want to "dweet" the simulation progress information to visualize it directly in [dweet.io](https://dweet.io) (using the `name` you set to your "dweeting thing") or in [Freeboard.io](https://freeboard.io) (please, feel free to clone the [FIWARE Device Simulator Dashboard](https://freeboard.io/board/3_oiiw) updating its Dweet data source to your "dweeting thing"'s `name` to visualize your simulation progress information or use the [FIWARE Device Simulator Dashboard (extended)](https://freeboard.io/board/VLtliw) also updating its Dweet data source to your "dweeting thing"'s `name` in case you want to also visualize the evolution of the values assigned to some entities' attributes (we have included a couple of entities with a couple of attributes each as an example, please update their associated data sources accordingly)). + +Combined with the previous `-p` option previously described, it is also possible to visualize your "simulations DNA", this is the attribute and entity updates your simulation schedules for a future execution. To do it, please follow these steps: + +1. Once authenticated in Google, visit the [Google Sheets](https://docs.google.com/spreadsheets) website. +2. Create a new Google Sheets document clicking on the `+` button on the lower right area of the page. +3. The URL of this new Google Sheet document will be something such as: https://docs.google.com/spreadsheets/d/1SvLfPobfq8VM0eJZweEIty8SosEs8ODmarV8EwmZPks/edit#gid=0 Please, take a note of the Google Sheet document key which is between the `https://docs.google.com/spreadsheets/d/` and `/edit#gid=0` sections. +4. Share this Google Sheet document and make it accessible via link for edition or writing, not only read access, clicking on the `Share` button on the upper right area of the page. +5. Navigate to your [Google Developer Console project section](https://console.developers.google.com/iam-admin/projects). +6. Create a new project called, for example: `FIWARE Device Simulator`. You can choose any other name, of course. Once the new project is created, the page will navigate to your new project's console. +7. Search for the `Google Sheets API`, click on it and enabled it clicking on the `ENABLE` link. +8. Click on the `Go to Credentials` button on the upper right area of the page. +9. In the `Where will you be calling the API from?` selection, select the `Web server (e.g. node.js, Tomcat)` option. +10. From the `What data will you be accessing?` options, enable the `Application data (access data belonging to your own application)` option. +11. From the `Are you using Google App Engine or Google Compute Engine?` options, enable the `No, I'm not using them.` unless you are using them to run the simulator. +12. Click on the `What credentials do I need?` button. +13. In the `Service account name` input field, type a service name, for example: `FIWARE Device Simulator`. You can choose any other name, of course. +14. In the `Role` selection, select the role. If you are the owner of the Google Sheet, select `Project` -> `Owner`. If you are not the owner of the Google Sheet, select `Project` -> `Editor`. +15. In the `Key type` section, enable the `JSON (recommended)` options if not currently enabled. +16. Click on the `Continue` button. A JSON file with your credentials will start downloading. Save it to some secure place since you will need it to run the simulations to be able to visualize the scheduled updates. +17. Clone the [FIWARE Device Simulator Dashboard (timeline)](https://freeboard.io/board/kUdbXw). +18. Update its Dweet data source to your "dweeting thing"'s `name`. The one which will be passed in the `-w` option of the command line tool. For example: `fds:Test:1234`. +19. Run the simulator comand line tool using the `-p`, `-w`, and `-l` options passing the data you fetched throughout the previous steps (mainly, the Dweet thing name, the Google Sheet document key and the path to your Google credentials), for example: `./bin/fiwareDeviceSimulatorCLI -c simulation-5s-2-attributes.json -p 5000 -w "{\"name\": \"fds:Test:1234\"}" -s -l "{\"sheetKey\": \"1SvLfPobfq8VM0eJZweEIty8SorEs8ODmarV8EwmZPks\", \"credentialsPath\": \"FIWARE Device Simulator-f11816817451.json\", \"dateFormat\": \"dd/mm/yyyy HH:MM:ss\", \"refreshInterval\": 15000}"`. Notice that as part of the timeline option a data format is included. This is needed since Google Sheets uses distinct formats depending on the concrete locale. To check the one you should use, navigate to any Google Sheet document, click on the `Format` menu entry, hover the `Number` menu item and check the `Date time` format you should use according to this mask options: https://github.com/felixge/node-dateformat#mask-options. +20. Your simulation scheduled updates will appear in the `SCHEDULED UPDATES TIMELINE` widget. Hover over the blue bars to get further information about the scheduled update. It will include the date and time when this update is scheduled, the entity name and the attribute names which will be updated. + +The Google Sheet document is only used to store the scheduled updates and can be reused amongst distinct simulation runs. If you want to run seveval simulations at the same time with scheduled updates timeline visualization, you will need a concrete Google Sheet document for each one of them. No need to say that you can reuse the same Google credentials to update distinct Google Sheet documents in case those credentials have the permissions to do so and the target Google Sheet document is shared by link as mentioned in 4. + +Since the FIWARE Device Simulator CLI tool uses the [logops](https://www.npmjs.com/package/logops) package for logging, the logging level can be set using the `LOGOPS_LEVEL` environment variable. On the other hand, the logging format can be set using the `LOGOPS_FORMAT` environment variable. + +**NOTE:** There is an [issue](https://github.com/abbr/deasync/issues/48) in the [`deasync`](https://www.npmjs.com/package/deasync) Node package which seems to break fast-forward simulations which make use of the `attribute-function-interpolator` in combination with entity attribute references (this is, `${{}{}}` provoking a segmentation fault error. A workaround to avoid this issue is the use of global state variables updating the value of the attributes which need to be referenced and assigning their value to global state variables which make it possible to access them from any other `attribute-function-interpolator` instance. + +[Top](#top) + +### Simulation configuration file + +The simulation configuration file is a JSON-formatted text file detailing the characteristics of the device simulation which will be run. + +An example simulation configuration file is shown next to give you a glimpse of its shape. After it, the accepted properties and options are properly detailed. + +```json + { + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword", + "retry": { + "times": 10, + "interval": 1000 + } + }, + "iota": { + "ultralight": { + "api_key": "1ifhm6o0kp4ew7fi377mpyc3c", + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + }, + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883, + "user": "mqttUser", + "password": "mqttPassword" + } + }, + "json": { + "api_key": "83ut64ib3gzs6km6izubjyenu", + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + }, + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883, + "user": "mqttUser", + "password": "mqttPassword" + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "date", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 3600})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "schedule": { + "start": "2016-10-19T10:00:00Z", + "end": "2016-10-19T11:00:00Z", + "rule": "*/5 * * * * *" + }, + "entity_name": "EntityName2", + "entity_type": "EntityType2", + "active": [{ + "name": "active1", + "type": "geo:json", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }, { + "schedule": "*/1 * * * * *", + "name": "active2", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "count": "3", + "entity_type": "EntityType3", + "schedule": "*/1 * * * * *", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,100],[24,0]], \"return\": {\"type\": \"float\"}})" + }, { + "schedule": "*/5 * * * * *", + "name": "active2", + "type": "number", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "percentage", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]])" + }, { + "name": "static2", + "type": "status", + "value": "text-rotation-interpolator({\"units\": \"seconds\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[50,\"COMPLETED\"],[50,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }] + }], + "devices": [{ + "schedule": "once", + "protocol": "UltraLight::HTTP", + "device_id": "DeviceId1", + "attributes": [{ + "object_id": "a1", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 3600})" + }] + }, { + "schedule": "*/5 * * * * *", + "protocol": "UltraLight::JSON", + "device_id": "DeviceId2", + "api_key": "1ifdjdo0kkd7w77du77mpjd78", + "attributes": [{ + "object_id": "a1", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }, { + "schedule": "*/1 * * * * *", + "object_id": "a2", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }, { + "count": "5", + "schedule": "*/1 * * * * *", + "entity_type": "DeviceType3", + "protocol": "UltraLight::MQTT", + "api_key": "ag235jdo0kkhd367du77mpgs54", + "attributes": [{ + "object_id": "a1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,100],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/5 * * * * *", + "object_id": "a2", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]])" + }] + }] + } +``` + +The simulation configuration file accepts the following JSON properties or entries: + +* **exports**: The FIWARE Device Simulation provides a templating mechanism to avoid repeating text into simulation configuration files as well as to facilitate the edition of these files. More information about this templating mechanism just after the description of the rest of the properties which may be used in a simulation configuration file. +* **globals**: An object including the global state variables and their initial values to be shared amongst executions of the `attribute-function-interpolator` no matter their specification. This property is related to the `attribute-function-interpolator` detailed below and it will become much clearer once the reader reaches that section. +* **require**: An array of names and/or paths of NPM packages to be required before running the simulation. This property is related to the `attribute-function-interpolator` detailed below. It makes it possible to `require()` these NPM packages directly in the code associated to these `attribute-function-interpolator`. +* **domain**: Includes information about the service and subservice (i.e., service path) to use in the requests. It is mandatory in case any `entities` are included in the simulation configuration (see below). + * **service**: The service to use in the requests. + * **subservice**: The subservice (i.e., service path) to use in the requests. +* **contextBroker**: Includes information about the context broker where the data will be stored. It is mandatory in case any `entities` are included in the simulation configuration (see below) and no `subscriber` configuration information is included (see below). + * **protocol**: The protocol the Context Broker is expecting the requests to be sent by (or more concretely of the PEP protecting the access to the Context Broker API). + * **host**: The host machine name or IP address where the Context Broker is running (or more concretely of the PEP protecting the access to the Context Broker API). + * **port**: The port where the Context Broker host machine is listening for API requests (or more concretely of the PEP protecting the access to the Context Broker API). + * **ngsiVersion**: The NGSI version to be used in the requests sent to the Context Broker. Currently, versions `1.0` and `2.0` are supported. +* **subscriber**: Includes information about the subscriber where the data will be notified. It is mandatory in case any `entities` are included in the simulation configuration (see below) and no `contextBroker` configuration information is included. Note that in case of including `contextBroker` and `subscriber` configuration information, the `contextBroker` will prevail over the `subscriber` one and no notifications will be sent to the configured subscriber. + * **protocol**: The protocol the subscriber is expecting the notification requests to be sent to. + * **host**: The host machine name or IP address where the subscriber is running. + * **port**: The port where the subscriber host machine is listening for notification requests. + * **path**: The path where the subscriber host machine is listening for notification requests. + * **ngsiVersion**: The NGSI version to be used in the notification requests sent to the subscriber. Currently, only version `1.0` is supported. +* **authentication**: Includes information about the Identity Service to get tokens to be included in the Context Broker requests. Optional (authentication tokens will only be requested if the `authentication` information is included). + * **provider**: The Identity Service provider from which the authorization tokens will be requested. Accepted values are: `keystone` (to request tokens for the Telefónica IoT Platform) and `fiware-lab` (to request tokens for the [FIWARE Lab cloud infrastructure](https://account.lab.fiware.org/)). + * **protocol**: The protocol the Identity Service is expecting the requests to be sent by. + * **host**: The host machine or IP where the Identity Service is running. + * **port**: The port where the Identity Service is listening for requests. + * **user**: The user to be used in the authorization token requests for the provided service and subservice. + * **password**: The password to be used in the authorization token requests for the provided service and subservice. + * **retry**: Retry mechanism in case an error occurs when requesting the authentication token. It is based on the [`async.retry()`](http://caolan.github.io/async/docs.html#.retry) function. It is an object including the following properties: + * **times**: The number of attempts to make before giving up and ending the simulation. Mandatory if the `retry` property is included. + * **interval**: The time to wait between retries, in milliseconds. Mandatory if the `retry` property is included. +* **iota**: Includes information about the IoT Agents which will be used for the devices updates. It is mandatory if a `devices` property describing devices is included in the simulation configuration. + * **ultralight**: Includes information about the configuration of the UltraLight IoT Agents. It is mandatory if a `devices` property describing UltraLight devices (`protocol` property starting with `UltraLight::`) is included in the simulation configuration). + * **api_key**: The API key to be used when updating UltraLight devices whose API key is not specified at a local level (see below). Mandatory if at least one UltraLight device is included whose API key is not specified at a local level. + * **http**: Includes information about the configuration of the HTTP binding for the UltraLight protocol. It is mandatory if a `devices` property describing UltraLight HTTP devices (`protocol` property equal to `UltraLight::HTTP`) or UltraLight JSON devices ((`protocol` property equal to `UltraLight::JSON`)) is included in the simulation configuration). + * **protocol**: The protocol the UltraLight HTTP IoT Agent is expecting the requests to be sent by. + * **host**: The host machine where the UltraLight HTTP IoT Agent will be listening for requests. + * **port**: The port where the UltraLight HTTP IoT Agent will be listening for requests. + * **mqtt**: Includes information about the configuration of the MQTT binding for the UltraLight protocol. It is mandatory if a `devices` property describing UltraLight MQTT devices (`protocol` property equal to `UltraLight::MQTT`) is included in the simulation configuration). + * **protocol**: The transport protocol used. Possible values include: `mqtt`, `mqtts`, `tcp`, `tls`, `ws`, `wss`. + * **host**: The host machine where the UltraLight MQTT IoT Agent will be listening for requests. + * **port**: The port where the UltraLight MQTT IoT Agent will be listening for requests. + * **user**: The user to use for MQTT authenticated communications. Optional. + * **password**: The password to use for MQTT authenticated communications. Optional. + * **json**: Includes information about the configuration of the JSON IoT Agents. It is mandatory if a `devices` property describing UltraLight devices (`protocol` property starting with `JSON::`) is included in the simulation configuration). + * **api_key**: The API key to be used when updating JSON devices whose API key is not specified at a local level (see below). Mandatory if at least one JSON device is included whose API key is not specified at a local level. + * **http**: Includes information about the configuration of the HTTP binding for the JSON protocol. It is mandatory if a `devices` property describing JSON HTTP devices (`protocol` property equal to `JSON::HTTP`) is included in the simulation configuration). + * **protocol**: The protocol the JSON HTTP IoT Agent is expecting the requests to be sent by. + * **host**: The host machine where the JSON HTTP IoT Agent will be listening for requests. + * **port**: The port where the JSON HTTP IoT Agent will be listening for requests. + * **mqtt**: Includes information about the configuration of the MQTT binding for the JSON protocol. It is mandatory if a `devices` property describing JSON MQTT devices (`protocol` property equal to `JSON::MQTT`) is included in the simulation configuration). + * **protocol**: The transport protocol used. Possible values include: `mqtt`, `mqtts`, `tcp`, `tls`, `ws`, `wss`. + * **host**: The host machine where the JSON MQTT IoT Agent will be listening for requests. + * **port**: The port where the JSON MQTT IoT Agent will be listening for requests. + * **user**: The user to use for MQTT authenticated communications. Optional. + * **password**: The password to use for MQTT authenticated communications. Optional. +* **entities**: Information about the entities to be updated during this concrete simulation. + * **schedule**: Cron-style schedule (according to [https://www.npmjs.com/package/node-schedule#cron-style-scheduling](https://www.npmjs.com/package/node-schedule#cron-style-scheduling)) to schedule the updates of the entity. For example: `*/5 * * * * *` will update the attributes of the entity for which there is no `schedule` information, see below, every 5 seconds, whereas `0 0 0 * * *` will update the attributes of the entity for which there is no `schedule` information, see below, at 00:00 of every first day of each month. A very useful tool for dealing with cron-style schedules can be found at [http://crontab.guru/](http://crontab.guru/). An additional accepted value `once` is included to force the update of the entity only once at the beginning of the simulation. The `schedule` property also accepts an object including starting and ending dates for the schedule such as: `"schedule": {"start": "2016-10-19T10:47:00Z", "end": "2016-10-19T11:47:00Z", "rule": "*/5 * * * * *"}`. The previous `schedule` will only be effective from `2016-10-19T10:47:00Z` to `2016-10-19T11:47:00Z`. + * **entity_name**: The name of the entity. The `entity_name` should not be provided if the `count` is provided. + * **count**: The number of entities to simulate and update. For example, if a value of 3 is provided as the `count` property, 3 entities with names `:1`, `:2` and `:3` will be created and updated accordingly substituting the `` by its provided value (see just below) and according to its active and static attribute simulation specification (see below). + * **entity_type**: The type of the entity. + * **active**: List of attributes which will be updated according to their `schedule`s or the main entity `schedule` and the provided `value` (see just below). + * **schedule**: The schedule by which this attribute should be updated. See the `schedule` property at the entity level above. It is an optional property. In case it is not specified, the entity level `schedule` property will be used. + * **name**: The name of the attribute. + * **type**: The type of the attribute. + * **value**: The value of the attribute. This is the property which provides flexibility and realism to the FIWARE Device Simulator tool. It accepts static values (such as numbers (i.e., `123`), text (i.e., `the attribute value`), arrays (i.e., `[1, 2, 3]`), JSON objects (i.e., `{"key": "value"}`), etc.) as well as interpolator function specifications which the FIWARE Device Simulator tool will use to generate the final values. The supported interpolator function specifications are: + 1. **`date-increment-interpolator`**: It returns dates in UTC format. On the other hand, it accepts a JSON object including 2 properties: 1) `origin` (the date from when the date will be incremented or `now` for the current date when the value is interpolated) and 2) `increment` (the number of seconds the origin should incremented by. For example, a date increment interpolator specification such as: `{\"origin\": \"now\", \"increment\": 86400}` will return the current hour incremented in `86400` seconds, this is, 1 day, when the interpolated value is requested to be updated. A valid attribute value using the `date-increment-interpolator` is: `date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})`. + 2. **`multiline-position-interpolator`**: It returns the current position of a mobile object for the current [decimal hour](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) as a GeoJSON geometry of type `Point` including its `coordinates`. On the other hand, it takes an object including the following properties: + * `coordinates`: an array of points, this is, an array of 2 element arrays corresponding to the longitude and the latitude of the points. The connection between this points determine the line or route the mobile object will be traveling. It can be a circular or not circular route (in this case the mobile object will start the route from the beginning once the end is reached). + * `speed`: an object including the following properties: + * `value`: a number corresponding to the speed at which the mobile object will be moving + * `units`: a string corresponding to the speed units. Valid values are `km/h` (kilometers per hour) and `mi/h` (miles per hour). + * `time`: an object including the following properties: + * `from`: a number corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) from which the mobile object will be moving. If the current [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) is before the `from` one, the interpolated position will be the starting point. + * `to`: a number corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) until which the mobile object will be moving. If the current [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) is after the `to` one, the traveled distance will be calculated until this one. + * A valid attribute value using the `multiline-position-interpolator` is: `"multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})"`. + 3. **`time-linear-interpolator`**: It returns float or integer values depending on the configuration. On the other hand, it accepts an object including the following properties: + * `spec`: An array of 2 elements arrays corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) of the day and its specified value. For example, a time linear interpolator specification such as: `[[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]]` will return `0` if the interpolated value is requested at the `00:00` hours, `0.25` if the interpolated value is requested at the `20:00` hours and `0.125` if the interpolated value is requested at the `10:00` hours according to a linear interpolation between `0` and `20` as the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) in the x-axis. This is the reason why a `time-linear-interpolator` is typically specified providing values for the `0` and `24` values in the x-axis according to the available [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) in any day. + * `return`: It is an object including the following properties: + * `type`: The interpolator return type. It can take any of the following values: `float` or `integer`. + * `rounding`: If the type is equal to `integer`, the rounding mechanism must also be specified. It can take any of the following values: `ceil`, `floor` or `round`. + * A valid attribute value using the `time-linear-interpolator` is: `"time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})"`. + * It is important to note that since this interpolator is a linear one (more concretely it leans on the [`linear-interpolator` package](https://www.npmjs.com/package/linear-interpolator)), if some of the entries for the starting (0, 1, 2, etc.) or ending hours (22, 23, 24) are missing, the behavior may not be the one expected. Let's see it with a concrete example: `time-linear-interpolator({\"spec\": [[8,0],[12,100],[22,0]], \"return\": {\"type\": \"float\"}})`, in this case and due to its linear nature values for decimal hours from 0 to 8 will be negative (linearly), values for decimal hours from 8 to 12 will be between 0 and 100 (linearly), values for decimal hours from 12 to 22 will be between 100 and 0 (linearly), and again values for decimal hours from 22 to 24 will be negative (linearly). + 4. **`time-random-linear-interpolator`**: It returns float or integer values depending on the configuration. On the other hand, it accepts an object including the following properties: + * `spec`: An array of 2 elements arrays corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) of the day and its specified value. + * The first element of the array or decimal hours may include the `random()` directive. For example, a random time linear interpolator specification such as: `[[random(0,1),0],[random(23,24),100]]` will behave as a `time-linear-interpolator` where the random part will be substituted for a concrete random decimal hours value each time this interpolator is invoked. For example, subsequent invocations of the previous interpolator may end up behaving such as the following `time-linear-interpolator`s: `[0.410237338161096,0],[23.268972319317982,100]]`, `[0.192138821585104,0],[23.442964296089485,100]]`, `[0.223540030419827,0],[23.614114402793348,100]]`, etc. + * A valid attribute value using the `time-random-linear-interpolator` is: `"random-time-linear-interpolator({\"spec\": [[random(12,13),0],[random(20,21),100]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})"`. + * It is important to note that since this interpolator is a linear one (more concretely it leans on the [`linear-interpolator` package](https://www.npmjs.com/package/linear-interpolator)), if some of the entries for the starting (0, 1, 2, etc.) or ending hours (22, 23, 24) are missing, the behavior may not be the one expected. Let's see it with a concrete example: `random-time-linear-interpolator({\"spec\": [[random(12,13),10],[random(20,21),100]], \"return\": {\"type\": \"float\"}})`, in this case and due to its linear nature values for decimal hours from 0 to 12 will be below 10 (linearly, including the randomness factor it may go beyond the 12 decimal hour) including negative values, values for decimal hours from the 13 to the 20 will be between 0 and 100 (linearly and according to the randomness factor it may go before the 13 and beyond the 20 decimal hours), values for decimal hours from 21 to 24 will be greater than 100 (linearly and according to the randomness factor it may be before the 21 decimal hour). + * The second element of the array or specified value may include the `random()` directive. For example, a time random linear interpolator specification such as: `[[0,0],[20,random(0.25,0.50)],[24,1]]` will return `0` if the interpolated value is requested at the `00:00` hours, a random number bigger than `0.25` and smaller than `0.50` if the interpolated value is requested at the `20:00` hours and the corresponding interpolated value between the previous y-axis values if it is requested at a time between the `00:00` hours and the `20:00` hours. This is the reason why a `time-random-linear-interpolator` is typically specified providing values for the `0` and `24` values in the x-axis according to the available [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) in any day. + * A valid attribute value using the `time-random-linear-interpolator` is: `"time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,100],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})"`. + * It is important to note that since this interpolator is a linear one (more concretely it leans on the [`linear-interpolator` package](https://www.npmjs.com/package/linear-interpolator)), if some of the entries for the starting (0, 1, 2, etc.) or ending hours (22, 23, 24) are missing, the behavior may not be the one expected. Let's see it with a concrete example: `"time-random-linear-interpolator({\"spec\": [[8,random(0,10)],[12,random(90,100)],[22,random(0,10)]], \"return\": {\"type\": \"float\"}})"`, in this case and due to its linear nature values for decimal hours from 0 to 8 will be below 10 (linearly including the randomness factor) including negative values, values for decimal hours from 8 to 12 will be between 0 and 100 (linearly and according to the randomness factor), values for decimal hours from 12 to 22 will be between 100 and 0 (linearly and according to the randomness factor), and again values for decimal hours from 22 to 24 will be below 10 (linearly and according to the randomness factor) including negative values. + * The `random()` directive can be used in the first element of the array specification, in the second one or in both in which case the behavior is the combined one. Consequently, `"time-random-linear-interpolator({\"spec\": [[random(0,1),0],[20,random(25,45)],[random(21,22),random(50,75)],[22,100],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})"` is a perfectly valid `time-random-linear-interpolator`. + * `return`: It is an object including the following properties: + * `type`: The interpolator return type. It can take any of the following values: `float` or `integer`. + * `rounding`: If the type is equal to `integer`, the rounding mechanism must also be specified. It can take any of the following values: `ceil`, `floor` or `round`. + 5. **`time-step-after-interpolator`**: It returns float values. On the other hand, it accepts an array of 2 elements arrays corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) of the day and its specified value. For example, a time step after interpolator specification such as: `[[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]]` will return `0` if the interpolated value is requested at the `00:00` hours, `0.25` if the interpolated value is requested at the `20:00` hours and `0` if the interpolated value is requested at any time between the `00:00` hours and the `20:00` hours (notice it is called "step-after"). This is the reason why a `time-step-after-interpolator` is typically specified providing values for the `0` and `24` values in the x-axis according to the available [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) in any day. A valid attribute value using the `time-step-after-interpolator` is: `time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]])`. + 6. **`time-step-before-interpolator`**: It returns float values. On the other hand, it accepts an array of 2 elements arrays corresponding to the [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) of the day and its specified value. For example, a time step before interpolator specification such as: `[[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]]` will return `0` if the interpolated value is requested at the `00:00` hours, `0.25` if the interpolated value is requested at the `20:00` hours and `0.25` if the interpolated value is requested at any time between the `00:00` hours and the `20:00` hours (notice it is called "step-before"). This is the reason why a `time-step-before-interpolator` is typically specified providing values for the `0` and `24` values in the x-axis according to the available [decimal hours](https://en.wikipedia.org/wiki/Decimal_time#Decimal_hours) in any day. A valid attribute value using the `time-step-before-interpolator` is: `time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,1],[24,1]])`. + 7. **`text-rotation-interpolator`**: It returns a string from a set of possible values with support for probabilistic occurrences of them. On the other hand, it accepts an object including the following properties: + * `units`: It is a string which affects the `text` property detailed below. It accepts the following values: `seconds`, `minutes`, `hours`, `days` (day of the week), `dates` (day of the month), `months` and `years`. + * `text`: It is an array of 2 elements arrays. The first element is the number of `seconds` (from 0 to 59), `minutes` (from 0 to 59), `hours` (from 0 to 23), `days` (from 0 to 6), `dates` (from 1 to 31), `months` (from 0 to 11) and `years` (full year) (according to the `units` property) from which the specified text will be returned for the current date and time. The second element can be a string corresponding to the text to be returned or an array of 2 elements arrays. The first element of this second 2 elements array is the probability (from 0 to 100) of the occurrence of the text specified as the second element of the array. The addition of the first elements array must be 100. + * A valid attribute value using the `text-rotation-interpolator` is: `"text-rotation-interpolator({\"units\": \"seconds\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[50,\"COMPLETED\"],[50,\"ERROR\"]]],[45,\"REMOVED\"]]})"`. For example, according to this text rotation interpolation specification, if the current time seconds is between 0 and 15 it will return the value `PENDING`, if it is between 15 and 30 it will return the value `REQUESTED`, if it is between 30 and 45 it will return the value `COMPLETED` with a probability of 50% and `ERROR` with a probability of 50%. + 8. **`attribute-function-interpolator`**: It returns the result of the evaluation of some Javascript code. This code may include references to any entity's attributes values stored in the Context Broker. This interpolator accepts a string (properly escaped) with the Javascript code to evaluate. In this Javascript code, references to entity's attribute values may be included using the notation: `${{:#:}{}}`, substituting the ``, `` and ``, including the `:#:` separator) is optional and can be omitted, in which case the entity type will not be considered when retrieving the entity and the corresponding attribute value from the Context Broker. + * A valid attribute value using the `attribute-function-interpolator` is: `"attribute-function-interpolator(${{Entity:001}{active:001}} + Math.pow(${{Entity:002}{active:001}},2))"`. + * An advanced feature incorporated to the `attribute-function-interpolator` is the possibility to `require` packages directly in the Javascript code to be evaluated. Obviously, all the capabilities related to referencing entity attributes are supported too in this case. To use it, please follow the next steps: + 1. Include a `require` property in your simulation configuration file setting its value to an array including the names and/or paths of the NPM packages you will be using in any of your `attribute-function-interpolator` interpolators. These packages will be required before proceding with the simulation and made available to your `attribute-function-interpolator` code which uses them. For example: `"require": ["postfix-calculate"]`. + 2. The result of the evaluation of your code should be assigned to the `module.exports` property (this is due to the fact that this functionality leans on the [`eval` NPM package](https://www.npmjs.com/package/eval) which imposes this restriction). + * A valid attribute value using this advanced mode of the `attribute-function-interpolator` is: `"attribute-function-interpolator(var postfixCalculate = require('postfix-calculate'); module.exports = postfixCalculate('${{Entity:001}{active:001}} 1 +');)"`, where the result of the evaluation (this is, the value assigned to `module.exports`) will be the result of adding 1 to the value of the `active:001` attribute of the `Entity:001` entity, according to the [`postfix-calculate` NPM](https://www.npmjs.com/package/postfix-calculate) functionality. + * Sometimes it is useful to have access to the simulation date (mainly in case of fast-forward simulations (more information about fast-forward simulations below)), for that we inject into the Javascript code of `attribute-function-interpolator`s an object SimulationDate which behaves such as the Javascript `Date` object but "points" to the simulation time and date, this is `new SimulationDate()` returns the current `Date` for the current simulation. It is important to note that the `SimulationDate` object will only be available if you assign the result of your code evaluation to the `module.exports` property. + * A valid attribute value using the possibility to access the current simulation time is: `"attribute-function-interpolator(module.exports = new SimulationDate())"`, where the result of the evaluation (this is, the value assigned to `module.exports`) will be the current simulation date. + * In case you want to maintain state amongst executions of `attribute-function-interpolator` with the same specification (this is, with the same Javascript code to be evaluated), you can do it following the next guidelines: + 1. Include a comment in your `attribute-function-interpolator` Javascript code such as: `/* state: statefulVariable1 = 5, statefulVariable2 = {\"prop1\": \"value1\"}, statefulVariable3 */`, this is a `state:` tag followed by the list of variables you would like the interpolator to maintain as the state. This list is used to inject into your code these variables with the value included after the `=` character or `null` if no value is assigned for the first execution of your Javascript code. + 2. Return the result the evaluation setting it as the value for the `module.exports.result` property. + 3. Return the variables whose state should be maintained between executions of the interpolator as properties of an object assigned to the `module.exports.state` property. + * It is important to note that all the `attribute-function-interpolator` sharing the same specification (this is, your Javascript code) will share the same state. If you do not want this, just slightly change the specification somehow withouth affecting the execution of your code such adding an additional `;` or including a comment. + * A valid attribute value using the possibility to maintain state amongst `attribute-function-interpolator` interpolator executions is: `"attribute-function-interpolator(/* state: counter = 1 */ module.exports = { result: ${{Entity:001}{active:001}} + counter, state: { counter: ++counter }};)"`, where the result of the evaluation (this is, the value assigned to `module.exports.result`) will be the result of adding to the value of the `active:001` attribute of the `Entity:001` entity an increment equal to the times the interpolator has been run. + * Last but not least, we have also incorporated the possibility to share state between distint `attribute-function-interpolator`s, this is, `attribute-function-interpolator`s with distinct associated Javascript code (since if it is the same, the state can be shared "locally" amongs all the instances of the same `attribute-function-interpolator` as previously described). To share state between distinct `attribute-function-interpolator`s no matter their specification or associated Javascript code, follow the next steps: + 1. Assign initial values to the global state variables in the `globals` property of the simulation configuration. For example: `"globals": { "globalVar1": 1, "globalVar2": 2}`. This step is optional and its necessity depends on your specific `attribute-function-interpolator` Javascript code where, obviously, you should not access any non-declared variable. + 2. The variables will be available to be used in all the `attribute-function-interpolator` instances of the simulation. Take into consideration that in case of using not valid variable names in the step 1 above (such as: `global-var-1`), you have to access the variables via the `global` variable, this is, instead of the not valid `global-var-1` variable name, use `global.global-var-1`. + 3. Return the result the evaluation setting it as the value for the `module.exports.result` property. + 4. Return the global state variables whose values you would like to update as properties of the object assigned to `module.exports.state.globals`. The global variables will be updated accordingly and passed to the next `attribute-function-interpolator` being executed. + * A valid attribute value using the possibility to maintain global state between `attribute-function-interpolator` instances (no matter the Javascript code included in them): `"attribute-function-interpolator(module.exports = { result: ${{Entity:001}{active:001}} + globalVar1, state: { globals: { globalVar1: ++globalVar1 } }};)"`, where the result of the evaluation (this is, the value assigned to `module.exports.result`) will be the result of adding to the value of the `active:001` attribute of the `Entity:001` entity an increment equal to the value of the `globalVar1` global state variable, which will be incremented in 1 and passed as incremented to the next execution of an `attribute-function-interpolator` interpolator. + * It is important to note that global state variables (this is, amongst `attribute-function-interpolator` instances no matter their specification or associated Javascript code) and local state variables (this is, amongst `attribute-function-interpolator` instances with the same specification or associated Javascript code) can be combined following the guidelines detailed above. Notice that local state variables will impose over global state variables. This is, if a `attribute-function-interpolator` uses a local state variable with the same name as a global state variable, the local one will preserve and apply. + * A valid attribute value using the possibility to maintain local and global state amongst `attribute-function-interpolator` interpolator executions is: `"attribute-function-interpolator(/* state: counter = 1 */ module.exports = { result: ${{Entity:001}{active:001}} + counter + globalVar1, state: { counter: ++counter, globals: { globalVar1: ++globalVar1 } } };)"`, where the result of the evaluation (this is, the value assigned to `module.exports.result`) will be the result of adding to the value of the `active:001` attribute of the `Entity:001` entity an increment equal to the times the interpolator has been run plus the value of the `globalVar1` state variable (which, on the other hand, is incremented globally in 1 before exiting the evaluation of the Javascript code). + * **NOTE:** There is an [issue](https://github.com/abbr/deasync/issues/48) in the [`deasync`](https://www.npmjs.com/package/deasync) Node package which seems to break fast-forward simulations which make use of the `attribute-function-interpolator` in combination with entity attribute references (this is, `${{}{}}` provoking a segmentation fault error. A workaround to avoid this issue is the use of global state variables updating the value of the attributes which need to be referenced and assigning their value to global state variables which make it possible to access them from any other `attribute-function-interpolator` instance. + * **metadata**: Array of metadata information to be associated to the attribute on the update. Each metadata array entry is an object including 3 properties: + * **name**: The metadata name. + * **type**: The metadata type. + * **value**: The metadata value. As the value of any metadata, all the possible accepted values for attributes (detailed above) can be used including the interpolators. + * **staticAttributes**: List of attributes which will be included in every update of the entity. Static attributes are just like the active attributes previously described with 1 main remarks: they do not include a `schedule` property since the schedule of the updates of the entity and its attributes is determined by the `schedule` property at the active attributes level or the one specified at the entity level. Although staticAttributes may use any of the available interpolators as their `value` property, they typically include fixed values and no any type of interpolation. +* **devices**: Information about the devices to be updated during this concrete simulation. The `devices` entries are just like the previous `entities` entries described above with the following modifications: + 1. Instead of the `entity_name`, a `device_id` has to be specified (in case the `count` property is used, the `device_id` property is set just like the `entity_name` as describe above in the `count` property description). + 2. A `protocol` property has to be set specifying the device protocol. Accepted values are: `UltraLight::HTTP`, `UltraLight::MQTT`, `JSON::HTTP` and `JSON::MQTT`. + 3. No `entity_type` property has to be specified. + 4. An `api_key` property has to be set specifying the API key to be used when updating the device attributes. + 5. Instead of the `active` and `staticAttributes` property, an `attributes` properties has to be included specifying the array of attributes to be updated. At the `attributes` level: + 1. No `name` property has to be specified. Instead the `object_id` has to be set specifying the attribute object (short) identifier. + 2. No `type` property has to be specified. + 3. All the previously describe interpolators can be used in the `value`. + +To avoid repeating over and over again the same text in the simulation configuration files and, mainly, to facilitate editing them, a templating mechanism has been included. This templating mechanism makes it posible to use the `imports()` directive as the value of any property of a simulation configuration JSON file. As a preliminary process before starting the simulation all these `imports()` directives will be resolved and substituted by their concrete values. + +Let's see this `imports()` directive mechanism with an example. The next one is a valid simulation configuration file using the templating mechanism: + +```json +{ + "exports": { + "contextBroker_NGSIv1": { + "protocol": "https", + "host": "1.2.3.4", + "port": 1026, + "ngsiVersion": "1.0" + }, + "every 5 seconds": "*/5 * * * * *", + "autoincrement_1": "attribute-function-interpolator(${{Entity:001}{active:001}} + 1)", + }, + "domain": { + "service": "service", + "subservice": "subservice" + }, + "contextBroker": "import(contextBroker_NGSIv1)", + "authentication": "import(authentication)", + "entities": [ + { + "schedule": "import(every 5 seconds)", + "entity_name": "Entity:001", + "entity_type": "Entity", + "active": [ + { + "name": "active:001", + "type": "Number", + "value": "import(autoincrement_1)" + } + ] + } + ] +} +``` + +For example, the import directives: `import(contextBroker_NGSIv1)`, `import(every 5 seconds)` and `import(autoincrement_1)` will be substituted by the corresponding values declared in the `exports` property of the simulation configuration file, whereas the `import(authentication)` (since it is not declared in the `exports`) property will be `require`d as the file `authentication.json` from the root of the FIWARE Device Simulator application (this is, it is equivalent to `require(${FIWARE_Device_Simulator_Root_Path}/authentication.json))`. + +The previous and preliminary support for importing content into specific parts of the simulation configuration files has been recently extended to support conditional imports. In this case, it is possible to impose conditions which must be satisfied for the import to take place. The format of the conditional imports is the following one: + +```json +"": [ + { + "condition": "${{==}}", + "content": "the-content-to-import-a-string-in-this-case" + }, + { + "condition": "${{==}{==}}", + "content": "the-content-to-import-a-string-in-this-case" + } +] +``` + +As you can see, the templates can now be an array of objects including a `condition` and a `content` properties in which case the import will only take place if the `import()` directive appears inside an entity which satisfies the `==` condition (this is, the `` value satisfies the ``) OR appears inside an attribute which satisfies the `==` condition (this is, the `` value satisfies the ``) inside an entity which satisfies the `==` condition (this is, the `` value satisfies the ``). + +Let's see it in a concrete example. Considering a simulation configuration file such as the following one: + +```json +{ + "exports": { + "every 5 seconds": "*/5 * * * * *", + "parking from 6 to 22": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})", + "now": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "entity-type": [ + { + "content": "ParkingSpot", + "condition": "${{entity_name==pe-moraleja-01-group-0[0-9]:0[0-9]}}" + } + ], + "attribute-type-1": [ + { + "content": "Text", + "condition": "${{entity_name==pe-moraleja-01-group-02:0[0-9]}}" + }, + { + "content": "DateTime", + "condition": "${{entity_name==pe-moraleja-01-group-01:0[0-9]}{name==dateModifie[a-z]}}" + } + ] + }, + ... + "entities": [ + { + "schedule": "import(every 5 seconds)", + "entity_name": "pe-moraleja-01-group-01:01", + "entity_type": "import(entity-type)", + "active": [ + { + "name": "status", + "type": "Text", + "value": "import(parking from 6 to 22)" + }, + { + "name": "dateModified", + "type": "import(attribute-type-1)", + "value": "import(now)" + } + ] + }, + { + "schedule": "import(every 5 seconds)", + "entity_name": "pe-moraleja-01-group-02:01", + "entity_type": "import(entity-type)", + "active": [ + { + "name": "status", + "type": "import(attribute-type-1)", + "value": "import(parking from 6 to 22)" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "import(now)" + } + ] + } + ] + ... +} +``` + +After resolving the imports, the simulation configuration file will end up as the following one: + +```json +{ + ... + "entities": [ + { + "schedule": "*/5 * * * * *", // -> IMPORTED + "entity_name": "pe-moraleja-01-group-01:01", + "entity_type": "ParkingSpot", // -> IMPORTED + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" // -> IMPORTED + }, + { + "name": "dateModified", + "type": "DateTime", // -> IMPORTED + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" // -> IMPORTED + } + ] + }, + { + "schedule": "*/5 * * * * *", // -> IMPORTED + "entity_name": "pe-moraleja-01-group-02:01", + "entity_type": "ParkingSpot", // -> IMPORTED + "active": [ + { + "name": "status", + "type": "Text", // -> IMPORTED + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" // -> IMPORTED + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" // -> IMPORTED + } + ] + } + ] + ... +} +``` + +Just as in the case of the textual imports, the conditional imports can be declared in the `exports` property of the simulation configuration file or in external JSON files which can be imported. + +Obviously, if an import directive refers to a template not declared either in the `exports` property or in an external JSON file, an error is thrown and the simulation is not run. On the other hand, if all the substitutions take place fine and the resulting simulation configuration file is valid, the simulation is run. + +Although the `fiwareDeviceSimulatorCLI` command line tool previously detailed includes support for the import mechanism just described, we have also included a specific command line tool for the import mechanism which transpiles an input simulation configuration file into an output configuration file including the resolved imports. + +To run the FIWARE Device Simulator Transpiler CLI tool just run: + +```bash +./bin/fiwareDeviceSimulatorTranspilerCLI +``` + +This will show the FIWARE Device Simulator Transpiler CLI tool help which will guide you to learn how to properly use it: + +``` +Usage: fiwareDeviceSimulatorTranspilerCLI [options] + + Options: + + -h, --help output usage information + -V, --version output the version number + -c, --configuration Absolute or relative path (from the root of the Node application) to the device simulator configuration input file (mandatory) + -o, --output Absolute or relative path (from the root of the Node application) to the output device simulator configuration file (mandatory) +``` + +Following the description of the simulation configuration file accepted properties and leaning on the [FIWARE waste management harmonized data models](http://fiware-datamodels.readthedocs.io/en/latest/WasteManagement/doc/introduction/index.html), we provide a simulation configuration real example file to automatically generate waste management data, more concretely simulating the dynamic filling levels for 8 waste containers spread out at 4 areas (`Oeste` (i.e., West), `Norte` (i.e., North), `Este` (i.e., East) and `Sur` (i.e., South) of the Distrito Telefónica area (where the Telefónica headquarters are located) in Madrid. + +```json +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "195.235.93.224", + "port": 10027, + "ngsiVersion": "1.0" + }, + "authentication": { + "protocol": "https", + "host": "195.235.93.224", + "port": 15001, + "user": "theUser", + "password": "thePassword" + }, + "entities": [ + { + "schedule": "once", + "entity_name": "WasteContainerIsle:Oeste", + "entity_type": "WasteContainerIsle", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "Distrito Telefónica - Oeste" + }, + { + "name": "description", + "type": "Text", + "value": "Zona de contenedores Oeste de Distrito Telefónica" + }, + { + "name": "features", + "type": "List", + "value": ["surface"] + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Polygon", + "coordinates": [[[-3.6642676591873165,40.51337501088891],[-3.66318941116333,40.51437011409327],[-3.666316866874695,40.51642960455014],[-3.667373657226562,40.51549162664228],[-3.6642676591873165,40.51337501088891]]] + } + }, + { + "name": "address", + "type": "address", + "value": { + "streetAddress" : "Zona Oeste, Ronda de la Comunicación s/n", + "addressLocality": "Madrid", + "addressCountry": "ES" + } + }, + { + "name": "containers", + "type": "List", + "value": ["WasteContainer:DTO:001", "WasteContainer:DTO:002"] + } + ] + }, + { + "schedule": "once", + "entity_name": "WasteContainerIsle:Norte", + "entity_type": "WasteContainerIsle", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "Distrito Telefónica - Norte" + }, + { + "name": "description", + "type": "Text", + "value": "Zona de contenedores Norte de Distrito Telefónica" + }, + { + "name": "features", + "type": "List", + "value": ["surface"] + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Polygon", + "coordinates": [[[-3.66318941116333,40.51437827061587],[-3.662030696868896,40.51548754844881],[-3.6651098728179927,40.51761633170772],[-3.6664187908172607,40.51649893283121],[-3.66318941116333,40.51437827061587]]] + } + }, + { + "name": "address", + "type": "address", + "value": { + "streetAddress" : "Zona Norte, Ronda de la Comunicación s/n", + "addressLocality": "Madrid", + "addressCountry": "ES" + } + }, + { + "name": "containers", + "type": "List", + "value": ["WasteContainer:DTN:001", "WasteContainer:DTN:002"] + } + ] + }, + { + "schedule": "once", + "entity_name": "WasteContainerIsle:Este", + "entity_type": "WasteContainerIsle", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "Distrito Telefónica - Este" + }, + { + "name": "description", + "type": "Text", + "value": "Zona de contenedores Este de Distrito Telefónica" + }, + { + "name": "features", + "type": "List", + "value": ["surface"] + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Polygon", + "coordinates": [[[-3.6642730236053462,40.51338316753258],[-3.6614298820495605,40.5115234270992],[-3.6603784561157227,40.51245330376326],[-3.663200139999389,40.51439458365814],[-3.6642730236053462,40.51338316753258]]] + } + }, + { + "name": "address", + "type": "address", + "value": { + "streetAddress" : "Zona Este, Ronda de la Comunicación s/n", + "addressLocality": "Madrid", + "addressCountry": "ES" + } + }, + { + "name": "containers", + "type": "List", + "value": ["WasteContainer:DTE:001", "WasteContainer:DTE:002"] + } + ] + }, + { + "schedule": "once", + "entity_name": "WasteContainerIsle:Sur", + "entity_type": "WasteContainerIsle", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "Distrito Telefónica - Sur" + }, + { + "name": "description", + "type": "Text", + "value": "Zona de contenedores Sur de Distrito Telefónica" + }, + { + "name": "features", + "type": "List", + "value": ["surface"] + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Polygon", + "coordinates": [[[-3.663210868835449,40.51437011409327],[-3.662030696868896,40.515512017605886],[-3.6591768264770512,40.513627866381356],[-3.660399913787842,40.51245330376326],[-3.663210868835449,40.51437011409327]]] + } + }, + { + "name": "address", + "type": "address", + "value": { + "streetAddress" : "Zona Sur, Ronda de la Comunicación s/n", + "addressLocality": "Madrid", + "addressCountry": "ES" + } + }, + { + "name": "containers", + "type": "List", + "value": ["WasteContainer:DTS:001", "WasteContainer:DTS:002"] + } + ] + }, + { + "schedule": "once", + "entity_name": "WasteContainerModel:001", + "entity_type": "WasteContainerModel", + "staticAttributes": [ + { + "name": "width", + "type": "Number", + "value": 0.50 + }, + { + "name": "height", + "type": "Number", + "value": 0.80 + }, + { + "name": "depth", + "type": "Number", + "value": 0.40 + }, + { + "name": "volumeStored", + "type": "Number", + "value": 150 + }, + { + "name": "brandName", + "type": "Text", + "value": "Modelo de Contenedor 001" + }, + { + "name": "modelName", + "type": "Text", + "value": "001" + }, + { + "name": "compliantWith", + "type": "List", + "value": ["UNE-EN 840-2:2013"] + }, + { + "name": "madeOf", + "type": "Text", + "value": "plastic" + }, + { + "name": "features", + "type": "List", + "value": ["wheels", "lid"] + }, + { + "name": "category", + "type": "List", + "value": ["dumpster"] + } + ] + }, + { + "entity_name": "WasteContainer:DTO:001", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": + "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": + "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": + "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTO:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.6661827564239498,40.51538151533159] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["organic"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTO:002", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTO:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.666096925735473,40.515112353588606] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["inorganic"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTN:001", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTN:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.6647772789001465,40.51664574542514] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["glass"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTN:002", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTN:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.6647450923919673,40.51627055704617] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["paper"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTE:001", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTE:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.6606144905090328,40.5138236248174] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["plastic"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTE:002", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTE:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.661140203475952,40.513668649435985] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["batteries"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTS:001", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTS:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.6622023582458496,40.51242067673018] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["metal"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + }, + { + "entity_name": "WasteContainer:DTS:002", + "entity_type": "WasteContainer", + "schedule": "*/5 * * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(0.25,0.50)],[21,random(0.50,0.75)],[22,0.75],[23,1],[24,1]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]], \"return\": {\"type\": \"float\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator({\"spec\": [[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTS:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [-3.662030696868896,40.512893767156115] + } + }, + { + "name": "category", + "type": "List", + "value": ["surface"] + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": ["electronics"] + }, + { + "name": "status", + "type": "Text", + "value": "ok" + } + ] + } + ] +} +``` + +The four mentioned areas or `WasteContainerIsle`s (`Oeste` (i.e., West), `Norte` (i.e., North), `Este` (i.e., East) and `Sur` (i.e., South) at Distrito Telefónica) and the 8 waste containers or `WasteContainer`s can be graphically seen online as a [http://geojson.io/](http://geojson.io/) map at [http://bl.ocks.org/anonymous/raw/82837480c5685f8cffa9d9c013197b0d/](http://bl.ocks.org/anonymous/raw/82837480c5685f8cffa9d9c013197b0d/). + +The previously mentioned waste management simulation configuration file will generate entities and attributes in the specified Context Broker such as the ones depicted in the following Telefónica's IoT Platform Portal screenshot: + +![Telefónica's IoT Platform Portal screenshot](https://dl.dropboxusercontent.com/u/2461997/Images/Urbo_portal_entities_screenshot.png "Telefónica's IoT Platform Portal screenshot") + +The generated entities and attributes can also be checked in this [CSV file](https://dl.dropboxusercontent.com/u/2461997/Docs/Urbo_waste_management_entities.csv). + +[Top](#top) + +## FIWARE Device Simulator library + +The FIWARE Device Simulator library can be found in the [./lib](./lib) directory. It is composed of: + +1. The main [`./lib/fiwareDeviceSimulator.js`](./lib/fiwareDeviceSimulator.js) file. It exposes the following functions: + 1. `start()`: it takes a simulation configuration JSON object and returns an instance of `EventEmitter` which informs of the following events to the client: + * `token-request`: Whenever a new authorization token is requested. No event object is passed as additional information for this event occurrence. + * `token-response`: Whenever a new authorization token is received. The passed event includes the following properties: + * - `expires_at`: The expiration date + * `token-request-scheduled`: Whenever a new authorization token request is scheduled. The passed event includes the following properties: + * `scheduled_at`: The scheduled date + * `update-scheduled`: Whenever a new entity update is scheduled. The passed event includes the following properties: + * `schedule`: The schedule + * `entity`: Information about the entity to be updated + * `attributes`: The attributes to be updated + * `update-request`: Whenever a new entity update is requested. + * `request`: Details about the update request + * `update-response`: Whenever a new entity update response is received. + * `request`: Details about the update request + * `response`: The body of the received update response + * `error`: Whenever an error happens + * `error`: The error + * `request`: The optional associated request (optional) + * `stop`: Whenever the simulation is stopped. No event object is passed as additional information for this event occurrence. + * `end`: Whenever the simulation ends. No event object is passed as additional information for this event occurrence. + 2. `stop()`: it stops the currently running simulation, if any, and emits the `stop` event. +2. The [`./lib/validators/fiwareDeviceSimulatorValidator.js`](./lib/validators/fiwareDeviceSimulatorValidator.js) file. It exposes the following functions: + * `validateConfiguration`: Validates a simulation configuration object asynchronously taking the simulation configuration object as input as well as a callback which will be called once the validation has been completed passing an error object with further information about the problem in case the simulation configuration object was not valid. +3. The [`./lib/errors`](./lib/errors) directory including: + 1. The [`fdsErrors.js`](./lib/errors/fdsErrors.js) file. It includes the errors which may be sent when running a device simulation. +4. The [`./lib/interpolators`](./lib/interpolators) directory including: + 1. The [`dateIncrementInterpolator.js`](./lib/interpolators/dateIncrementInterpolator.js) file. It implements the date-increment-interpolator attribute value resolver. + 2. The [`multilinePositionInterpolator.js`](./lib/interpolators/multilinePositionInterpolator.js) file. It implements the multiline-position-interpolator attribute value resolver. + 3. The [`linearInterpolator.js`](./lib/interpolators/linearInterpolator.js) file. It implements the time-linear-interpolator attribute value resolver. + 4. The [`randomLinearInterpolator.js`](./lib/interpolators/randomLinearInterpolator.js) file. It implements the time-random-linear-interpolator attribute value resolver. + 5. The [`stepAfterInterpolator.js`](./lib/interpolators/stepAfterInterpolator.js) file. It implements the time-step-after-interpolator attribute value resolver. + 6. The [`stepBeforeInterpolator.js`](./lib/interpolators/stepBeforeInterpolator.js) file. It implements the time-step-before-interpolator attribute value resolver. + 6. The [`textRotationInterpolator.js`](./lib/interpolators/textRotationInterpolator.js) file. It implements the text-rotation-interpolator attribute value resolver. + +[Top](#top) + +## Development documentation + +### Project build + +The project is managed using Grunt Task Runner. + +For a list of available task, type +```bash +grunt --help +``` + +The following sections show the available options in detail. + +[Top](#top) + +### Testing + +[Mocha](http://visionmedia.github.io/mocha/) Test Runner + [Chai](http://chaijs.com/) Assertion Library + [Sinon](http://sinonjs.org/) Spies, stubs. + +The test environment is preconfigured to run [BDD](http://chaijs.com/api/bdd/) testing style with +`chai.expect` and `chai.should()` available globally while executing tests, as well as the [Sinon-Chai](http://chaijs.com/plugins/sinon-chai) plugin. + +Module mocking during testing can be done with [proxyquire](https://github.com/thlorenz/proxyquire) + +To run tests, type +```bash +grunt test +``` + +Tests reports can be used together with Jenkins to monitor project quality metrics by means of TAP or XUnit plugins. +To generate TAP report in `report/test/unit_tests.tap`, type +```bash +grunt test-report +``` + +[Top](#top) + +### Coding guidelines + +jshint, gjslint + +Uses provided .jshintrc and .gjslintrc flag files. The latter requires Python and its use can be disabled +while creating the project skeleton with grunt-init. +To check source code style, type +```bash +grunt lint +``` + +Checkstyle reports can be used together with Jenkins to monitor project quality metrics by means of Checkstyle +and Violations plugins. +To generate Checkstyle and JSLint reports under `report/lint/`, type +```bash +grunt lint-report +``` + +[Top](#top) + +### Continuous testing + +Support for continuous testing by modifying a src file or a test. +For continuous testing, type +```bash +grunt watch +``` + +[Top](#top) + +### Source code documentation + +dox-foundation + +Generates HTML documentation under `site/doc/`. It can be used together with jenkins by means of DocLinks plugin. +For compiling source code documentation, type +```bash +grunt doc +``` + +[Top](#top) + +### Code coverage + +Istanbul + +Analizes the code coverage of your tests. + +To generate an HTML coverage report under `site/coverage/` and to print out a summary, type +```bash +# Use git-bash on Windows +grunt coverage +``` + +To generate a Cobertura report in `report/coverage/cobertura-coverage.xml` that can be used together with Jenkins to +monitor project quality metrics by means of Cobertura plugin, type +```bash +# Use git-bash on Windows +grunt coverage-report +``` + +[Top](#top) + +### Code complexity + +Plato + +Analizes code complexity using Plato and stores the report under `site/report/`. It can be used together with jenkins +by means of DocLinks plugin. +For complexity report, type +```bash +grunt complexity +``` + +[Top](#top) + +### PLC + +Update the contributors for the project +```bash +grunt contributors +``` + +[Top](#top) + +### Development environment + +Initialize your environment with git hooks. +```bash +grunt init-dev-env +``` + +We strongly suggest you to make an automatic execution of this task for every developer simply by adding the following +lines to your `package.json` +``` +{ + "scripts": { + "postinstall": "grunt init-dev-env" + } +} +``` + +[Top](#top) + +### Site generation + +There is a grunt task to generate the GitHub pages of the project, publishing also coverage, complexity and JSDocs pages. +In order to initialize the GitHub pages, use: + +```bash +grunt init-pages +``` + +This will also create a site folder under the root of your repository. This site folder is detached from your repository's +history, and associated to the gh-pages branch, created for publishing. This initialization action should be done only +once in the project history. Once the site has been initialized, publish with the following command: + +```bash +grunt site +``` + +This command will only work after the developer has executed init-dev-env (that's the goal that will create the detached site). + +This command will also launch the coverage, doc and complexity task (see in the above sections). + +[Top](#top) + +## Contact + +* Germán Toro del Valle ([german.torodelvalle@telefonica.com](mailto:german.torodelvalle@telefonica.com), [@gtorodelvalle](http://www.twitter.com/gtorodelvalle)) + +[Top](#top) diff --git a/bin/fiwareDeviceSimulatorCLI b/bin/fiwareDeviceSimulatorCLI new file mode 100755 index 0000000..7ac46dc --- /dev/null +++ b/bin/fiwareDeviceSimulatorCLI @@ -0,0 +1,544 @@ +#!/usr/bin/env node + +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var async = require('async'); +var commander = require('commander'); +var dateformat = require('dateformat'); +var fs = require('fs'); +var GoogleSheet = require('google-spreadsheet'); +var logops = require('logops'); +var humanizeDuration = require('humanize-duration'); +var path = require('path'); +var request = require('request'); +var time = require('time'); +var deviceSimulator = require(ROOT_PATH + '/lib/fiwareDeviceSimulator'); + +/** + * Array with the last 10 emitted errors + * @type {Array} + */ +var errors = []; + +/** + * Last emitted progress information + */ +var progressInfo = {}; + +/** + * The concrete Google spread sheet the scheduled updates will be stored into + * @type {Object} + */ +var googleSheet; + +/** + * The Google Sheet work sheet where the scheduled updates will be stored + * @type {Object} + */ +var googleSheetTab; + +/** + * lolex NPM package clock in case of fast-forward simulations + */ +var clock; + +/** + * The array of scheduled update jobs + */ +var updateJobs; + +/** + * On error event handler + * @param {Object} ev The error event + */ +function onError(ev) { + errors.slice(0, (errors.length === 10 ? 1 : 0), { timestamp: new Date(), error: JSON.stringify(ev) }); + logops.error('error event:', ev); +} + +process.on('SIGINT', function() { + deviceSimulator.stop(); +}); + +process.on('uncaughtException', function(exception) { + onError( + { + error: 'uncaughtException: ' + exception + } + ); + deviceSimulator.stop(); +}); + +/** + * Helper function to create Dates from the passed argument + * @param {String} date The date string + * @return {Date} The date + */ +function createDate(date) { + return new Date(date); +} + +/** + * Processes a progress-info event and generates the corresponding progress information object + * @param {Object} ev The progress-info event + */ +function processProgressInfo(ev) { + progressInfo = { + totalUpdateRequests: ev.updatesRequested, + elapsedTime: humanizeDuration(ev.elapsedTime), + throughput: (ev.updatesRequested / (ev.elapsedTime / 1000)).toFixed(2), + delayedUpdateRequests: ev.delayedUpdateRequests, + delayedUpdateRequestsX100: (ev.updatesProcessed ? + (100 * ev.delayedUpdateRequests / ev.updatesProcessed).toFixed(2) : + 'N/A'), + errorUpdateRequests: ev.errorUpdateRequests, + errorUpdateRequestsX100: (ev.updatesProcessed ? + (100 * ev.errorUpdateRequests / ev.updatesProcessed).toFixed(2) : + 'N/A'), + googleSheetUpdateStatus: (commander.from || commander.to ? 'not supported' : progressInfo.googleSheetUpdateStatus), + lastGoogleSheetUpdate: progressInfo.lastGoogleSheetUpdate, + googleSheetUpdateInterval: (commander.timeline ? commander.timeline.refreshInterval || 0 : 0), + googleSheetKey: (commander.timeline ? commander.timeline.sheetKey || '' : ''), + googleSheetUpdateJobs: progressInfo.googleSheetUpdateJobs + }; + if (commander.to) { + progressInfo.simulatedPendingTime = humanizeDuration(commander.to - commander.from - ev.simulatedElapsedTime); + } else { + progressInfo.simulatedPendingTime = 'N/A'; + } + progressInfo.simulatedElapsedTime = humanizeDuration(ev.simulatedElapsedTime); + if (commander.to) { + progressInfo.pendingTime = humanizeDuration( + ((commander.to.getTime() - + (commander.from.getTime() + ev.simulatedElapsedTime)) * ev.elapsedTime) / + ev.simulatedElapsedTime); + } else { + progressInfo.pendingTime = 'N/A'; + } +} + +/** + * Writes the simulation progress information to the console if configured + */ +function writeToConsole() { + if (!commander.silent) { + logops.info( + 'progress-info', + { + totalUpdateRequests: progressInfo.totalUpdateRequests + ' updates', + throughput: progressInfo.throughput + ' updates/sec.', + errorUpdateRequests: progressInfo.errorUpdateRequests + ' updates', + errorUpdateRequestsX100: progressInfo.errorUpdateRequestsX100 + '%', + delayedUpdateRequests: progressInfo.delayedUpdateRequests + ' updates', + delayedUpdateRequestsX100: progressInfo.delayedUpdateRequestsX100 + '%', + elapsedTime: progressInfo.elapsedTime, + pendingTime: progressInfo.pendingTime, + simulatedElapsedTime: progressInfo.simulatedElapsedTime, + simulatedPendingTime: progressInfo.simulatedPendingTime + } + ); + } +} + +/** + * Dweets the simulation progress information if configured + * @param {Object} dweetConfig The dweet.io configuration + * @param {Function} callback The callback + */ +function dweet(dweetConfig, callback) { + if (dweetConfig) { + progressInfo.errors = errors; + request.post( + { + url: 'https://dweet.io/dweet/for/' + dweetConfig.name + + (dweetConfig.apiKey ? '?key=' + dweetConfig.apiKey : ''), + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + json: true, + body: progressInfo + }, + function(err, response, body) { + callback(err || body.because, response, body); + } + ); + } else { + callback(); + } +} + +/** + * Resolves a path to its final value + * @param {String} path The original path + * @return {String} The resolved path + */ +function resolvePath(filePath) { + var resolvedPath; + if (filePath[0] === '/') { + resolvedPath = filePath; + } else if (filePath[0] === '.') { + resolvedPath = ROOT_PATH + filePath.substring(1); + } else { + resolvedPath = ROOT_PATH + path.sep + filePath; + } + return resolvedPath; +} + +/** + * Returns true if the file the passed is pointing to exists, false otherwise + * @param {String} path The path to the file + * @return {Boolean} True if the file pointing by the passed path exists, false otherwise + */ +function fileExists(path) { + var resolvedPath = resolvePath(path); + return fs.existsSync(resolvedPath); +} + +/** + * Runs certain function in the next tick using the simulated time clock if available + * @param {Object} func The function to run in a next tick + */ +function runInNextTick(func) { + process.nextTick(func.bind.apply(func, [null].concat(Array.prototype.slice.call(arguments, 1)))); + if (clock) { + clock.next(); + } +} + +/** + * Google Sheet work sheet addRow() function handler + * @param {Object} error The error if any + */ +function onAddRows(err) { + if (err) { + logops.error('Error when adding a row to Google Sheet work sheet or tab: ' + err); + progressInfo.googleSheetUpdateStatus = 'error'; + } else { + progressInfo.googleSheetUpdateStatus = 'complete'; + } + progressInfo.lastGoogleSheetUpdate = time.Date.now(); +} + +/** + * Google Sheet work sheet setHeaderRow() function handler + * @param {Object} error The error if any + */ +function onSetHeaderRow(err) { + if (err) { + progressInfo.googleSheetUpdateStatus = 'error'; + progressInfo.lastGoogleSheetUpdate = time.Date.now(); + return logops.error('Error when setting the header row in the Google Sheet work sheet or tab: ' + + err); + } + var rows = []; + for (var ii = 0; ii < updateJobs.length; ii++) { + for (var jj = 0; jj < updateJobs[ii].pendingInvocations().length; jj++) { + var formattedDateTime = dateformat( + updateJobs[ii].pendingInvocations()[jj].fireDate, commander.timeline.dateFormat); + rows.push( + { + 'Row Label': 'Scheduled update', + 'Bar Label': '[' + formattedDateTime + ']: ' + updateJobs[ii].name, + 'Start': formattedDateTime, + 'End': formattedDateTime + } + ); + } + } + progressInfo.googleSheetUpdateJobs = rows.length; + runInNextTick(async.each, rows, googleSheetTab.addRow, onAddRows); +} + +/** + * Google Sheet work sheet resize() function handler + * @param {Object} error The error if any + */ +function onResize(err) { + if (err) { + progressInfo.googleSheetUpdateStatus = 'error'; + progressInfo.lastGoogleSheetUpdate = time.Date.now(); + return logops.error('Error when resizing the Google Sheet work sheet or tab: ' + err); + } + runInNextTick(googleSheetTab.setHeaderRow, ['Row Label', 'Bar Label', 'Start', 'End'], onSetHeaderRow); +} + +/** + * Google Sheet work sheet clear() function handler + * @param {Object} error The error if any + */ +function onClear(err) { + if (err) { + progressInfo.googleSheetUpdateStatus = 'error'; + progressInfo.lastGoogleSheetUpdate = time.Date.now(); + return logops.error('Error when clearing the Google Sheet work sheet or tab: ' + err); + } + runInNextTick(googleSheetTab.resize, {rowCount: 1, colCount: 4}, onResize); +} + +/** + * Updates the schedule jobs into Google Sheet if configured + */ +function updateScheduledJobsInGoogleSheet() { + if (googleSheetTab && + (progressInfo.googleSheetUpdateStatus !== 'not supported' && progressInfo.googleSheetUpdateStatus !== 'ongoing') && + ((time.Date.now() - (progressInfo.lastGoogleSheetUpdate || 0)) > commander.timeline.refreshInterval)) { + progressInfo.googleSheetUpdateStatus = 'ongoing'; + runInNextTick(googleSheetTab.clear, onClear); + } +} + +/** + * Starts the simulation + */ +function startSimulation() { + var progressEmitter = deviceSimulator.start( + require(resolvePath(commander.configuration)), commander.from, commander.to, + commander.progressInfoInterval, commander.maximumNotRespondedRequests, commander.delay || 1000); + + progressEmitter.on('token-request', function() { + logops.debug('token-request event'); + }); + + progressEmitter.on('token-response', function(ev) { + logops.debug('token-response event:', ev); + }); + + progressEmitter.on('token-request-scheduled', function(ev) { + logops.debug('token-request-scheduled:', ev); + }); + + progressEmitter.on('update-scheduled', function(ev) { + logops.debug('update-scheduled event:', ev); + }); + + progressEmitter.on('update-request', function(ev) { + logops.debug('update-request event:', ev); + }); + + progressEmitter.on('info', function(ev) { + logops.info('info event:', ev.message); + }); + + progressEmitter.on('error', onError); + + progressEmitter.on('update-response', function(ev) { + logops.debug('response event:', ev); + }); + + progressEmitter.on('progress-info', function(ev) { + clock = ev.clock; + updateJobs = ev.updateJobs; + processProgressInfo(ev); + writeToConsole(); + runInNextTick(dweet, commander.dweet, function(err) { + if (err) { + logops.error('error event: Error when dweeting for \'' + commander.dweet.name + '\': ' + err); + } + updateScheduledJobsInGoogleSheet(); + }); + }); + + progressEmitter.on('stop', function() { + logops.info('stop event'); + }); + + progressEmitter.on('end', function() { + async.retry( + { times: 5, interval: 1000}, + async.apply(dweet, commander.dweet), + function(err) { + if (err) { + logops.error('error event: Error when dweeting for \'' + commander.dweet.name + '\': ' + err); + } else { + logops.info('end event'); + } + process.exit(0); + } + ); + }); +} + +/** + * Executes the requested commander + */ +function executeCommand() { + var googleCredentials; + + if (!commander.configuration) { + commander.help(); + } + + if (!fileExists(commander.configuration)) { + logops.error('The provided simulation configuration file path (\'' + commander.configuration + + '\') does not exist'); + commander.help(); + } + + if (commander.to) { + if (!commander.from && commander.to <= new Date()) { + logops.error('If no fromDate is provided, the toDate must be beyond the current time and date'); + commander.help(); + } else { + commander.from = commander.from || new Date(); + } + } + + if (commander.dweet) { + try { + commander.dweet = JSON.parse(commander.dweet); + if (!commander.dweet.name || typeof commander.dweet.name !== 'string') { + logops.error('The dweet.io configuration information should be an object including a \'name\' property ' + + 'the thing name'); + commander.help(); + } + } catch(exception) { + logops.error('Error when parsing the dweet.io configuration information: ' + exception); + commander.help(); + } + } + + if (commander.timeline) { + try { + commander.timeline = JSON.parse(commander.timeline); + if (!commander.timeline.dateFormat || typeof commander.timeline.dateFormat !== 'string') { + logops.error('The Google Sheets configuration information should be an object including a \'dateFormat\' ' + + 'property with the date format used by Google Sheets in your locale according to the dateformat NPM ' + + 'package (for further information, please visit: https://github.com/felixge/node-dateformat#mask-options'); + commander.help(); + } + if (!commander.timeline.refreshInterval || typeof commander.timeline.refreshInterval !== 'number') { + logops.error('The Google Sheets configuration information should be an object including a ' + + '\'refreshInterval\' property with the minimum interval in milliseconds the scheduled updates will be ' + + 'refreshed in the associated Google Sheet (i.e., the Google Sheet will be udpated in the next ' + + 'progress information tick (see the -p option) once this interval has passed since the last refresh)'); + commander.help(); + } + if (!commander.timeline.sheetKey || typeof commander.timeline.sheetKey !== 'string') { + logops.error('The Google Sheets configuration information should be an object including a \'sheetKey\' ' + + 'property with the long Google Sheet key where the scheduled updates timeline information will be stored'); + commander.help(); + } + googleSheet = new GoogleSheet(commander.timeline.sheetKey); + if (!commander.timeline.credentialsPath || typeof commander.timeline.credentialsPath !== 'string') { + logops.error('The Google Sheets configuration information should be an object including a ' + + '\'credentialsPath\' property with the path to the Google generated credentials'); + commander.help(); + } + if (!fileExists(commander.timeline.credentialsPath)) { + logops.error('The credentials path passed in the Google Sheet configuration information ' + + '(\'googleSheetConfig.credentialsPath\') does not exist: ' + commander.timeline.credentialsPath); + commander.help(); + } + try { + googleCredentials = require(resolvePath(commander.timeline.credentialsPath)); + } catch (googleCredentialException) { + logops.error('The Google generated credential file (\'' + commander.timeline.credentialsPath + '\') ' + + 'is not a valid JSON file, error when parsing the file: ' + googleCredentialException); + commander.help(); + } + logops.info('Authenticating into Google to update the Google Sheet including the scheduled updates...'); + googleSheet.useServiceAccountAuth(googleCredentials, function (err) { + if (err) { + onError({ + error: 'Error when authenticating with Google using the credential file (\'' + + commander.timeline.credentialsPath + '\'): ' + err + }); + process.exit(0); + } else { + logops.info('Authentication into Google successfully completed'); + googleSheet.getInfo(function(err, googleSheetInfo) { + if (err) { + onError({ + error: 'Error when getting the Google Sheet information to update the data: ' + err + }); + process.exit(0); + } + googleSheetTab = googleSheetInfo && googleSheetInfo.worksheets && + googleSheetInfo.worksheets.length && googleSheetInfo.worksheets[0]; + if (!googleSheetTab) { + onError({ + error: 'Error when getting access to the first Google Sheet work sheet or tab to update the data: ' + + err + }); + process.exit(0); + } else { + startSimulation(); + } + }); + } + }); + } catch(exception) { + logops.error('Error when parsing the Google Sheet configuration information: ' + exception); + commander.help(); + } + } + + if (!googleCredentials) { + startSimulation(); + } +} + +commander. + version(require(ROOT_PATH + '/package.json').version). + option('-c, --configuration ', + 'Absolute or relative path (from the root of the Node application) to the device simulator configuration file ' + + '(mandatory)'). + option('-d, --delay ', 'The delay in milliseconds for future updates when the number of update ' + + 'requests waiting for response is bigger than the value set with the -m option (defaults to 1 second if -m is ' + + 'set and -d is not set, it has no effect if -m is not set)', + parseInt). + option('-m, --maximumNotRespondedRequests ', 'The maximum number of update requests not responded before ' + + 'applying delay', parseInt). + option('-p, --progressInfoInterval ', 'The interval in milliseconds to show progress information ' + + ' for fast-forward simulation', parseInt). + option('-s, --silent', 'No progress information will be output by the console'). + option('-w, --dweet ', 'Configuration information to publish the simulation progress ' + + 'information in dweet.io (it must be an object containing a \'name\' property for the dweet thing and ' + + 'optionally an \'apiKey\' property in case the thing is locked, for example: ' + + '-w "{\\"name\\": \\"fds:Test:001\\"}")'). + option('-l, --timeline ', 'The start date to begin the fast-forward simulation (if not set, the current ' + + 'time will be used)', createDate). + option('-t, --to ', 'The end date to stop the fast-forward simulation (if not set, the fast-forward ' + + 'will progress to the future and never end)', createDate). + parse(process.argv); + +executeCommand(); diff --git a/bin/fiwareDeviceSimulatorTranspilerCLI b/bin/fiwareDeviceSimulatorTranspilerCLI new file mode 100755 index 0000000..42f893d --- /dev/null +++ b/bin/fiwareDeviceSimulatorTranspilerCLI @@ -0,0 +1,100 @@ +#!/usr/bin/env node + +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var commander = require('commander'); +var fs = require('fs'); +var logops = require('logops'); +var path = require('path'); +var fiwareDeviceSimulatorTranspiler = require(ROOT_PATH + '/lib/transpilers/fiwareDeviceSimulatorTranspiler'); + +process.on('SIGINT', function() { + process.exit(0); +}); + +process.on('uncaughtException', function() { + process.exit(1); +}); + +/** + * Returns the absolute path for a file name or relative path + * @param {String} file File name or file path + * @return {String} The absolute path + */ +function getFilePath(file) { + return ROOT_PATH + (file.charAt(0) === '.' ? file.substring(1) : path.sep + file); +} + +/** + * Executes the requested commander + */ +function executeCommand() { + if (!commander.configuration) { + commander.help(); + } + + var inputConfigurationFilePath = getFilePath(commander.configuration); + if (!fs.existsSync(inputConfigurationFilePath)) { + return logops.error('The input file path (\'' + inputConfigurationFilePath + '\') does not exist'); + } + + if (!commander.output) { + commander.help(); + } + + var outputConfigurationFilePath = getFilePath(commander.output); + if (fs.existsSync(outputConfigurationFilePath)) { + return logops.error('The output file path (\'' + outputConfigurationFilePath + '\') already exists'); + } + + fiwareDeviceSimulatorTranspiler.transpile(require(inputConfigurationFilePath), function(err, newConfigurationObj) { + if (err) { + return logops.error('Error when transpiling the simulation configuration file (\'' + + inputConfigurationFilePath + '\'): ' + err); + } + fs.writeFile(outputConfigurationFilePath, JSON.stringify(newConfigurationObj, null, ' '), function(err) { + if (err) { + return logops.error('Error when writing to the output simulation configuration file \'' + + outputConfigurationFilePath + '\'): ' + err); + } + return logops.info('Output simulation configuration file \'' + outputConfigurationFilePath + '\') ' + + 'successfully created'); + }); + }); +} + +commander. + version(require(ROOT_PATH + '/package.json').version). + option('-c, --configuration ', + 'Absolute or relative path (from the root of the Node application) to the device simulator configuration ' + + 'input file (mandatory)'). + option('-o, --output ', + 'Absolute or relative path (from the root of the Node application) to the output device simulator ' + + 'configuration file (mandatory)'). + parse(process.argv); + +executeCommand(); diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000..282f36f --- /dev/null +++ b/examples/README.md @@ -0,0 +1,29 @@ +# Simulation configuration examples +In this folder you can find several configuration examples (JSON files) to use with FIWARE Device Simulator. + +All the examples provided follow the requirements of [FIWARE Data Models](http://fiware-datamodels.readthedocs.io). + +## Examples provided +Examples provided cover several domain areas: +- [Parking](#parking) +- [Waste](#waste) +- [Street lighting](#street-lighting) + +### Parking +- File: urbo-simulation-parking.json +- Simulation: + - 13 OffStreetParking entities. + - 27 OnStreetParking entities. + - 11 ParkingGroup entities. + - 278 ParkingSpot entities. + +### Waste +- File: urbo-simulations-waste.json +- Simulation: + - 173 WasteContainer entities. + - 1 WasteContainerModel. + +### Street lighting +- File: urbo-simulation-streetlight.json +- Simulation: + - 25 StreetlightControlCabinet entities. diff --git a/examples/urbo-simulation-parking.json b/examples/urbo-simulation-parking.json new file mode 100644 index 0000000..20764dd --- /dev/null +++ b/examples/urbo-simulation-parking.json @@ -0,0 +1,20975 @@ +{ + "domain": { + "service": "service", + "subservice": "/subservice" + }, + "contextBroker": { + "protocol": "http", + "host": "1.2.3.4", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "http", + "host": "1.2.3.4", + "port": 5001, + "user": "user", + "password": "password", + "retry": { + "times": 10, + "interval": 5000 + } + }, + "entities": [ + { + "schedule": "51 0 * * * *", + "entity_name": "pe-moraleja-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.657059248821937, + 40.514550992040554 + ], + [ + -3.656863436898256, + 40.514384867957396 + ], + [ + -3.656863436898256, + 40.514384867957396 + ], + [ + -3.6567499227396, + 40.51427052257009 + ], + [ + -3.656193703362185, + 40.51465454970233 + ], + [ + -3.656102892035261, + 40.51460492834268 + ], + [ + -3.656287352543076, + 40.51443664693655 + ], + [ + -3.656349785330337, + 40.51430072703098 + ], + [ + -3.656463299488993, + 40.51403320133259 + ], + [ + -3.656582489355582, + 40.513869233441476 + ], + [ + -3.656835058358592, + 40.51364485567757 + ], + [ + -3.656897491145852, + 40.5137052651494 + ], + [ + -3.657533170434326, + 40.514216585998966 + ], + [ + -3.657059248821937, + 40.514550992040554 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Parque Empresarial Moraleja - Parking 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "forVisitors", + "forDisabled" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PE Moraleja" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "singleSpaceDetection" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 40 + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": 0 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [ + "pe-moraleja-01-group-01", + "pe-moraleja-01-group-02" + ] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.7 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "pe-moraleja-01-group-01", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet", + "onlyDisabled" + ] + }, + { + "name": "floor", + "type": "Number", + "value": 0 + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "description", + "type": "Text", + "value": "Parking spots reserved for disabled people" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 5 + }, + { + "name": "requiredPermit", + "type": "Text", + "value": "disabledPermit" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.65728562672046, + 40.51416728466199 + ], + [ + -3.657343531140168, + 40.514124683131215 + ], + [ + -3.657454366260428, + 40.514218667637266 + ], + [ + -3.657394794470794, + 40.514261898167696 + ], + [ + -3.65728562672046, + 40.51416728466199 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "status_pg", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "28 0 * * * *", + "entity_name": "pe-moraleja-01-group-02", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet", + "forVisitors" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "floor", + "type": "Number", + "value": 0 + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "description", + "type": "Text", + "value": "Parking spots" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 35 + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.65733251487254, + 40.514239253607606 + ], + [ + -3.657007577838173, + 40.5144636402745 + ], + [ + -3.656739504784819, + 40.51423513641405 + ], + [ + -3.656571620650396, + 40.51435041773827 + ], + [ + -3.65642269117631, + 40.514224843429034 + ], + [ + -3.656449769262509, + 40.514128089292655 + ], + [ + -3.65653641913834, + 40.51399633875479 + ], + [ + -3.656617653396931, + 40.51389752568149 + ], + [ + -3.656788245339975, + 40.513771950524074 + ], + [ + -3.657018409072652, + 40.51395928386936 + ], + [ + -3.65733251487254, + 40.514239253607606 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "status_pg", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "1 0 * * * *", + "entity_name": "pe-moraleja-01-group-01:01", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-01:01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657406156471788, + 40.51422821665896 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "58 0 * * * *", + "entity_name": "pe-moraleja-01-group-01:02", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-01:02" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657388135501452, + 40.5142095343656 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[50,\"free\"],[50,\"occupied\"]]],[19,[[50,\"free\"],[50,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * *", + "entity_name": "pe-moraleja-01-group-01:03", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-01:03" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657369593263379, + 40.514192713393086 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "8 0 * * * *", + "entity_name": "pe-moraleja-01-group-01:04", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-01:04" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657351652208653, + 40.51417907379333 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[50,\"free\"],[50,\"occupied\"]]],[19,[[80,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "29 0 * * * *", + "entity_name": "pe-moraleja-01-group-01:05", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-01:05" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657332080148954, + 40.514161094316684 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:01", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657248083392739, + 40.514228672324585 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "6 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:02", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:02" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657228511333039, + 40.51424169193295 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[10,\"free\"],[90,\"occupied\"]]],[16,[[10,\"free\"],[90,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:03", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:03" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657207308268364, + 40.514255331519976 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:04", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:04" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657186920706176, + 40.514270831047305 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[40,\"free\"],[60,\"occupied\"]]],[16,[[50,\"free\"],[50,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:05", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:05" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657168164148963, + 40.51428447062839 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:06", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:06" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657144514576825, + 40.51429811020671 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:07", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:07" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657124127014637, + 40.514312989743516 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:08", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:08" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657102923949962, + 40.514327249296535 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:09", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:09" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657170610656425, + 40.51415799440643 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "16 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:10", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:10" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65714940759175, + 40.51417411393819 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:11", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:11" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657129020029562, + 40.51418713355716 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "22 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:12", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:12" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657107816964887, + 40.5142020131186 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:13", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:13" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656940638954946, + 40.51420883291649 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:14", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:14" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656920251392759, + 40.51419209341134 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:15", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:15" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656903941343008, + 40.5141747339201 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:16", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:16" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656865612726095, + 40.51414373481743 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:17", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:17" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656849302676345, + 40.514125755331314 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:18", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:18" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656832992626595, + 40.51411087575295 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:19", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:19" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656912911870371, + 40.51396393973931 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "52 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:20", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:20" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656892524308183, + 40.51394596020498 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:21", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:21" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656872952248483, + 40.513932320555035 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:22", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:22" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656855826696245, + 40.51391744093374 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:23", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:23" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656836254636544, + 40.513900081371396 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:24", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:24" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656817498079332, + 40.51388210181995 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "58 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:25", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:25" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656799557024607, + 40.513867222187514 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:26", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:26" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656780800467394, + 40.513848002657404 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:27", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:27" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656762043910181, + 40.51383560295763 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:28", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:28" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656777538457444, + 40.51405135740647 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "16 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:29", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:29" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656761228407693, + 40.51403771777797 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "41 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:30", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:30" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656708220746005, + 40.51399059903996 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[6,[[30,\"free\"],[70,\"occupied\"]]],[16,[[70,\"free\"],[30,\"occupied\"]]],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:31", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:31" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656682940168893, + 40.513975099447855 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:32", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:32" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656651135571879, + 40.514144354799626 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:33", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:33" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656596496905215, + 40.51409599617128 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:34", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:34" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656625854994766, + 40.51412451536657 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "39 0 * * * *", + "entity_name": "pe-moraleja-01-group-02:35", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pe-moraleja-01-group-02:35" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pe-moraleja-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pe-moraleja-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656612806954965, + 40.51410963578794 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "pi-alcobendas-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.659242205172158, + 40.52436440077829 + ], + [ + -3.658552606658318, + 40.52385100039032 + ], + [ + -3.659003825438978, + 40.52349291207753 + ], + [ + -3.659690586098852, + 40.524008472355995 + ], + [ + -3.659242205172158, + 40.52436440077829 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Polígono Industrial Alcobendas - Parking 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "forCustomers" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": -2 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PI Alcobendas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "singleSpaceDetection" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT15H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 102 + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": 0 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [ + "pi-alcobendas-01-group-01", + "pi-alcobendas-01-group-02", + "pi-alcobendas-01-group-03" + ] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.4 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.8 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.8 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2.2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * *", + "entity_name": "pi-alcobendas-01-group-01", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "floor", + "type": "Number", + "value": 0 + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "description", + "type": "Text", + "value": "Floor 0" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 34 + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.659242205172158, + 40.52436440077829 + ], + [ + -3.658552606658318, + 40.52385100039032 + ], + [ + -3.659003825438978, + 40.52349291207753 + ], + [ + -3.659690586098852, + 40.524008472355995 + ], + [ + -3.659242205172158, + 40.52436440077829 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "status_pg", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "pi-alcobendas-01-group-02", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "floor", + "type": "Number", + "value": -1 + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "description", + "type": "Text", + "value": "Floor -1" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 34 + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.659242205172158, + 40.52436440077829 + ], + [ + -3.658552606658318, + 40.52385100039032 + ], + [ + -3.659003825438978, + 40.52349291207753 + ], + [ + -3.659690586098852, + 40.524008472355995 + ], + [ + -3.659242205172158, + 40.52436440077829 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "status_pg", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "19 0 * * * *", + "entity_name": "pi-alcobendas-01-group-03", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "floor", + "type": "Number", + "value": -2 + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "description", + "type": "Text", + "value": "Floor -2" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 34 + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.659242205172158, + 40.52436440077829 + ], + [ + -3.658552606658318, + 40.52385100039032 + ], + [ + -3.659003825438978, + 40.52349291207753 + ], + [ + -3.659690586098852, + 40.524008472355995 + ], + [ + -3.659242205172158, + 40.52436440077829 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "status_pg", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "30 0 * * * *", + "entity_name": "pi-alcobendas-01:01-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:01-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659498785774049, + 40.52402087017259 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "29 0 * * * *", + "entity_name": "pi-alcobendas-01:02-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:02-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659421049215613, + 40.52408377508085 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "1 0 * * * *", + "entity_name": "pi-alcobendas-01:03-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:03-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659343312657178, + 40.52414667998911 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "pi-alcobendas-01:04-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:04-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65926557609875, + 40.52420958489736 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * *", + "entity_name": "pi-alcobendas-01:05-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:05-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659187839540316, + 40.524272489805625 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "24 0 * * * *", + "entity_name": "pi-alcobendas-01:06-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:06-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659435880865791, + 40.52394313361415 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * *", + "entity_name": "pi-alcobendas-01:07-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:07-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659358144307357, + 40.5240060385224 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "pi-alcobendas-01:08-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:08-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659280407748923, + 40.52406894343066 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pi-alcobendas-01:09-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:09-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659202671190491, + 40.524131848338925 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pi-alcobendas-01:10-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:10-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659124934632059, + 40.52419475324718 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * *", + "entity_name": "pi-alcobendas-01:11-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:11-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659372975957529, + 40.523865397055715 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "15 0 * * * *", + "entity_name": "pi-alcobendas-01:12-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:12-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659295239399095, + 40.52392830196396 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * *", + "entity_name": "pi-alcobendas-01:13-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:13-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659217502840667, + 40.523991206872225 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "40 0 * * * *", + "entity_name": "pi-alcobendas-01:14-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:14-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659139766282232, + 40.524054111780494 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "16 0 * * * *", + "entity_name": "pi-alcobendas-01:15-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:15-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659062029723798, + 40.52411701668875 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "28 0 * * * *", + "entity_name": "pi-alcobendas-01:16-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:16-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65931007104927, + 40.52378766049727 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "11 0 * * * *", + "entity_name": "pi-alcobendas-01:17-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:17-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659232334490836, + 40.523850565405525 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * *", + "entity_name": "pi-alcobendas-01:18-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:18-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659154597932403, + 40.523913470313786 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * *", + "entity_name": "pi-alcobendas-01:19-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:19-0" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659076861373968, + 40.523976375222055 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "pi-alcobendas-01:20-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:20-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658999124815535, + 40.52403928013031 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "7 0 * * * *", + "entity_name": "pi-alcobendas-01:21-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:21-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659169429582577, + 40.5237728288471 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "pi-alcobendas-01:22-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:22-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659091693024145, + 40.52383573375536 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "7 0 * * * *", + "entity_name": "pi-alcobendas-01:23-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:23-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659013956465714, + 40.52389863866362 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "47 0 * * * *", + "entity_name": "pi-alcobendas-01:24-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:24-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658936219907279, + 40.523961543571865 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * *", + "entity_name": "pi-alcobendas-01:25-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:25-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65910652467432, + 40.52369509228866 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "41 0 * * * *", + "entity_name": "pi-alcobendas-01:26-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:26-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659028788115885, + 40.523757997196924 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "15 0 * * * *", + "entity_name": "pi-alcobendas-01:27-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:27-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658951051557452, + 40.52382090210518 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * *", + "entity_name": "pi-alcobendas-01:28-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:28-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65887331499902, + 40.52388380701344 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "34 0 * * * *", + "entity_name": "pi-alcobendas-01:29-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:29-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658795578440582, + 40.52394671192169 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pi-alcobendas-01:30-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:30-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659043619766058, + 40.52361735573023 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "pi-alcobendas-01:31-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:31-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658965883207623, + 40.52368026063849 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pi-alcobendas-01:32-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:32-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658888146649192, + 40.52374316554673 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * *", + "entity_name": "pi-alcobendas-01:33-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:33-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658810410090757, + 40.523806070455 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "pi-alcobendas-01:34-0", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:34-0" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658732673532321, + 40.52386897536326 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pi-alcobendas-01:01-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:01-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659498785774049, + 40.52402087017259 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "pi-alcobendas-01:02-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:02-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659421049215613, + 40.52408377508085 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "pi-alcobendas-01:03-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:03-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659343312657178, + 40.52414667998911 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "27 0 * * * *", + "entity_name": "pi-alcobendas-01:04-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:04-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65926557609875, + 40.52420958489736 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pi-alcobendas-01:05-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:05-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659187839540316, + 40.524272489805625 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * *", + "entity_name": "pi-alcobendas-01:06-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:06-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659435880865791, + 40.52394313361415 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "7 0 * * * *", + "entity_name": "pi-alcobendas-01:07-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:07-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659358144307357, + 40.5240060385224 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "pi-alcobendas-01:08-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:08-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659280407748923, + 40.52406894343066 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "25 0 * * * *", + "entity_name": "pi-alcobendas-01:09-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:09-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659202671190491, + 40.524131848338925 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "1 0 * * * *", + "entity_name": "pi-alcobendas-01:10-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:10-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659124934632059, + 40.52419475324718 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pi-alcobendas-01:11-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:11-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659372975957529, + 40.523865397055715 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * *", + "entity_name": "pi-alcobendas-01:12-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:12-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659295239399095, + 40.52392830196396 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "30 0 * * * *", + "entity_name": "pi-alcobendas-01:13-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:13-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659217502840667, + 40.523991206872225 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * *", + "entity_name": "pi-alcobendas-01:14-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:14-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659139766282232, + 40.524054111780494 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pi-alcobendas-01:15-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:15-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659062029723798, + 40.52411701668875 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pi-alcobendas-01:16-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:16-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65931007104927, + 40.52378766049727 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "pi-alcobendas-01:17-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:17-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659232334490836, + 40.523850565405525 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "21 0 * * * *", + "entity_name": "pi-alcobendas-01:18-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:18-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659154597932403, + 40.523913470313786 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * *", + "entity_name": "pi-alcobendas-01:19-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:19-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659076861373968, + 40.523976375222055 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "pi-alcobendas-01:20-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:20-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658999124815535, + 40.52403928013031 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "21 0 * * * *", + "entity_name": "pi-alcobendas-01:21-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:21-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659169429582577, + 40.5237728288471 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pi-alcobendas-01:22-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:22-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659091693024145, + 40.52383573375536 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "25 0 * * * *", + "entity_name": "pi-alcobendas-01:23-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:23-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659013956465714, + 40.52389863866362 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "30 0 * * * *", + "entity_name": "pi-alcobendas-01:24-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:24-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658936219907279, + 40.523961543571865 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * *", + "entity_name": "pi-alcobendas-01:25-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:25-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65910652467432, + 40.52369509228866 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "52 0 * * * *", + "entity_name": "pi-alcobendas-01:26-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:26-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659028788115885, + 40.523757997196924 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * *", + "entity_name": "pi-alcobendas-01:27-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:27-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658951051557452, + 40.52382090210518 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "55 0 * * * *", + "entity_name": "pi-alcobendas-01:28-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:28-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65887331499902, + 40.52388380701344 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "46 0 * * * *", + "entity_name": "pi-alcobendas-01:29-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:29-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658795578440582, + 40.52394671192169 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * *", + "entity_name": "pi-alcobendas-01:30-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:30-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659043619766058, + 40.52361735573023 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "8 0 * * * *", + "entity_name": "pi-alcobendas-01:31-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:31-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658965883207623, + 40.52368026063849 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "15 0 * * * *", + "entity_name": "pi-alcobendas-01:32-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:32-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658888146649192, + 40.52374316554673 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * *", + "entity_name": "pi-alcobendas-01:33-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:33-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658810410090757, + 40.523806070455 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "8 0 * * * *", + "entity_name": "pi-alcobendas-01:34-1", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:34-1" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658732673532321, + 40.52386897536326 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * *", + "entity_name": "pi-alcobendas-01:01-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:01-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659498785774049, + 40.52402087017259 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "24 0 * * * *", + "entity_name": "pi-alcobendas-01:02-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:02-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659421049215613, + 40.52408377508085 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * *", + "entity_name": "pi-alcobendas-01:03-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:03-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659343312657178, + 40.52414667998911 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * *", + "entity_name": "pi-alcobendas-01:04-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:04-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65926557609875, + 40.52420958489736 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "6 0 * * * *", + "entity_name": "pi-alcobendas-01:05-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:05-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659187839540316, + 40.524272489805625 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * *", + "entity_name": "pi-alcobendas-01:06-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:06-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659435880865791, + 40.52394313361415 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "pi-alcobendas-01:07-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:07-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659358144307357, + 40.5240060385224 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * *", + "entity_name": "pi-alcobendas-01:08-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:08-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659280407748923, + 40.52406894343066 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * *", + "entity_name": "pi-alcobendas-01:09-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:09-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659202671190491, + 40.524131848338925 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "27 0 * * * *", + "entity_name": "pi-alcobendas-01:10-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:10-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659124934632059, + 40.52419475324718 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "33 0 * * * *", + "entity_name": "pi-alcobendas-01:11-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:11-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659372975957529, + 40.523865397055715 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * *", + "entity_name": "pi-alcobendas-01:12-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:12-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659295239399095, + 40.52392830196396 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "3 0 * * * *", + "entity_name": "pi-alcobendas-01:13-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:13-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659217502840667, + 40.523991206872225 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "15 0 * * * *", + "entity_name": "pi-alcobendas-01:14-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:14-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659139766282232, + 40.524054111780494 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * *", + "entity_name": "pi-alcobendas-01:15-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:15-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659062029723798, + 40.52411701668875 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "19 0 * * * *", + "entity_name": "pi-alcobendas-01:16-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:16-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65931007104927, + 40.52378766049727 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "5 0 * * * *", + "entity_name": "pi-alcobendas-01:17-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:17-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659232334490836, + 40.523850565405525 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * *", + "entity_name": "pi-alcobendas-01:18-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:18-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659154597932403, + 40.523913470313786 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * *", + "entity_name": "pi-alcobendas-01:19-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:19-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659076861373968, + 40.523976375222055 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "pi-alcobendas-01:20-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:20-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658999124815535, + 40.52403928013031 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * *", + "entity_name": "pi-alcobendas-01:21-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:21-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659169429582577, + 40.5237728288471 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "5 0 * * * *", + "entity_name": "pi-alcobendas-01:22-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:22-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659091693024145, + 40.52383573375536 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pi-alcobendas-01:23-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:23-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659013956465714, + 40.52389863866362 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "pi-alcobendas-01:24-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:24-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658936219907279, + 40.523961543571865 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * *", + "entity_name": "pi-alcobendas-01:25-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:25-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65910652467432, + 40.52369509228866 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * *", + "entity_name": "pi-alcobendas-01:26-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:26-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659028788115885, + 40.523757997196924 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * *", + "entity_name": "pi-alcobendas-01:27-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:27-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658951051557452, + 40.52382090210518 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "25 0 * * * *", + "entity_name": "pi-alcobendas-01:28-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:28-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65887331499902, + 40.52388380701344 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "pi-alcobendas-01:29-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:29-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658795578440582, + 40.52394671192169 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[17,[[40,\"free\"],[60,\"occupied\"]]],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "46 0 * * * *", + "entity_name": "pi-alcobendas-01:30-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:30-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659043619766058, + 40.52361735573023 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "39 0 * * * *", + "entity_name": "pi-alcobendas-01:31-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:31-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658965883207623, + 40.52368026063849 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "pi-alcobendas-01:32-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:32-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658888146649192, + 40.52374316554673 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * *", + "entity_name": "pi-alcobendas-01:33-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:33-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658810410090757, + 40.523806070455 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "40 0 * * * *", + "entity_name": "pi-alcobendas-01:34-2", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "pi-alcobendas-01:34-2" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "pi-alcobendas-01" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "pi-alcobendas-01-group-03" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658732673532321, + 40.52386897536326 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * *", + "entity_name": "pi-alcobendas-02", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.657089829692516, + 40.52584148731349 + ], + [ + -3.656478099704312, + 40.52538197223599 + ], + [ + -3.657658378740377, + 40.52449849094408 + ], + [ + -3.658259313493495, + 40.52493065971833 + ], + [ + -3.657089829692516, + 40.52584148731349 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Polígono Industrial Alcobendas - Parking 02" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PI Alcobendas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle", + "bicycle", + "van" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 125 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 3.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2.6 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,75],[6,random(75,85)],[8,random(85,100)],[10,random(90,100)],[12,random(95,112)],[14,random(100,112)],[16,random(80,112)],[18,random(75,90)],[20,random(75,95)],[22,75],[23,random(75,80)],[24,75]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "pi-alcobendas-03", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.651474508241966, + 40.52786276920397 + ], + [ + -3.65051013390762, + 40.52716804590323 + ], + [ + -3.652007073172874, + 40.52588798568749 + ], + [ + -3.653072203034689, + 40.52662101461448 + ], + [ + -3.651474508241966, + 40.52786276920397 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Polígono Industrial Alcobendas - Parking 03" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PI Alcobendas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle", + "bicycle", + "van" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 350 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 3.4 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2.5 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,210],[5,random(210,215)],[6,random(210,250)],[8,random(250,280)],[10,random(280,315)],[12,random(240,300)],[14,random(250,315)],[16,random(210,315)],[18,random(250,260)],[22,random(260,280)],[24,210]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "24 0 * * * *", + "entity_name": "las-tablas-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.672553222015094, + 40.51478264815115 + ], + [ + -3.672048084009071, + 40.51500702210761 + ], + [ + -3.671679162993438, + 40.51454964363241 + ], + [ + -3.671673487285504, + 40.51431663830397 + ], + [ + -3.671775650028296, + 40.514208765192514 + ], + [ + -3.672172949583594, + 40.51406205748241 + ], + [ + -3.672252409494654, + 40.51406205748241 + ], + [ + -3.672411329316773, + 40.514303693539745 + ], + [ + -3.672343220821579, + 40.5145064945586 + ], + [ + -3.672553222015094, + 40.51478264815115 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Las Tablas - Parking 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "forCustomers" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 250 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,225],[6,random(225,220)],[8,random(120,190)],[10,random(100,150)],[12,random(25,30)],[14,25],[16,random(25,30)],[18,random(40,60)],[22,100],[23,random(225,220)],[24,225]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * *", + "entity_name": "las-tablas-02", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.663619142578264, + 40.505600962167875 + ], + [ + -3.663012438321005, + 40.50520026710987 + ], + [ + -3.663552715104841, + 40.504759163059475 + ], + [ + -3.664141705369186, + 40.50516659514722 + ], + [ + -3.663619142578264, + 40.505600962167875 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Las Tablas - Parking 02" + }, + { + "name": "category", + "type": "List", + "value": [ + "forCustomers" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "manual" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 150 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[8,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,135],[6,random(135,130)],[8,random(135,50)],[10,random(50,70)],[12,random(30,20)],[13,15],[14,15],[16,random(30,80)],[18,random(100,120)],[22,random(100,120)],[24,135]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "57 0 * * * *", + "entity_name": "las-tablas-03", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.677528808121943, + 40.50916290183265 + ], + [ + -3.678147734933539, + 40.508916672185286 + ], + [ + -3.67828447457796, + 40.50935988489962 + ], + [ + -3.677787893764006, + 40.50954318806721 + ], + [ + -3.677528808121943, + 40.50916290183265 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Las Tablas - Parking 03" + }, + { + "name": "category", + "type": "List", + "value": [ + "forCustomers" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 300 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,270],[6,random(270,265)],[8,random(270,200)],[10,random(200,100)],[12,random(100,150)],[14,random(30,40)],[16,random(40,60)],[18,random(40,70)],[22,random(80,100)],[24,270]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * *", + "entity_name": "pe-moraleja-02", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.656777591815774, + 40.51682787529013 + ], + [ + -3.656272453809751, + 40.5167911998254 + ], + [ + -3.656272453809751, + 40.5167911998254 + ], + [ + -3.656363265136676, + 40.51618065825962 + ], + [ + -3.656871240996665, + 40.516232435851975 + ], + [ + -3.656777591815774, + 40.51682787529013 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Parque Empresarial Moraleja - Parking 02" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": -1 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": -1 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": -1 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PE Moraleja" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 200 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,140],[5,random(140,135)],[7,random(140,100)],[10,random(100,80)],[12,random(80,120)],[14,random(80,85)],[16,random(80,85)],[18,random(110,120)],[22,random(100,120)],[24,140]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "56 0 * * * *", + "entity_name": "pe-moraleja-03", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.660994642809872, + 40.52070025999316 + ], + [ + -3.660608694670439, + 40.52096775908906 + ], + [ + -3.660296530734133, + 40.52071104626768 + ], + [ + -3.660776128054458, + 40.52040471539605 + ], + [ + -3.660818695863954, + 40.5204435461474 + ], + [ + -3.660886804359148, + 40.52040902992509 + ], + [ + -3.661017345641603, + 40.52051689306079 + ], + [ + -3.660960588562275, + 40.52056219552603 + ], + [ + -3.661011669933671, + 40.520613969734534 + ], + [ + -3.660946399292443, + 40.520654957621225 + ], + [ + -3.660994642809872, + 40.52070025999316 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Parque Empresarial Moraleja - Parking 03" + }, + { + "name": "category", + "type": "List", + "value": [ + "foResidents" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": -1 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "PE Moraleja" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 200 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,140],[5,random(140,135)],[7,random(140,100)],[10,random(100,80)],[12,random(80,120)],[14,random(80,85)],[16,random(80,85)],[18,random(110,120)],[22,random(100,120)],[24,140]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * *", + "entity_name": "soto-moraleja-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.651808509520575, + 40.5185990606183 + ], + [ + -3.651643913990521, + 40.51857748738789 + ], + [ + -3.65170067106985, + 40.51824310142877 + ], + [ + -3.651887969431634, + 40.518281933432206 + ], + [ + -3.651808509520575, + 40.5185990606183 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Soto de La Moraleja - Parking 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Soto de La Moraleja" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "manual" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 100 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[8,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,90],[8,random(90,85)],[12,random(80,70)],[14,random(70,60)],[16,random(70,60)],[18,random(70,60)],[22,random(85,90)],[24,90]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "19 0 * * * *", + "entity_name": "encinar-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.645290714593941, + 40.508923050968974 + ], + [ + -3.644848580326465, + 40.50866587077747 + ], + [ + -3.645020362832903, + 40.50846966545715 + ], + [ + -3.64471387460453, + 40.50831862988385 + ], + [ + -3.644896437575547, + 40.50813782084866 + ], + [ + -3.645055357397665, + 40.50822139499049 + ], + [ + -3.645127630332341, + 40.508150766795254 + ], + [ + -3.645733789178578, + 40.508504468658735 + ], + [ + -3.645290714593941, + 40.508923050968974 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Encinar - Parking 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "forCustomers" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": -2 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Encinar" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "manual" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 180 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[22,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,108],[5,random(108,105)],[6,random(50,80)],[12,0],[13,0],[14,0],[16,random(80,95)],[18,random(50,83)],[22,random(108,105)],[24,108]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "22 0 * * * *", + "entity_name": "portico-gloria-01", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.663350061602, + 40.518545127529265 + ], + [ + -3.663327358770268, + 40.51850845300393 + ], + [ + -3.663327358770268, + 40.51850845300393 + ], + [ + -3.662660463088161, + 40.51772749658456 + ], + [ + -3.663378440141664, + 40.5172830808591 + ], + [ + -3.66441141898544, + 40.5178785109663 + ], + [ + -3.664405743277508, + 40.51789576973112 + ], + [ + -3.663994254452378, + 40.51818485338146 + ], + [ + -3.663350061602, + 40.518545127529265 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Parking Pórtico Gloria" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Distrito Telefónica" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "singleSpaceDetection" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT14H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 82 + }, + { + "name": "availableSpotNumber", + "type": "Number", + "value": 0 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "15 0 * * * 1-5", + "entity_name": "portico-gloria-01:01", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.664105398635812, + 40.517936676435525 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * 1-5", + "entity_name": "portico-gloria-01:02", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:02" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663912738371838, + 40.517685913554125 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[80,\"free\"],[20,\"occupied\"]]],[16,[[40,\"free\"],[60,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * 1-5", + "entity_name": "portico-gloria-01:03", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:03" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663945460162893, + 40.51778040844495 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * 1-5", + "entity_name": "portico-gloria-01:04", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:04" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66397818195394, + 40.517874903335766 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[16,[[50,\"free\"],[50,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * 1-5", + "entity_name": "portico-gloria-01:05", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:05" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.664010903744995, + 40.517969398226576 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * 1-5", + "entity_name": "portico-gloria-01:06", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:06" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.664043625536044, + 40.5180638931174 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * 1-5", + "entity_name": "portico-gloria-01:07", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:07" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66378552168997, + 40.51762414045436 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * 1-5", + "entity_name": "portico-gloria-01:08", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:08" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663818243481023, + 40.517718635345176 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "46 0 * * * 1-5", + "entity_name": "portico-gloria-01:09", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:09" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663850965272065, + 40.51781313023599 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[20,\"free\"],[80,\"occupied\"]]],[16,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * 1-5", + "entity_name": "portico-gloria-01:10", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:10" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663883687063123, + 40.51790762512681 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "57 0 * * * 1-5", + "entity_name": "portico-gloria-01:11", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:11" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66391640885417, + 40.51800212001762 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "55 0 * * * 1-5", + "entity_name": "portico-gloria-01:12", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:12" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663949130645216, + 40.518096614908444 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * 1-5", + "entity_name": "portico-gloria-01:13", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:13" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663658305008106, + 40.5175623673546 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * 1-5", + "entity_name": "portico-gloria-01:14", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:14" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663691026799155, + 40.51765686224541 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "58 0 * * * 1-5", + "entity_name": "portico-gloria-01:15", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:15" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663723748590201, + 40.51775135713622 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * 1-5", + "entity_name": "portico-gloria-01:16", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:16" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663756470381257, + 40.517845852027044 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * 1-5", + "entity_name": "portico-gloria-01:17", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:17" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663789192172302, + 40.51794034691786 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "39 0 * * * 1-5", + "entity_name": "portico-gloria-01:18", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:18" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663821913963348, + 40.51803484180868 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "portico-gloria-01:19", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:19" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663854635754397, + 40.518129336699495 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "5 0 * * * 1-5", + "entity_name": "portico-gloria-01:20", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:20" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663531088326234, + 40.51750059425483 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * 1-5", + "entity_name": "portico-gloria-01:21", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:21" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663563810117278, + 40.517595089145644 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "52 0 * * * 1-5", + "entity_name": "portico-gloria-01:22", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:22" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663596531908329, + 40.51768958403646 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * 1-5", + "entity_name": "portico-gloria-01:23", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:23" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663629253699385, + 40.51778407892728 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "27 0 * * * 1-5", + "entity_name": "portico-gloria-01:24", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:24" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663661975490427, + 40.517878573818095 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "47 0 * * * 1-5", + "entity_name": "portico-gloria-01:25", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:25" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66369469728148, + 40.51797306870891 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * 1-5", + "entity_name": "portico-gloria-01:26", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:26" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663727419072526, + 40.51806756359973 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * 1-5", + "entity_name": "portico-gloria-01:27", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:27" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66376014086357, + 40.518162058490546 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "48 0 * * * 1-5", + "entity_name": "portico-gloria-01:28", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:28" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663792862654628, + 40.51825655338136 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "54 0 * * * 1-5", + "entity_name": "portico-gloria-01:29", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:29" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66340387164437, + 40.51743882115506 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[80,\"free\"],[20,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * 1-5", + "entity_name": "portico-gloria-01:30", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:30" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663436593435414, + 40.51753331604588 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * 1-5", + "entity_name": "portico-gloria-01:31", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:31" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663469315226468, + 40.5176278109367 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "11 0 * * * 1-5", + "entity_name": "portico-gloria-01:32", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:32" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663502037017514, + 40.51772230582751 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * 1-5", + "entity_name": "portico-gloria-01:33", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:33" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663534758808554, + 40.51781680071833 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "40 0 * * * 1-5", + "entity_name": "portico-gloria-01:34", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:34" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663567480599612, + 40.51791129560915 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * 1-5", + "entity_name": "portico-gloria-01:35", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:35" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663600202390658, + 40.51800579049996 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * 1-5", + "entity_name": "portico-gloria-01:36", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:36" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663632924181712, + 40.51810028539077 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "28 0 * * * 1-5", + "entity_name": "portico-gloria-01:37", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:37" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66366564597276, + 40.518194780281604 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * 1-5", + "entity_name": "portico-gloria-01:38", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:38" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663698367763807, + 40.518289275172414 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * 1-5", + "entity_name": "portico-gloria-01:39", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:39" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663309376753539, + 40.5174715429461 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[17,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * 1-5", + "entity_name": "portico-gloria-01:40", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:40" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663342098544597, + 40.51756603783693 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "47 0 * * * 1-5", + "entity_name": "portico-gloria-01:41", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:41" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66337482033564, + 40.517660532727746 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * 1-5", + "entity_name": "portico-gloria-01:42", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:42" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663407542126686, + 40.517755027618556 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "55 0 * * * 1-5", + "entity_name": "portico-gloria-01:43", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:43" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663440263917739, + 40.51784952250937 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * 1-5", + "entity_name": "portico-gloria-01:44", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:44" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663472985708781, + 40.5179440174002 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "28 0 * * * 1-5", + "entity_name": "portico-gloria-01:45", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:45" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663505707499844, + 40.518038512291014 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "18 0 * * * 1-5", + "entity_name": "portico-gloria-01:46", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:46" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66353842929089, + 40.518133007181824 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * 1-5", + "entity_name": "portico-gloria-01:47", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:47" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663571151081932, + 40.51822750207265 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * 1-5", + "entity_name": "portico-gloria-01:48", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:48" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66360387287299, + 40.51832199696347 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * 1-5", + "entity_name": "portico-gloria-01:49", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:49" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663214881862729, + 40.517504264737155 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "55 0 * * * 1-5", + "entity_name": "portico-gloria-01:50", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:50" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663247603653765, + 40.51759875962797 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * 1-5", + "entity_name": "portico-gloria-01:51", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:51" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663280325444827, + 40.5176932545188 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * 1-5", + "entity_name": "portico-gloria-01:52", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:52" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663313047235874, + 40.51778774940961 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "54 0 * * * 1-5", + "entity_name": "portico-gloria-01:53", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:53" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663345769026916, + 40.517882244300424 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * 1-5", + "entity_name": "portico-gloria-01:54", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:54" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663378490817973, + 40.51797673919125 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "8 0 * * * 1-5", + "entity_name": "portico-gloria-01:55", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:55" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663411212609018, + 40.51807123408206 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "54 0 * * * 1-5", + "entity_name": "portico-gloria-01:56", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:56" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663443934400075, + 40.51816572897288 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "9 0 * * * 1-5", + "entity_name": "portico-gloria-01:57", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:57" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663476656191117, + 40.5182602238637 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * 1-5", + "entity_name": "portico-gloria-01:58", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:58" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663509377982162, + 40.51835471875451 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "2 0 * * * 1-5", + "entity_name": "portico-gloria-01:59", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:59" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663120386971896, + 40.5175369865282 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[30,\"free\"],[70,\"occupied\"]]],[18,[[60,\"free\"],[40,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "portico-gloria-01:60", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:60" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66315310876295, + 40.51763148141902 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * 1-5", + "entity_name": "portico-gloria-01:61", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:61" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663185830553996, + 40.51772597630985 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "21 0 * * * 1-5", + "entity_name": "portico-gloria-01:62", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:62" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663218552345052, + 40.51782047120066 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "46 0 * * * 1-5", + "entity_name": "portico-gloria-01:63", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:63" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663251274136101, + 40.51791496609148 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * 1-5", + "entity_name": "portico-gloria-01:64", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:64" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663283995927143, + 40.5180094609823 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * 1-5", + "entity_name": "portico-gloria-01:65", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:65" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663316717718207, + 40.51810395587311 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * 1-5", + "entity_name": "portico-gloria-01:66", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:66" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663316717718207, + 40.51810395587311 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * 1-5", + "entity_name": "portico-gloria-01:67", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:67" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663382161300287, + 40.51829294565475 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * 1-5", + "entity_name": "portico-gloria-01:68", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:68" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663414883091347, + 40.51838744054557 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * 1-5", + "entity_name": "portico-gloria-01:69", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:69" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663025892081086, + 40.51756970831926 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[10,\"free\"],[90,\"occupied\"]]],[16,[[20,\"free\"],[80,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * 1-5", + "entity_name": "portico-gloria-01:70", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:70" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663058613872128, + 40.51766420321008 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * 1-5", + "entity_name": "portico-gloria-01:71", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:71" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663091335663188, + 40.5177586981009 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "29 0 * * * 1-5", + "entity_name": "portico-gloria-01:72", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:72" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663124057454233, + 40.51785319299171 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "portico-gloria-01:73", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:73" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663156779245279, + 40.517947687882526 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "33 0 * * * 1-5", + "entity_name": "portico-gloria-01:74", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:74" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663189501036328, + 40.51804218277335 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "58 0 * * * 1-5", + "entity_name": "portico-gloria-01:75", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:75" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663222222827379, + 40.51813667766416 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[40,\"free\"],[60,\"occupied\"]]],[15,[[40,\"free\"],[60,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "47 0 * * * 1-5", + "entity_name": "portico-gloria-01:76", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:76" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663254944618426, + 40.51823117255498 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * 1-5", + "entity_name": "portico-gloria-01:77", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:77" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663287666409476, + 40.5183256674458 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[5,[[40,\"free\"],[60,\"occupied\"]]],[15,[[40,\"free\"],[60,\"occupied\"]]],[23,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * 1-5", + "entity_name": "portico-gloria-01:78", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:78" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662964118981312, + 40.517696925001125 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * 1-5", + "entity_name": "portico-gloria-01:79", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:79" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662996840772358, + 40.51779141989194 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * 1-5", + "entity_name": "portico-gloria-01:80", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:80" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663029562563411, + 40.51788591478276 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "16 0 * * * 1-5", + "entity_name": "portico-gloria-01:81", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:81" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663062284354453, + 40.51798040967358 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * 1-5", + "entity_name": "portico-gloria-01:82", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "portico-gloria-01:82" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "portico-gloria-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6630950061455, + 40.51807490456439 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[23,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + + { + "schedule": "51 0 * * * *", + "entity_name": "Telefonica-Parking-Sur", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.662582812830806, + 40.511400149902734 + ], + [ + -3.6622126679867506, + 40.511746216305845 + ], + [ + -3.6612631659954786, + 40.5113136330229 + ], + [ + -3.661654768511653, + 40.51088681478207 + ], + [ + -3.662582812830806, + 40.511400149902734 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Distrito T - Parking Sur" + }, + { + "name": "category", + "type": "List", + "value": [ + "private", + "underground", + "mediumTerm", + "onlyWithPermit" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "areaServed", + "type": "Text", + "value": "Distrito Telefónica" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "balancing" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [ + "onlyWithPermit" + ] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 180 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedheight", + "type": "Number", + "value": 2.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + } + ], + "active": [ + { + "name": "status_offsp", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[6,\"open\"],[23,\"closed\"]]})" + }, + { + "name": "availableSpotNumber", + "schedule": "24 0 * * * 1-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,175],[6,random(180,175)],[7,random(140,150)],[8,random(70,80)],[9,random(40,30)],[10,random(10,0)],[12,random(0,5)],[14,random(20,40)],[16,random(50,60)],[18,random(110,120)],[22,random(160,170)],[23,random(175,180)],[24,180]])" + }, + { + "name": "availableSpotNumber", + "schedule": "25 0 * * * 0,6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,175],[12,random(175,180)],[24,180]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "once", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte", + "entity_type": "OffStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.6640730942599475, + 40.516422467811246 + ], + [ + -3.663185283076018, + 40.515815842229166 + ], + [ + -3.663098111283034, + 40.51590454244679 + ], + [ + -3.663377061020583, + 40.51609519654037 + ], + [ + -3.6633341456763446, + 40.51612884132412 + ], + [ + -3.663878634106368, + 40.516496893765165 + ], + [ + -3.6639175261370838, + 40.51646324916609 + ], + [ + -3.663975193630904, + 40.51650199143022 + ], + [ + -3.6640730942599475, + 40.516422467811246 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Distrito T - Parking Norte Visitas" + }, + { + "name": "category", + "type": "List", + "value": [ + "private", + "underground", + "mediumTerm", + "onlyWithPermit", + "forVisitors", + "forDisabled" + ] + }, + { + "name": "highestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "lowestFloor", + "type": "Number", + "value": 0 + }, + { + "name": "firstAvailableFloor", + "type": "Number", + "value": 0 + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "singleSpaceDetection" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [ + "visitorPermit" + ] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 54 + }, + { + "name": "status_offsp", + "type": "Text", + "value": "open" + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [ + "TelefonicaHQ-Guest-ParkingNorte-Main", + "TelefonicaHQ-Guest-Parking-Norte-Disabled" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Distrito Telefónica" + } + ], + "active": [ + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "once", + "entity_name": "TelefonicaHQ-Guest-ParkingNorte-Main", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet", + "adjacentSpaces", + "onlyWithPermit" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "floor", + "type": "Number", + "value": 0 + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "description", + "type": "Text", + "value": "Main Area" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 52 + }, + { + "name": "requiredPermit", + "type": "Text", + "value": "visitorPermit" + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.6632134986575693, + 40.515910659698854 + ], + [ + -3.6631638777907938, + 40.51587650503438 + ], + [ + -3.6632034403737634, + 40.515843369895485 + ], + [ + -3.6632517201360315, + 40.51587752457683 + ], + [ + -3.6632134986575693, + 40.515910659698854 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "once", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte-Disabled", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "offstreet", + "adjacentSpaces", + "onlyDisabled" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "free" + ] + }, + { + "name": "floor", + "type": "Number", + "value": 0 + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "singleSpaceDetection" + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "description", + "type": "Text", + "value": "Two parking spots reserved for disabled people" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 2 + }, + { + "name": "requiredPermit", + "type": "Text", + "value": "visitorPermit, disabledPermit" + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.6632134986575693, + 40.515910659698854 + ], + [ + -3.6631638777907938, + 40.51587650503438 + ], + [ + -3.6632034403737634, + 40.515843369895485 + ], + [ + -3.6632517201360315, + 40.51587752457683 + ], + [ + -3.6632134986575693, + 40.515910659698854 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "33 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte-Disabled:01", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-D-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte-Disabled" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6632188106887043, + 40.515890268856495 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "19 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte-Disabled:02", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-D-02" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte-Disabled" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663197353016585, + 40.51587089755047 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:01", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6640127445571125, + 40.51642450687956 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "57 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:02", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-02" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6639859224669635, + 40.51640717479679 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:03", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-03" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663960441481322, + 40.51638984270951 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "41 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:04", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-04" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663938983809203, + 40.51637047154784 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "57 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:05", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-05" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6639108730014414, + 40.51635823712707 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:06", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-06" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6638786864932626, + 40.51634039525944 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:07", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-07" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663858569925651, + 40.516322043619205 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:08", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-08" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663829065626487, + 40.5163087896537 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:09", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-09" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663802914088592, + 40.51628686962805 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "3 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:10", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-10" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663780785864219, + 40.516270047277914 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "29 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:11", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-11" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663761339848861, + 40.516253224923574 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "16 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:12", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-12" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66373049444519, + 40.51623640256499 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "54 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:13", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-13" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6637076956685632, + 40.51621703135903 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "39 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:14", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-14" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663684173952788, + 40.51620224806646 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:15", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-15" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6636546696536243, + 40.51618389638842 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:16", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-16" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663633211981505, + 40.516166564243406 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:17", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-17" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6636063898913562, + 40.516150251632276 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:18", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-18" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6635835911147296, + 40.51612884132412 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:19", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-19" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663558110129088, + 40.516118645936885 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "11 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:20", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-20" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663536652456969, + 40.516102333314095 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "50 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:21", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-21" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663503124844283, + 40.516080922990625 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:22", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-22" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663483008276671, + 40.51606359081903 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:23", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-23" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663461550604552, + 40.51605135634223 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "32 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:24", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-24" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663432046305388, + 40.516031985082776 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "40 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:25", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-25" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663403883110732, + 40.51601669197926 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "30 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:26", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-26" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6633851076476276, + 40.51600139887223 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:27", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-27" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663356944452971, + 40.51597998851655 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "6 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:28", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-28" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663332804571837, + 40.51596469540118 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "31 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:29", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-29" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6633100057952106, + 40.515952460906334 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "35 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:30", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-30" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663277819287032, + 40.5159228942013 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "44 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:31", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-31" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663245632778853, + 40.51590556198884 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:32", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-32" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663870587479323, + 40.51646324916609 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:33", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-33" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663846447598189, + 40.51644795616094 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "10 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:34", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-34" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6638209666125476, + 40.51642960455014 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "27 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:35", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-35" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6637968267314136, + 40.51641227246866 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "37 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:36", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-36" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66376732243225, + 40.51639697945189 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "27 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:37", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-37" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663744523655623, + 40.51638066689679 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "22 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:38", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-38" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6637177015654743, + 40.51636333480266 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:39", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-39" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6636949027888477, + 40.51634702223939 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "56 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:40", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-40" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663669421803206, + 40.51633172920773 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "52 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:41", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-41" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6636399175040424, + 40.51631031895751 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:42", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-42" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663617118727416, + 40.51629298684522 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:43", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-43" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663597002159804, + 40.51627769380122 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:44", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-44" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6635648156516254, + 40.516261381217106 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:45", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-45" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6635446990840137, + 40.51624710770276 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "51 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:46", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-46" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6635205592028797, + 40.516228756037 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"closed\"],[7,[[10,\"unknown\"],[30,\"free\"],[60,\"occupied\"]]],[19,[[10,\"unknown\"],[70,\"free\"],[20,\"occupied\"]]],[22,\"closed\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "56 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:47", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-47" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6634897137992084, + 40.51621142390359 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "54 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:48", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-48" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6634682561270893, + 40.5161920526904 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "58 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:49", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-49" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6634454573504627, + 40.51617879869919 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:50", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-50" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6634119297377765, + 40.516160447014705 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:51", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-51" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6633904720656574, + 40.51614209532523 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * 1-5", + "entity_name": "TelefonicaHQ-Guest-Parking-Norte:52", + "entity_type": "ParkingSpot", + "staticAttributes": [ + { + "name": "name", + "type": "Text", + "value": "DTN-52" + }, + { + "name": "category", + "type": "List", + "value": [ + "offstreet" + ] + }, + { + "name": "refParkingGroup", + "type": "Text", + "value": "TelefonicaHQ-Guest-Parking-Norte" + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "TelefonicaHQ-Guest-ParkingNorte-Main" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6633690143935382, + 40.51612782178546 + ] + } + } + ], + "active": [ + { + "name": "status", + "type": "Text", + "value": "text-rotation-interpolator({\"units\": \"hours\", \"text\": [[0,\"occupied\"],[22,\"occupied\"]]})" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + + { + "schedule": "13 0 * * * *", + "entity_name": "san-millan-cogolla-03", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.671471060276468, + 40.5057173218689 + ], + [ + -3.671449870310487, + 40.5057349926572 + ], + [ + -3.670686006214205, + 40.50521435211126 + ], + [ + -3.670704461991028, + 40.5051978505854 + ], + [ + -3.671471060276468, + 40.5057173218689 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-03" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * *", + "entity_name": "san-millan-cogolla-04", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670671139060654, + 40.505176541522374 + ], + [ + -3.670651657962895, + 40.50519369271998 + ], + [ + -3.669875490015398, + 40.504659599770086 + ], + [ + -3.669892749584464, + 40.50464485222165 + ], + [ + -3.670671139060654, + 40.505176541522374 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-04" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "30 0 * * * *", + "entity_name": "san-millan-cogolla-05", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.669858913993622, + 40.50462256847492 + ], + [ + -3.669844217726893, + 40.50463608165166 + ], + [ + -3.669005163428741, + 40.50407125452931 + ], + [ + -3.669026011621078, + 40.50405306356064 + ], + [ + -3.669858913993622, + 40.50462256847492 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-05" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "38 0 * * * *", + "entity_name": "san-millan-cogolla-06", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.668865036234344, + 40.50394053931623 + ], + [ + -3.668844700702476, + 40.50395834050835 + ], + [ + -3.668156197694886, + 40.503479135965975 + ], + [ + -3.668175507905822, + 40.50346406331637 + ], + [ + -3.668865036234344, + 40.50394053931623 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-06" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "33 0 * * * *", + "entity_name": "san-millan-cogolla-07", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.668143381183205, + 40.50344184414569 + ], + [ + -3.668121678556756, + 40.503458216166905 + ], + [ + -3.667225035399442, + 40.50287141964182 + ], + [ + -3.667244345610377, + 40.502852448720766 + ], + [ + -3.668143381183205, + 40.50344184414569 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-07" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "26 0 * * * *", + "entity_name": "san-millan-cogolla-08", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.671265654315901, + 40.50471845999716 + ], + [ + -3.672048887077031, + 40.50524275857778 + ], + [ + -3.672012087956293, + 40.50527379655065 + ], + [ + -3.671232160498704, + 40.50474548630928 + ], + [ + -3.671265654315901, + 40.50471845999716 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-08" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "28 0 * * * *", + "entity_name": "san-millan-cogolla-09", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670416669004523, + 40.50418325296548 + ], + [ + -3.669560448272207, + 40.50360510706175 + ], + [ + -3.669597532670453, + 40.503574032057855 + ], + [ + -3.670450726104954, + 40.50415524733981 + ], + [ + -3.670416669004523, + 40.50418325296548 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-09" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "36 0 * * * *", + "entity_name": "san-millan-cogolla-10", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.669411606129581, + 40.50348310881562 + ], + [ + -3.668645447507293, + 40.50293967682563 + ], + [ + -3.668677612546588, + 40.502913301175795 + ], + [ + -3.669444149581104, + 40.5034561579153 + ], + [ + -3.669411606129581, + 40.50348310881562 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-10" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "20 0 * * * *", + "entity_name": "san-millan-cogolla-11", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.66861265178095, + 40.502918288572204 + ], + [ + -3.667863900121105, + 40.50239441810093 + ], + [ + -3.66789480015042, + 40.50236974037303 + ], + [ + -3.668642924759111, + 40.50289277611747 + ], + [ + -3.66861265178095, + 40.502918288572204 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-11" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "39 0 * * * *", + "entity_name": "viloria-rioja-01", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.671415094841867, + 40.50713564768526 + ], + [ + -3.670540154311097, + 40.50654472555037 + ], + [ + -3.670563394918946, + 40.50652653525253 + ], + [ + -3.671434917713266, + 40.507119016702546 + ], + [ + -3.671415094841867, + 40.50713564768526 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "47 0 * * * *", + "entity_name": "viloria-rioja-02", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670509223796237, + 40.506522377469466 + ], + [ + -3.669770480062934, + 40.50601447634431 + ], + [ + -3.669789106726577, + 40.505999404264436 + ], + [ + -3.670530071988572, + 40.506506266057684 + ], + [ + -3.670509223796237, + 40.506522377469466 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-02" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "37 0 * * * *", + "entity_name": "viloria-rioja-03", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.669737840679852, + 40.505993297472486 + ], + [ + -3.66895791322234, + 40.505459860553785 + ], + [ + -3.668980982943369, + 40.5054415400289 + ], + [ + -3.669754416701626, + 40.50597952470562 + ], + [ + -3.669737840679852, + 40.505993297472486 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-03" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "17 0 * * * *", + "entity_name": "viloria-rioja-04", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.668926128273366, + 40.505439071305304 + ], + [ + -3.668072890368951, + 40.50485229210933 + ], + [ + -3.668093225900821, + 40.50483637519735 + ], + [ + -3.668946805578881, + 40.505421790237605 + ], + [ + -3.668926128273366, + 40.505439071305304 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-04" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "23 0 * * * *", + "entity_name": "viloria-rioja-05", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.667928832777639, + 40.50475172314901 + ], + [ + -3.667178554183741, + 40.50419761665764 + ], + [ + -3.667201111244301, + 40.50418098494638 + ], + [ + -3.667947373997873, + 40.50473678071956 + ], + [ + -3.667928832777639, + 40.50475172314901 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-05" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "49 0 * * * *", + "entity_name": "viloria-rioja-06", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.667147111008413, + 40.50417565760049 + ], + [ + -3.666380854496617, + 40.50367163679212 + ], + [ + -3.666402728009888, + 40.50365344571508 + ], + [ + -3.667170180729441, + 40.50415720678953 + ], + [ + -3.667147111008413, + 40.50417565760049 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-06" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "13 0 * * * *", + "entity_name": "viloria-rioja-07", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.672939187284484, + 40.50446987272743 + ], + [ + -3.672904326372711, + 40.50450105704834 + ], + [ + -3.672159772487462, + 40.5039887228052 + ], + [ + -3.67219224098372, + 40.50396169618815 + ], + [ + -3.672939187284484, + 40.50446987272743 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-07" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "57 0 * * * *", + "entity_name": "viloria-rioja-08", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.672160114261107, + 40.503940516668116 + ], + [ + -3.672129354633072, + 40.5039659840656 + ], + [ + -3.671368566499693, + 40.50342337048467 + ], + [ + -3.671400009675017, + 40.50339686338694 + ], + [ + -3.672160114261107, + 40.503940516668116 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-08" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "viloria-rioja-10", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670381267883477, + 40.50271554454565 + ], + [ + -3.670340938593387, + 40.502748808690754 + ], + [ + -3.669536061659814, + 40.50218539500656 + ], + [ + -3.669568188382428, + 40.502159147297974 + ], + [ + -3.670381267883477, + 40.50271554454565 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-10" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "59 0 * * * *", + "entity_name": "viloria-rioja-11", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.668799539455206, + 40.501588192125084 + ], + [ + -3.669536745207105, + 40.50213621302933 + ], + [ + -3.669503934937201, + 40.50216414995608 + ], + [ + -3.668769292487639, + 40.50161418017662 + ], + [ + -3.668799539455206, + 40.501588192125084 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-11" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "12 0 * * * *", + "entity_name": "santo-domingo-calzada-01", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670112633798639, + 40.50791786937079 + ], + [ + -3.669485137386731, + 40.507479230937385 + ], + [ + -3.669509915975982, + 40.50745766274137 + ], + [ + -3.670150912446859, + 40.507903837143054 + ], + [ + -3.670112633798639, + 40.50791786937079 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "santo-domingo-calzada-01" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "53 0 * * * *", + "entity_name": "santo-domingo-calzada-02", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.669452839777295, + 40.50745649338114 + ], + [ + -3.668696494701285, + 40.506950028558734 + ], + [ + -3.668714950478105, + 40.506934696829255 + ], + [ + -3.669474713290564, + 40.5074377836148 + ], + [ + -3.669452839777295, + 40.50745649338114 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "santo-domingo-calzada-02" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "42 0 * * * *", + "entity_name": "santo-domingo-calzada-03", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.668663342657736, + 40.506928330262596 + ], + [ + -3.667899649448365, + 40.506419782557 + ], + [ + -3.66792904198182, + 40.506395355538984 + ], + [ + -3.668681627547735, + 40.506913128458116 + ], + [ + -3.668663342657736, + 40.506928330262596 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "santo-domingo-calzada-03" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "14 0 * * * *", + "entity_name": "santo-domingo-calzada-04", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.66786888982033, + 40.50639925346798 + ], + [ + -3.666974126418165, + 40.50579169353308 + ], + [ + -3.667001810083396, + 40.50576908533691 + ], + [ + -3.667892813975469, + 40.50637586589056 + ], + [ + -3.66786888982033, + 40.50639925346798 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "santo-domingo-calzada-04" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "45 0 * * * *", + "entity_name": "santo-domingo-calzada-05", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.666822378919861, + 40.50569164571062 + ], + [ + -3.666065350296563, + 40.50516203942701 + ], + [ + -3.666088590904412, + 40.50514073035266 + ], + [ + -3.666846303074999, + 40.50567163612822 + ], + [ + -3.666822378919861, + 40.50569164571062 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "santo-domingo-calzada-05" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(20,23)],[5,random(20,23)],[6,random(3,6)],[14,random(3,8)],[18,random(8,6)],[22,random(10,22)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "once", + "entity_name": "san-millan-cogolla-01", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670700827614443, + 40.504333038925125 + ], + [ + -3.670672185226102, + 40.504359451065994 + ], + [ + -3.670569872636909, + 40.50428823504526 + ], + [ + -3.670600295709074, + 40.50426396306583 + ], + [ + -3.670700827614443, + 40.504333038925125 + ] + ] + ], + [ + [ + [ + -3.670672185226102, + 40.504359451065994 + ], + [ + -3.670700827614443, + 40.504333038925125 + ], + [ + -3.671114569144416, + 40.50461732232353 + ], + [ + -3.671082508616444, + 40.504645062048034 + ], + [ + -3.670672185226102, + 40.504359451065994 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "Calle San Millán de La Cogolla - aparcamientos 01" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car", + "motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT12H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 13 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [ + "san-millan-cogolla-01-group-01", + "san-millan-cogolla-01-group-02" + ] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "san-millan-cogolla-01-group-01", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "onstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "modelBased" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "san-millan-cogolla-01" + }, + { + "name": "description", + "type": "Text", + "value": "Calle San Millán de La Cogolla - Parking automóviles 1" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 10 + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670672185226102, + 40.504359451065994 + ], + [ + -3.670700827614443, + 40.504333038925125 + ], + [ + -3.671114569144416, + 40.50461732232353 + ], + [ + -3.671082508616444, + 40.504645062048034 + ], + [ + -3.670672185226102, + 40.504359451065994 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,9],[5,9],[6,random(8,7)],[14,1],[18,random(3,4)],[22,random(3,9)],[24,random(8,6)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "43 0 * * * *", + "entity_name": "san-millan-cogolla-01-group-02", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "onstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "motorcycle" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "modelBased" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "san-millan-cogolla-01" + }, + { + "name": "description", + "type": "Text", + "value": "Calle San Millán de La Cogolla - Parking motocicletas 1" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 3 + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670700827614443, + 40.504333038925125 + ], + [ + -3.670672185226102, + 40.504359451065994 + ], + [ + -3.670569872636909, + 40.50428823504526 + ], + [ + -3.670600295709074, + 40.50426396306583 + ], + [ + -3.670700827614443, + 40.504333038925125 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,2],[5,2],[6,random(2,3)],[14,2],[18,2],[22,2],[23,2]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "40 0 * * * *", + "entity_name": "san-millan-cogolla-02", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.671503186999089, + 40.50573850082787 + ], + [ + -3.671869739233209, + 40.50597848525148 + ], + [ + -3.67185008724863, + 40.50599628590273 + ], + [ + -3.671482680580395, + 40.50575500222071 + ], + [ + -3.671503186999089, + 40.50573850082787 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "san-millan-cogolla-02" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 15 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": [] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12,14)],[5,random(3,6)],[6,random(2,4)],[14,random(2,4)],[18,random(8,12)],[22,random(10,12)],[24,random(3,8)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "once", + "entity_name": "viloria-rioja-09", + "entity_type": "OnStreetParking", + "staticAttributes": [ + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670633493121666, + 40.50294034188122 + ], + [ + -3.670670998911621, + 40.50290951119011 + ], + [ + -3.671367284848811, + 40.50337458734643 + ], + [ + -3.671335499899842, + 40.503402913567726 + ], + [ + -3.670633493121666, + 40.50294034188122 + ] + ] + ], + [ + [ + [ + -3.670670998911621, + 40.50290951119011 + ], + [ + -3.670633493121666, + 40.50294034188122 + ], + [ + -3.670472179673002, + 40.50283404798731 + ], + [ + -3.670509774773933, + 40.50280182338794 + ], + [ + -3.670670998911621, + 40.50290951119011 + ] + ] + ] + ] + } + }, + { + "name": "name", + "type": "Text", + "value": "viloria-rioja-09" + }, + { + "name": "category", + "type": "List", + "value": [ + "public" + ] + }, + { + "name": "areaServed", + "type": "Text", + "value": "Las Tablas" + }, + { + "name": "occupancyDetectionType", + "type": "List", + "value": [ + "modelBased" + ] + }, + { + "name": "requiredPermit", + "type": "List", + "value": [] + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "allowedVehicleType", + "type": "List", + "value": [ + "car","motorcycle" + ] + }, + { + "name": "maximumParkingDuration", + "type": "Duration", + "value": "PT24H" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 25 + }, + { + "name": "refParkingGroup", + "type": "List", + "value": ["viloria-rioja-09:01","viloria-rioja-09:02"] + }, + { + "name": "averagespotwidth", + "type": "Number", + "value": 2.2 + }, + { + "name": "averagespotlength", + "type": "Number", + "value": 4.5 + }, + { + "name": "maximumallowedwidth", + "type": "Number", + "value": 2 + }, + { + "name": "status_onsp", + "type": "Text", + "value": "open" + } + ], + "active": [ + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "viloria-rioja-09:01", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "onstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "car" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "modelBased" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "viloria-rioja-09" + }, + { + "name": "description", + "type": "Text", + "value": "viloria-rioja-09 - Parking automóviles" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 15 + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670633493121666, + 40.50294034188122 + ], + [ + -3.670670998911621, + 40.50290951119011 + ], + [ + -3.671367284848811, + 40.50337458734643 + ], + [ + -3.671335499899842, + 40.503402913567726 + ], + [ + -3.670633493121666, + 40.50294034188122 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,2],[5,random(2,5)],[6,random(2,7)],[14,14],[18,6],[22,random(4,12)],[23,random(3,6)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "schedule": "4 0 * * * *", + "entity_name": "viloria-rioja-09:02", + "entity_type": "ParkingGroup", + "staticAttributes": [ + { + "name": "category", + "type": "List", + "value": [ + "onstreet" + ] + }, + { + "name": "allowedVehicleType", + "type": "Text", + "value": "motorcycle" + }, + { + "name": "occupancyDetectionType", + "type": "Text", + "value": "modelBased" + }, + { + "name": "chargeType", + "type": "List", + "value": [ + "flat" + ] + }, + { + "name": "refParkingSite", + "type": "Text", + "value": "viloria-rioja-09" + }, + { + "name": "description", + "type": "Text", + "value": "viloria-rioja-09 - Parking motocicletas" + }, + { + "name": "totalSpotNumber", + "type": "Number", + "value": 10 + }, + { + "name": "status_pg", + "type": "Text", + "value": "open" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "MultiPolygon", + "coordinates": [ + [ + [ + [ + -3.670670998911621, + 40.50290951119011 + ], + [ + -3.670633493121666, + 40.50294034188122 + ], + [ + -3.670472179673002, + 40.50283404798731 + ], + [ + -3.670509774773933, + 40.50280182338794 + ], + [ + -3.670670998911621, + 40.50290951119011 + ] + ] + ] + ] + } + } + ], + "active": [ + { + "name": "availableSpotNumber", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[5,random(2,4)],[6,random(2,7)],[14,9],[18,random(6,9)],[22,random(3,9)],[23,random(1,6)]])" + }, + { + "name": "dateModified", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + } + + + ] +} diff --git a/examples/urbo-simulation-streetlight.json b/examples/urbo-simulation-streetlight.json new file mode 100644 index 0000000..a1f3afe --- /dev/null +++ b/examples/urbo-simulation-streetlight.json @@ -0,0 +1,3501 @@ +{ + "domain": { + "service": "service", + "subservice": "/subservice" + }, + "contextBroker": { + "protocol": "http", + "host": "1.2.3.4", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "http", + "host": "1.2.3.4", + "port": 5001, + "user": "user", + "password": "password", + "retry": { + "times": 10, + "interval": 5000 + } + }, + "entities": [ + { + "entity_name": "begonia-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "48 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(13.2,15.399999999999999)],[7,random(16.5,17.6)],[8,0],[20,0],[20.5,random(16.5,17.6)],[24,random(16.5,17.6)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.6367999999999998,1.9095999999999997)],[7,random(2.046,2.1824000000000003)],[8,0],[20,0],[20.5,random(2.046,2.1824000000000003)],[24,random(2.046,2.1824000000000003)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 6 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 22, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.643003092282297, + 40.52242592179049 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.653Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "camino-nuevo-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "4 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(8.4,9.799999999999999)],[7,random(10.5,11.200000000000001)],[8,0],[20,0],[20.5,random(10.5,11.200000000000001)],[24,random(10.5,11.200000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.0416,1.2151999999999998)],[7,random(1.302,1.3888)],[8,0],[20,0],[20.5,random(1.302,1.3888)],[24,random(1.302,1.3888)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 13 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 14, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.649892473544252, + 40.51794808770004 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.653Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "azalea-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "58 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12,14)],[7,random(15,16)],[8,0],[20,0],[20.5,random(15,16)],[24,random(15,16)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.488,1.736)],[7,random(1.8599999999999999,1.984)],[8,0],[20,0],[20.5,random(1.8599999999999999,1.984)],[24,random(1.8599999999999999,1.984)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 3 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 20, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.642685695313588, + 40.52699570078362 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "golf-park-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "51 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(7.199999999999999,8.399999999999999)],[7,random(9,9.600000000000001)],[8,0],[20,0],[20.5,random(9,9.600000000000001)],[24,random(9,9.600000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.8927999999999999,1.0415999999999999)],[7,random(1.116,1.1904000000000001)],[8,0],[20,0],[20.5,random(1.116,1.1904000000000001)],[24,random(1.116,1.1904000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 12 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 12, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.657465658569671, + 40.519631745827674 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "europa-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "17 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(14.399999999999999,16.799999999999997)],[7,random(18,19.200000000000003)],[8,0],[20,0],[20.5,random(18,19.200000000000003)],[24,random(18,19.200000000000003)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.7855999999999999,2.0831999999999997)],[7,random(2.232,2.3808000000000002)],[8,0],[20,0],[20.5,random(2.232,2.3808000000000002)],[24,random(2.232,2.3808000000000002)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 8 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 24, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.65722294324066, + 40.51469419653811 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "33 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(10.799999999999999,12.6)],[7,random(13.5,14.4)],[8,0],[20,0],[20.5,random(13.5,14.4)],[24,random(13.5,14.4)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.3392,1.5624)],[7,random(1.674,1.7856)],[8,0],[20,0],[20.5,random(1.674,1.7856)],[24,random(1.674,1.7856)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 8 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 18, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.653502864063304, + 40.524898892116674 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "dt-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "34 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(13.2,15.399999999999999)],[7,random(16.5,17.6)],[8,0],[20,0],[20.5,random(16.5,17.6)],[24,random(16.5,17.6)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.6367999999999998,1.9095999999999997)],[7,random(2.046,2.1824000000000003)],[8,0],[20,0],[20.5,random(2.046,2.1824000000000003)],[24,random(2.046,2.1824000000000003)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 9 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 22, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.665466169588206, + 40.51672096330546 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "distritotelefonica", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "industria-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "55 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(7.8,9.1)],[7,random(9.75,10.4)],[8,0],[20,0],[20.5,random(9.75,10.4)],[24,random(9.75,10.4)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.9672,1.1283999999999998)],[7,random(1.209,1.2896)],[8,0],[20,0],[20.5,random(1.209,1.2896)],[24,random(1.209,1.2896)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 16 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 13, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.656756358856621, + 40.53356709264383 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "la-granja-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "45 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(3,3.5)],[7,random(3.75,4)],[8,0],[20,0],[20.5,random(3.75,4)],[24,random(3.75,4)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.372,0.434)],[7,random(0.46499999999999997,0.496)],[8,0],[20,0],[20.5,random(0.46499999999999997,0.496)],[24,random(0.46499999999999997,0.496)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 23 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 5, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.658955217203828, + 40.52730415182928 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "sepulveda-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "47 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(7.199999999999999,8.399999999999999)],[7,random(9,9.600000000000001)],[8,0],[20,0],[20.5,random(9,9.600000000000001)],[24,random(9,9.600000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.8927999999999999,1.0415999999999999)],[7,random(1.116,1.1904000000000001)],[8,0],[20,0],[20.5,random(1.116,1.1904000000000001)],[24,random(1.116,1.1904000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 4 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 12, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.653356062443416, + 40.528785945844135 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "calendula-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "27 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(10.2,11.899999999999999)],[7,random(12.75,13.600000000000001)],[8,0],[20,0],[20.5,random(12.75,13.600000000000001)],[24,random(12.75,13.600000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.2648,1.4755999999999998)],[7,random(1.581,1.6864000000000001)],[8,0],[20,0],[20.5,random(1.581,1.6864000000000001)],[24,random(1.581,1.6864000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 25 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 17, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.645592052299929, + 40.52695092865284 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "centro-comercial-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "28 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12,14)],[7,random(15,16)],[8,0],[20,0],[20.5,random(15,16)],[24,random(15,16)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.488,1.736)],[7,random(1.8599999999999999,1.984)],[8,0],[20,0],[20.5,random(1.8599999999999999,1.984)],[24,random(1.8599999999999999,1.984)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 20 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 20, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.649717745281285, + 40.52859641587884 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "europa-02", + "entity_type": "StreetlightControlCabinet", + "schedule": "27 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(7.199999999999999,8.399999999999999)],[7,random(9,9.600000000000001)],[8,0],[20,0],[20.5,random(9,9.600000000000001)],[24,random(9,9.600000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.8927999999999999,1.0415999999999999)],[7,random(1.116,1.1904000000000001)],[8,0],[20,0],[20.5,random(1.116,1.1904000000000001)],[24,random(1.116,1.1904000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 10 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 12, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.660656533009791, + 40.519868723073934 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "parques-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "6 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(9,10.5)],[7,random(11.25,12)],[8,0],[20,0],[20.5,random(11.25,12)],[24,random(11.25,12)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.116,1.302)],[7,random(1.395,1.488)],[8,0],[20,0],[20.5,random(1.395,1.488)],[24,random(1.395,1.488)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 9 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 15, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.654519388050461, + 40.51332271353841 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "conde-de-gaitanes-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "52 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12,14)],[7,random(15,16)],[8,0],[20,0],[20.5,random(15,16)],[24,random(15,16)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.488,1.736)],[7,random(1.8599999999999999,1.984)],[8,0],[20,0],[20.5,random(1.8599999999999999,1.984)],[24,random(1.8599999999999999,1.984)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 16 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 20, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.650336871040029, + 40.51586100086436 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "aragoneses-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "59 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12.6,14.7)],[7,random(15.75,16.8)],[8,0],[20,0],[20.5,random(15.75,16.8)],[24,random(15.75,16.8)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.5624,1.8228)],[7,random(1.953,2.0832)],[8,0],[20,0],[20.5,random(1.953,2.0832)],[24,random(1.953,2.0832)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 7 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 21, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.662244919883699, + 40.522479912661076 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "cuestablanca-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "40 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12,14)],[7,random(15,16)],[8,0],[20,0],[20.5,random(15,16)],[24,random(15,16)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.488,1.736)],[7,random(1.8599999999999999,1.984)],[8,0],[20,0],[20.5,random(1.8599999999999999,1.984)],[24,random(1.8599999999999999,1.984)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 4 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 20, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.655658015449564, + 40.521636884875946 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "azalea-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "23 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(9.6,11.2)],[7,random(12,12.8)],[8,0],[20,0],[20.5,random(12,12.8)],[24,random(12,12.8)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.1904,1.3887999999999998)],[7,random(1.488,1.5872000000000002)],[8,0],[20,0],[20.5,random(1.488,1.5872000000000002)],[24,random(1.488,1.5872000000000002)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 9 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 16, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.649138324325982, + 40.521338842213176 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "ligonde-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "20 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12.6,14.7)],[7,random(15.75,16.8)],[8,0],[20,0],[20.5,random(15.75,16.8)],[24,random(15.75,16.8)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.5624,1.8228)],[7,random(1.953,2.0832)],[8,0],[20,0],[20.5,random(1.953,2.0832)],[24,random(1.953,2.0832)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 1 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 21, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.667760386740123, + 40.51179140026885 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "lastablas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "cebreiro-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "33 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(8.4,9.799999999999999)],[7,random(10.5,11.200000000000001)],[8,0],[20,0],[20.5,random(10.5,11.200000000000001)],[24,random(10.5,11.200000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.0416,1.2151999999999998)],[7,random(1.302,1.3888)],[8,0],[20,0],[20.5,random(1.302,1.3888)],[24,random(1.302,1.3888)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 13 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 14, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.660029319777114, + 40.506352919140106 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "lastablas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "tierra-de-melide-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "25 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(12.6,14.7)],[7,random(15.75,16.8)],[8,0],[20,0],[20.5,random(15.75,16.8)],[24,random(15.75,16.8)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.5624,1.8228)],[7,random(1.953,2.0832)],[8,0],[20,0],[20.5,random(1.953,2.0832)],[24,random(1.953,2.0832)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 18 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 21, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.666852063785858, + 40.508581729532594 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "lastablas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "maria-tubau", + "entity_type": "StreetlightControlCabinet", + "schedule": "45 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(6.6,7.699999999999999)],[7,random(8.25,8.8)],[8,0],[20,0],[20.5,random(8.25,8.8)],[24,random(8.25,8.8)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.8183999999999999,0.9547999999999999)],[7,random(1.023,1.0912000000000002)],[8,0],[20,0],[20.5,random(1.023,1.0912000000000002)],[24,random(1.023,1.0912000000000002)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 16 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 11, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.672302001511451, + 40.51394155830268 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "lastablas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "dt-02", + "entity_type": "StreetlightControlCabinet", + "schedule": "15 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(10.799999999999999,12.6)],[7,random(13.5,14.4)],[8,0],[20,0],[20.5,random(13.5,14.4)],[24,random(13.5,14.4)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.3392,1.5624)],[7,random(1.674,1.7856)],[8,0],[20,0],[20.5,random(1.674,1.7856)],[24,random(1.674,1.7856)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 7 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 18, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.661819547049333, + 40.512069176040505 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "distritotelefonica", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "camio-del-cura-01", + "entity_type": "StreetlightControlCabinet", + "schedule": "55 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(13.2,15.399999999999999)],[7,random(16.5,17.6)],[8,0],[20,0],[20.5,random(16.5,17.6)],[24,random(16.5,17.6)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.6367999999999998,1.9095999999999997)],[7,random(2.046,2.1824000000000003)],[8,0],[20,0],[20.5,random(2.046,2.1824000000000003)],[24,random(2.046,2.1824000000000003)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 12 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 22, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.649031778988432, + 40.51072515448056 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "encinar", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + }, + { + "entity_name": "centro-comercial-02", + "entity_type": "StreetlightControlCabinet", + "schedule": "53 */15 * * * *", + "active": [ + { + "name": "totalActivePower", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(8.4,9.799999999999999)],[7,random(10.5,11.200000000000001)],[8,0],[20,0],[20.5,random(10.5,11.200000000000001)],[24,random(10.5,11.200000000000001)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "reactiveEnergyConsumed", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(2000,3000)],[7,random(4000,5000)],[8,0],[20,random(5000,6000)],[24,random(6000,8000)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "energyCost", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1.0416,1.2151999999999998)],[7,random(1.302,1.3888)],[8,0],[20,0],[20.5,random(1.302,1.3888)],[24,random(1.302,1.3888)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 0 1 * *", + "name": "lastInvoiceDate", + "type": "DateTime", + "value": "0 0 6 7 * *" + } + ], + "staticAttributes": [ + { + "name": "workingMode", + "value": "semiautomatic", + "type": "Text" + }, + { + "name": "cupboardMadeOf", + "value": "plastic", + "type": "Text" + }, + { + "name": "brandName", + "value": "Simemens", + "type": "Text" + }, + { + "name": "modelName", + "value": "Simatic S7 1200", + "type": "Text" + }, + { + "name": "maximumPowerAvailable", + "value": 14, + "type": "Number" + }, + { + "name": "location", + "value": { + "type": "Point", + "coordinates": [ + -3.657102781928411, + 40.525877953687136 + ] + }, + "type": "geo:json" + }, + { + "name": "areaServed", + "value": "pialcobendas", + "type": "Text" + }, + { + "name": "MeteringStartingDate", + "value": "2016-10-10T16:39:29.654Z", + "type": "DateTime" + } + ] + } + ] +} diff --git a/examples/urbo-simulations-waste.json b/examples/urbo-simulations-waste.json new file mode 100644 index 0000000..68d2924 --- /dev/null +++ b/examples/urbo-simulations-waste.json @@ -0,0 +1,29570 @@ +{ + "domain": { + "service": "service", + "subservice": "/subservice" + }, + "contextBroker": { + "protocol": "http", + "host": "1.2.3.4", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "http", + "host": "1.2.3.4", + "port": 5001, + "user": "user", + "password": "password", + "retry": { + "times": 10, + "interval": 5000 + } + }, + "entities": [ + { + "schedule": "once", + "entity_name": "WasteContainerModel:001", + "entity_type": "WasteContainerModel", + "staticAttributes": [ + { + "name": "width", + "type": "Number", + "value": 0.5 + }, + { + "name": "height", + "type": "Number", + "value": 0.8 + }, + { + "name": "depth", + "type": "Number", + "value": 0.4 + }, + { + "name": "volumeStored", + "type": "Number", + "value": 150 + }, + { + "name": "maximumLoad", + "type": "Number", + "value": 150 + }, + { + "name": "brandName", + "type": "Text", + "value": "Modelo de Contenedor 001" + }, + { + "name": "modelName", + "type": "Text", + "value": "001" + }, + { + "name": "compliantWith", + "type": "List", + "value": [ + "UNE-EN 840-2:2013" + ] + }, + { + "name": "madeOf", + "type": "Text", + "value": "plastic" + }, + { + "name": "features", + "type": "List", + "value": [ + "wheels", + "lid" + ] + }, + { + "name": "category", + "type": "List", + "value": [ + "dumpster" + ] + } + ] + }, + + + { + "entity_name": "maria-tubau-01", + "entity_type": "WasteContainer", + "schedule": "35 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.87)],[24,0.87]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "maria-tubau-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "maria-tubau-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "maria-tubau-01:01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.671672886161903, + 40.51414769001326 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-01", + "entity_type": "WasteContainer", + "schedule": "38 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,0.81],[24,0.81]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,81],[23,84],[24,84]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 5 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "palas-de-rey-01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.672580351296844, + 40.51073897071779 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-02", + "entity_type": "WasteContainer", + "schedule": "21 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 10 0 * * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "palas-de-rey-02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.670789301688409, + 40.509499806112686 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "st-domingo-calzada-01:01", + "entity_type": "WasteContainer", + "schedule": "20 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "st-domingo-calzada-01:01" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669577358120037, + 40.50752753537036 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "st-domingo-calzada-01:02", + "entity_type": "WasteContainer", + "schedule": "22 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 0 * * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "st-domingo-calzada-01:02" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669684821096543, + 40.50758200622722 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "st-domingo-calzada-01:03", + "entity_type": "WasteContainer", + "schedule": "18 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,95)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "st-domingo-calzada-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669732582419435, + 40.507622859340835 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "camino-santiago-02", + "entity_type": "WasteContainer", + "schedule": "55 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 20 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "camino-santiago-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "camino-santiago-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669374372497747, + 40.508864328202414 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-03", + "entity_type": "WasteContainer", + "schedule": "38 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 25 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-03" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-03" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.668174369260097, + 40.50776130581859 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-04", + "entity_type": "WasteContainer", + "schedule": "5 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 * * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-04" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-04" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.666025109729976, + 40.506317817023145 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-05", + "entity_type": "WasteContainer", + "schedule": "10 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 35 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-05" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-05" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.665129584925758, + 40.505709545144974 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "st-domingo-calzada-02", + "entity_type": "WasteContainer", + "schedule": "38 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 40 0 * * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "st-domingo-calzada-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "st-domingo-calzada-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.665702720800458, + 40.50489018512628 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "palas-de-rey-06", + "entity_type": "WasteContainer", + "schedule": "16 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 45 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "palas-de-rey-06" + }, + { + "name": "isleId", + "type": "Text", + "value": "palas-de-rey-06" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662837041426963, + 40.504175222915904 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "cebreiro-01", + "entity_type": "WasteContainer", + "schedule": "48 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.88)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 50 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "cebreiro-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "cebreiro-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660723602889011, + 40.505800332342695 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-07:01", + "entity_type": "WasteContainer", + "schedule": "46 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "23 55 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-07" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-07" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662347487867324, + 40.5055824428617 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-07:02", + "entity_type": "WasteContainer", + "schedule": "37 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0.03,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.82)],[23,random(0.82,0.86)],[24,random(0.86,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(3,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,102)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "23 55 0 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-07" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-07" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662251965221541, + 40.50550981287741 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-06", + "entity_type": "WasteContainer", + "schedule": "56 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.87],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.81,0.85)],[24,random(0.85,0.87)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,103],[0.999,104],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,103)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 1 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-06" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-06" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663840029207686, + 40.50655386134088 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-05", + "entity_type": "WasteContainer", + "schedule": "23 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.87],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.81,0.85)],[24,random(0.85,0.87)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,103],[0.999,104],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,103)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 10 1 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-05" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-05" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.665696750635097, + 40.50856928284003 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-04:01", + "entity_type": "WasteContainer", + "schedule": "23 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.87],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.81,0.85)],[24,random(0.85,0.87)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,103],[0.999,104],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,103)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 1 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-04" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-04" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.667016157179977, + 40.50944987592343 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-04:02", + "entity_type": "WasteContainer", + "schedule": "32 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.87],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.81,0.85)],[24,random(0.85,0.87)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,103],[0.999,104],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,103)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 1 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-04" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-04" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.666956455526362, + 40.50940448481003 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "camino-santiago-01", + "entity_type": "WasteContainer", + "schedule": "31 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 25 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 20 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "camino-santiago-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "camino-santiago-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.667159441148651, + 40.510734431695084 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-02:01", + "entity_type": "WasteContainer", + "schedule": "26 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 30 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 25 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669159446544736, + 40.510915992363614 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-02:02", + "entity_type": "WasteContainer", + "schedule": "11 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 30 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 25 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669207207867627, + 40.51095684344629 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-03", + "entity_type": "WasteContainer", + "schedule": "27 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 35 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 30 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-03" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-03" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66859825100076, + 40.510543792464084 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "lignode-02", + "entity_type": "WasteContainer", + "schedule": "25 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 40 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 40 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 40 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 40 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 40 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 40 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 35 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "lignode-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "lignode-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.668759445465519, + 40.511065779545085 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "tierra-melide-01", + "entity_type": "WasteContainer", + "schedule": "17 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 45 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 45 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 45 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 45 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 45 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 45 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 40 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "tierra-melide-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "tierra-melide-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.669941538207085, + 40.51146974936655 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "hospital-orbigo-01", + "entity_type": "WasteContainer", + "schedule": "34 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 50 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 50 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 50 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 50 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 50 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 50 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 45 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "hospital-orbigo-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "hospital-orbigo-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.668532579181783, + 40.51235030436375 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "lignode-01", + "entity_type": "WasteContainer", + "schedule": "52 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 55 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.62],[0.999,0.65],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 55 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[0.999,1],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.4)],[21,random(0.4,0.50)],[22,random(0.50,0.58)],[23,random(0.58,0.6)],[24,0.61]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 55 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 55 * * * 2-5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,65],[0.999,66],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 55 * * * 1", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[0.999,130],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,45)],[21,random(45,55)],[22,random(55,60)],[23,random(60,62)],[24,random(62,65)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 55 * * * 6,7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,130],[24,130]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 50 1 * * 1-5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "lignode-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "lignode-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.667843025082536, + 40.511855560968996 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "portomarin-01", + "entity_type": "WasteContainer", + "schedule": "57 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.87],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.81,0.85)],[24,random(0.85,0.87)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,103],[0.999,104],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,103)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 55 1 * * *", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "portomarin-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "portomarin-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.664941524716873, + 40.51018293815012 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "cl-asunc-cuesta-blanca-01:01", + "entity_type": "WasteContainer", + "schedule": "39 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "cl-asunc-cuesta-blanca-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "cl-asunc-cuesta-blanca-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.654204182314311, + 40.5060953898866 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "lidOpen" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "cl-asunc-cuesta-blanca-01:02", + "entity_type": "WasteContainer", + "schedule": "5 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "cl-asunc-cuesta-blanca-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "cl-asunc-cuesta-blanca-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.654251943637203, + 40.50618617656204 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + { + "entity_name": "padres-dominicos", + "entity_type": "WasteContainer", + "schedule": "47 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 10 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "methaneConcentration", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 5 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 0 1 * *", + "name": "dateNextActuation", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "padres-dominicos" + }, + { + "name": "isleId", + "type": "Text", + "value": "padres-dominicos" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.656126575560697, + 40.504910612506045 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "lastablas" + } + ] + }, + + + { + "entity_name": "pedriza-01", + "entity_type": "WasteContainer", + "schedule": "50 3 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "pedriza-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "pedriza-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.66262510055663, + 40.5337319850758 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "siete-picos-01", + "entity_type": "WasteContainer", + "schedule": "30 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "siete-picos-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "siete-picos-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.661311664177113, + 40.537044253283476 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valgrande-01", + "entity_type": "WasteContainer", + "schedule": "23 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valgrande-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valgrande-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.654345033987016, + 40.53964476361663 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valgrande-02", + "entity_type": "WasteContainer", + "schedule": "4 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 10 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valgrande-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valgrande-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653884631322845, + 40.539251140759944 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valgrande-03", + "entity_type": "WasteContainer", + "schedule": "27 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 15 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valgrande-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valgrande-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.652829541884117, + 40.53864612334116 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valgrande-04", + "entity_type": "WasteContainer", + "schedule": "3 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valgrande-04", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valgrande-04", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651344423568089, + 40.53777017478592 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-05", + "entity_type": "WasteContainer", + "schedule": "20 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-05", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-05", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.650017568667871, + 40.5368176740387 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-01:01", + "entity_type": "WasteContainer", + "schedule": "1 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.655772601970021, + 40.538052034655365 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-01:02", + "entity_type": "WasteContainer", + "schedule": "33 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.655751819905319, + 40.5380435302801 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-01:03", + "entity_type": "WasteContainer", + "schedule": "39 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.655735833701702, + 40.53803016625965 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-02", + "entity_type": "WasteContainer", + "schedule": "43 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 35 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65469513184623, + 40.53747130483592 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-03", + "entity_type": "WasteContainer", + "schedule": "8 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 40 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653481778991694, + 40.536806739640284 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "reyes-catolicos-04", + "entity_type": "WasteContainer", + "schedule": "11 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "reyes-catolicos-04", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "reyes-catolicos-04", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.650727356108469, + 40.53619562542484 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valgrande-05", + "entity_type": "WasteContainer", + "schedule": "13 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 50 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valgrande-05", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valgrande-05", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.648737073758143, + 40.53599515930898 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-03", + "entity_type": "WasteContainer", + "schedule": "11 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.80)],[21,0.82],[21.999,random(0.83,0.87)],[22,0],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,81)],[21,82],[21.999,random(82,105)],[22,0],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 55 22 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.647707162590106, + 40.53517293822231 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-04", + "entity_type": "WasteContainer", + "schedule": "50 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-04", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-04", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.646658467632828, + 40.535161396073924 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-05:01", + "entity_type": "WasteContainer", + "schedule": "25 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-05", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-05", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.646111739469126, + 40.53414142679368 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-05:02", + "entity_type": "WasteContainer", + "schedule": "12 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,125],[22,125],[23,0],[24,random(0,2)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-05", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-05", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.646100948781684, + 40.53414446424759 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-02", + "entity_type": "WasteContainer", + "schedule": "53 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 10 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.649973206952827, + 40.534570313921805 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "industria-01", + "entity_type": "WasteContainer", + "schedule": "34 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 15 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "industria-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "industria-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.652763598794189, + 40.533968899185965 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valportillo-03", + "entity_type": "WasteContainer", + "schedule": "22 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valportillo-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valportillo-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.655819361615596, + 40.53370281700461 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-gervas-02", + "entity_type": "WasteContainer", + "schedule": "28 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-gervas-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-gervas-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.652000257571479, + 40.53279582117301 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "quimica-01", + "entity_type": "WasteContainer", + "schedule": "23 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "quimica-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "quimica-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.650890815040452, + 40.53207531874842 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "quimica-02", + "entity_type": "WasteContainer", + "schedule": "54 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 35 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "quimica-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "quimica-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651176168775017, + 40.53132139518511 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-gervas-01", + "entity_type": "WasteContainer", + "schedule": "31 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 40 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-gervas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-gervas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651654156263168, + 40.53166950115602 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "dropped", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "san-jose-artesano-01", + "entity_type": "WasteContainer", + "schedule": "7 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 40 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "san-jose-artesano-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "san-jose-artesano-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653852259260512, + 40.52953831094199 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valportillo-01", + "entity_type": "WasteContainer", + "schedule": "36 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 50 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valportillo-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valportillo-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.655698665778288, + 40.53170230686107 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "valportillo-02", + "entity_type": "WasteContainer", + "schedule": "57 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.012,0.02)],[1,random(0.02,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.2)],[17,random(0.2,0.3)],[18,random(0.3,0.5)],[19,random(0.5,0.6)],[20,random(0.6,0.8)],[21,random(0.8,0.83)],[22,0.84],[22.999,random(0.85,0.89)],[23,0],[24,random(0,0.012)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[1,random(1,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,55)],[20,random(55,85)],[21,97],[22,102],[22.999,random(102,106)],[23,0],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 55 23 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "valportillo-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "valportillo-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.65573063818552, + 40.53055956533739 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "la-granja-02:01", + "entity_type": "WasteContainer", + "schedule": "54 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,random(0.87,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,120)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "la-granja-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "la-granja-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658046239779242, + 40.5292832986784 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "la-granja-02:02", + "entity_type": "WasteContainer", + "schedule": "3 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "la-granja-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "la-granja-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.658051035640326, + 40.52926689523593 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "sepulveda", + "entity_type": "WasteContainer", + "schedule": "50 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "sepulveda", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "sepulveda", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.657931938423387, + 40.527401129319244 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "san-rafael-01", + "entity_type": "WasteContainer", + "schedule": "43 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 10 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "san-rafael-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "san-rafael-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.661164348794612, + 40.526312387469424 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "la-granja-01", + "entity_type": "WasteContainer", + "schedule": "45 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 15 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "la-granja-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "la-granja-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.659818310450115, + 40.526149560717094 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-02:01", + "entity_type": "WasteContainer", + "schedule": "9 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660291502077161, + 40.52391308309308 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-02:02", + "entity_type": "WasteContainer", + "schedule": "58 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660278713114268, + 40.52392280442869 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-02:03", + "entity_type": "WasteContainer", + "schedule": "38 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660266723461555, + 40.523932525762895 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-02:04", + "entity_type": "WasteContainer", + "schedule": "1 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,random(0.87,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,120)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660254733808843, + 40.523940424345895 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-02:05", + "entity_type": "WasteContainer", + "schedule": "39 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.660240346225589, + 40.52395136084391 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-01:01", + "entity_type": "WasteContainer", + "schedule": "42 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663751715849918, + 40.52101970794686 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-01:02", + "entity_type": "WasteContainer", + "schedule": "59 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663736528956483, + 40.52103246773309 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "aragoneses-01:03", + "entity_type": "WasteContainer", + "schedule": "37 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "aragoneses-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.663719743442686, + 40.5210440122995 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "subs-electr-01", + "entity_type": "WasteContainer", + "schedule": "11 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "subs-electr-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "subs-electr-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.670072881845035, + 40.5169208344644 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-03", + "entity_type": "WasteContainer", + "schedule": "6 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 35 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.654747886318181, + 40.52374675689821 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-02", + "entity_type": "WasteContainer", + "schedule": "54 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 40 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653283550066855, + 40.5224124868978 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01:01", + "entity_type": "WasteContainer", + "schedule": "43 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653439015897011, + 40.52487670362889 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "lidOpen", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01:02", + "entity_type": "WasteContainer", + "schedule": "22 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653426226934119, + 40.52488627293109 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01:03", + "entity_type": "WasteContainer", + "schedule": "37 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653411839350863, + 40.52489781684936 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "dropped", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01:04", + "entity_type": "WasteContainer", + "schedule": "3 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653395853147246, + 40.52491057591461 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "francisco-chico-mendes-01:05", + "entity_type": "WasteContainer", + "schedule": "22 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 45 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "francisco-chico-mendes-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653378268323268, + 40.52492333497744 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "electronica-01", + "entity_type": "WasteContainer", + "schedule": "7 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 50 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "electronica-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "electronica-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.653954570963639, + 40.52712651529736 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:01", + "entity_type": "WasteContainer", + "schedule": "59 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651094639136565, + 40.526459265366626 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:02", + "entity_type": "WasteContainer", + "schedule": "39 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651079452243128, + 40.52644893683834 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:03", + "entity_type": "WasteContainer", + "schedule": "26 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651068261900596, + 40.52643921586912 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "moved", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:04", + "entity_type": "WasteContainer", + "schedule": "27 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651056272247884, + 40.52643010245918 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:05", + "entity_type": "WasteContainer", + "schedule": "22 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651044282595171, + 40.52642098904801 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "centro-comercial-alcobendas-01:06", + "entity_type": "WasteContainer", + "schedule": "46 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,0.035)],[2,random(0.035,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.80)],[23,random(0.80,0.85)],[24,random(0.85,0.89)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,random(0,3.5)],[2,random(3.5,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "23 55 0 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "centro-comercial-alcobendas-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.651107428099458, + 40.52646837877258 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "fuencarral-04", + "entity_type": "WasteContainer", + "schedule": "5 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.86],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.85)],[24,random(0.85,0.86)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,101],[0.999,random(101,107)],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,83)],[23,random(83,92)],[24,random(92,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 1 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "fuencarral-04", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "fuencarral-04", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.650339291015663, + 40.52968411858975 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "cc-rio-norte-01", + "entity_type": "WasteContainer", + "schedule": "6 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.86],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.85)],[24,random(0.85,0.86)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,101],[0.999,random(101,107)],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,83)],[23,random(83,92)],[24,random(92,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 1 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "cc-rio-norte-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "cc-rio-norte-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.646941476152116, + 40.5300361172075 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "moved", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "fuencarral-02", + "entity_type": "WasteContainer", + "schedule": "48 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.86],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.85)],[24,random(0.85,0.86)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,101],[0.999,random(101,107)],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,83)],[23,random(83,92)],[24,random(92,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 20 1 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "fuencarral-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "fuencarral-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.646521785591902, + 40.531651275757376 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "fuencarral-01", + "entity_type": "WasteContainer", + "schedule": "16 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.86],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.85)],[24,random(0.85,0.86)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,101],[0.999,random(101,107)],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,83)],[23,random(83,92)],[24,random(92,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 25 1 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "fuencarral-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "fuencarral-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.644923165230193, + 40.53259291486577 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + { + "entity_name": "fuencarral-03", + "entity_type": "WasteContainer", + "schedule": "44 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.86],[0.999,random(0.87,0.89)],[1,0],[2,random(0,0.038)],[3,random(0.038,0.040)],[4,random(0.040,0.042)],[6,random(0.044,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.81)],[23,random(0.81,0.85)],[24,random(0.85,0.86)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,101],[0.999,random(101,107)],[1,0],[2,random(0,3.8)],[3,random(3.8,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,83)],[23,random(83,92)],[24,random(92,101)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 30 1 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "fuencarral-03", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "fuencarral-03", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.643967190253892, + 40.533442201241044 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "glass", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "moved", + "name": "status" + }, + { + "type": "Text", + "value": "pialcobendas", + "name": "areaServed" + } + ] + }, + + + { + "entity_name": "camino-huerta-01", + "entity_type": "WasteContainer", + "schedule": "22 5 * * * *", + "active": [ + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,1],[12,1],[12.999,1],[13,0],[14,random(0,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.91)],[24,random(0.91,1)]])", + "name": "fillingLevel" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,130],[12,130],[12.999,130],[13,0],[14,random(0,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,110)]])", + "name": "weight" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 0 13 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "camino-huerta-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "camino-huerta-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.644251916656782, + 40.50755250118527 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "paper", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "encinar", + "name": "areaServed" + } + ] + }, + { + "entity_name": "camino-huerta-02", + "entity_type": "WasteContainer", + "schedule": "46 10 * * * *", + "active": [ + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,1],[12,1],[12.999,1],[13,0],[14,random(0,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.91)],[24,random(0.91,1)]])", + "name": "fillingLevel" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,130],[12,130],[12.999,130],[13,0],[14,random(0,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,110)]])", + "name": "weight" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 5 13 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "camino-huerta-02", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "camino-huerta-02", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.641565342244132, + 40.50652662550046 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "organic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "encinar", + "name": "areaServed" + } + ] + }, + { + "entity_name": "julio-caro-baroja-01", + "entity_type": "WasteContainer", + "schedule": "17 15 * * * *", + "active": [ + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,1],[12,1],[12.999,1],[13,0],[14,random(0,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.91)],[24,random(0.91,1)]])", + "name": "fillingLevel" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,130],[12,130],[12.999,130],[13,0],[14,random(0,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,110)]])", + "name": "weight" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "name": "temperature" + }, + { + "type": "Number", + "metadata": [ + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "name": "methaneConcentration" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateUpdated" + }, + { + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "TimeInstant" + }, + { + "type": "DateTime", + "schedule": "0 10 13 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "name": "dateLastEmptying" + }, + { + "type": "DateTime", + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "type": "Text", + "value": "WasteContainerModel:001", + "name": "refWasteContainerModel" + }, + { + "type": "Text", + "value": "julio-caro-baroja-01", + "name": "containerIsle" + }, + { + "type": "Text", + "value": "julio-caro-baroja-01", + "name": "isleId" + }, + { + "type": "Text", + "value": "no serial", + "name": "serialNumber" + }, + { + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.645995204942325, + 40.50701232966117 + ] + }, + "name": "location" + }, + { + "type": "List", + "value": "surface", + "name": "category" + }, + { + "type": "Text", + "value": "municipal", + "name": "storedWasteOrigin" + }, + { + "type": "List", + "value": "plastic", + "name": "storedWasteKind" + }, + { + "type": "Text", + "value": "ok", + "name": "status" + }, + { + "type": "Text", + "value": "encinar", + "name": "areaServed" + } + ] + }, + + + { + "entity_name": "bruselas-01:01", + "entity_type": "WasteContainer", + "schedule": "45 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642577285272893, + 40.529280583212405 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "bruselas-01:02", + "entity_type": "WasteContainer", + "schedule": "29 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.6426071360997, + 40.529239743294326 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "bruselas-01:03", + "entity_type": "WasteContainer", + "schedule": "58 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "bruselas-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642642957091869, + 40.52918529003153 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "azalea-04", + "entity_type": "WasteContainer", + "schedule": "25 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,0.54],[9,0.55],[15,0.58],[16,random(0.58,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,random(0.5,0.55)],[15,0.58],[16,random(0.48,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.5],[19,0.51],[24,0.52]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,54],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9)],[13,random(9,20)],[15,random(20,30)],[16,random(30,40)],[18,50],[19,53],[24,54]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 19 * * 1,3,5,7", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "azalea-04", + "type": "Text" + }, + { + "name": "isleId", + "value": "azalea-04", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.637598167361454, + 40.52755847839905 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "azalea-05", + "entity_type": "WasteContainer", + "schedule": "19 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,0.54],[9,0.55],[15,0.58],[16,random(0.58,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,random(0.5,0.55)],[15,0.58],[16,random(0.48,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.5],[19,0.51],[24,0.52]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,54],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9)],[13,random(9,20)],[15,random(20,30)],[16,random(30,40)],[18,50],[19,53],[24,54]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 10 19 * * 1,3,5,7", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "azalea-05", + "type": "Text" + }, + { + "name": "isleId", + "value": "azalea-05", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.634744428318682, + 40.524944606303436 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "paper", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "dalia-03", + "entity_type": "WasteContainer", + "schedule": "50 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,0.54],[9,0.55],[15,0.58],[16,random(0.58,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,random(0.5,0.55)],[15,0.58],[16,random(0.48,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.5],[19,0.51],[24,0.52]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,54],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9)],[13,random(9,20)],[15,random(20,30)],[16,random(30,40)],[18,50],[19,53],[24,54]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 15 19 * * 1,3,5,7", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "dalia-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "dalia-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.638541453488561, + 40.52394622547466 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "hiedra-03", + "entity_type": "WasteContainer", + "schedule": "8 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,0.54],[9,0.55],[15,0.58],[16,random(0.58,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,random(0.5,0.55)],[15,0.58],[16,random(0.48,0.62)],[17,random(0.62,0.64)],[18,random(0.7,0.8)],[18.999,random(0.81,0.89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.5],[19,0.51],[24,0.52]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 3,5,7", + "value": "time-random-linear-interpolator([[0,54],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 1", + "value": "time-random-linear-interpolator([[0,0.05],[9,55],[15,58],[16,random(58,62)],[17,random(62,64)],[18,random(70,80)],[18.999,random(81,89)],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "schedule": "0 10 * * * 2,4,6", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9)],[13,random(9,20)],[15,random(20,30)],[16,random(30,40)],[18,50],[19,53],[24,54]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 20 19 * * 1,3,5,7", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "hiedra-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "hiedra-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.639783247883743, + 40.52646937741453 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "moved", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "azalea-03", + "entity_type": "WasteContainer", + "schedule": "45 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 25 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "azalea-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "azalea-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.643317585777719, + 40.526659971364396 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "plastic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "calendula-01", + "entity_type": "WasteContainer", + "schedule": "15 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 30 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "calendula-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "calendula-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.645001172409647, + 40.52755847839905 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "azalea-02", + "entity_type": "WasteContainer", + "schedule": "59 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 35 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "azalea-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "azalea-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.645992219859647, + 40.52505351967603 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "moved", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "iris-02:01", + "entity_type": "WasteContainer", + "schedule": "51 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "iris-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "iris-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.64377430342787, + 40.525012677182055 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "iris-02:02", + "entity_type": "WasteContainer", + "schedule": "59 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "iris-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "iris-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.643771318345189, + 40.524971834663184 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "iris-02:03", + "entity_type": "WasteContainer", + "schedule": "48 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "iris-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "iris-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.643819079668081, + 40.52498998689749 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "paper", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "azalea-01", + "entity_type": "WasteContainer", + "schedule": "45 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 45 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "azalea-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "azalea-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646839983340972, + 40.523982530492624 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "plastic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "hiedra-02", + "entity_type": "WasteContainer", + "schedule": "50 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 50 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "hiedra-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "hiedra-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.643807139337358, + 40.523465182130224 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-03:01", + "entity_type": "WasteContainer", + "schedule": "12 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 55 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642947435525308, + 40.522419127847606 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-03:02", + "entity_type": "WasteContainer", + "schedule": "12 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 55 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642989226682838, + 40.52241005138327 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-03:03", + "entity_type": "WasteContainer", + "schedule": "11 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.2)],[15,random(0.2,0.3)],[16,random(0.3,0.4)],[18,0.8],[18.999,0.89],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,25)],[15,random(25,30)],[16,random(13,40)],[18,85],[18.999,92],[19,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 55 19 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642908629450458, + 40.522410051383574 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "plastic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "dalia-02", + "entity_type": "WasteContainer", + "schedule": "18 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,0.86],[19.999,0.86],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "dalia-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "dalia-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.641932507413864, + 40.52148651471174 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "iris-01:01", + "entity_type": "WasteContainer", + "schedule": "11 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.81)],[19,0.83],[19.999,random(0.83,0.89)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,80)],[19,83],[19.999,random(83,90)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "iris-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "iris-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646911625325309, + 40.52251216152887 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "iris-01:02", + "entity_type": "WasteContainer", + "schedule": "50 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.81)],[19,0.83],[19.999,random(0.83,0.89)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,80)],[19,83],[19.999,random(83,90)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "iris-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "iris-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646947446317478, + 40.52243954988786 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "moved", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "hiedra-01", + "entity_type": "WasteContainer", + "schedule": "59 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.81)],[19,0.83],[19.999,random(0.83,0.89)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,80)],[19,83],[19.999,random(83,90)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "hiedra-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "hiedra-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646553415403623, + 40.52169527595688 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-02", + "entity_type": "WasteContainer", + "schedule": "10 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.81)],[19,0.83],[19.999,random(0.83,0.89)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,80)],[19,83],[19.999,random(83,90)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 0 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.645663860764766, + 40.52085795790674 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "dalia-01", + "entity_type": "WasteContainer", + "schedule": "18 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.81)],[19,0.83],[19.999,random(0.83,0.89)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,80)],[19,83],[19.999,random(83,90)],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 0 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "dalia-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "dalia-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646589236395791, + 40.519108405947726 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "dropped", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-nuevo-04", + "entity_type": "WasteContainer", + "schedule": "51 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 25 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-nuevo-04", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-nuevo-04", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.641568327326814, + 40.51892459822768 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "paper", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cuesta-sierra-02", + "entity_type": "WasteContainer", + "schedule": "15 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 30 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cuesta-sierra-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "cuesta-sierra-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.642929525029224, + 40.51842536483978 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-nuevo-02:01", + "entity_type": "WasteContainer", + "schedule": "41 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 35 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-nuevo-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-nuevo-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.644804156952717, + 40.51834367174963 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-nuevo-02:02", + "entity_type": "WasteContainer", + "schedule": "59 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 35 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-nuevo-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-nuevo-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.647263865081634, + 40.51797151307926 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-01:01", + "entity_type": "WasteContainer", + "schedule": "36 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.648422077161754, + 40.51948736595287 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-01:02", + "entity_type": "WasteContainer", + "schedule": "46 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.648541480468983, + 40.51943290476659 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "begonia-01:03", + "entity_type": "WasteContainer", + "schedule": "48 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "begonia-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.648648943445489, + 40.51936936665999 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-nuevo-01", + "entity_type": "WasteContainer", + "schedule": "21 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 45 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-nuevo-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-nuevo-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.64997432015573, + 40.51791705066154 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "conde-gaitanes-01", + "entity_type": "WasteContainer", + "schedule": "48 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 50 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "conde-gaitanes-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "conde-gaitanes-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.650747456570035, + 40.51592233412846 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "conde-gaitanes-02", + "entity_type": "WasteContainer", + "schedule": "43 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[9,random(0,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.3)],[14,random(0.3,0.4)],[15,random(0.4,0.55)],[16,random(0.55,0.7)],[18,random(0.7,0.85)],[19,1],[19.999,1],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[9,random(0,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,15.0)],[13,random(15,20)],[14,random(20,30)],[15,random(30,50)],[16,random(50,75)],[18,random(75,85)],[19,110],[19.999,110],[20,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 55 20 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "conde-gaitanes-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "conde-gaitanes-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.64936834837154, + 40.51530507193766 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "plastic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "conde-gaitanes-03", + "entity_type": "WasteContainer", + "schedule": "12 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "conde-gaitanes-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "conde-gaitanes-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.645875801635095, + 40.5143791679964 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cuesta-sierra-01", + "entity_type": "WasteContainer", + "schedule": "24 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cuesta-sierra-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "cuesta-sierra-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.646039981182537, + 40.51642385547414 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-encinar-01", + "entity_type": "WasteContainer", + "schedule": "44 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 10 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-encinar-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-encinar-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.651237010129674, + 40.51473319160136 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "moved", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "estafeta-01", + "entity_type": "WasteContainer", + "schedule": "46 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 15 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "estafeta-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "estafeta-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.652263878571841, + 40.51507132778642 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-encinar-02", + "entity_type": "WasteContainer", + "schedule": "40 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 20 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-encinar-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-encinar-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.651917608980878, + 40.51378912450095 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "underground", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-02:01", + "entity_type": "WasteContainer", + "schedule": "23 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,120],[24,120]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 25 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.652060892949553, + 40.51307652658841 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "paper", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-02:02", + "entity_type": "WasteContainer", + "schedule": "46 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,1],[24,1]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,120],[24,120]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 25 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.652001191295938, + 40.51306744885914 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "plastic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-01", + "entity_type": "WasteContainer", + "schedule": "51 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 30 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.653708658589313, + 40.51327623632132 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-cura-01", + "entity_type": "WasteContainer", + "schedule": "39 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 35 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-cura-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-cura-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.65472955686612, + 40.512881355138376 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-cura-02", + "entity_type": "WasteContainer", + "schedule": "4 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 40 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-cura-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-cura-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.653332538171541, + 40.511923645139 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "glass", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-cura-03", + "entity_type": "WasteContainer", + "schedule": "4 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 45 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-cura-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-cura-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.652037012288107, + 40.51113840351264 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "underground", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "camino-cura-04", + "entity_type": "WasteContainer", + "schedule": "29 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 50 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "camino-cura-04", + "type": "Text" + }, + { + "name": "isleId", + "value": "camino-cura-04", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.649010138449854, + 40.510766204847556 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "moved", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-03", + "entity_type": "WasteContainer", + "schedule": "49 0 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[20,1],[20.999,1],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[20,130],[20.999,130],[21,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 55 21 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.649553423497745, + 40.512123358305566 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-04", + "entity_type": "WasteContainer", + "schedule": "56 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[21,1],[21.999,1],[22,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[21,130],[21.999,130],[22,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 0 22 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-04", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-04", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.645466845307837, + 40.51049613257164 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "parques-05", + "entity_type": "WasteContainer", + "schedule": "19 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[7,0.2],[9,random(0.2,0.4)],[10,random(0.4,0.6)],[11,random(0.6,0.85)],[12,random(0.85,0.95)],[13,1],[21,1],[21.999,1],[22,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0],[1,0],[7,25],[9,random(25,45)],[10,random(45,60)],[11,random(60,85)],[12,random(85,95)],[13,110],[14,120],[21,130],[21.999,130],[22,0],[24,0]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "methaneConcentration", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ] + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "dateLastEmptying", + "schedule": "0 5 22 * * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "parques-05", + "type": "Text" + }, + { + "name": "isleId", + "value": "parques-05", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.643054898501812, + 40.50939767614036 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "underground", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "sotomoraleja", + "type": "Text" + } + ] + }, + + + { + "entity_name": "ronda-comunicacion-01", + "entity_type": "WasteContainer", + "schedule": "32 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 0 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "ronda-comunicacion-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "ronda-comunicacion-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.658730049639192, + 40.51368317833039 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "lidOpen", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "alboroto-01", + "entity_type": "WasteContainer", + "schedule": "59 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 5 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "alboroto-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "alboroto-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.657719721570589, + 40.513491760041454 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-04", + "entity_type": "WasteContainer", + "schedule": "7 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,125],[8,125],[9.999,128],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,95)],[24,100]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 10 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-04ULL", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-04ULL", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.657455949210908, + 40.51458557147511 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-02", + "entity_type": "WasteContainer", + "schedule": "6 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 15 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.655740629562791, + 40.51801637757591 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-03", + "entity_type": "WasteContainer", + "schedule": "19 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 20 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-03", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-03", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.655937259867283, + 40.51655803299138 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cc-moraleja-green-02", + "entity_type": "WasteContainer", + "schedule": "59 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 25 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cc-moraleja-green-02", + "type": "Text" + }, + { + "name": "isleId", + "value": "cc-moraleja-green-02", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.655678283368694, + 40.5192601989112 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-01", + "entity_type": "WasteContainer", + "schedule": "15 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 30 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.656858065195626, + 40.51926809804472 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cc-moraleja-green-01:01", + "entity_type": "WasteContainer", + "schedule": "12 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 35 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.657583838839841, + 40.51845144423337 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cc-moraleja-green-01:02", + "entity_type": "WasteContainer", + "schedule": "2 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 35 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.657561458154777, + 40.518472103753034 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "cc-moraleja-green-01:03", + "entity_type": "WasteContainer", + "schedule": "54 40 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 35 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "cc-moraleja-green-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.657542274710436, + 40.518491548001016 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-06:01", + "entity_type": "WasteContainer", + "schedule": "19 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 40 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-06", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-06", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.659765955633581, + 40.5205301245844 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-06:02", + "entity_type": "WasteContainer", + "schedule": "50 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 40 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-06", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-06", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.659759561152133, + 40.52052526367076 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-06:03", + "entity_type": "WasteContainer", + "schedule": "53 45 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 40 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-06", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-06", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.659752367360506, + 40.520520402756766 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-05:01", + "entity_type": "WasteContainer", + "schedule": "7 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 45 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-05", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-05", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.661681102826907, + 40.51939023068368 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "europa-05:02", + "entity_type": "WasteContainer", + "schedule": "10 50 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 45 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "europa-05", + "type": "Text" + }, + { + "name": "isleId", + "value": "europa-05", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.66167470834546, + 40.5194023831729 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + { + "entity_name": "golf-park-01", + "entity_type": "WasteContainer", + "schedule": "59 55 * * * *", + "active": [ + { + "name": "fillingLevel", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0.84,0.85)],[8,0.85],[9.999,random(0.87,0.89)],[10,0],[11,random(0.05,0.085)],[12,random(0.085,0.095)],[16,random(0.095,0.5)],[20,random(0.5,0.7)],[23,random(0.7,0.81)],[24,random(0.81,0.84)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "type": "Number", + "value": "time-random-linear-interpolator([[0,89],[8,89],[9.999,random(89,95)],[10,0],[11,random(5,8.5)],[12,random(8.5,9.5)],[16,random(9.5,50)],[20,random(50,75)],[23,random(75,85)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])", + "type": "Number" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + } + ], + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])", + "type": "Number" + }, + { + "name": "dateUpdated", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "name": "TimeInstant", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime" + }, + { + "schedule": "0 50 10 * * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})", + "type": "DateTime", + "name": "dateLastEmptying" + }, + { + "schedule": "0 0 0 1 * *", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})", + "type": "DateTime", + "name": "dateNextActuation" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "value": "WasteContainerModel:001", + "type": "Text" + }, + { + "name": "containerIsle", + "value": "golf-park-01", + "type": "Text" + }, + { + "name": "isleId", + "value": "golf-park-01", + "type": "Text" + }, + { + "name": "serialNumber", + "value": "no serial", + "type": "Text" + }, + { + "name": "location", + "value": { + "coordinates": [ + -3.66162808294127, + 40.51801689839359 + ], + "type": "Point" + }, + "type": "geo:json" + }, + { + "name": "category", + "value": "surface", + "type": "List" + }, + { + "name": "storedWasteOrigin", + "value": "municipal", + "type": "Text" + }, + { + "name": "storedWasteKind", + "value": "organic", + "type": "List" + }, + { + "name": "status", + "value": "ok", + "type": "Text" + }, + { + "name": "areaServed", + "value": "pemoraleja", + "type": "Text" + } + ] + }, + + + { + "entity_name": "portico-de-gloria-01", + "entity_type": "WasteContainer", + "schedule": "59 5 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 5 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 0 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "portico-de-gloria-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "portico-de-gloria-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "coordinates": [ + -3.663744506561902, + 40.51843671109444 + ], + "type": "Point" + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "puerta-de-platerias-01", + "entity_type": "WasteContainer", + "schedule": "28 10 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 10 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 10 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 10 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 5 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "puerta-de-platerias-01" + }, + { + "name": "isleId", + "type": "Text", + "value": "puerta-de-platerias-01" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "coordinates": [ + -3.661487784055276, + 40.51663036317316 + ], + "type": "Point" + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "puerta-de-platerias-02:01", + "entity_type": "WasteContainer", + "schedule": "45 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 10 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "coordinates": [ + -3.660383303463408, + 40.51497374503559 + ], + "type": "Point" + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "puerta-de-platerias-02:02", + "entity_type": "WasteContainer", + "schedule": "50 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 10 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "coordinates": [ + -3.660359422801963, + 40.51491928018267 + ], + "type": "Point" + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "puerta-de-platerias-02:03", + "entity_type": "WasteContainer", + "schedule": "17 15 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 15 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 10 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "isleId", + "type": "Text", + "value": "puerta-de-platerias-02" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "no serial" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "coordinates": [ + -3.660317631644432, + 40.514869354028626 + ], + "type": "Point" + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTO:001", + "entity_type": "WasteContainer", + "schedule": "56 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 20 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTO:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6661827564239498, + 40.51538151533159 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "lidOpen" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTO:002", + "entity_type": "WasteContainer", + "schedule": "29 20 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 20 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 20 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 20 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 15 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Oeste" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTO:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.666096925735473, + 40.515112353588606 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTN:001", + "entity_type": "WasteContainer", + "schedule": "50 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 25 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 20 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTN:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6647772789001465, + 40.51664574542514 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "glass" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTN:002", + "entity_type": "WasteContainer", + "schedule": "53 25 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 25 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 25 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 25 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 20 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Norte" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTN:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6647450923919673, + 40.51627055704617 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTE:001", + "entity_type": "WasteContainer", + "schedule": "54 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 30 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 25 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTE:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6606144905090328, + 40.5138236248174 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTE:002", + "entity_type": "WasteContainer", + "schedule": "19 30 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 30 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 30 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 30 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 25 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Este" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTE:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.661140203475952, + 40.513668649435985 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "organic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTS:001", + "entity_type": "WasteContainer", + "schedule": "13 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 35 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 30 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTS:001" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.6622023582458496, + 40.51242067673018 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "plastic" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + }, + { + "entity_name": "WasteContainer:DTS:002", + "entity_type": "WasteContainer", + "schedule": "30 35 * * * *", + "active": [ + { + "name": "fillingLevel", + "schedule": "0 35 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[3,random(0,0.020)],[4,random(0.020,0.032)],[6,random(0.032,0.045)],[7,random(0.045,0.049)],[8,random(0.049,0.055)],[9,random(0.055,0.07)],[10,random(0.07,0.08)],[11,random(0.085,0.088)],[12,random(0.088,0.090)],[13,random(0.090,0.095)],[14,random(0.095,0.12)],[15,random(0.12,0.13)],[16,random(0.13,0.15)],[17,random(0.15,0.19)],[18,random(0.19,0.25)],[19,random(0.25,0.35)],[20,random(0.35,0.55)],[21,random(0.55,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.3],[1,0.31],[2,0.32],[15,0.35],[16,random(0.40,0.45)],[17,random(0.45,0.49)],[18,random(0.49,0.5)],[19,random(0.5,0.55)],[20,random(0.55,0.65)],[21,random(0.65,0.75)],[22,random(0.75,0.85)],[23,random(0.85,0.87)],[24,0.88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.88],[1,0.88],[1.999,0.88],[2,0],[15,0.03],[16,random(0.040,0.045)],[17,random(0.045,0.049)],[18,random(0.049,0.05)],[19,random(0.05,0.055)],[20,random(0.055,0.1)],[21,random(0.1,0.12)],[22,random(0.12,0.15)],[23,random(0.15,0.18)],[24,0.185]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "fillingLevel", + "schedule": "0 35 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,0.189],[1,0.198],[15,0.2],[21,0.25],[22,0.28],[23,0.29],[24,0.3]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 1,2,3,4", + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(100,120)],[1,120],[1.999,125],[2,0],[3,random(0,4.0)],[4,random(4.0,4.2)],[6,random(4.4,4.5)],[7,random(4.5,4.9)],[8,random(4.9,5.5)],[9,random(5.5,7)],[10,random(7,8)],[11,random(8.5,8.8)],[12,random(8.8,9.0)],[13,random(9.0,9.5)],[14,random(9.5,12)],[15,random(12,13)],[16,random(13,15)],[17,random(15,19)],[18,random(19,25)],[19,random(25,35)],[20,random(35,55)],[21,random(55,75)],[22,random(75,85)],[23,random(85,91)],[24,random(91,100)]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 7", + "type": "Number", + "value": "time-random-linear-interpolator([[0,30],[1,31],[2,32],[15,35],[16,random(40,45)],[17,random(45,49)],[18,random(49,50)],[19,random(50,55)],[20,random(55,65)],[21,random(65,75)],[22,random(75,85)],[23,random(85,87)],[24,88]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 5", + "type": "Number", + "value": "time-random-linear-interpolator([[0,88],[1,88],[1.999,88],[2,0],[15,3],[16,random(4,4.5)],[17,random(4.5,4.9)],[18,random(4.9,5)],[19,random(5,5.5)],[20,random(5.5,10)],[21,random(10,12)],[22,random(12,15)],[23,random(15,18)],[24,18.5]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "weight", + "schedule": "0 35 * * * 6", + "type": "Number", + "value": "time-random-linear-interpolator([[0,18.9],[1,19.8],[15,20],[21,25],[22,28],[23,29],[24,30]])", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ] + }, + { + "name": "temperature", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(0,10)],[10,random(10,15)],[14,random(25,35)],[20,random(10,15)],[24,random(0,10)]])" + }, + { + "name": "methaneConcentration", + "metadata": [ + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + } + ], + "type": "Number", + "value": "time-random-linear-interpolator([[0,random(1700,1600)],[20,random(1600,1700)],[21,random(1700,1750)],[22,random(1750,1800)],[23,random(1800,1850)],[24,random(1800,1850)]])" + }, + { + "name": "dateUpdated", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "TimeInstant", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "schedule": "0 30 2 * * 1,2,3,4,5", + "name": "dateLastEmptying", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 0})" + }, + { + "name": "dateNextActuation", + "schedule": "0 0 0 1 * *", + "type": "DateTime", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 2592000})" + } + ], + "staticAttributes": [ + { + "name": "refWasteContainerModel", + "type": "Text", + "value": "WasteContainerModel:001" + }, + { + "name": "containerIsle", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "isleId", + "type": "Text", + "value": "WasteContainerIsle:Sur" + }, + { + "name": "serialNumber", + "type": "Text", + "value": "WasteContainer:DTS:002" + }, + { + "name": "location", + "type": "geo:json", + "value": { + "type": "Point", + "coordinates": [ + -3.662030696868896, + 40.512893767156115 + ] + } + }, + { + "name": "category", + "type": "List", + "value": "surface" + }, + { + "name": "storedWasteOrigin", + "type": "Text", + "value": "municipal" + }, + { + "name": "storedWasteKind", + "type": "List", + "value": "paper" + }, + { + "name": "status", + "type": "Text", + "value": "ok" + }, + { + "name": "areaServed", + "type": "Text", + "value": "distritotelefonica" + } + ] + } + ] +} diff --git a/ghpages/index.html b/ghpages/index.html new file mode 100644 index 0000000..947b4dd --- /dev/null +++ b/ghpages/index.html @@ -0,0 +1,72 @@ + + + + + + github-pages-test by Daniel Moran + + + + + + + +
+
+

github-pages-test

+

The best project ever.

+ +

View the Project on PdiHub Daniel Moran/github-pages-test

+ + +
+
+

Welcome to Your Project's GitHub Pages.

+ +

+ This is the basic template for Node.js projects documentation for Telefonica Digital. This documentation was generated + by the tdigital-nodejs-boilerplate Grunt template. In order to update its contents, go to the site folder of your project, + edit the content, and then push it to the "gh-pages" branch, using the grunt task. +

+ +

+    $ grunt site
+
+
+ +

+ The coverage and doc Grunt commands also write their results in this folder, so you can upload them by commiting the + changes in the site folder after a successful coverage or doc task. +

+ +

Test Coverage

+ +

In this page you will find the test coverage of the project.

+ +

JSDoc documentation

+ +

In this page you will find the JSDoc API documentation.

+ +

Complexity report

+ +

In this page you will find the Plato complexity report.

+ +

Authors and Contributors

+ +

Authored by: @javier and @dmj.

+ +

Support or Contact

+ +

Having trouble with Pages? Check out the documentation at http://help.github.com/pages or contact support@github.com and we’ll help you sort it out.

+
+
+

This project is maintained by dmj

+

Hosted on GitHub Pages — Theme by orderedlist

+
+
+ + + + diff --git a/ghpages/javascripts/scale.fix.js b/ghpages/javascripts/scale.fix.js new file mode 100644 index 0000000..87a40ca --- /dev/null +++ b/ghpages/javascripts/scale.fix.js @@ -0,0 +1,17 @@ +var metas = document.getElementsByTagName('meta'); +var i; +if (navigator.userAgent.match(/iPhone/i)) { + for (i=0; i= toDate.getTime()) { + emitProgressInfo(); + stop(); + } else { + clock.next(); + } + } +} + +/** + * Checks the pending update invocations and emits the "end" if none is pendingInvocations + */ +function checkPendingInvocations() { + for (var ii = 0; ii < updateJobs.length; ii++) { + if (updateJobs[ii].pendingInvocations().length === 0) { + updateJobs.splice(ii, 1); + break; + } + } + if (updateJobs.length === 0) { + return end(); + } else { + nextTick(); + } +} + +/** + * Generates a new device from a device description and a counter + * @param {Object} device The device description + * @param {Number} counter The counter + * @return {Object} The generated device + */ +function generateDevice(device, counter) { + /* jshint camelcase: false */ + var clonedDevice = cloneDevice(device); + clonedDevice.device_id = device.entity_type + ':' + counter; + clonedDevice.api_key = device.api_key; + clonedDevice.protocol = device.protocol; + return clonedDevice; +} + +/** + * Generates a new entity from a entity description and a counter + * @param {Object} entity The entity description + * @param {Number} counter The counter + * @return {Object} The generated device + */ +function generateEntity(entity, counter) { + /* jshint camelcase: false */ + var clonedEntity = cloneEntity(entity); + clonedEntity.entity_name = entity.entity_type + ':' + counter; + return clonedEntity; +} + +/** + * Adds an active attribute to certain schedule inside the schedules object + * @param {Object} schedules An object including schedules as properties and arrays of active attributes to update + * as values + * @param {String} schedule The schedule + * @param {Object} attribute Object containing the details of the attribute to update + */ +function addAttribute2Schedule(schedules, schedule, attribute) { + var theSchedule = typeof schedule === 'string' ? schedule : JSON.stringify(schedule); + schedules[theSchedule] = schedules[theSchedule] || []; + schedules[theSchedule].push(attribute); +} + +/** + * Returns the decimal date associated to certain date + * @param {date} date The date + * @return {Number} The time in decimal format + */ +function toDecimalHours(date) { + return date.getHours() + (date.getMinutes() / 60) + (date.getSeconds() / 3600); +} + +/** + * Returns the interpolated value for certain date based on the passed interpolator and interpolator type + * @param {Object} interpolator The interpolator specification + * @param {Object} interpolationType The interpolator type + * @return {Object} The interpolated value + */ +function interpolate(interpolator, interpolationType) { + var interpolationSpec, + interpolationFunction, + interpolatorInstance, + interpolationTypePlural = interpolationType + 's'; + + switch(interpolationType) { + case 'time-linear-interpolator': + interpolationFunction = linearInterpolator; + break; + case 'time-random-linear-interpolator': + interpolationFunction = randomLinearInterpolator; + break; + case 'time-step-before-interpolator': + interpolationFunction = stepBeforeInterpolator; + break; + case 'time-step-after-interpolator': + interpolationFunction = stepAfterInterpolator; + break; + case 'date-increment-interpolator': + interpolationFunction = dateIncrementInterpolator; + break; + case 'multiline-position-interpolator': + interpolationFunction = multilinePositionInterpolator; + break; + case 'text-rotation-interpolator': + interpolationFunction = textRotationInterpolator; + break; + case 'attribute-function-interpolator': + interpolationFunction = attributeFunctionInterpolator; + break; + default: + return null; + } + + if (interpolationType !== 'time-random-linear-interpolator') { + interpolationSpec = interpolator.substring((interpolationType + '(').length, interpolator.length - 1); + interpolators[interpolationTypePlural] = interpolators[interpolationTypePlural] || {}; + interpolatorInstance = interpolators[interpolationTypePlural][interpolationSpec] || + (interpolators[interpolationTypePlural][interpolationSpec] = + (interpolationType === 'attribute-function-interpolator' ? + interpolationFunction(interpolationSpec, configuration.domain, configuration.contextBroker) : + interpolationFunction(interpolationSpec))); + } else { + interpolationSpec = interpolator.substring((interpolationType + '(').length, interpolator.length - 1); + interpolatorInstance = interpolationFunction(interpolationSpec); + } + return interpolatorInstance.apply(null, Array.prototype.slice.call(arguments, 2)); +} + +/** + * Resolves a value for an interpolator and the current date + * @param {String} interpolator The value (may be an interpolator specification or concrete value) + * @return {Number} The final value for the interpolator and date specified + */ +function resolveValue(interpolator) { + var value; + if (typeof interpolator !== 'string') { + return interpolator; + } + if (interpolator.indexOf('time-linear-interpolator(') === 0) { + return interpolate(interpolator, 'time-linear-interpolator', toDecimalHours(new Date())); + } else if (interpolator.indexOf('time-random-linear-interpolator(') === 0) { + return interpolate(interpolator, 'time-random-linear-interpolator', toDecimalHours(new Date())); + } else if (interpolator.indexOf('time-step-before-interpolator(') === 0) { + return interpolate(interpolator, 'time-step-before-interpolator', toDecimalHours(new Date())); + } else if (interpolator.indexOf('time-step-after-interpolator(') === 0) { + return interpolate(interpolator, 'time-step-after-interpolator', toDecimalHours(new Date())); + } else if (interpolator.indexOf('date-increment-interpolator(') === 0) { + return interpolate(interpolator, 'date-increment-interpolator'); + } else if (interpolator.indexOf('multiline-position-interpolator(') === 0) { + return interpolate(interpolator, 'multiline-position-interpolator', toDecimalHours(new Date())); + } else if (interpolator.indexOf('text-rotation-interpolator(') === 0) { + return interpolate(interpolator, 'text-rotation-interpolator', new Date()); + } else if (interpolator.indexOf('attribute-function-interpolator(') === 0) { + try { + value = interpolate(interpolator, 'attribute-function-interpolator', + configuration.authentication && configuration.authentication.token); + } catch (exception) { + emitError(exception); + } + return value; + } else { + return interpolator; + } +} + +/** + * Returns the MQTT topic for certain device + * @param {Object} device The device information + * @return {string} The topic + */ +function getMQTTTopic(device) { + /* jshint camelcase: false */ + return '/' + getDeviceAPIKey(device) + '/' + device.device_id + '/attrs'; +} + +/** + * Returns the UltraLight payload + * @param {Object} device The device information + * @return {string} The payload + */ +function getUltraLightPayload(device) { + /* jshint camelcase: false */ + var httpMQTTPayload = '', + value; + if (device.protocol === 'UltraLight::HTTP' || device.protocol === 'UltraLight::MQTT') { + device.attributes.forEach(function(attribute) { + value = resolveValue(attribute.value); + /** + * Currently the UltraLight HTTP IoT agent does not support passing objects. Once it does, the "stringified" + * version should be passed: + * if ((typeof value === 'object') && !_.isDate(value)) { + * value = JSON.stringify(value); + * } + */ + httpMQTTPayload = httpMQTTPayload.concat(attribute.object_id + '|' + value + '|'); + }); + httpMQTTPayload = httpMQTTPayload.substring(0, httpMQTTPayload.length - 1); + } + return httpMQTTPayload; +} + +/** + * Returns the JSON payload + * @param {Object} device The device information + * @return {string} The payload + */ +function getJSONPayload(device) { + /* jshint camelcase: false */ + var jsonPayload = {}, + value; + if (device.protocol === 'JSON::HTTP' || device.protocol === 'JSON::MQTT') { + device.attributes.forEach(function(attribute) { + value = resolveValue(attribute.value); + jsonPayload[attribute.object_id] = value; + }); + } + return jsonPayload; +} + +/** + * Returns the request package options associated to the update of certain element (device or entity) and some of its + * attributes + * @param {String} elementType The element type + * @param {Object} element Element information + * @param {Array} attributes Array of attributes to update + * @return {Object} The request package options + */ +function getRequestOptions(elementType, element, attributes) { + /* jshint camelcase: false */ + var url, path, contentType, body, json, metadatas; + if (elementType === 'entity') { + contentType = 'application/json'; + json = true; + if ((configuration.contextBroker && configuration.contextBroker.ngsiVersion === '1.0') || + (configuration.subscriber && configuration.subscriber.ngsiVersion === '1.0')) { + var contextElement = {}; + contextElement.id = element.entity_name; + contextElement.type = element.entity_type; + contextElement.isPattern = false; + if (element.staticAttributes && element.staticAttributes.length) { + contextElement.attributes = []; + element.staticAttributes.forEach(function(staticAttribute) { + metadatas = []; + if (staticAttribute.metadata) { + staticAttribute.metadata.forEach(function(metadata) { + metadatas.push({ + name: metadata.name, + type: metadata.type, + value: resolveValue(metadata.value) + }); + }); + } + contextElement.attributes.push({ + name: staticAttribute.name, + type: staticAttribute.type, + value: resolveValue(staticAttribute.value), + metadatas: metadatas + }); + }); + } + contextElement.attributes = contextElement.attributes || []; + attributes.forEach(function(activeAttribute) { + metadatas = []; + if (activeAttribute.metadata) { + activeAttribute.metadata.forEach(function(metadata) { + metadatas.push({ + name: metadata.name, + type: metadata.type, + value: resolveValue(metadata.value) + }); + }); + } + contextElement.attributes.push({ + name: activeAttribute.name, + type: activeAttribute.type, + value: resolveValue(activeAttribute.value), + metadatas: metadatas + }); + }); + if (configuration.contextBroker) { + path = '/v1/updateContext'; + url = configuration.contextBroker.protocol + '://' + configuration.contextBroker.host + ':' + + configuration.contextBroker.port + path; + body = { + contextElements: [ + contextElement + ], + updateAction: 'APPEND' + }; + } else if (configuration.subscriber) { + url = configuration.subscriber.protocol + '://' + configuration.subscriber.host + ':' + + configuration.subscriber.port + configuration.subscriber.path; + body = { + subscriptionId: '1234567890abcdef12345678', + originator: 'fiware-device-simulator', + contextResponses: [ + { + contextElement: contextElement, + statusCode: { + code: '200', + reasonPhrase : 'OK' + } + } + ] + }; + } + } else if (configuration.contextBroker.ngsiVersion === '2.0') { + var ngsiV2Entity = {}; + path = '/v2/op/update'; + url = configuration.contextBroker.protocol + '://' + configuration.contextBroker.host + ':' + + configuration.contextBroker.port + path; + body = { + actionType: 'APPEND', + entities: [] + }; + ngsiV2Entity.id = element.entity_name; + ngsiV2Entity.type = element.entity_type; + if (element.staticAttributes && element.staticAttributes.length) { + element.staticAttributes.forEach(function(staticAttribute) { + ngsiV2Entity[staticAttribute.name] = { + type: staticAttribute.type, + value: resolveValue(staticAttribute.value) + }; + if (staticAttribute.metadata) { + ngsiV2Entity[staticAttribute.name].metadata = {}; + staticAttribute.metadata.forEach(function(metadata) { + ngsiV2Entity[staticAttribute.name].metadata[metadata.name] = { + type: metadata.type, + value: resolveValue(metadata.value) + }; + }); + } + }); + } + attributes.forEach(function(activeAttribute) { + ngsiV2Entity[activeAttribute.name] = { + type: activeAttribute.type, + value: resolveValue(activeAttribute.value) + }; + if (activeAttribute.metadata) { + ngsiV2Entity[activeAttribute.name].metadata = {}; + activeAttribute.metadata.forEach(function(metadata) { + ngsiV2Entity[activeAttribute.name].metadata[metadata.name] = { + type: metadata.type, + value: resolveValue(metadata.value) + }; + }); + } + }); + body.entities.push(ngsiV2Entity); + } else { + emitError(new fdsErrors.NGSIVersionNotSupported('The provided NGSI version (\'' + + configuration.contextBroker.ngsiVersion + '\') is not supported')); + return null; + } + } else if (elementType === 'device') { + if (element.protocol === 'UltraLight::HTTP') { + contentType = 'text/plain'; + url = configuration.iota.ultralight.http.protocol + '://' + configuration.iota.ultralight.http.host + ':' + + configuration.iota.ultralight.http.port + '/iot/d?i=' + element.device_id + '&k=' + + getDeviceAPIKey(element); + json = false; + body = getUltraLightPayload(element); + } else if (element.protocol === 'JSON::HTTP') { + contentType = 'application/json'; + url = configuration.iota.json.http.protocol + '://' + configuration.iota.json.http.host + ':' + + configuration.iota.json.http.port + '/iot/json?i=' + element.device_id + '&k=' + getDeviceAPIKey(element); + json = true; + body = getJSONPayload(element); + } else { + emitError(new fdsErrors.ProtocolNotSupported('The provided protocol (\'' + + element.protocol + '\') is not supported')); + return null; + } + } + + var options = { + method: 'POST', + url: url, + rejectUnauthorized: false, + headers: { + 'Content-Type': contentType, + 'Accept': 'application/json', + 'Fiware-Service': configuration.domain && configuration.domain.service, + 'Fiware-ServicePath': configuration.domain && configuration.domain.subservice, + 'X-Auth-Token': configuration.authentication && configuration.authentication.token + }, + json: json, + body: body + }; + return options; +} + +/** + * MQTT publications handler + * @param {Object} request The MQTT publication + * @param {Error} err Error, if any + * @param {[type]} result Result of the operation + */ +function onMQTTPublication(request, err, result) { + emitResponse(err, request, result); + process.nextTick(checkPendingInvocations); + nextTick(); +} + +/** + * Returns the update job name associated to certain entity and attributes + * @param {Object} element An entity or device + * @param {Array} attributes An array of attributes + * @return {String} The job name + */ +function getJobName(element, attributes) { + /* jshint camelcase: false */ + var jobName = ''; + var entityOrDeviceName = element.entity_name || element.object_id; + jobName += (entityOrDeviceName + ': '); + for (var ii = 0; ii < attributes.length; ii++) { + if (ii > 0) { + jobName += ', '; + } + jobName += attributes[ii].name; + } + return jobName; + /* jshint camelcase: true */ +} + +/** + * Updates the attributes associated to certain element (device or entity) + * @param {Object} elementType The element type + * @param {Object} element The element information + * @param {Array} attributes The attributes to update + */ +function update(elementType, element, attributes) { + updatesProcessed++; + if (maximumNotRespondedUpdateRequests >= 0) { + if ((updatesRequested - updatesResponded) > maximumNotRespondedUpdateRequests || + (updatesProcessed - delayedUpdateRequests - updatesRequested) > (maximumNotRespondedUpdateRequests + 1)) { + delayedUpdateRequests++; + var jobName = getJobName(element, attributes); + var reScheduledJob = scheduler.scheduleJob( + jobName, new Date(Date.now() + delay), update.bind(null, elementType, element, attributes)); + updateJobs.push(reScheduledJob); + return; + } + } + var mqttProtocol, mqttHost, mqttPort, mqttUser, mqttPassword, mqttURL, mqttTopic, mqttPayload, mqttRequest; + if (elementType === 'entity' || + (elementType === 'device' && + (element.protocol === 'UltraLight::HTTP' || element.protocol === 'JSON::HTTP'))) { + var requestOptions = getRequestOptions(elementType, element, attributes); + if (requestOptions) { + request(requestOptions, function(err, response, body) { + emitResponse(err, requestOptions, body, response); + updatesResponded++; + process.nextTick(checkPendingInvocations); + nextTick(); + }); + emitRequest(requestOptions); + updatesRequested++; + } + } else if (element.protocol === 'UltraLight::MQTT' || element.protocol === 'JSON::MQTT') { + if (element.protocol === 'UltraLight::MQTT') { + mqttProtocol = configuration.iota.ultralight.mqtt.protocol; + mqttHost = configuration.iota.ultralight.mqtt.host; + mqttPort = configuration.iota.ultralight.mqtt.port; + mqttUser = configuration.iota.ultralight.mqtt.user; + mqttPassword = configuration.iota.ultralight.mqtt.password; + } else if (element.protocol === 'JSON::MQTT') { + mqttProtocol = configuration.iota.json.mqtt.protocol; + mqttHost = configuration.iota.json.mqtt.host; + mqttPort = configuration.iota.json.mqtt.port; + mqttUser = configuration.iota.json.mqtt.user; + mqttPassword = configuration.iota.json.mqtt.password; + } + mqttURL = mqttProtocol + '://' + mqttHost + ':' + mqttPort; + mqttTopic = getMQTTTopic(element); + mqttPayload = (element.protocol === 'UltraLight::MQTT') ? + getUltraLightPayload(element) : JSON.stringify(getJSONPayload(element)); + mqttRequest = { + url: mqttURL, + topic: mqttTopic, + payload: mqttPayload + }; + if (!mqttClient || !isMQTTClientConnected) { + if (mqttUser && mqttPassword) { + mqttClient = mqtt.connect( + mqttURL, + { + username: mqttUser, + password: mqttPassword + } + ); + } else { + mqttClient = mqtt.connect(mqttURL); + } + mqttClient.on('error', function onMQTTClientError(ev) { + emitError(ev); + }); + mqttClient.on('connect', function onMQTTClientConnect() { + isMQTTClientConnected = true; + mqttClient.removeListener('connect', onMQTTClientConnect); + emitRequest(mqttRequest); + mqttClient.publish(mqttTopic, mqttPayload, onMQTTPublication.bind(null, mqttRequest)); + }); + } else { + emitRequest(mqttRequest); + mqttClient.publish(getMQTTTopic(element), getUltraLightPayload(element), + onMQTTPublication.bind(null, mqttRequest)); + } + } +} + +/** + * Schedules the jobs associated to the update of the attributes associated to certain element (device or entity) + * @param {String} elementType The element type + * @param {Object} element The element + */ +function scheduleJobs4Element(elementType, element) { + var schedules = {}; + var attributes = (elementType === 'device' ? element.attributes : element.active); + var scheduleObj; + if (attributes && attributes.length > 0) { + attributes.forEach(function(attribute) { + addAttribute2Schedule(schedules, attribute.schedule || element.schedule, attribute); + }); + } else if (element.staticAttributes) { + schedules[element.schedule] = schedules[element.schedule] || []; + } + for (var schedule in schedules) { + if (schedules.hasOwnProperty(schedule)) { + scheduleObj = null; + if (schedule.charAt(0) === '{') { + scheduleObj = JSON.parse(schedule); + scheduleObj.start = new Date(scheduleObj.start); + scheduleObj.end = new Date(scheduleObj.end); + } + var jobName = getJobName(element, schedules[schedule]); + var updateJob = scheduler.scheduleJob( + jobName, + schedule === 'once' ? new Date(Date.now() + 500) : scheduleObj || schedule, + update.bind(null, elementType, element, schedules[schedule]) + ); + updateJobs.push(updateJob); + emitScheduled(scheduleObj || schedule, elementType, element, schedules[schedule]); } + } +} + +/** + * Schedules jobs to update the entities + */ +function scheduleJobs() { + if (configuration.entities) { + configuration.entities.forEach(function(entity) { + /* jshint camelcase: false */ + if (entity.entity_name) { + /* jshint camelcase: true */ + scheduleJobs4Element('entity', entity); + } else if (entity.count) { + for (var ii = 1; ii <= entity.count; ii++) { + var generatedEntity = generateEntity(entity, ii); + scheduleJobs4Element('entity', generatedEntity); + } + } + }); + } + if (configuration.devices) { + configuration.devices.forEach(function(device) { + /* jshint camelcase: false */ + if (device.device_id) { + /* jshint camelcase: true */ + scheduleJobs4Element('device', device); + } else if (device.count) { + for (var ii = 1; ii <= device.count; ii++) { + var generatedDevice = generateDevice(device, ii); + scheduleJobs4Element('device', generatedDevice); + } + } + }); + } + areJobsScheduled = true; + nextTick(); +} + +/** + * Requests an authorization tokens + * @param {Function} callback The callback + */ +function requestToken(callback) { + var tokenRequestOptions; + if (configuration.authentication.provider === 'keystone') { + tokenRequestOptions = { + method: 'POST', + url: configuration.authentication.protocol + '://' + configuration.authentication.host + ':' + + configuration.authentication.port + '/v3/auth/tokens', + rejectUnauthorized: false, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + json: true, + body: { + auth: { + identity: { + methods: [ + 'password' + ], + password: { + user: { + domain: { + name: configuration.domain.service + }, + name: configuration.authentication.user, + password: configuration.authentication.password + } + } + }, + scope: { + project: { + domain: { + name: configuration.domain.service + }, + name: configuration.domain.subservice + } + } + } + } + }; + } else if (configuration.authentication.provider === 'fiware-lab') { + tokenRequestOptions = { + method: 'POST', + url: configuration.authentication.protocol + '://' + configuration.authentication.host + ':' + + configuration.authentication.port + '/token', + rejectUnauthorized: false, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json' + }, + json: true, + body: { + username: configuration.authentication.user, + password: configuration.authentication.password + } + }; + } + + request(tokenRequestOptions, function(err, response, body) { + var error; + if (err) { + error = err; + } else if (response.statusCode.toString().charAt(0) !== '2') { + error = new fdsErrors.TokenNotAvailable('Authorization token could not be generated due to error (code: ' + + (body && body.error && body.error.code) + ', title: ' + (body && body.error && body.error.title) + + ', message: ' + (body && body.error && body.error.message) + ')'); + } + if (error) { + emitError(error); + } + process.nextTick(callback.bind(null, error, response, body)); + nextTick(); + }); + emitTokenRequest(tokenRequestOptions); +} + +/** + * Token received handler + * @param {Object} err The error, if any + * @param {Object} response The response + * @param {Object} body The response body + */ +function onTokenResponse(err, response, body) { + /* jshint camelcase: false */ + if (err || response.statusCode.toString().charAt(0) !== '2') { + end(); + } else { + var token, + expires_at; + if (configuration.authentication.provider === 'keystone') { + token = response.headers['x-subject-token']; + expires_at = fromDate ? + new Date(Date.now() + (new Date(body.token.expires_at).getTime() - new Date(body.token.issued_at).getTime())) : + new Date(body.token.expires_at); + } else if (configuration.authentication.provider === 'fiware-lab') { + token = body; + expires_at = new Date(Date.now + 3600000); + } + emitTokenResponse(expires_at); + configuration.authentication.token = token; + var scheduleDate = new Date(expires_at.getTime() - 60000); + if (configuration.authentication.retry) { + scheduler.scheduleJob(scheduleDate, + async.retry.bind(null, configuration.authentication.retry, requestToken, onTokenResponse)); + } else { + scheduler.scheduleJob(scheduleDate, requestToken.bind(null, onTokenResponse)); + } + emitTokenRequestScheduled(scheduleDate); + if (!areJobsScheduled) { + scheduleJobs(); + } + nextTick(); + } + /* jshint camelcase: true */ +} + +/** + * Transpiles a simulation configuration into another simulation configuration resolving the possible import() + * directives + * @param {Object} configuration The input simulation configuration + * @param {Function} callback The callback + */ +function transpile(configuration, callback) { + emitInfo('Starting the simulation configuration transpiling...'); + fiwareDeviceSimulatorTranspiler.transpile(configuration, function(err, newConfiguration) { + if (err) { + return process.nextTick(callback.bind(null, err)); + } + emitInfo('Simulation configuration transpiling successfully completed!'); + return process.nextTick(callback.bind(null, err, newConfiguration)); + }); +} + +/** + * Set the global variables to be passed amongs the attribute-function-interpolator interpolators + * @param {Object} configuration The simulation configuration + * @param {Function} callback The callback + */ +function setGlobals(configuration, callback) { + global.fdsGlobals = configuration.globals; + process.nextTick(callback.bind(null, null, configuration)); +} + +/** + * Imports the packages included in the require property of the simulation configuration + * @param {Object} configuration The simulation configuration + * @param {Function} callback The callback + */ +function importPackages(configuration, callback) { + if (configuration.require) { + emitInfo('Requiring the following NPM packages: ' + configuration.require); + npmInstall( + configuration.require, + { + cache: true, + silent: true + }, + function(err) { + var error; + if (err) { + error = new fdsErrors.PackageNotImported('Some of the packages included in the \'require\' list (' + + configuration.require + ') could not be imported'); + } + emitInfo('NPM packages (' + configuration.require + ') successfully required and available!'); + delete configuration.require; + return process.nextTick(callback.bind(null, error, configuration)); + } + ); + } else { + process.nextTick(callback.bind(null, null, configuration)); + } +} + +/** + * Starts a simulation according to certain simulation configuration + * @param {Object} config A JSON simulation configuration Object + * @param {Date} fromDate The starting date for a fast-forward simulation + * @param {Date} toDate The ending date for a fast-forward simulation + * @param {Number} interval The interval in milliseconds to show progress information for a fast-forward + * simulation + * @param {Number} margin The maximun number of update requests for which no response has been received before + * applying a delay + * @param {Number} delay The delay in milliseconds between update requests for a fast-forward simulation + * @return {EventEmitter} EventEmitter instance to notify the following events: + * - "token-request": Whenever a new authorization token is requested. No event + * object is passed as additional information for this event occurrence. + * - "token-response": Whenever a new authorization token is received. The passed + * event includes the following properties: + * - {Date} expires_at The expiration date + * - "token-request-scheduled": Whenever a new authorization token request is + * scheduled. The passed event includes the following properties: + * - {Date} scheduled_at The scheduled date + * - "update-scheduled": Whenever a new entity update is scheduled. The passed event + * includes the following properties: + * - {String} schedule The schedule + * - {Object} entity Information about the entity to be updated + * - {Array} attributes The attributes to be updated + * - "update-request": Whenever a new entity update is requested. + * - {Object} request Details about the update request + * - "update-response": Whenever a new entity update response is received. + * - {Object} request Details about the update request + * - {Object} response The body of the received update response + * - "error": Whenever an error happens + * - {Error} error The error + * - {Object} request The optional associated request (optional) + * - "stop": Whenever the simulation is stopped. No event object is passed as + * additional information for this event occurrence. + * - "end": Whenever the simulation ends. No event object is passed as additional + * information for this event occurrence. + */ +function start(config, theFromDate, theToDate, interval, margin, theDelay) { + realFromDate = new time.Date(); + updatesProcessed = 0; + updatesRequested = 0; + updatesResponded = 0; + delayedUpdateRequests = 0; + errorUpdateRequests = 0; + isEnded = false; + stopProgressInfo(); + cancelAllJobs(); + async.waterfall([ + // Needed to be able to return the eventEmitter and start emitting events + function(callback) { + return process.nextTick(callback); + }, + async.apply(transpile, config), + fiwareDeviceSimulatorValidator.validateConfiguration, + setGlobals, + importPackages + ], function(err, newConfig) { + if (err) { + process.nextTick(function notifySimulationConfigurationError() { + emitError(err); + end(); + }); + } else { + emitInfo('Simulation started...'); + startProgressInfo(interval); + if (theFromDate) { + clock = lolex.install(theFromDate.getTime()); + } + configuration = newConfig; + maximumNotRespondedUpdateRequests = margin; + delay = theDelay; + fromDate = theFromDate; + toDate = theToDate; + if (configuration.authentication) { + if (configuration.authentication.retry) { + process.nextTick( + async.retry.bind(null, configuration.authentication.retry, requestToken, onTokenResponse)); + nextTick(); + } else { + process.nextTick(requestToken.bind(null, onTokenResponse)); + nextTick(); + } + } else { + process.nextTick(scheduleJobs); + nextTick(); + } + } + }); + return eventEmitter; +} + +module.exports = { + start: start, + stop: stop +}; diff --git a/lib/interpolators/attributeFunctionInterpolator.js b/lib/interpolators/attributeFunctionInterpolator.js new file mode 100644 index 0000000..6d0bca7 --- /dev/null +++ b/lib/interpolators/attributeFunctionInterpolator.js @@ -0,0 +1,333 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var async = require('async'); +var deasync = require('deasync'); +var _eval = require('eval'); +var request = require('request'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +var domainConf, contextBrokerConf; + +var VARIABLE_RE = /\${{[^{}]+}{[^{}]+}}/g; +var ENTITY_ATTRIBUTE_RE = /{[^{}]+}/g; +var STATE_RE = /\/\*\s*[^:]+:\s*(.*)\s*\*\//; + +/** + * Returns the entity-attribute map for the passed spec + * @param {string} spec The spec + * @return {Object} The entity-attribute map + */ +function getEntityAttributeMap(spec) { + var entityAttributeMap = {}; + var variableMatches = spec.match(VARIABLE_RE); + if (!variableMatches) { + return entityAttributeMap; + } + spec.match(VARIABLE_RE).forEach(function(specMatch) { + var entityName, attributeName; + var entry = specMatch.match(ENTITY_ATTRIBUTE_RE); + entityName = entry[0].substring(1, entry[0].length - 1); + attributeName = entry[1].substring(1, entry[1].length - 1); + entityAttributeMap[entityName] = entityAttributeMap[entityName] || []; + if (entityAttributeMap[entityName].indexOf(attributeName) === - 1) { + entityAttributeMap[entityName].push(attributeName); + } + }); + return entityAttributeMap; +} + +/** + * Sends a HTTP request + * @param {String} token The authorization token + * @param {Object} requestOptions The request options + * @param {Function} callback The callback + */ +function sendRequest(token, requestOptions, callback) { + requestOptions.headers['X-Auth-Token'] = token; + request(requestOptions, callback); +} + +/** + * Returns the entity name from an entity name and possible type pair + * @param {String} entity The entity name and possible type pair + * @return {String} The entity name + */ +function getEntityName(entity) { + var entityName; + if (entity.indexOf(':#:') === -1) { + entityName = entity; + } else { + entityName = entity.substring(0, entity.indexOf(':#:')); + } + return entityName; +} + +/** + * Returns the entity type (if any) from an entity name and possible type pair + * @param {String} entity The entity name and possible type pair + * @return {String} The entity type or undefined if no type + */ +function getEntityType(entity) { + var entityType; + if (entity.indexOf(':#:') !== -1) { + entityType = entity.substring(entity.indexOf(':#:') + 3); + } + return entityType; +} + +/** + * Returns the request options from a entity-attribute map + * @param {Object} domainConf The domain configuration + * @param {Object} contextBrokerConf The Context Broker configuration + * @param {Object} entityAttributeMap The entity-attribute map + * @return {Array} The request options array + */ +function getRequestOptions(domainConf, contextBrokerConf, entityAttributeMap) { + var body, + requestOptions = [], + entityName, + entityType; + + var entities = Object.getOwnPropertyNames(entityAttributeMap); + + entities.forEach(function(entity) { + entityName = getEntityName(entity); + entityType = getEntityType(entity); + body = { + entities: [ + { + id: entityName, + isPattern: 'false' + } + ] + }; + if (entityType) { + body.entities[0].type = entityType; + } + entityAttributeMap[entity].forEach(function(attribute) { + body.attributes = body.attributes || []; + body.attributes.push(attribute); + }); + + requestOptions.push( + { + method: 'POST', + url: contextBrokerConf.protocol + '://' + contextBrokerConf.host + ':' + contextBrokerConf.port + + '/v1/queryContext', + rejectUnauthorized: false, + headers: { + 'Content-Type': 'application/json', + 'Accept': 'application/json', + 'Fiware-Service': domainConf.service, + 'Fiware-ServicePath': domainConf.subservice + }, + json: true, + body: body + } + ); + }); + return requestOptions; +} + +/** + * Returns the attribute value from the received responses + * @param {Array} responses The array of responses + * @param {String} entity The entity name and optional type + * @param {String} attribute The attribute name + * @return {Object} The attribute value + */ +function getAttributeValue(responses, entity, attribute) { + var entityName = getEntityName(entity); + var entityType = getEntityType(entity); + + for (var ii = 0; ii < responses.length; ii++) { + if (responses[ii].body.contextResponses[0].contextElement.id === entityName && + (entityType ? responses[ii].body.contextResponses[0].contextElement.type === entityType : true)) { + for (var jj = 0; jj < responses[ii].body.contextResponses[0].contextElement.attributes.length; jj++) { + if (responses[ii].body.contextResponses[0].contextElement.attributes[jj].name === attribute) { + return responses[ii].body.contextResponses[0].contextElement.attributes[jj].value; + } + } + } + } +} + +/** + * Checks if there has been an error when getting the attibute values + * @param {Array} responseArray Array of responsees obtained from the Context Broker + * @return {Boolean} True if there has been any error, false otherwise + */ +function checkError(responseArray) { + for (var ii = 0; ii < responseArray.length; ii++) { + if (parseInt(responseArray[ii].statusCode, 10) !== 200 || + (responseArray[ii].body.errorCode && parseInt(responseArray[ii].body.errorCode.code, 10) !== 200)) { + return true; + } + } + return false; +} + +/** + * Composes the state map from the state specification included in the interpolator specification + * @param {String} spec The interpolator specification + * @return {Object} The generated state map + */ +function generateStateMap(spec) { + var stateMap = {}, + stateRegExpResult = STATE_RE.exec(spec), + stateVariables, + stateVariablesArray; + if (stateRegExpResult && stateRegExpResult.length >= 1) { + stateVariables = stateRegExpResult[1]; + if (stateVariables) { + stateVariablesArray = stateVariables.split(','); + stateVariablesArray.forEach(function(variable) { + if (variable.indexOf('=') !== -1) { + stateMap[variable.trim().substring(0, variable.trim().indexOf('=')).trim()] = + JSON.parse(variable.trim().substring(variable.trim().indexOf('=') + 1)); + } else { + stateMap[variable.trim()] = null; + } + }); + } + } + return stateMap; +} +module.exports = function(interpolationSpec, theDomainConf, theContextBrokerConf){ + var entityAttributeMap, + requestOptions, + stateMap; + + domainConf = theDomainConf; + contextBrokerConf = theContextBrokerConf; + + /** + * Returns the variable map to be passed to the Javascript code to evaluated + * @return {Object} The variable map + */ + function getVariableMap() { + var variableMap = {}, globalNames, stateMapNames; + globalNames = Object.getOwnPropertyNames(global.fdsGlobals); + globalNames.forEach(function(globalName) { + variableMap[globalName] = global.fdsGlobals[globalName]; + }); + stateMapNames = Object.getOwnPropertyNames(stateMap); + stateMapNames.forEach(function(stateMapEntry) { + variableMap[stateMapEntry] = stateMap[stateMapEntry]; + }); + return variableMap; + } + + /** + * Process the evaluated value returned by the Javascript code + * @param {Object} evaluatedValue The evaluated value + * @return {Object} The post-processed evaluated value + */ + function processEvaluatedValue(evaluatedValue) { + var globalNames, stateMapNames; + if (typeof evaluatedValue === 'object') { + if (evaluatedValue.state && typeof evaluatedValue.state === 'object') { + if (evaluatedValue.state.globals) { + globalNames = Object.getOwnPropertyNames(evaluatedValue.state.globals); + globalNames.forEach(function(globalName) { + global.fdsGlobals[globalName] = evaluatedValue.state.globals[globalName]; + }); + delete evaluatedValue.state.globals; + } + stateMapNames = Object.getOwnPropertyNames(evaluatedValue.state); + stateMapNames.forEach(function(stateMapEntry) { + stateMap[stateMapEntry] = evaluatedValue.state[stateMapEntry]; + }); + } + if (evaluatedValue.result || evaluatedValue.result === 0 || evaluatedValue.result === false) { + evaluatedValue = evaluatedValue.result; + } + } + return evaluatedValue; + } + /** + * Returns the new interpolated value asynchronously + * @return {Object} The new interpolated value + */ + function attributeFunctionInterpolator(token, callback) { + var evalStr = interpolationSpec, + evalStrAux; + + async.map(requestOptions, sendRequest.bind(null, token), function(err, responseArray) { + if (err || checkError(responseArray)) { + return callback( + new fdsErrors.ValueResolutionError('Error when getting some attribute value from the Context Broker ' + + 'for an attribute-function-interpolator resolution with spec: \'' + interpolationSpec + '\'')); + } + var entities = Object.getOwnPropertyNames(entityAttributeMap); + entities.forEach(function(entity) { + entityAttributeMap[entity].forEach(function(attribute) { + // String.replace() global replace can only be done with a regular expression so we loop until no more changes + evalStrAux = null; + while (evalStrAux !== evalStr) { + evalStrAux = evalStr; + evalStr = evalStr.replace(new RegExp('${{' + entity + '}{' + attribute + '}}', 'g').source, + getAttributeValue(responseArray, entity, attribute)); + } + }); + }); + + var evaluatedValue; + try { + if (evalStr.indexOf('module.exports') !== -1) { + global.SimulationDate = Date; + global.fdsGlobals = global.fdsGlobals || {}; + var variableMap = getVariableMap(); + evaluatedValue = _eval(evalStr, variableMap, true); + evaluatedValue = processEvaluatedValue(evaluatedValue); + } else { + /* jshint evil: true */ + evaluatedValue = eval(evalStr); + /* jshint evil: false */ + } + } catch (exception) { + return callback( + new fdsErrors.ValueResolutionError('Error when evaluating the Javascript code ' + + 'for an attribute-function-interpolator resolution with spec: \'' + interpolationSpec + '\'')); + } + callback(null, evaluatedValue); + }); + } + + if (typeof interpolationSpec !== 'string') { + try { + interpolationSpec = JSON.stringify(interpolationSpec); + } catch (exception) { + throw new fdsErrors.ValueResolutionError('Error when evaluating the Javascript code ' + + 'for an attribute-function-interpolator resolution with spec: \'' + interpolationSpec + '\''); + } + } + entityAttributeMap = getEntityAttributeMap(interpolationSpec); + stateMap = generateStateMap(interpolationSpec); + requestOptions = getRequestOptions(domainConf, contextBrokerConf, entityAttributeMap); + return deasync(attributeFunctionInterpolator); +}; diff --git a/lib/interpolators/dateIncrementInterpolator.js b/lib/interpolators/dateIncrementInterpolator.js new file mode 100644 index 0000000..a67dcde --- /dev/null +++ b/lib/interpolators/dateIncrementInterpolator.js @@ -0,0 +1,75 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * Checks if the provided interpolation object is a valid once + * @param {Object} interpolationObject The interpolation object + * @return {Boolean} True if the interpolation object is valid, false otherwise + */ +function isValidInterpolationObject(interpolationObject) { + return ((interpolationObject.origin && + (interpolationObject.origin === 'now' || !isNaN(Date.parse(interpolationObject.origin)))) && + ((interpolationObject.increment !== undefined) && (typeof interpolationObject.increment === 'number'))); +} + +module.exports = function(interpolationObjectOrSpec) { + var interpolationObject; + + /** + * The date increment interpolator function + * @return {Date} The interpolated new Date + */ + function dateIncrementInterpolator() { + var originDate; + if (interpolationObject.origin === 'now') { + originDate = new Date(); + } else { + originDate = new Date(interpolationObject.origin); + } + return new Date(originDate.getTime() + (interpolationObject.increment * 1000)).toISOString(); + } + + if ((typeof interpolationObjectOrSpec === 'object')) { + if (isValidInterpolationObject(interpolationObjectOrSpec)) { + interpolationObject = interpolationObjectOrSpec; + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "origin" (as "now" or ' + + 'a valid date string) and "increment" (as an integer) properties)'); + } + } else { + interpolationObject = JSON.parse(interpolationObjectOrSpec); + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "origin" (as "now" or ' + + 'a valid date string) and "increment" (as an integer) properties)'); + } + } + interpolationObject = interpolationObject || interpolationObjectOrSpec; + return dateIncrementInterpolator; +}; diff --git a/lib/interpolators/linearInterpolator.js b/lib/interpolators/linearInterpolator.js new file mode 100644 index 0000000..4f3af17 --- /dev/null +++ b/lib/interpolators/linearInterpolator.js @@ -0,0 +1,172 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var linearInterpolator = require('linear-interpolator'); + +/** + * Validates the entries of an interpolation array + * @param {Array} entry The entry to Validates + * @return {Boolean} True if the entry is valid, false otherwise + */ +function interpolatorArrayValidator(entry) { + return Array.isArray(entry) && (entry.length === 2) && + (typeof entry[0] === 'number') && (typeof entry[1] === 'number'); +} + +/** + * Checks if the provided interpolation array is a valid once + * @param {Array} interpolationArray The interpolation array + * @return {Boolean} True if the interpolation array is valid, false otherwise + */ +function isValidInterpolationArray(interpolationArray) { + var interpolationArrayObject = interpolationArray; + if (typeof interpolationArray === 'string' && + interpolationArray.charAt(0) === '[' && interpolationArray.charAt(interpolationArray.length -1) === ']') { + try { + interpolationArrayObject = JSON.parse(interpolationArray); + } catch(exception) { + return false; + } + } + return Array.isArray(interpolationArrayObject) && interpolationArrayObject.every(interpolatorArrayValidator); +} + +/** + * Sorts the interpolation array according to the entries on the X-axis + * @param {Array} entryA First entry to compare + * @param {Array} entryB Second entry to compare + * @return {Number} Negative number if entryA should go before entryB, possitive number if entryA should go + * after entryB and 0 if they should be left unchanged + */ +function sortInterpolationArray(entryA, entryB) { + return entryA[0] - entryB[0]; +} + +/** + * Checks if the provided interpolation object is a valid once + * @param {Object} interpolationObject The interpolation object + * @return {Boolean} True if the interpolation object is valid, false otherwise + */ +function isValidInterpolationObject(interpolationObject) { + return (interpolationObject.spec && isValidInterpolationArray(interpolationObject.spec) && + interpolationObject.return && (interpolationObject.return.type === 'float' || + interpolationObject.return.type === 'integer') && + ((interpolationObject.return.type === 'integer') ? + ['ceil', 'floor', 'round'].indexOf(interpolationObject.return.rounding) !== -1 : + true)); +} + +module.exports = function(interpolationObjectOrSpec) { + var interpolationObject, interpolationArray, originalLinearInterpolator; + + /** + * Final linear interpolator + * @param {Number} input A float number between 0 and 24 corresponding to the decimal hours + * @return {Number} Float or integer number according to the specification + */ + function finalLinearInterpolator(input) { + var output = originalLinearInterpolator(input); + if (interpolationObject.return.type === 'float') { + return output; + } else { + // In this case: interpolationObject.return.type === 'integer' + switch (interpolationObject.return.rounding) { + case 'ceil': + return Math.ceil(output); + case 'floor': + return Math.floor(output); + case 'round': + return Math.round(output); + } + } + } + + if (Array.isArray(interpolationObjectOrSpec)) { + if (isValidInterpolationArray(interpolationObjectOrSpec)) { + interpolationArray = interpolationObjectOrSpec; + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else if (typeof interpolationObjectOrSpec === 'string' && interpolationObjectOrSpec.charAt(0) === '[' && + interpolationObjectOrSpec.charAt(interpolationObjectOrSpec.length - 1) === ']') { + try { + interpolationArray = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationArray(interpolationArray)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else if (typeof interpolationObjectOrSpec === 'object') { + if (isValidInterpolationObject(interpolationObjectOrSpec)) { + interpolationObject = interpolationObjectOrSpec; + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "spec" and ' + + '"return" properties, where the "return" property is an object including the "type" property and, ' + + 'in case "type" is equal to "integer" a "rounding" property)'); + } + } else { + try { + interpolationObject = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "spec" and ' + + '"return" properties, where the "return" property is an object including the "type" property and, ' + + 'in case "type" is equal to "integer" a "rounding" property)'); + } + } + + if (interpolationArray) { + interpolationObject = { + spec: interpolationArray, + return: { + type: 'float' + } + }; + } + interpolationObject = interpolationObject || interpolationObjectOrSpec; + if (typeof interpolationObject.spec === 'string') { + try { + interpolationObject.spec = JSON.parse(interpolationObject.spec); + } + catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } + interpolationArray = interpolationObject.spec.sort(sortInterpolationArray); + originalLinearInterpolator = linearInterpolator(interpolationArray); + return finalLinearInterpolator; +}; diff --git a/lib/interpolators/multilinePositionInterpolator.js b/lib/interpolators/multilinePositionInterpolator.js new file mode 100644 index 0000000..68c3df5 --- /dev/null +++ b/lib/interpolators/multilinePositionInterpolator.js @@ -0,0 +1,125 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var turfLineString = require('turf-linestring'); +var turfLineDistance = require('turf-line-distance'); +var turfAlong = require('turf-along'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +module.exports = function(interpolationObjectOrSpec){ + var interpolationObject, + distanceUnits, + line, + lineDistance, + isError = false; + + /** + * Validates the coordinates property value + * @param {Array} coordinates The coordinates array + * @return {Boolean} True if the coordinates array is valid, false otherwise + */ + function isValidCoordinates(coordinates) { + if (!Array.isArray(coordinates)) { + return false; + } + for (var ii = 0; ii < coordinates.length; ii++) { + if (!Array.isArray(coordinates[ii]) || (coordinates[ii].length !== 2) || + (typeof coordinates[ii][0] !== 'number') || (typeof coordinates[ii][1] !== 'number')) { + return false; + } + } + line = turfLineString(coordinates); + lineDistance = turfLineDistance(line, distanceUnits); + return true; + } + + /** + * Validates the interpolation object + * @param {Object} interpolationObject The interpolation object to validate + * @return {Boolean} True if the interpolation object is valid, false otherwise + */ + function isValidInterpolationObject(interpolationObject) { + if (!interpolationObject.coordinates || !isValidCoordinates(interpolationObject.coordinates)) { + return false; + } + if (!interpolationObject.speed || (typeof interpolationObject.speed !== 'object') || + (typeof interpolationObject.speed.value !== 'number') || + ((interpolationObject.speed.units !== 'km/h') && (interpolationObject.speed.units !== 'mi/h'))) { + return false; + } + distanceUnits = (interpolationObject.speed.units === 'km/h' ? 'kilometers' : 'miles'); + if (!interpolationObject.time || (typeof interpolationObject.time.from !== 'number') || + (typeof interpolationObject.time.to !== 'number')) { + return false; + } + return true; + } + + /** + * Returns the new interpolated position for the passed decimal hours + * @param {Number} decimalHours The decimal hours + * @return {Object} The new interpolated position + */ + function multilinePositionInterpolator(decimalHours) { + var traveledDistance, + traveledDistanceModulus; + if (decimalHours < interpolationObject.time.from) { + return turfAlong(line, 0, distanceUnits).geometry; + } else if (decimalHours > interpolationObject.time.to) { + traveledDistance = interpolationObject.speed.value * + (interpolationObject.time.to - interpolationObject.time.from); + } + traveledDistance = + traveledDistance || interpolationObject.speed.value * (decimalHours - interpolationObject.time.from); + traveledDistanceModulus = traveledDistance % lineDistance; + return turfAlong(line, traveledDistanceModulus, distanceUnits).geometry; + } + + if (typeof interpolationObjectOrSpec === 'object') { + interpolationObject = interpolationObjectOrSpec; + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or specification (' + + interpolationObjectOrSpec + ') is not valid (it should include the following properties: "coordinates" ' + + '(array of points (array of 2 floats or integers), "speed" (an object with a "value" (number) property and a ' + + '"units" ("km/h" or "mi/h") property) and a "time" (an object with a "from" (decimal hours) and "to" ' + + '(decimal hours) properties)'); + } + } else { + try { + interpolationObject = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + isError = true; + } + if (isError || !isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or specification (' + + interpolationObjectOrSpec + ') is not valid (it should include the following properties: "coordinates" ' + + '(array of points (array of 2 floats or integers), "speed" (an object with a "value" (number) property and a ' + + '"units" ("km/h" or "mi/h") property) and a "time" (an object with a "from" (decimal hours) and "to" ' + + '(decimal hours) properties)'); + } + } + return multilinePositionInterpolator; +}; diff --git a/lib/interpolators/randomLinearInterpolator.js b/lib/interpolators/randomLinearInterpolator.js new file mode 100644 index 0000000..0e9ee00 --- /dev/null +++ b/lib/interpolators/randomLinearInterpolator.js @@ -0,0 +1,187 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var linearInterpolator = require('linear-interpolator'); + +/** + * Validates the entries of an interpolation array + * @param {Array} entry The entry to Validates + * @return {Boolean} True if the entry is valid, false otherwise + */ +function interpolatorArrayValidator(entry) { + return Array.isArray(entry) && (entry.length === 2) && + (typeof entry[0] === 'number') && (typeof entry[1] === 'number'); +} + +/** + * Checks if the provided interpolation array is a valid once + * @param {Array} interpolationArray The interpolation array + * @return {Boolean} True if the interpolation array is valid, false otherwise + */ +function isValidInterpolationArray(interpolationArray) { + var interpolationArrayObject = interpolationArray; + if (typeof interpolationArray === 'string' && + interpolationArray.charAt(0) === '[' && interpolationArray.charAt(interpolationArray.length -1) === ']') { + try { + interpolationArrayObject = JSON.parse(interpolationArray); + } catch(exception) { + return false; + } + } + return Array.isArray(interpolationArrayObject) && interpolationArrayObject.every(interpolatorArrayValidator); +} + +/** + * Sorts the interpolation array according to the entries on the X-axis + * @param {Array} entryA First entry to compare + * @param {Array} entryB Second entry to compare + * @return {Number} Negative number if entryA should go before entryB, possitive number if entryA should go + * after entryB and 0 if they should be left unchanged + */ +function sortInterpolationArray(entryA, entryB) { + return entryA[0] - entryB[0]; +} + +/** + * Checks if the provided interpolation object is a valid once + * @param {Object} interpolationObject The interpolation object + * @return {Boolean} True if the interpolation object is valid, false otherwise + */ +function isValidInterpolationObject(interpolationObject) { + return (interpolationObject.spec && isValidInterpolationArray(interpolationObject.spec) && + interpolationObject.return && (interpolationObject.return.type === 'float' || + interpolationObject.return.type === 'integer') && + ((interpolationObject.return.type === 'integer') ? + ['ceil', 'floor', 'round'].indexOf(interpolationObject.return.rounding) !== -1 : + true)); +} + +module.exports = function(interpolationObjectOrSpec) { + var interpolationObject, interpolationArray, originalLinearInterpolator; + + /** + * Final linear interpolator + * @param {Number} input A float number between 0 and 24 corresponding to the decimal hours + * @return {Number} Float or integer number according to the specification + */ + function finalLinearInterpolator(input) { + var output = originalLinearInterpolator(input); + if (interpolationObject.return.type === 'float') { + return output; + } else { + // In this case: interpolationObject.return.type === 'integer' + switch (interpolationObject.return.rounding) { + case 'ceil': + return Math.ceil(output); + case 'floor': + return Math.floor(output); + case 'round': + return Math.round(output); + } + } + } + + if (typeof interpolationObjectOrSpec === 'string') { + interpolationObjectOrSpec = interpolationObjectOrSpec.replace(/random\(\d+\.?\d*,\d+\.?\d*\)/g, function(match) { + var minMaxArray = match.substring(7, match.length - 1).split(','); + return Math.random() * (parseFloat(minMaxArray[1]) - parseFloat(minMaxArray[0])) + parseFloat(minMaxArray[0]); + }); + } else if (interpolationObjectOrSpec.spec && typeof interpolationObjectOrSpec.spec === 'string'){ + interpolationObjectOrSpec.spec = interpolationObjectOrSpec.spec && + interpolationObjectOrSpec.spec.replace(/random\(\d+\.?\d*,\d+\.?\d*\)/g, + function(match) { + var minMaxArray = match.substring(7, match.length - 1).split(','); + return Math.random() * (parseFloat(minMaxArray[1]) - parseFloat(minMaxArray[0])) + parseFloat(minMaxArray[0]); + } + ); + } + + if (Array.isArray(interpolationObjectOrSpec)) { + if (isValidInterpolationArray(interpolationObjectOrSpec)) { + interpolationArray = interpolationObjectOrSpec; + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else if (typeof interpolationObjectOrSpec === 'string' && interpolationObjectOrSpec.charAt(0) === '[' && + interpolationObjectOrSpec.charAt(interpolationObjectOrSpec.length - 1) === ']') { + try { + interpolationArray = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationArray(interpolationArray)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else if (typeof interpolationObjectOrSpec === 'object') { + if (isValidInterpolationObject(interpolationObjectOrSpec)) { + interpolationObject = interpolationObjectOrSpec; + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "spec" and ' + + '"return" properties, where the "return" property is an object including the "type" property and, ' + + 'in case "type" is equal to "integer" a "rounding" property)'); + } + } else { + try { + interpolationObject = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or spec (' + + interpolationObjectOrSpec + ') is not valid (it should be an object including the "spec" and ' + + '"return" properties, where the "return" property is an object including the "type" property and, ' + + 'in case "type" is equal to "integer" a "rounding" property)'); + } + } + + if (interpolationArray) { + interpolationObject = { + spec: interpolationArray, + return: { + type: 'float' + } + }; + } + interpolationObject = interpolationObject || interpolationObjectOrSpec; + if (typeof interpolationObject.spec === 'string') { + try { + interpolationObject.spec = JSON.parse(interpolationObject.spec); + } + catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationObjectOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } + interpolationArray = interpolationObject.spec.sort(sortInterpolationArray); + originalLinearInterpolator = linearInterpolator(interpolationArray); + return finalLinearInterpolator; +}; diff --git a/lib/interpolators/stepAfterInterpolator.js b/lib/interpolators/stepAfterInterpolator.js new file mode 100644 index 0000000..af21614 --- /dev/null +++ b/lib/interpolators/stepAfterInterpolator.js @@ -0,0 +1,100 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * Validates the entries of an interpolation array + * @param {Array} entry The entry to Validates + * @return {Boolean} True if the entry is valid, false otherwise + */ +function interpolatorArrayValidator(entry) { + return Array.isArray(entry) && (entry.length === 2) && + (typeof entry[0] === 'number') && (typeof entry[1] === 'number'); +} + +/** + * Checks if the provided interpolation array is a valid once + * @param {Array} interpolationArray The interpolation array + * @return {Boolean} True if the interpolation array is valid, false otherwise + */ +function isValidInterpolationArray(interpolationArray) { + return (interpolationArray.length > 0) && interpolationArray.every(interpolatorArrayValidator); +} + +/** + * Sorts the interpolation array according to the entries on the X-axis + * @param {Array} entryA First entry to compare + * @param {Array} entryB Second entry to compare + * @return {Number} Negative number if entryA should go before entryB, possitive number if entryA should go + * after entryB and 0 if they should be left unchanged + */ +function sortInterpolationArray(entryA, entryB) { + return entryA[0] - entryB[0]; +} + +module.exports = function(interpolationArrayOrSpec) { + var interpolationArray; + + /** + * Step-after interpolation function + * @param {Number} input The input to return its associated interporlated value + * @return {Number} The interpolated value associated to the provided input + */ + function stepAfterInterpolator(input) { + if (input >= interpolationArray[interpolationArray.length - 1][0]) { + return interpolationArray[interpolationArray.length - 1][1]; + } else if (input <= interpolationArray[0][0]) { + return interpolationArray[0][1]; + } else { + for (var ii = 0; ii < interpolationArray.length - 1; ii++) { + if (interpolationArray[ii][0] <= input && interpolationArray[ii + 1][0] > input) { + return interpolationArray[ii][1]; + } + } + } + } + + if (Array.isArray(interpolationArrayOrSpec) && isValidInterpolationArray(interpolationArrayOrSpec)) { + interpolationArray = interpolationArrayOrSpec; + } else if (typeof interpolationArrayOrSpec === 'string') { + try { + interpolationArray = JSON.parse(interpolationArrayOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationArray(interpolationArray)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + interpolationArray.sort(sortInterpolationArray); + return stepAfterInterpolator; +}; diff --git a/lib/interpolators/stepBeforeInterpolator.js b/lib/interpolators/stepBeforeInterpolator.js new file mode 100644 index 0000000..44cffd6 --- /dev/null +++ b/lib/interpolators/stepBeforeInterpolator.js @@ -0,0 +1,100 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * Validates the entries of an interpolation array + * @param {Array} entry The entry to Validates + * @return {Boolean} True if the entry is valid, false otherwise + */ +function interpolatorArrayValidator(entry) { + return Array.isArray(entry) && (entry.length === 2) && + (typeof entry[0] === 'number') && (typeof entry[1] === 'number'); +} + +/** + * Checks if the provided interpolation array is a valid once + * @param {Array} interpolationArray The interpolation array + * @return {Boolean} True if the interpolation array is valid, false otherwise + */ +function isValidInterpolationArray(interpolationArray) { + return (interpolationArray.length > 0) && interpolationArray.every(interpolatorArrayValidator); +} + +/** + * Sorts the interpolation array according to the entries on the X-axis + * @param {Array} entryA First entry to compare + * @param {Array} entryB Second entry to compare + * @return {Number} Negative number if entryA should go before entryB, possitive number if entryA should go + * after entryB and 0 if they should be left unchanged + */ +function sortInterpolationArray(entryA, entryB) { + return entryA[0] - entryB[0]; +} + +module.exports = function(interpolationArrayOrSpec) { + var interpolationArray; + + /** + * Step-before interpolation function + * @param {Number} input The input to return its associated interporlated value + * @return {Number} The interpolated value associated to the provided input + */ + function stepBeforeInterpolator(input) { + if (input >= interpolationArray[interpolationArray.length - 1][0]) { + return interpolationArray[interpolationArray.length - 1][1]; + } else if (input <= interpolationArray[0][0]) { + return interpolationArray[0][1]; + } else { + for (var ii = 0; ii < interpolationArray.length - 1; ii++) { + if (interpolationArray[ii][0] < input && interpolationArray[ii + 1][0] >= input) { + return interpolationArray[ii + 1][1]; + } + } + } + } + + if (Array.isArray(interpolationArrayOrSpec) && isValidInterpolationArray(interpolationArrayOrSpec)) { + interpolationArray = interpolationArrayOrSpec; + } else if (typeof interpolationArrayOrSpec === 'string') { + try { + interpolationArray = JSON.parse(interpolationArrayOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + if (!isValidInterpolationArray(interpolationArray)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + } else { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation array or specification (' + + interpolationArrayOrSpec + ') is not valid (it should be an array of arrays of 2 number elements)'); + } + interpolationArray.sort(sortInterpolationArray); + return stepBeforeInterpolator; +}; diff --git a/lib/interpolators/textRotationInterpolator.js b/lib/interpolators/textRotationInterpolator.js new file mode 100644 index 0000000..dbcc4e0 --- /dev/null +++ b/lib/interpolators/textRotationInterpolator.js @@ -0,0 +1,193 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * Checkes if the text probability array is valid + * @param {Array} textProbabilityArray The text probability array + * @return {Boolean} True if the text probability array is valid, false otherwise + */ +function isValidTextProbabilityArray(textProbabilityArray) { + var accumulator = 0; + if (!Array.isArray(textProbabilityArray)) { + return false; + } + for (var ii = 0; ii < textProbabilityArray.length; ii++) { + if (!Array.isArray(textProbabilityArray[ii]) || textProbabilityArray[ii].length !== 2 || + isNaN(textProbabilityArray[ii][0]) || (typeof textProbabilityArray[ii][1] !== 'string')) { + return false; + } + accumulator += textProbabilityArray[ii][0]; + } + if (accumulator !== 100) { + return false; + } + return true; +} + +/** + * Validates the interpolation object + * @param {Object} interpolationObject The interpolation object to validate + * @return {Boolean} True if the interpolation object is valid, false otherwise + */ +function isValidInterpolationObject(interpolationObject) { + if (!interpolationObject.units) { + return false; + } else if(['seconds', 'minutes', 'hours', 'days', 'dates', 'months', 'years'].indexOf( + interpolationObject.units) === -1) { + return false; + } else if (!interpolationObject.text || !Array.isArray(interpolationObject.text)) { + return false; + } + for (var ii = 0; ii < interpolationObject.text.length; ii++) { + if (!Array.isArray(interpolationObject.text[ii]) || (interpolationObject.text[ii].length !== 2) || + isNaN(interpolationObject.text[ii][0]) || + ((typeof interpolationObject.text[ii][1] !== 'string') && + !isValidTextProbabilityArray(interpolationObject.text[ii][1]))) { + return false; + } + } + return true; +} + +/** + * Sorts the text array in ascending order + * @param {Array} entryA Firt entry to compare + * @param {Array} entryB Second entry to compare + * @return {Number} Negative number if entryA should go before entryB, possitive number if entryA should go + * after entryB and 0 if they should be left unchanged + */ +function sortTextArray(entryA, entryB) { + return entryA[0] - entryB[0]; +} + +module.exports = function(interpolationObjectOrSpec){ + var interpolationObject; + + /** + * Returns the interpolated text from an text probabilities array + * @param {Array} textProbabilities The text probabilities array + * @return {String} The interpolated text + */ + function getProbabilisticText(textProbabilities) { + var accumulated = textProbabilities[0][0]; + var randomNumber = Math.random() * 100; + if (randomNumber <= accumulated) { + return textProbabilities[0][1]; + } + for (var ii = 0; ii < textProbabilities.length - 1; ii++) { + if (randomNumber > accumulated && + randomNumber <= (accumulated + textProbabilities[ii + 1][0])) { + return textProbabilities[ii + 1][1]; + } + accumulated += textProbabilities[ii + 1][0]; + } + return textProbabilities[textProbabilities.length - 1][1]; + } + + /** + * Returns the interpolated value for certain entry in the selected units + * @param {Number} entry The entry to interpolated + * @return {String} The interpolated text + */ + function getInterpolatedText(entry) { + if (entry < interpolationObject.text[0][0]) { + return null; + } + for (var ii = 0; ii < interpolationObject.text.length - 1; ii++) { + if (entry >= interpolationObject.text[ii][0] && entry < interpolationObject.text[ii + 1][0]) { + if (typeof interpolationObject.text[ii][1] === 'string') { + return interpolationObject.text[ii][1]; + } else { + return getProbabilisticText(interpolationObject.text[ii][1]); + } + } + } + if (typeof interpolationObject.text[interpolationObject.text.length - 1][1] === 'string') { + return interpolationObject.text[interpolationObject.text.length - 1][1]; + } else { + return getProbabilisticText(interpolationObject.text[interpolationObject.text.length - 1][1]); + } + } + + /** + * Returns the new interpolated position for the passed decimal hours + * @param {Number} decimalHours The decimal hours + * @return {String} The new interpolated text + */ + function textRotationInterpolator(date) { + switch (interpolationObject.units) { + case 'seconds': + return getInterpolatedText(date.getUTCSeconds()); + case 'minutes': + return getInterpolatedText(date.getUTCMinutes()); + case 'hours': + return getInterpolatedText(date.getUTCHours()); + case 'days': + return getInterpolatedText(date.getUTCDay()); + case 'dates': + return getInterpolatedText(date.getUTCDate()); + case 'months': + return getInterpolatedText(date.getUTCMonth()); + case 'years': + return getInterpolatedText(date.getUTCFullYear()); + } + } + + if (typeof interpolationObjectOrSpec === 'object') { + interpolationObject = interpolationObjectOrSpec; + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or specification (' + + interpolationObjectOrSpec + ') is not valid (it should include the following properties: "units" ' + + '(string including the following accepted values: "seconds", "minutes", "hours", "days", "dates", "months" ' + + 'and "years"), "text" (an array of 2 elements arrays including a number as the first element and a string ' + + 'or a probability text array of 2 elements arrays including a number as the first element and some string as ' + + 'the second one (the addition of the first elements should be 100))'); + } + } else { + try { + interpolationObject = JSON.parse(interpolationObjectOrSpec); + } catch(exception) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or specification (' + + interpolationObjectOrSpec + ') is not valid (it should include the following properties: "units" ' + + '(string including the following accepted values: "seconds", "minutes", "hours", "days", "dates", "months" ' + + 'and "years"), "text" (an array of 2 elements arrays including a number as the first element and a string ' + + 'or a probability text array of 2 elements arrays including a number as the first element and some string as ' + + 'the second one (the addition of the first elements should be 100))'); + } + if (!isValidInterpolationObject(interpolationObject)) { + throw new fdsErrors.InvalidInterpolationSpec('The provided interpolation object or specification (' + + interpolationObjectOrSpec + ') is not valid (it should include the following properties: "units" ' + + '(string including the following accepted values: "seconds", "minutes", "hours", "days", "dates", "months" ' + + 'and "years"), "text" (an array of 2 elements arrays including a number as the first element and a string ' + + 'or a probability text array of 2 elements arrays including a number as the first element and some string as ' + + 'the second one (the addition of the first elements should be 100))'); + } + } + interpolationObject.text.sort(sortTextArray); + return textRotationInterpolator; +}; diff --git a/lib/transpilers/fiwareDeviceSimulatorTranspiler.js b/lib/transpilers/fiwareDeviceSimulatorTranspiler.js new file mode 100644 index 0000000..d9a313a --- /dev/null +++ b/lib/transpilers/fiwareDeviceSimulatorTranspiler.js @@ -0,0 +1,242 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +var ROOT_PATH = require('app-root-path'); +var path = require('path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * The original simulation configuration file + */ +var originalConfigurationObj; + +/** + * Error, if any, during the composition + */ +var error; + +/** + * Entity condition flag + * @type {Number} + */ +var ENTITY_CONDITION = 1; + +/** + * Attribute condition flag + * @type {Number} + */ +var ATTRIBUTE_CONDITION = 2; + +/** + * Attribute condition regular expresion + * @type {RegExp} + */ +var attributeConditionRegExp = /\$\{\{.+\}\{.+\}\}/g; + +/** + * Entity condition regular expression + * @type {RegExp} + */ +var entityConditionRegExp = /\$\{\{[^\}]+\}\}/g; + +/** + * Map of matches and associated count + * @type {Object} + */ +var matchCounterMap = {}; + +/** + * Returns the type of a condition + * @param {String} condition The condition + * @return {Number} The condition type + */ +function getConditionType(condition) { + if (new RegExp(entityConditionRegExp).test(condition)) { + return ENTITY_CONDITION; + } else if (new RegExp(attributeConditionRegExp).test(condition)) { + return ATTRIBUTE_CONDITION; + } +} + +/** + * Returns true if the match satisfies the condition + * @param {String} match The match + * @param {String} condition The condition + * @return {Boolean} True if the match satisfies the condition, false otherwise + */ +function matchesCondition(match, condition) { + /* jshint maxdepth: 9 */ + var currentEntity, + currentAttribute, + entityProperties, + attributeProperties, + entityProperty, + entityRegExp, + entityValue, + attributeProperty, + attributeRegExp, + attributeValue; + var matchCounter = 0; + var matchWithoutQuotes = match.substring(1, match.length - 1); + var conditionType = getConditionType(condition); + for (var ii = 0; ii < originalConfigurationObj.entities.length; ii++) { + currentEntity = originalConfigurationObj.entities[ii]; + entityProperties = Object.getOwnPropertyNames(originalConfigurationObj.entities[ii]); + for (var jj = 0; jj < entityProperties.length; jj++) { + if (originalConfigurationObj.entities[ii][entityProperties[jj]] === matchWithoutQuotes) { + matchCounter += 1; + if (matchCounter >= matchCounterMap[match]) { + if (conditionType === ENTITY_CONDITION) { + entityProperty = condition.substring(3, condition.indexOf('==')); + entityRegExp = condition.substring(condition.indexOf('==') + 2, condition.length - 2); + entityValue = originalConfigurationObj.entities[ii][entityProperty]; + if (new RegExp(entityRegExp).test(entityValue)) { + return true; + } + return false; + } + return false; + } + } + if (Array.isArray(originalConfigurationObj.entities[ii][entityProperties[jj]])) { + for (var kk = 0; kk < originalConfigurationObj.entities[ii][entityProperties[jj]].length; kk++) { + currentAttribute = originalConfigurationObj.entities[ii][entityProperties[jj]][kk]; + attributeProperties = + Object.getOwnPropertyNames(originalConfigurationObj.entities[ii][entityProperties[jj]][kk]); + for (var ll = 0; ll < attributeProperties.length; ll++) { + if (originalConfigurationObj.entities[ii][entityProperties[jj]][kk][attributeProperties[ll]] === + matchWithoutQuotes) { + matchCounter += 1; + if (matchCounter >= matchCounterMap[match]) { + if (conditionType === ENTITY_CONDITION) { + entityProperty = condition.substring(3, condition.indexOf('==')); + entityRegExp = condition.substring(condition.indexOf('==') + 2, condition.length - 2); + entityValue = originalConfigurationObj.entities[ii][entityProperty]; + if (new RegExp(entityRegExp).test(entityValue)) { + return true; + } + return false; + } else if (conditionType === ATTRIBUTE_CONDITION) { + entityProperty = condition.substring(3, condition.indexOf('==')); + entityRegExp = condition.substring(condition.indexOf('==') + 2, condition.indexOf('}{')); + entityValue = originalConfigurationObj.entities[ii][entityProperty]; + attributeProperty = condition.substring(condition.indexOf('}{') + 2, condition.lastIndexOf('==')); + attributeRegExp = condition.substring(condition.lastIndexOf('==') + 2, condition.length - 2); + attributeValue = originalConfigurationObj.entities[ii][entityProperties[jj]][kk][attributeProperty]; + if (new RegExp(entityRegExp).test(entityValue) && new RegExp(attributeRegExp).test(attributeValue)) { + return true; + } + return false; + } + return false; + } + } + } + } + } + } + } + /* jshint maxdepth: 5 */ +} + +/** + * Returns true if the passed template value is a valid array of objects including the content and condition properties + * @param {Object} templateValue The template value + * @return {Boolean} True if the passed template value is a valid array of objects including the content + * and condition properties, false otherwise + */ +function isTemplateValueArray(templateValue) { + if (Array.isArray(templateValue)) { + for (var ii = 0; ii < templateValue.length; ii++) { + if (typeof templateValue[ii] !== 'object' || Object.getOwnPropertyNames(templateValue[ii]).length !== 2 || + !templateValue[ii].content || !templateValue[ii].condition) { + return false; + } + } + } else { + return false; + } + return true; +} + +/** + * Replaces an import() match by its corresponding value + * @param {String} match The matching String + * @return {String} The replacing String + */ +function replacer(match) { + var templateValue; + var templateTag = match.substring(8, match.length - 2); + matchCounterMap[match] = (matchCounterMap[match] ? matchCounterMap[match] + 1 : 1); + if (originalConfigurationObj.exports && originalConfigurationObj.exports[templateTag]) { + templateValue = originalConfigurationObj.exports[templateTag]; + } else { + try { + templateValue = require(ROOT_PATH + path.sep + templateTag); + } catch(exception) { + error = exception; + } + } + if (isTemplateValueArray(templateValue)) { + for (var ii = 0; ii < templateValue.length; ii++) { + if (matchesCondition(match, templateValue[ii].condition)) { + return JSON.stringify(templateValue[ii].content); + } + } + return match; + } else { + return JSON.stringify(templateValue); + } +} + +/** + * Asynchronously returns a new simulation configuration file after importing the corresponding templates + * @param {Object} configuration The original configuration + * @param {Function} callback The callback + */ +function transpile(configuration, callback) { + var configurationStr, + newConfigurationStr, + newConfigurationObj; + error = null; + matchCounterMap = {}; + originalConfigurationObj = configuration; + configurationStr = JSON.stringify(configuration); + newConfigurationStr = configurationStr.replace(/"import\([^\)]+\)"/g, replacer); + if (error) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The configuration information provided is not ' + + 'valid (some error ocurred when importing the templates: ' + error + ')')); + } + try { + newConfigurationObj = JSON.parse(newConfigurationStr); + } catch (exception) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The configuration information provided is not ' + + 'valid (some error ocurred when importing the templates: ' + exception + ')')); + } + delete newConfigurationObj.exports; + return callback(null, newConfigurationObj); +} + +module.exports = { + transpile: transpile +}; diff --git a/lib/validators/fiwareDeviceSimulatorValidator.js b/lib/validators/fiwareDeviceSimulatorValidator.js new file mode 100644 index 0000000..03a4115 --- /dev/null +++ b/lib/validators/fiwareDeviceSimulatorValidator.js @@ -0,0 +1,869 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var async = require('async'); +var linearInterpolator = require(ROOT_PATH + '/lib/interpolators/linearInterpolator'); +var randomLinearInterpolator = require(ROOT_PATH + '/lib/interpolators/randomLinearInterpolator'); +var stepBeforeInterpolator = require(ROOT_PATH + '/lib/interpolators/stepBeforeInterpolator'); +var stepAfterInterpolator = require(ROOT_PATH + '/lib/interpolators/stepAfterInterpolator'); +var dateIncrementInterpolator = require(ROOT_PATH + '/lib/interpolators/dateIncrementInterpolator'); +var multilinePositionInterpolator = require(ROOT_PATH + '/lib/interpolators/multilinePositionInterpolator'); +var textRotationInterpolator = require(ROOT_PATH + '/lib/interpolators/textRotationInterpolator'); +var attributeFunctionInterpolator = require(ROOT_PATH + '/lib/interpolators/attributeFunctionInterpolator'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +var simulationConfiguration; + +/** + * Checks if an array of entities is included in the simulation configuration + * @param {Object} simulationConfiguration The simulation configuration object + * @return {Boolean} True if an array of entities is included, false otherwise + */ +function isEntities(simulationConfiguration) { + if (simulationConfiguration.entities && Array.isArray(simulationConfiguration.entities)) { + return true; + } + return false; +} + +/** + * Checks if the globals information is valid + * @param {Object} simulationConfiguration The simulation configuration object + * @param {Function} callback The callback + */ +function validateGlobals(simulationConfiguration, callback) { + if (simulationConfiguration.globals) { + if (typeof simulationConfiguration.globals !== 'object') { + return callback(new fdsErrors.SimulationConfigurationNotValid('The \'require\' configuration information ' + + 'is not an array of NPM packages names')); + } + } + return setImmediate(callback); +} + +/** + * Checks if the require information is valid + * @param {Object} simulationConfiguration The simulation configuration object + * @param {Function} callback The callback + */ +function validateRequire(simulationConfiguration, callback) { + if (simulationConfiguration.require) { + if (Array.isArray(simulationConfiguration.require)) { + for (var ii = 0; ii < simulationConfiguration.require.length; ii++) { + if (typeof simulationConfiguration.require[ii] !== 'string') { + return callback(new fdsErrors.SimulationConfigurationNotValid('The \'require\' configuration information ' + + 'is not an array of NPM packages names')); + } + } + return setImmediate(callback); + } else { + return callback(new fdsErrors.SimulationConfigurationNotValid('The \'require\' configuration information ' + + 'is not an array of NPM packages names')); + } + } + return setImmediate(callback); +} + +/** + * Checks if the domain information is included + * @param {Object} simulationConfiguration The simulation configuration object + * @param {Function} callback The callback + */ +function validateDomain(simulationConfiguration, callback) { + if (isEntities(simulationConfiguration)) { + if (!simulationConfiguration.domain) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No domain configuration information ' + + '(the \'domain\' property is mandatory if \'entities\' are included)')); + } + if (!simulationConfiguration.domain.service) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No service in the domain configuration ' + + 'information (the \'domain.service\' property is mandatory if \'entities\' are included)')); + } + if (!simulationConfiguration.domain.subservice) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No subservice in the domain configuration ' + + 'information (the \'domain.subservice\' property is mandatory if \'entities\' are included)')); + } + } + setImmediate(callback); +} + +/** + * Validate the context broker or subscriber configuration information + * @param {Object} simulationConfiguration The simulation configuration + * @param {Function} callback The callback + */ +function validateContextBrokerOrSubscriberConfiguration(simulationConfiguration, callback) { + if (isEntities(simulationConfiguration)) { + if (!simulationConfiguration.contextBroker && !simulationConfiguration.subscriber) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No context broker or subscriber configuration ' + + 'information (the \'contextBroker\' or the \'subscriber\' property is mandatory if \'entities\' ' + + 'are included)')); + } + if (simulationConfiguration.contextBroker) { + if (!simulationConfiguration.contextBroker.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No protocol in the context broker ' + + 'configuration information (the \'contextBroker.protocol\' property is mandatory if \'entities\' ' + + 'are included)')); + } + if (!simulationConfiguration.contextBroker.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No host in the context broker configuration ' + + 'information (the \'contextBroker.host\' property is mandatory if \'entities\' are included)')); + } + if (!simulationConfiguration.contextBroker.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No port in the context broker configuration ' + + 'information (the \'contextBroker.port\' property is mandatory if \'entities\' are included)')); + } + if (!simulationConfiguration.contextBroker.ngsiVersion) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No NGSI version in the context broker ' + + 'configuration information (the \'contextBroker.nsgiVersion\' property is mandatory if \'entities\' are ' + + 'included)')); + } + if (simulationConfiguration.contextBroker.ngsiVersion !== '1.0' && + simulationConfiguration.contextBroker.ngsiVersion !== '2.0') { + return callback(new fdsErrors.SimulationConfigurationNotValid('The NGSI version in the context broker ' + + 'configuration information (\'' + simulationConfiguration.contextBroker.ngsiVersion + '\') is ' + + 'not supported')); + } + } else { + if (!simulationConfiguration.subscriber.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No protocol in the subscriber configuration ' + + 'information (the \'subscriber.protocol\' property is mandatory if \'entities\' are included and no ' + + '\'contextBroker\' configuration information is provided)')); + } + if (!simulationConfiguration.subscriber.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No host in the subscriber configuration ' + + 'information (the \'subscriber.host\' property is mandatory if \'entities\' are included and no ' + + '\'contextBroker\' configuration information is provided)')); + } + if (!simulationConfiguration.subscriber.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No port in the subscriber configuration ' + + 'information (the \'subscriber.port\' property is mandatory if \'entities\' are included and no ' + + '\'contextBroker\' configuration information is provided)')); + } + if (!simulationConfiguration.subscriber.path && simulationConfiguration.subscriber.path !== '') { + return callback(new fdsErrors.SimulationConfigurationNotValid('No path in the subscriber configuration ' + + 'information (the \'subscriber.path\' property is mandatory if \'entities\' are included and no ' + + '\'contextBroker\' configuration information is provided)')); + } + if (!simulationConfiguration.subscriber.ngsiVersion) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No ngsiVersion in the subscriber ' + + 'configuration information (the \'subscriber.ngsiVersion\' property is mandatory if \'entities\' ' + + 'are included and no \'contextBroker\' configuration information is provided)')); + } + if (simulationConfiguration.subscriber.ngsiVersion !== '1.0') { + return callback(new fdsErrors.SimulationConfigurationNotValid('The NGSI version in the subscriber ' + + 'configuration information (\'' + simulationConfiguration.subscriber.ngsiVersion + '\') is not supported')); + } + } + } + setImmediate(callback); +} + +/** + * Validates the authentication configuration information + * @param {Object} simulationConfiguration The simulation configuration + * @param {Function} callback The callback + */ +function validateAuthenticationConfiguration(simulationConfiguration, callback) { + if (simulationConfiguration.authentication) { + if (!simulationConfiguration.authentication.provider || + (simulationConfiguration.authentication.provider !== 'keystone' && + simulationConfiguration.authentication.provider !== 'fiware-lab')) { + return callback(new fdsErrors.SimulationConfigurationNotValid('Invalid or no provider in the authentication ' + + 'configuration information (the \'authentication.provider\' property is mandatory) ' + + '(accepted values: "keystone" and "fiware-lab")')); + } + if (!simulationConfiguration.authentication.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No protocol in the authentication configuration ' + + 'information (the \'authentication.protocol\' property is mandatory)')); + } + if (!simulationConfiguration.authentication.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No host in the authentication configuration ' + + 'information (the \'authentication.host\' property is mandatory)')); + } + if (!simulationConfiguration.authentication.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No port in the authentication configuration ' + + 'information (the \'authentication.port\' property is mandatory)')); + } + if (!simulationConfiguration.authentication.user) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No user in the authentication ' + + 'configuration information (the \'authentication.user\' property is mandatory)')); + } + if (!simulationConfiguration.authentication.password) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No password in the authentication ' + + 'configuration information (the \'authentication.password\' property is mandatory)')); + } + if (simulationConfiguration.authentication.retry) { + if (isNaN(simulationConfiguration.authentication.retry.times)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('Invalid or no times in the authentication ' + + 'retry configuration information (the \'authentication.retry.times\' property is mandatory and should be ' + + 'a number)')); + } + if (isNaN(simulationConfiguration.authentication.retry.interval)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('Invalid or no interval in the authentication ' + + 'retry configuration information (the \'authentication.retry.interval\' property is mandatory and should ' + + 'be a number)')); + } + } + } + setImmediate(callback); +} + +/** + * Checks if an JSON HTTP device is included + * @param {array} devices The array of devices to check + * @return {Boolean} True if an UltraLight JSON device is included, false otherwise + */ +function isJSONHTTPDevice(devices) { + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'JSON::HTTP') { + return true; + } + } + return false; +} + +/** + * Returns true if a JSON HTTP device is included with no API key + * @param {Array} devices The array of devices + * @return {Boolean} True if a JSON HTTP device is included with no API key + */ +function isJSONHTTPDeviceWithNoAPIKey(devices) { + /* jshint camelcase: false */ + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'JSON::HTTP' && !devices[ii].api_key) { + return true; + } + } + return false; +} + +/** + * Checks if an JSON MQTT device is included + * @param {array} devices The array of devices to check + * @return {Boolean} True if an UltraLight JSON device is included, false otherwise + */ +function isJSONMQTTDevice(devices) { + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'JSON::MQTT') { + return true; + } + } + return false; +} + +/** + * Returns true if a JSON MQTT device is included with no API key + * @param {Array} devices The array of devices + * @return {Boolean} True if a JSON MQTT device is included with no API key + */ +function isJSONMQTTDeviceWithNoAPIKey(devices) { + /* jshint camelcase: false */ + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'JSON::MQTT' && !devices[ii].api_key) { + return true; + } + } + return false; +} + +/** + * Checks if an UltraLight HTTP device is included + * @param {array} devices The array of devices to check + * @return {Boolean} True if an UltraLight HTTP device is included, false otherwise + */ +function isUltraLightHTTPDevice(devices) { + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'UltraLight::HTTP') { + return true; + } + } + return false; +} + +/** + * Returns true if a UltraLight HTTP device is included with no API key + * @param {Array} devices The array of devices + * @return {Boolean} True if a UltraLight HTTP device is included with no API key + */ +function isUltraLightHTTPDeviceWithNoAPIKey(devices) { + /* jshint camelcase: false */ + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'UltraLight::HTTP' && !devices[ii].api_key) { + return true; + } + } + return false; +} + +/** + * Checks if an UltraLight MQTT device is included + * @param {array} devices The array of devices to check + * @return {Boolean} True if an UltraLight MQTT device is included, false otherwise + */ +function isUltraLightMQTTDevice(devices) { + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'UltraLight::MQTT') { + return true; + } + } + return false; +} + +/** + * Returns true if a UltraLight MQTT device is included with no API key + * @param {Array} devices The array of devices + * @return {Boolean} True if a UltraLight MQTT device is included with no API key + */ +function isUltraLightMQTTDeviceWithNoAPIKey(devices) { + /* jshint camelcase: false */ + for (var ii = 0; ii < devices.length; ii++) { + if (devices[ii].protocol === 'UltraLight::MQTT' && !devices[ii].api_key) { + return true; + } + } + return false; +} + +/** + * Validates the IoT Agent configuration information + * @param {Object} simulationConfiguration The simulation configuration + * @param {Function} callback The callback + */ +function validateIoTAConfiguration(simulationConfiguration, callback) { + /* jshint camelcase: false */ + if (Array.isArray(simulationConfiguration.devices) && simulationConfiguration.devices.length) { + if (!simulationConfiguration.iota) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No IoT Agent configuration information (the ' + + '\'iota\' property is mandatory)')); + } + if (isUltraLightHTTPDevice(simulationConfiguration.devices)) { + if (!simulationConfiguration.iota.ultralight) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No UltraLight IoT Agent configuration ' + + 'information (the \'iota.ultralight\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.http) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP configuration information for the ' + + 'UltraLight IoT Agent (the \'iota.ultralight.http\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.http.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP protocol in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.http.protocol\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.http.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP host in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.http.host\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.http.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP port in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.http.port\' property is mandatory)')); + } + if (isUltraLightHTTPDeviceWithNoAPIKey(simulationConfiguration.devices) && + !simulationConfiguration.iota.ultralight.api_key) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No API key in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.api_key\' property is mandatory if UltraLight HTTP ' + + 'devices are include with no specific API key information)')); + } + } else if (isUltraLightMQTTDevice(simulationConfiguration.devices)) { + if (!simulationConfiguration.iota.ultralight) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No UltraLight IoT Agent configuration ' + + 'information (the \'iota.ultralight\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.mqtt) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT configuration information for the ' + + 'UltraLight IoT Agent (the \'iota.ultralight.mqtt\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.mqtt.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT protocol in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.mqtt.protocol\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.mqtt.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT host in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.mqtt.host\' property is mandatory)')); + } + if (!simulationConfiguration.iota.ultralight.mqtt.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT port in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.mqtt.port\' property is mandatory)')); + } + if (isUltraLightMQTTDeviceWithNoAPIKey(simulationConfiguration.devices) && + !simulationConfiguration.iota.ultralight.api_key) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No API key in the UltraLight IoT Agent ' + + 'configuration information (the \'iota.ultralight.api_key\' property is mandatory if UltraLight MQTT ' + + 'devices are include with no specific API key information)')); + } + } else if (isJSONHTTPDevice(simulationConfiguration.devices)) { + if (!simulationConfiguration.iota.json) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No JSON IoT Agent configuration ' + + 'information (the \'iota.json\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.http) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP configuration information for the ' + + 'JSON IoT Agent (the \'iota.json.http\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.http.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP protocol in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.http.protocol\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.http.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP host in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.http.host\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.http.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No HTTP port in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.http.port\' property is mandatory)')); + } + if (isJSONHTTPDeviceWithNoAPIKey(simulationConfiguration.devices) && + !simulationConfiguration.iota.json.api_key) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No API key in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.api_key\' property is mandatory if JSON HTTP devices are ' + + 'include with no specific API key information)')); + } + } else if (isJSONMQTTDevice(simulationConfiguration.devices)) { + if (!simulationConfiguration.iota.json) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No JSON IoT Agent configuration ' + + 'information (the \'iota.json\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.mqtt) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT configuration information for the ' + + 'JSON IoT Agent (the \'iota.ultralight.mqtt\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.mqtt.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT protocol in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.mqtt.protocol\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.mqtt.host) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT host in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.mqtt.host\' property is mandatory)')); + } + if (!simulationConfiguration.iota.json.mqtt.port) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No MQTT port in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.mqtt.port\' property is mandatory)')); + } + if (isJSONMQTTDeviceWithNoAPIKey(simulationConfiguration.devices) && + !simulationConfiguration.iota.json.api_key) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No API key in the JSON IoT Agent ' + + 'configuration information (the \'iota.json.api_key\' property is mandatory if JSON MQTT ' + + 'devices are include with no specific API key information)')); + } + } + } + setImmediate(callback); +} + +/** + * Validates schedules + * @param {String} schedule The schedule to validate + * @param {String} parentType The associated parent element type + * @param {Number} parentIndex The associated parent element index + * @param {Function} callback The callback + */ +function validateSchedule(schedule, parentType, parentIndex, callback) { + var err; + var scheduleRegExp = new RegExp( + '(^once$|^(\\*\\/[0-9]+\\s+|\\*\\s+|([0-9]+(\\,|\\-)?[0-9]*)+[0-9]+\\s+|[0-9]+\\s+){5}' + + '(\\*\\/[0-9]+|\\*|([0-9]+(\\,|\\-)?[0-9]*)+[0-9]+|[0-9]+))', + 'g'); + + if (typeof schedule === 'string') { + if (schedule && !scheduleRegExp.test(schedule)) { + err = new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration information ' + + 'at array index position ' + parentIndex + ' includes an invalid schedule: \'' + schedule + '\''); + } + } else if (typeof schedule === 'object' && typeof schedule.rule === 'string' && !scheduleRegExp.test(schedule.rule)) { + err = new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration information ' + + 'at array index position ' + parentIndex + ' includes an invalid schedule: \'' + schedule + '\''); + } + return callback(err); +} + +/** + * Validates values + * @param {String} value The value + * @param {String} attributeType The associated attribute type + * @param {Number} attributeIndex The associated attribute number + * @param {String} parentType The associated parent element type + * @param {Number} parentIndex The associated parent element index + * @param {Function} callback The callback + */ +function validateValue(value, attributeType, attributeIndex, parentType, parentIndex, callback) { + if (!value && (value !== 0 && value !== false)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration information ' + + 'at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' missing the value property')); + } + if (typeof value === 'string') { + if (value.indexOf('time-linear-interpolator(') === 0) { + try { + linearInterpolator(value.substring('time-linear-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid time linear interpolator: \'' + value + '\', due to error: ' + err)); + } + } else if (value.indexOf('time-random-linear-interpolator(') === 0) { + try { + randomLinearInterpolator(value.substring('time-random-linear-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid time random linear interpolator: \'' + value + '\', due to error: ' + + err)); + } + } else if (value.indexOf('time-step-before-interpolator(') === 0) { + try { + stepBeforeInterpolator(value.substring('time-step-before-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid time step before interpolator: \'' + value + '\', due to error: ' + err)); + } + } else if (value.indexOf('time-step-after-interpolator(') === 0) { + try { + stepAfterInterpolator(value.substring('time-step-after-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid time step after interpolator: \'' + value + '\', due to error: ' + err)); + } + } else if (value.indexOf('date-increment-interpolator(') === 0) { + try { + dateIncrementInterpolator(value.substring('date-increment-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid date increment interpolator: \'' + value + '\', due to error: ' + err)); + } + } else if (value.indexOf('multiline-position-interpolator(') === 0) { + try { + multilinePositionInterpolator(value.substring('multiline-position-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid multiline position interpolator: \'' + value + '\', due to error: ' + + err)); + } + } else if (value.indexOf('text-rotation-interpolator(') === 0) { + try { + textRotationInterpolator(value.substring('text-rotation-interpolator('.length, value.length - 1)); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid text rotation interpolator: \'' + value + '\', due to error: ' + + err)); + } + } else if (value.indexOf('attribute-function-interpolator(') === 0) { + try { + attributeFunctionInterpolator( + value.substring('attribute-function-interpolator('.length, value.length - 1), + simulationConfiguration.domain, + simulationConfiguration.contextBroker + ); + } catch(err) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + (attributeType === 'static' ? 'a staticAttributes' : 'an active') + ' attribute at array index position ' + + attributeIndex + ' with an invalid attribute function interpolator: \'' + value + '\', due to error: ' + + err)); + } + } + } + setImmediate(callback); +} + +/** + * Validates a metadata entry + * @param {String} parentType The associated parent element type + * @param {Number} parentIndex The associated parent element index + * @param {String} attributeStr The attribute type descriptive text + * @param {Number} attributeIndex The attribute index + * @param {Object} metadata The metadata to validate + * @param {Number} metadataIndex The metadata index + * @param {Function} callback The callback + */ +function validateMetadata(parentType, parentIndex, attributeStr, attributeIndex, metadata, metadataIndex, callback) { + if (!metadata.name) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' including a metadata entry at array index position ' + metadataIndex + + ' missing the name property')); + } + if (!metadata.type) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' including a metadata entry at array index position ' + metadataIndex + + ' missing the type property')); + } + if (!metadata.value && (metadata.value !== 0 && metadata.value !== false)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' including a metadata entry at array index position ' + metadataIndex + + ' missing the value property')); + } + setImmediate(callback); +} + +/** + * Validates an attribute + * @param {String} attributeType The attribute type + * @param {String} parentType The associated parent element type + * @param {Number} parentIndex The associated parent element index + * @param {Object} attribute The attribute to validate + * @param {Number} attributeIndex The index of the attribute to validate + * @param {Function} callback The callback + */ +function validateAttribute(attributeType, parentType, parentIndex, attribute, attributeIndex, callback) { + /* jshint camelcase: false */ + var attributeStr; + switch (attributeType) { + case 'active': + attributeStr = 'an active attribute'; + break; + case 'attribute': + attributeStr = 'an attribute'; + break; + case 'static': + attributeStr = 'a static attribute'; + break; + } + if (attributeType === 'active' || attributeType === 'static') { + if (!attribute.name) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' missing the name property')); + } + if (!attribute.type) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' missing the type property')); + } + } else { + if (!attribute.object_id) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' missing the object_id property')); + } + } + + async.series([ + async.apply(validateValue, attribute.value, attributeType, attributeIndex, parentType, parentIndex), + async.apply(validateSchedule, attribute.schedule, parentType, parentIndex) + ], function(err) { + if (err) { + return callback(err); + } else { + if (attribute.metadata) { + if (!Array.isArray(attribute.metadata)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' at array index position ' + + attributeIndex + ' including a metadata property which is not an array')); + } else { + async.eachOfSeries(attribute.metadata, async.apply(validateMetadata, parentType, parentIndex, attributeStr, + attributeIndex), callback); + } + } else { + setImmediate(callback); + } + } + }); +} + +/** + * Validates an array of attributes + * @param {Array} attributes Array of attributes to validate + * @param {String} attributesType Type of the attributes to validate + * @param {String} parentType The associated parent element type + * @param {Number} parentIndex The associated parent element index + * @param {Function} callback The callback + */ +function validateAttributes(attributes, attributesType, parentType, parentIndex, callback) { + if (attributes) { + if (Array.isArray(attributes)) { + async.eachOfSeries(attributes, async.apply(validateAttribute, attributesType, parentType, parentIndex), callback); + } else { + var attributeStr; + switch (attributesType) { + case 'active': + attributeStr = 'an active'; + break; + case 'attribute': + attributeStr = 'an attributes'; + break; + case 'static': + attributeStr = 'a staticAttributes'; + break; + } + return callback(new fdsErrors.SimulationConfigurationNotValid('The ' + parentType + ' configuration ' + + 'information at array index position ' + parentIndex + ' includes ' + + attributeStr + ' property which is not an array')); + } + } else { + setImmediate(callback); + } +} + +/** + * Validates a device + * @param {Object} deviceConfiguration The device configuration information + * @param {Number} index The element index + * @param {Function} callback The callback + */ +function validateDeviceConfiguration(deviceConfiguration, index, callback) { + /* jshint camelcase: false */ + if (!deviceConfiguration.device_id && !deviceConfiguration.count) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The devices configuration information ' + + 'at array index position ' + index + ' should include an device_id or count properties')); + } + if (!deviceConfiguration.protocol) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The devices configuration information ' + + 'at array index position ' + index + ' should include a protocol properties')); + } + if (deviceConfiguration.protocol !== 'UltraLight::HTTP' && deviceConfiguration.protocol !== 'UltraLight::MQTT' && + deviceConfiguration.protocol !== 'JSON::HTTP' && deviceConfiguration.protocol !== 'JSON::MQTT') { + return callback(new fdsErrors.SimulationConfigurationNotValid('The devices configuration information ' + + 'at array index position ' + index + ' includes a not supported protocol (\'' + deviceConfiguration.protocol + + '\')')); + } + if (!deviceConfiguration.attributes || deviceConfiguration.attributes.length === 0) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The devices configuration information ' + + 'at array index position ' + index + ' misses attributes configuration information')); + } + async.series([ + async.apply(validateSchedule, deviceConfiguration.schedule, 'device', index), + async.apply(validateAttributes, deviceConfiguration.attributes, 'attribute', 'device', index) + ], callback); +} + +/** + * Validates an array of devices + * @param {Object} simulationConfiguration The simulation configuration information + * @param {Function} callback The callback + */ +function validateDevicesConfiguration(simulationConfiguration, callback) { + if ((!simulationConfiguration.entities || simulationConfiguration.entities.length === 0) && + (!simulationConfiguration.devices || simulationConfiguration.devices.length === 0)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No entities and/or devices configuration ' + + 'information available (at least one of them is mandatory)')); + } + if (!simulationConfiguration.devices) { + return setImmediate(callback); + } + if (!Array.isArray(simulationConfiguration.devices)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The devices ' + + ' configuration information should be ' + + 'an array of devices configuration information')); + } + async.eachOfSeries(simulationConfiguration.devices, validateDeviceConfiguration, callback); +} + +/** + * Validates an entity + * @param {Object} entityConfiguration The entity configuration information + * @param {Number} index The element index + * @param {Function} callback The callback + */ +function validateEntityConfiguration(entityConfiguration, index, callback) { + /* jshint camelcase: false */ + if (!entityConfiguration.entity_name && !entityConfiguration.count) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The entities configuration information ' + + 'at array index position ' + index + ' should include an entity_name or count properties')); + } + if (!entityConfiguration.entity_type) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The entities configuration information ' + + ' at array index position ' + index + ' misses the entity_type property')); + } + if ((!entityConfiguration.staticAttributes || entityConfiguration.staticAttributes.length === 0) && + (!entityConfiguration.active || entityConfiguration.active.length === 0)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The entities configuration information ' + + 'at array index position ' + index + ' misses static and/or active attributes configuration information')); + } + async.series([ + async.apply(validateSchedule, entityConfiguration.schedule, 'entity', index), + async.apply(validateAttributes, entityConfiguration.staticAttributes, 'static', 'entity', index), + async.apply(validateAttributes, entityConfiguration.active, 'active', 'entity', index) + ], callback); +} + +/** + * Validates an array of entities + * @param {Object} simulationConfiguration The simulation configuration information + * @param {Function} callback The callback + */ +function validateEntitiesConfiguration(simulationConfiguration, callback) { + if ((!simulationConfiguration.entities || simulationConfiguration.entities.length === 0) && + (!simulationConfiguration.devices || simulationConfiguration.devices.length === 0)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('No entities and/or devices configuration ' + + 'information available (at least one of them is mandatory)')); + } + if (!simulationConfiguration.entities) { + return setImmediate(callback); + } + if (!Array.isArray(simulationConfiguration.entities)) { + return callback(new fdsErrors.SimulationConfigurationNotValid('The entities ' + + 'configuration information should be ' + + 'an array of entities configuration information')); + } + async.eachOfSeries(simulationConfiguration.entities, validateEntityConfiguration, callback); +} + +/** + * Validates a simulation configuration object + * @param {Object} simulationConfiguration The simulation configuration object to validate + * @param {Function} callback The callback + */ +function validateConfiguration(theSimulationConfiguration, callback) { + simulationConfiguration = theSimulationConfiguration; + async.series([ + async.apply(validateGlobals, simulationConfiguration), + async.apply(validateRequire, simulationConfiguration), + async.apply(validateDomain, simulationConfiguration), + async.apply(validateContextBrokerOrSubscriberConfiguration, simulationConfiguration), + async.apply(validateAuthenticationConfiguration, simulationConfiguration), + async.apply(validateIoTAConfiguration, simulationConfiguration), + async.apply(validateEntitiesConfiguration, simulationConfiguration), + async.apply(validateDevicesConfiguration, simulationConfiguration) + ], function(err) { + return setImmediate(callback.bind(null, err, simulationConfiguration)); + }); +} + +module.exports = { + validateConfiguration: validateConfiguration +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000..97ce034 --- /dev/null +++ b/package.json @@ -0,0 +1,68 @@ +{ + "name": "fiware-device-simulator", + "description": "Simulator of FIWARE-compatible devices", + "version": "8.2.0", + "homepage": "https://github.com/gtorodelvalle/fiware-device-simulator", + "author": { + "name": "Germán Toro del Valle", + "email": "gtorodelvalle@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/gtorodelvalle/fiware-device-simulator.git" + }, + "bugs": { + "url": "https://github.com/gtorodelvalle/fiware-device-simulator/issues" + }, + "main": "bin/fiwareDeviceSimulatorCLI", + "engines": { + "node": ">=0.10.22" + }, + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "chai": "~1.8.0", + "grunt": "~0.4.1", + "grunt-contrib-clean": "~0.5.0", + "grunt-contrib-jshint": "~0.6.4", + "grunt-contrib-watch": "~0.5.3", + "grunt-dox": "~0.5.0", + "grunt-exec": "~0.4.0", + "grunt-githooks": "~0.3.1", + "grunt-github-pages": "~0.0.3", + "grunt-gjslint": "~0.1.0", + "grunt-mkdir": "~0.1.1", + "grunt-mocha-test": "~0.7.0", + "grunt-plato": "~0.2.0", + "istanbul": "~0.3.2", + "mocha": "~1.13.0", + "nock": "^8.0.0", + "proxyquire": "0.5.1", + "should": "^10.0.0", + "sinon": "^1.7.3", + "sinon-chai": "2.4.0" + }, + "keywords": [], + "dependencies": { + "app-root-path": "^1.3.0", + "async": "^2.0.1", + "commander": "^2.9.0", + "dateformat": "^1.0.12", + "deasync": "^0.1.8", + "eval": "^0.1.1", + "google-spreadsheet": "^2.0.3", + "humanize-duration": "^3.9.1", + "linear-interpolator": "^1.0.2", + "logops": "^1.0.1", + "lolex": "^1.5.1", + "mqtt": "^1.14.0", + "node-schedule": "^1.2.0", + "npm-install-package": "^1.1.0", + "request": "^2.78.0", + "time": "^0.11.4", + "turf-along": "^3.0.12", + "turf-line-distance": "^3.0.12", + "turf-linestring": "^1.0.2" + } +} diff --git a/test/.jshintrc b/test/.jshintrc new file mode 100644 index 0000000..a438b44 --- /dev/null +++ b/test/.jshintrc @@ -0,0 +1,30 @@ +{ + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "quotmark": "single", + "undef": true, + "unused": true, + "trailing": true, + "maxparams": 4, + "maxdepth": 4, + "camelcase": true, + "maxlen": 120, + "node": true, + "expr": true, + "globals": { + "describe":true, + "it": true, + "expect": true, + "before": true, + "after": true, + "beforeEach": true, + "afterEach": true, + "mock": true, + "sinon": true + } +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-every-second.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-every-second.json new file mode 100644 index 0000000..4f4441e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "*/1 * * * * *", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-once.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-once.json new file mode 100644 index 0000000..7d2bd71 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-attribute-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "once", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-date-increment-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-date-increment-interpolator-attribute.json new file mode 100644 index 0000000..5c3c7e7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-date-increment-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-every-second.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-every-second.json new file mode 100644 index 0000000..9cafa61 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "*/1 * * * * *", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-fixed-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-fixed-attribute.json new file mode 100644 index 0000000..0e5db63 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-fixed-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-multiline-position-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-multiline-position-interpolator-attribute.json new file mode 100644 index 0000000..3e755be --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-multiline-position-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-once.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-once.json new file mode 100644 index 0000000..0e5db63 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-text-rotation-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-text-rotation-interpolator-attribute.json new file mode 100644 index 0000000..000291c --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-text-rotation-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..efebdb5 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute.json new file mode 100644 index 0000000..b0cbba7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..c163ca2 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute.json new file mode 100644 index 0000000..86519af --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-random-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-after-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-after-interpolator-attribute.json new file mode 100644 index 0000000..2bbf198 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-after-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-before-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-before-interpolator-attribute.json new file mode 100644 index 0000000..1f5661a --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_HTTP-devices-time-step-before-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-every-second.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-every-second.json new file mode 100644 index 0000000..63c5222 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "*/1 * * * * *", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-once.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-once.json new file mode 100644 index 0000000..2d4269e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-attribute-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "once", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-date-increment-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-date-increment-interpolator-attribute.json new file mode 100644 index 0000000..bb1e836 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-date-increment-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-every-second.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-every-second.json new file mode 100644 index 0000000..1290c2e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "*/1 * * * * *", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-fixed-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-fixed-attribute.json new file mode 100644 index 0000000..beee330 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-fixed-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-multiline-position-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-multiline-position-interpolator-attribute.json new file mode 100644 index 0000000..4d39c3a --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-multiline-position-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-once.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-once.json new file mode 100644 index 0000000..beee330 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-text-rotation-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-text-rotation-interpolator-attribute.json new file mode 100644 index 0000000..2e661b6 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-text-rotation-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..885b423 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute.json new file mode 100644 index 0000000..afa493e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..9526688 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute.json new file mode 100644 index 0000000..cf5ed3e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-random-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-after-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-after-interpolator-attribute.json new file mode 100644 index 0000000..1e312d7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-after-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-before-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-before-interpolator-attribute.json new file mode 100644 index 0000000..43c3a35 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-JSON_MQTT-devices-time-step-before-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "json": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "JSON::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-every-second.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-every-second.json new file mode 100644 index 0000000..1a73afd --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "*/1 * * * * *", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-once.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-once.json new file mode 100644 index 0000000..e964a8e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-attribute-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "once", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-date-increment-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-date-increment-interpolator-attribute.json new file mode 100644 index 0000000..6e060b4 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-date-increment-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-every-second.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-every-second.json new file mode 100644 index 0000000..3796ed4 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "*/1 * * * * *", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-fixed-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-fixed-attribute.json new file mode 100644 index 0000000..c7f465d --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-fixed-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-multiline-position-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-multiline-position-interpolator-attribute.json new file mode 100644 index 0000000..f507037 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-multiline-position-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-once.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-once.json new file mode 100644 index 0000000..c7f465d --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-text-rotation-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-text-rotation-interpolator-attribute.json new file mode 100644 index 0000000..dca2e8d --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-text-rotation-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..01f25cd --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute.json new file mode 100644 index 0000000..f2165bc --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..17ad0e7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute.json new file mode 100644 index 0000000..077d605 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-random-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-after-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-after-interpolator-attribute.json new file mode 100644 index 0000000..1223cb7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-after-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-before-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-before-interpolator-attribute.json new file mode 100644 index 0000000..f4dcf5a --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_HTTP-devices-time-step-before-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-every-second.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-every-second.json new file mode 100644 index 0000000..509d2e9 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "*/1 * * * * *", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-once.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-once.json new file mode 100644 index 0000000..8767885 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-attribute-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "schedule": "once", + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-date-increment-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-date-increment-interpolator-attribute.json new file mode 100644 index 0000000..76290eb --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-date-increment-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-every-second.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-every-second.json new file mode 100644 index 0000000..9217c1f --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-every-second.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "*/1 * * * * *", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-fixed-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-fixed-attribute.json new file mode 100644 index 0000000..5ce224b --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-fixed-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-multiline-position-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-multiline-position-interpolator-attribute.json new file mode 100644 index 0000000..248bf6e --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-multiline-position-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-once.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-once.json new file mode 100644 index 0000000..5ce224b --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-once.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-text-rotation-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-text-rotation-interpolator-attribute.json new file mode 100644 index 0000000..b9795d2 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-text-rotation-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..648bc39 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute.json new file mode 100644 index 0000000..a10be1d --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..d081614 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute-retro.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute.json new file mode 100644 index 0000000..71a7bb4 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-random-linear-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-after-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-after-interpolator-attribute.json new file mode 100644 index 0000000..b53c7f9 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-after-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-before-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-before-interpolator-attribute.json new file mode 100644 index 0000000..766d02f --- /dev/null +++ b/test/unit/configurations/simulation-configuration-UltraLight_MQTT-devices-time-step-before-interpolator-attribute.json @@ -0,0 +1,39 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "mqtt": { + "protocol": "mqtt", + "host": "localhost", + "port": 1883 + } + } + }, + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::MQTT", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "attribute1", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-attribute-every-second-subscriber.json b/test/unit/configurations/simulation-configuration-entities-attribute-every-second-subscriber.json new file mode 100644 index 0000000..a6fa99c --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-attribute-every-second-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "schedule": "*/1 * * * * *", + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-attribute-every-second.json b/test/unit/configurations/simulation-configuration-entities-attribute-every-second.json new file mode 100644 index 0000000..4b45ffa --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-attribute-every-second.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "schedule": "*/1 * * * * *", + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-attribute-once-subscriber.json b/test/unit/configurations/simulation-configuration-entities-attribute-once-subscriber.json new file mode 100644 index 0000000..70bb1aa --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-attribute-once-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "schedule": "once", + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-attribute-once.json b/test/unit/configurations/simulation-configuration-entities-attribute-once.json new file mode 100644 index 0000000..bec2e47 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-attribute-once.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "schedule": "once", + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..e9434e3 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute.json new file mode 100644 index 0000000..26a5159 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-date-increment-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "date-increment-interpolator({\"origin\": \"now\", \"increment\": 108000})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-every-second-subscriber.json b/test/unit/configurations/simulation-configuration-entities-every-second-subscriber.json new file mode 100644 index 0000000..19e5fbb --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-every-second-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "*/1 * * * * *", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-every-second.json b/test/unit/configurations/simulation-configuration-entities-every-second.json new file mode 100644 index 0000000..16a75c2 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-every-second.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "*/1 * * * * *", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-fixed-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-fixed-attribute-subscriber.json new file mode 100644 index 0000000..bd6eb4f --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-fixed-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-fixed-attribute.json b/test/unit/configurations/simulation-configuration-entities-fixed-attribute.json new file mode 100644 index 0000000..f98b789 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-fixed-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..dd683df --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute.json new file mode 100644 index 0000000..f8874aa --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-multiline-position-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "multiline-position-interpolator({\"coordinates\": [[-6.2683868408203125,36.48948933214638],[-6.257915496826172,36.46478162030615],[-6.252079010009766,36.461744374732085],[-6.2162017822265625,36.456774079889286]],\"speed\": {\"value\": 30,\"units\": \"km/h\"},\"time\": {\"from\": 10,\"to\": 22}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-once-subscriber.json b/test/unit/configurations/simulation-configuration-entities-once-subscriber.json new file mode 100644 index 0000000..bd6eb4f --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-once-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-once.json b/test/unit/configurations/simulation-configuration-entities-once.json new file mode 100644 index 0000000..f98b789 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-once.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "1" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..b9d47e4 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute.json new file mode 100644 index 0000000..8d04e8c --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-text-rotation-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "text-rotation-interpolator({\"units\": \"minutes\", \"text\": [[0,\"PENDING\"],[15,\"REQUESTED\"],[30,[[99,\"COMPLETED\"],[1,\"ERROR\"]]],[45,\"REMOVED\"]]})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro-subscriber.json new file mode 100644 index 0000000..cf3d652 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..36293ea --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-retro.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..7d04aca --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"float\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute.json new file mode 100644 index 0000000..9a8b7ed --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-linear-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"float\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro-subscriber.json new file mode 100644 index 0000000..27e99d7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro.json b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro.json new file mode 100644 index 0000000..2271216 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-retro.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-random-linear-interpolator([[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..afcd788 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"float\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute.json new file mode 100644 index 0000000..16cee2b --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-random-linear-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"float\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..79419b7 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute.json new file mode 100644 index 0000000..13129df --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-step-after-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute-subscriber.json b/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute-subscriber.json new file mode 100644 index 0000000..757aaea --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute-subscriber.json @@ -0,0 +1,45 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute.json b/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute.json new file mode 100644 index 0000000..279afe3 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-entities-time-step-before-interpolator-attribute.json @@ -0,0 +1,44 @@ +{ + "domain": { + "service": "theService", + "subservice": "/theSubService" + }, + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + }, + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword" + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration-subscriber.json b/test/unit/configurations/simulation-configuration-subscriber.json new file mode 100644 index 0000000..7251715 --- /dev/null +++ b/test/unit/configurations/simulation-configuration-subscriber.json @@ -0,0 +1,137 @@ +{ + "exports": { + "service": "theService", + "subservice": "/theSubService", + "subscriber": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "path": "/notify", + "ngsiVersion": "1.0" + } + }, + "domain": { + "service": "import(service)", + "subservice": "import(subservice)" + }, + "subscriber": "import(subscriber)", + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword", + "retry": { + "times": 10, + "interval": 100 + } + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + }, + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "schedule": "*/5 * * * * *", + "entity_name": "EntityName2", + "entity_type": "EntityType2", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }, { + "schedule": "*/1 * * * * *", + "name": "active2", + "type": "number", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "count": "3", + "entity_type": "EntityType3", + "schedule": "*/1 * * * * *", + "active": [{ + "name": "active1", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/5 5 * * * *", + "object_id": "a2", + "name": "active2", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})" + }] + }], + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "a1", + "value": "attribute-function-interpolator(${{EntityName1}{active1}} + Math.pow(${{EntityName2}{active2}},2))" + }] + }, { + "schedule": "*/5 * 7 * * *", + "device_id": "DeviceId2", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "a1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/1 * * * * *", + "object_id": "a2", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }, { + "count": "5", + "entity_type": "DeviceType3", + "api_key": "the-api-key", + "protocol": "UltraLight::HTTP", + "schedule": "*/1 * * * * *", + "attributes": [{ + "object_id": "a1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/5 * * 9 * *", + "object_id": "a2", + "value": "time-random-linear-interpolator({\"spec\": [[random(0,1),0],[20,random(25,45)],[random(21,22),random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/configurations/simulation-configuration.json b/test/unit/configurations/simulation-configuration.json new file mode 100644 index 0000000..f9d6d58 --- /dev/null +++ b/test/unit/configurations/simulation-configuration.json @@ -0,0 +1,136 @@ +{ + "exports": { + "service": "theService", + "subservice": "/theSubService", + "contextBroker": { + "protocol": "https", + "host": "localhost", + "port": 1026, + "ngsiVersion": "1.0" + } + }, + "domain": { + "service": "import(service)", + "subservice": "import(subservice)" + }, + "contextBroker": "import(contextBroker)", + "authentication": { + "provider": "keystone", + "protocol": "https", + "host": "localhost", + "port": 5001, + "user": "theUser", + "password": "thePassword", + "retry": { + "times": 10, + "interval": 100 + } + }, + "iota": { + "ultralight": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8085 + } + }, + "json": { + "http": { + "protocol": "http", + "host": "localhost", + "port": 8185 + } + } + }, + "entities": [{ + "schedule": "once", + "entity_name": "EntityName1", + "entity_type": "EntityType1", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "schedule": "*/5 * * * * *", + "entity_name": "EntityName2", + "entity_type": "EntityType2", + "active": [{ + "name": "active1", + "type": "number", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }, { + "schedule": "*/1 * * * * *", + "name": "active2", + "type": "number", + "value": "time-step-before-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }], + "staticAttributes": [{ + "name": "static1", + "type": "string", + "value": "Value of static1" + }] + }, { + "count": "3", + "entity_type": "EntityType3", + "schedule": "*/1 * * * * *", + "active": [{ + "name": "active1", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/5 5 * * * *", + "object_id": "a2", + "name": "active2", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"floor\"}})" + }], + "staticAttributes": [{ + "name": "static1", + "type": "percentage", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"round\"}})" + }] + }], + "devices": [{ + "schedule": "once", + "device_id": "DeviceId1", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "a1", + "value": "attribute-function-interpolator(${{EntityName1}{active1}} + Math.pow(${{EntityName2}{active2}},2))" + }] + }, { + "schedule": "*/5 * 7 * * *", + "device_id": "DeviceId2", + "protocol": "UltraLight::HTTP", + "api_key": "the-api-key", + "attributes": [{ + "object_id": "a1", + "value": "time-linear-interpolator({\"spec\": [[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/1 * * * * *", + "object_id": "a2", + "value": "time-step-after-interpolator([[0,0],[20,0.25],[21,0.50],[22,0.75],[23,0],[24,0]])" + }] + }, { + "count": "5", + "entity_type": "DeviceType3", + "api_key": "the-api-key", + "protocol": "UltraLight::HTTP", + "schedule": "*/1 * * * * *", + "attributes": [{ + "object_id": "a1", + "value": "time-random-linear-interpolator({\"spec\": [[0,0],[20,random(25,45)],[21,random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }, { + "schedule": "*/5 * * 9 * *", + "object_id": "a2", + "value": "time-random-linear-interpolator({\"spec\": [[random(0,1),0],[20,random(25,45)],[random(21,22),random(50,75)],[22,0],[24,0]], \"return\": {\"type\": \"integer\", \"rounding\": \"ceil\"}})" + }] + }] +} diff --git a/test/unit/fiwareDeviceSimulator_test.js b/test/unit/fiwareDeviceSimulator_test.js new file mode 100644 index 0000000..c823879 --- /dev/null +++ b/test/unit/fiwareDeviceSimulator_test.js @@ -0,0 +1,6418 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var ROOT_PATH = require('app-root-path'); +var EventEmitter = require('events').EventEmitter; +var mqtt = require('mqtt'); +var nock = require('nock'); +var should = require('should'); +var sinon = require('sinon'); +var linearInterpolator = require(ROOT_PATH + '/lib/interpolators/linearInterpolator'); +var stepBeforeInterpolator = require(ROOT_PATH + '/lib/interpolators/stepBeforeInterpolator'); +var stepAfterInterpolator = require(ROOT_PATH + '/lib/interpolators/stepAfterInterpolator'); +var dateIncrementInterpolator = require(ROOT_PATH + '/lib/interpolators/dateIncrementInterpolator'); +var multilinePositionInterpolator = require(ROOT_PATH + '/lib/interpolators/multilinePositionInterpolator'); +var textRotationInterpolator = require(ROOT_PATH + '/lib/interpolators/textRotationInterpolator'); +var fiwareDeviceSimulatorTranspiler = require(ROOT_PATH + '/lib/transpilers/fiwareDeviceSimulatorTranspiler'); +var fiwareDeviceSimulator = require(ROOT_PATH + '/lib/fiwareDeviceSimulator'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); + +/** + * Encode file name to be compatible with linux and windows filesystems + * @param {string} file name to be encoded + * @return {string} file name encoded + */ +function encodeFilename(text) { + return text.replace(/::/g, '_'); +} + +/** + * Checks if a retrieved token response is wellFormedTokenRequestCheck + * @param {Object} simulationConfiguration A simulation configuration object + * @param {Object} requestBody The token response body + */ +function wellFormedTokenRequestCheck(simulationConfiguration, requestBody) { + should(requestBody.auth.identity.methods).be.an.instanceof(Array); + should(requestBody.auth.identity.methods).containDeep(['password']); + should(requestBody.auth.identity.password.user.domain.name).equal(simulationConfiguration.domain.service); + should(requestBody.auth.identity.password.user.name).equal(simulationConfiguration.authentication.user); + should(requestBody.auth.identity.password.user.password).equal(simulationConfiguration.authentication.password); + should(requestBody.auth.scope.project.domain.name).equal(simulationConfiguration.domain.service); + should(requestBody.auth.scope.project.name).equal(simulationConfiguration.domain.subservice); +} + +/** + * Returns the attribute value inside a contextElements structure + * @param {Array} contextElements An array of contextElementslement + * @param {String} destination The destination of the requests + * @param {String} body The body of the request + * @param {String} entityId The entity id + * @param {String} attributeName The attribute name + * @return {String} The attribute value + */ +function getAttributeValue(destination, body, entityId, attributeName) { + /* jshint maxdepth: 5 */ + if (destination === 'context broker') { + for (var ii = 0; ii < body.contextElements.length; ii++) { + if (body.contextElements[ii].id === entityId) { + for (var jj = 0; jj < body.contextElements[ii].attributes.length; jj++) { + if (body.contextElements[ii].attributes[jj].name === attributeName) { + return body.contextElements[ii].attributes[jj].value; + } + } + } + } + } else if (destination === 'subscriber') { + for (var kk = 0; kk < body.contextResponses.length; kk++) { + if (body.contextResponses[kk].contextElement.id === entityId) { + for (var ll = 0; ll < body.contextResponses[kk].contextElement.attributes.length; ll++) { + if (body.contextResponses[kk].contextElement.attributes[ll].name === attributeName) { + return body.contextResponses[kk].contextElement.attributes[ll].value; + } + } + } + } + } + /* jshint maxdepth: 5 */ +} + +/** + * Returns the decimal date associated to certain date + * @param {date} date The date + * @return {Number} The time in decimal format + */ +function toDecimalHours(date) { + return date.getHours() + (date.getMinutes() / 60) + (date.getSeconds() / 3600); +} + +describe('fiwareDeviceSimulator tests', function() { + /* jshint camelcase: false */ + var idm, + isError, + isTokenRequest, + isTokenResponse, + simulationProgress; + + var simulationConfiguration = require(ROOT_PATH + '/test/unit/configurations/simulation-configuration.json'); + + idm = nock(simulationConfiguration.authentication.protocol + '://' + simulationConfiguration.authentication.host + + ':' + simulationConfiguration.authentication.port); + + describe('simulation configuration validation', function() { + it('should notify an "error" event if no domain configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no service in the domain configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start({ + domain: {}, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + }); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no subservice in the domain configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start({ + domain: { + service: 'theService' + }, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + }); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no protocol context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: {}, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no protocol context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: {}, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no host context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https' + }, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no port context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost' + }, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no NGSI version context broker configuration information is provided and ' + + 'entities are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026' + }, + entities: [{ + schedule: 'once', + entity_name: 'EntityName1', + entity_type: 'EntityType1', + active: [{ + name: 'active1', + type: 'number', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no provider authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no protocol authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone' + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no host authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https' + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no port authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost' + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no user authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001 + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no password authentication configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser' + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no times authentication retry configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword', + retry: {} + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if invalid times authentication retry configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword', + retry: { + times: 'notANumber' + } + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no interval authentication retry configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword', + retry: { + times: 10 + } + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if invalid interval authentication retry configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword', + retry: { + times: 10, + interval: 'notANumber' + } + } + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no IOT Agent configuration information is provided and devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight IoT Agent configuration information is provided and ' + + 'UltraLight HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: {}, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight HTTP IoT Agent configuration information is provided and ' + + 'UltraLight HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: {} + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight HTTP protocol IoT Agent configuration information is ' + + 'provided and UltraLight HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + http: {} + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight HTTP host IoT Agent configuration information is provided ' + + 'and UltraLight HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + http: { + protocol: 'http' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight HTTP port IoT Agent configuration information is provided ' + + 'and UltraLight HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + http: { + protocol: 'http', + host: 'localhost' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight API key IoT Agent configuration information is provided ' + + 'and UltraLight HTTP devices specifying no API key are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + http: { + protocol: 'http', + host: 'localhost', + port: 8085 + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::HTTP', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight IoT Agent configuration information is provided and ' + + 'UltraLight MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: {}, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight MQTT IoT Agent configuration information is provided and ' + + 'UltraLight MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: {} + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight MQTT protocol IoT Agent configuration information is ' + + 'provided and UltraLight MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + mqtt: {} + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight MQTT host IoT Agent configuration information is ' + + 'provided and UltraLight MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + mqtt: { + protocol: 'mqtt' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight MQTT port IoT Agent configuration information is provided ' + + 'and UltraLight MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + mqtt: { + protocol: 'mqtt', + host: 'localhost' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no UltraLight API key IoT Agent configuration information is provided ' + + 'and UltraLight MQTT devices not specifying specific API keys are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + mqtt: { + protocol: 'mqtt', + host: 'localhost', + port: 1883 + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'UltraLight::MQTT', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON HTTP IoT Agent configuration information is provided and ' + + 'JSON HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: {} + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON HTTP protocol IoT Agent configuration information is provided ' + + 'and JSON HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + http: {} + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON HTTP host IoT Agent configuration information is provided ' + + 'and JSON HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + http: { + protocol: 'http' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON HTTP port IoT Agent configuration information is provided ' + + 'and JSON HTTP devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + json: { + protocol: 'http', + host: 'localhost' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON API key IoT Agent configuration information is provided ' + + 'and JSON HTTP devices not specifying API keys are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + http: { + protocol: 'http', + host: 'localhost', + port: 8185 + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::HTTP', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON IoT Agent configuration information is provided and ' + + 'JSON MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: {}, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON MQTT IoT Agent configuration information is provided and ' + + 'JSON MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: {} + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON MQTT protocol IoT Agent configuration information is ' + + 'provided and JSON MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + mqtt: {} + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON MQTT host IoT Agent configuration information is ' + + 'provided and JSON MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + mqtt: { + protocol: 'mqtt' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON MQTT port IoT Agent configuration information is provided ' + + 'and JSON MQTT devices are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + mqtt: { + protocol: 'mqtt', + host: 'localhost' + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + api_key: 'the-api-key', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no JSON API key IoT Agent configuration information is provided ' + + 'and JSON MQTT devices not specifying API keys are included', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + json: { + mqtt: { + protocol: 'mqtt', + host: 'localhost', + port: 1883 + } + } + }, + devices: [{ + schedule: 'once', + device_id: 'DeviceId1', + protocol: 'JSON::MQTT', + attributes: [{ + object_id: 'a1', + value: 1 + }] + }] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if malformed entities configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: {} + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if empty entities configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no name or count configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + {} + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no type configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName' + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no active and static attributes configuration information is provided for ' + + 'entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType' + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if malformed static attributes configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: {} + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if empty static attributes configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no name for static attributes configuration information is provided for ' + + 'entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [{}] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no type for static attributes configuration information is provided for ' + + 'entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no value for static attributes configuration information is provided for ' + + 'entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if 0 as value for static attributes configuration information ' + + 'is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 0 + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if false as value for static attributes configuration information ' + + 'is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: false + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if the metadata of static attributes metadata configuration information ' + + 'for entity is not an array', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: {} + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no name is included as static attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: [ + {} + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no type is included as static attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: [ + { + name: 'metadata1' + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no value is included as static attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: [ + { + name: 'metadataName', + type: 'metadataType' + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if 0 as value is included as static attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: [ + { + name: 'metadataName', + type: 'metadataType', + value: 0 + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if false as value is included as static attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue', + metadata: [ + { + name: 'metadataName', + type: 'metadataType', + value: false + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid schedule configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'invalid-entity-schedule', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-linear-interpolator value static attribute configuration ' + + 'information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'time-linear-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-random-linear-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'time-random-linear-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-before-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'time-step-before-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-after-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'time-step-after-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid date-increment-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'date-increment-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid multiline-position-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'multiline-position-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid text-rotation-interpolator value static attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'text-rotation-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid active attributes ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: {} + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no name active attribute configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [{}] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no type active attribute configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no value active attribute configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if 0 as value active attribute configuration information is provided '+ + 'for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 0 + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if false as value active attribute configuration information is provided ' + + 'for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: false + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-linear-interpolator value active attribute configuration ' + + 'information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-random-linear-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-random-linear-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-before-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-step-before-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-after-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-step-after-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid date-increment-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'date-increment-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid multiline-position-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'multiline-position-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid text-rotation-interpolator value active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'text-rotation-interpolator()' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if the metadata of active attributes metadata configuration information ' + + 'for entity is not an array', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: {} + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no name is included as active attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: [ + {} + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no type is included as active attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: [ + { + name: 'metadata1' + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no value is included as active attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: [ + { + name: 'metadataName', + type: 'metadataType' + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if 0 as value is included as active attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: [ + { + name: 'metadataName', + type: 'metadataType', + value: 0 + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if false as value is included as active attributes metadata configuration ' + + 'information for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])', + metadata: [ + { + name: 'metadataName', + type: 'metadataType', + value: false + } + ] + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid schedule for active attribute ' + + 'configuration information is provided for entity', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if malformed devices configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: {} + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if empty devices configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no id or count configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + {} + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no protocol configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId' + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no api key configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP' + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no attributes configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key' + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if malformed attributes configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: {} + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if empty attributes configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no object id attributes configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{}] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if no value for attributes configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if 0 as value for attributes configuration information is provided ' + + 'for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + api_key: '1ifhm6o0kp4ew7fi377mpyc3c', + http: { + protocol: 'http', + host: 'localhost', + port: 8085 + } + } + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'once', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 0 + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should not notify an "error" event if false as value for attributes configuration information is provided ' + + 'for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + iota: { + ultralight: { + api_key: '1ifhm6o0kp4ew7fi377mpyc3c', + http: { + protocol: 'http', + host: 'localhost', + port: 8085 + } + } + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'once', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: false + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).not.instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid schedule configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'invalid-entity-schedule', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'ObjectValue' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-linear-interpolator value attribute configuration ' + + 'information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'time-linear-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-random-linear-interpolator value attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'time-random-linear-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-before-interpolator value attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'time-step-before-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid time-step-after-interpolator value attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'time-step-after-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid date-increment-interpolator value attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'date-increment-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid multiline-position-interpolator value attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'multiline-position-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid text-rotation-interpolator value static attribute ' + + 'configuration information is provided', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + object_id: 'ObjectId', + value: 'text-rotation-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should notify an "error" event if not valid schedule for attribute ' + + 'configuration information is provided for device', + function(done) { + simulationProgress = fiwareDeviceSimulator.start( + { + domain: { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker: { + protocol: 'https', + host: 'localhost', + port: '1026', + ngsiVersion: '1.0' + }, + authentication: { + provider: 'keystone', + protocol: 'https', + host: 'localhost', + port: 5001, + user: 'theUser', + password: 'thePassword' + }, + entities: [ + { + schedule: 'once', + entity_name: 'EntityName', + entity_type: 'EntityType', + staticAttributes: [ + { + name: 'StaticName', + type: 'StaticType', + value: 'StaticValue' + } + ], + active: [ + { + schedule: 'invalid-active-attribute-schedule', + name: 'ActiveName', + type: 'ActiveType', + value: 'time-linear-interpolator([[0,0],[12,0.5],[24,1]])' + } + ] + } + ], + devices: [ + { + schedule: 'once', + device_id: 'DeviceId', + protocol: 'UltraLight::HTTP', + api_key: 'the-api-key', + attributes: [{ + schedule: 'invalid-attribute-schedule', + object_id: 'ObjectId', + value: 'text-rotation-interpolator()' + }] + } + ] + } + ); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.SimulationConfigurationNotValid); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + afterEach(function() { + simulationProgress.removeAllListeners(); + }); + }); + + describe('authorization', function() { + beforeEach(function(done) { + fiwareDeviceSimulatorTranspiler.transpile(simulationConfiguration, function(err, newSimulationConfiguration) { + if (err) { + return done(err); + } + idm.post('/v3/auth/tokens').times(10).reply( + function(uri, requestBody) { + wellFormedTokenRequestCheck(newSimulationConfiguration, requestBody); + return [ + 503, + 'Service Unavailable' + ]; + } + ); + done(); + }); + }); + + it('should request an authorization token the number of times set in retry.times', function(done) { + simulationProgress = fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + should(ev.error).instanceof(fdsErrors.TokenNotAvailable); + }); + simulationProgress.on('end', function() { + done(); + }); + }); + + it('should emit the "token-request", "error" and "end" event if the IDM is unavailable, but not the ' + + '"token-response" event', function(done) { + simulationProgress = fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('token-request', function(ev) { + isTokenRequest = true; + should.exist(ev.request); + }); + simulationProgress.on('token-response', function() { + isTokenResponse = true; + }); + simulationProgress.on('error', function(ev) { + isError = true; + should(ev.error).instanceof(fdsErrors.TokenNotAvailable); + }); + simulationProgress.on('end', function() { + should(isTokenRequest).be.true(); + should(isTokenResponse).be.undefined(); + should(isError).be.true(); + done(); + }); + }); + + afterEach(function() { + nock.cleanAll(); + simulationProgress.removeAllListeners(); + }); + }); + + describe('simulation', function() { + var contextBroker, + subscriber, + httpIoTA, + mqttClient, + mqttConnectStub, + tokenResponseBody = require(ROOT_PATH + '/test/unit/messages/token-response-body.json'), + tokenResponses = 0, + updateRequests = 0, + updateResponses = 0; + + /** + * The simulation tests suite + * @param {String} type The type of simulation. Possible values are: 'entities' and 'devices' + * @param {String} options Object including the "destination" of the updates ("contextBroker" or "subscriber") and + * the "ngsiVersion" properties if entities or the "protocol" property if + * devices + */ + function simulationTestSuite(type, options){ + beforeEach(function(done) { + if (options.destination === 'context broker') { + simulationConfiguration = require(ROOT_PATH + '/test/unit/configurations/simulation-configuration.json'); + } else if (options.destination === 'subscriber') { + simulationConfiguration = require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-subscriber.json'); + } + + fiwareDeviceSimulatorTranspiler.transpile(simulationConfiguration, function(err, newSimulationConfiguration) { + if (err) { + return done(err); + } + + idm.post('/v3/auth/tokens').reply( + function(uri, requestBody) { + wellFormedTokenRequestCheck(newSimulationConfiguration, requestBody); + return [ + 201, + tokenResponseBody, + { + 'X-Subject-Token': '829136fd6df6418880785016770d46e7' + } + ]; + } + ); + + if (options.destination === 'context broker') { + if (options.ngsiVersion === '1.0') { + contextBroker = nock(newSimulationConfiguration.contextBroker.protocol + '://' + + newSimulationConfiguration.contextBroker.host + ':' + newSimulationConfiguration.contextBroker.port); + contextBroker.post('/v1/updateContext').times(5).reply( + function() { + return [200]; + } + ); + } else if (options.ngsiVersion === '2.0') { + contextBroker = nock(newSimulationConfiguration.contextBroker.protocol + '://' + + newSimulationConfiguration.contextBroker.host + ':' + newSimulationConfiguration.contextBroker.port); + contextBroker.post('/v2/op/update').times(5).reply( + function() { + return [200]; + } + ); + } + } else if (options.destination === 'subscriber') { + if (options.ngsiVersion === '1.0') { + subscriber = nock(newSimulationConfiguration.subscriber.protocol + '://' + + newSimulationConfiguration.subscriber.host + ':' + newSimulationConfiguration.subscriber.port); + contextBroker.post(newSimulationConfiguration.subscriber.path).times(5).reply( + function() { + return [200]; + } + ); + } + } + + if (options.protocol === 'UltraLight::HTTP') { + httpIoTA = nock(newSimulationConfiguration.iota.ultralight.http.protocol + '://' + + newSimulationConfiguration.iota.ultralight.http.host + ':' + + newSimulationConfiguration.iota.ultralight.http.port); + httpIoTA.post('/iot/d').query(true).times(5).reply( + function() { + return [200]; + } + ); + } else if (options.protocol === 'UltraLight::MQTT') { + mqttConnectStub = sinon.stub(mqtt, 'connect', function() { + mqttClient = new EventEmitter(); + mqttClient.publish = function(topic, payload, callback) { + callback(); + }; + setImmediate(function() { + mqttClient.emit('connect'); + }); + return mqttClient; + }); + } else if (options.protocol === 'JSON::HTTP') { + httpIoTA = nock(newSimulationConfiguration.iota.json.http.protocol + '://' + + newSimulationConfiguration.iota.json.http.host + ':' + + newSimulationConfiguration.iota.json.http.port); + httpIoTA.post('/iot/json').query(true).times(5).reply( + function() { + return [200]; + } + ); + } + + done(); + }); + }); + + it('should update ' + (options.protocol ? options.protocol + ' ' : '') + type + ' once if scheduled at ' + + 'element level', + function(done) { + var simulationConfiguration = + require(ROOT_PATH + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-once' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function() { + ++updateRequests; + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should update ' + (options.protocol ? options.protocol + ' ' : '') + type + ' once if scheduled at ' + + 'attribute level', + function(done) { + var simulationConfiguration = + require(ROOT_PATH + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-attribute-once' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function() { + ++updateRequests; + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + } + ); + }); + + it('should update ' + (options.protocol ? options.protocol + ' ' : '') + type + ' every second if scheduled ' + + 'at entity level', + function(done) { + this.timeout(5000); + var simulationConfiguration = + require(ROOT_PATH + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-every-second' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function() { + ++updateRequests; + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + if (tokenResponses === 1 && updateRequests === 3 && updateResponses === 3) { + fiwareDeviceSimulator.stop(); + } + }); + simulationProgress.on('end', function() { + done(); + } + ); + }); + + it('should update ' + (options.protocol ? options.protocol + ' ' : '') + type + ' every second if scheduled ' + + 'at attribute level', + function(done) { + this.timeout(5000); + var simulationConfiguration = + require( + ROOT_PATH + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-attribute-every-second' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function() { + ++updateRequests; + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + if (tokenResponses === 1 && updateRequests === 3 && updateResponses === 3) { + fiwareDeviceSimulator.stop(); + } + }); + simulationProgress.on('end', function() { + done(); + } + ); + }); + + it('should set fixed values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-fixed-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function() { + ++updateRequests; + }); + simulationProgress.on('update-response', function(ev) { + ++updateResponses; + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).equal('1'); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).equal('1'); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).equal('1'); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).equal('1'); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).equal('1'); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).equal('1'); + } + } + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-linear-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type +'-time-linear-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = linearInterpolator(attributeValue.substring( + 'time-linear-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).equal(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).equal(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).equal(value); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).equal(value); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-linear-interpolator values of attributes once (retrocompatibility)', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type +'-time-linear-interpolator-attribute-retro' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = linearInterpolator(attributeValue.substring( + 'time-linear-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).equal(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).equal(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).equal(value); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).equal(value); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-random-linear-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-time-random-linear-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')). + lessThanOrEqual(75); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).lessThanOrEqual(75); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).lessThanOrEqual(75); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).lessThanOrEqual(75); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).lessThanOrEqual(75); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).lessThanOrEqual(75); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-random-linear-interpolator values of attributes once (retrocompatibility)', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-time-random-linear-interpolator-attribute-retro' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')). + lessThanOrEqual(75); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).lessThanOrEqual(75); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).lessThanOrEqual(75); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).lessThanOrEqual(75); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).lessThanOrEqual(75); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).lessThanOrEqual(75); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-step-before-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-time-step-before-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = stepBeforeInterpolator(attributeValue.substring( + 'time-step-before-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).equal(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).equal(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).equal(value); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).equal(value); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set time-step-after-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-time-step-after-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = stepAfterInterpolator(attributeValue.substring( + 'time-step-after-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).equal(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).equal(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).equal(value.toString()); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).equal(value); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).equal(value); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set date-increment-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-date-increment-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = dateIncrementInterpolator(attributeValue.substring( + 'date-increment-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1'). + substring(0, 20)).equal(value.substring(0, 20)); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value.substring(0, 20)).equal(value.substring(0, 20)); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1].substring(0, 20)).equal(value.substring(0, 20)); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1].substring(0, 20)).equal(value.substring(0, 20)); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1.substring(0, 20)).equal(value.substring(0, 20)); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1.substring(0, 20)).equal(value.substring(0, 20)); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set multiline-position-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-multiline-position-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var decimalHours = toDecimalHours(new Date()); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = multilinePositionInterpolator(attributeValue.substring( + 'multiline-position-interpolator('.length, attributeValue.length - 1))(decimalHours); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).eql(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).eql(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).eql(value.toString()); + // var valueObj = JSON.parse(ev.request.body.split('|')[1]); + // should(valueObj.type).equal('Point'); + // should(valueObj.coordinates).be.an.Array(); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).eql(value.toString()); + // var valueObj = JSON.parse(ev.request.body.split('|')[1]); + // should(valueObj.type).equal('Point'); + // should(valueObj.coordinates).be.an.Array(); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).eql(value); + // var valueObj = JSON.parse(ev.request.body.attribute1); + // should(valueObj.type).equal('Point'); + // should(valueObj.coordinates).be.an.Array(); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).eql(value); + // var valueObj = JSON.parse(ev.request.body.attribute1); + // should(valueObj.type).equal('Point'); + // should(valueObj.coordinates).be.an.Array(); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + it('should set text-rotation-interpolator values of attributes once', function(done) { + var simulationConfiguration = + require(ROOT_PATH + + '/test/unit/configurations/simulation-configuration-' + + (options.protocol ? encodeFilename(options.protocol) + '-' : '') + + type + '-text-rotation-interpolator-attribute' + + (options.destination && options.destination !== 'context broker' ? '-' + options.destination: '') + + '.json'); + if (options.ngsiVersion) { + if (simulationConfiguration.contextBroker) { + simulationConfiguration.contextBroker.ngsiVersion = options.ngsiVersion; + } else if (simulationConfiguration.subscriber) { + simulationConfiguration.subscriber.ngsiVersion = options.ngsiVersion; + } + } + fiwareDeviceSimulator.start(simulationConfiguration); + simulationProgress.on('error', function(ev) { + done(ev.error); + }); + simulationProgress.on('token-response', function(ev) { + ++tokenResponses; + should(ev.expires_at.toISOString()).equal(tokenResponseBody.token.expires_at); + }); + simulationProgress.on('update-request', function(ev) { + ++updateRequests; + var now = new Date(); + var attributeValue = (type === 'entities') ? + simulationConfiguration[type][0].active[0].value : + simulationConfiguration[type][0].attributes[0].value; + var value = textRotationInterpolator(attributeValue.substring( + 'text-rotation-interpolator('.length, attributeValue.length - 1))(now); + if (type === 'entities') { + if (options.ngsiVersion === '1.0') { + should(getAttributeValue(options.destination, ev.request.body, 'EntityName1', 'active1')).eql(value); + } else if (options.ngsiVersion === '2.0') { + should(ev.request.body.entities[0].active1.value).eql(value); + } + } else { + if (options.protocol === 'UltraLight::HTTP') { + should(ev.request.body.split('|')[1]).eql(value.toString()); + } else if (options.protocol === 'UltraLight::MQTT') { + should(ev.request.payload.split('|')[1]).eql(value.toString()); + } else if (options.protocol === 'JSON::HTTP') { + should(ev.request.body.attribute1).eql(value.toString()); + } else if (options.protocol === 'JSON::MQTT') { + should(JSON.parse(ev.request.payload).attribute1).eql(value.toString()); + } + } + }); + simulationProgress.on('update-response', function() { + ++updateResponses; + }); + simulationProgress.on('end', function() { + should(tokenResponses).equal(1); + should(updateRequests).equal(1); + should(updateResponses).equal(1); + done(); + }); + }); + + afterEach(function() { + tokenResponses = 0; + updateRequests = 0; + updateResponses = 0; + nock.cleanAll(); + if (simulationProgress) { + simulationProgress.removeAllListeners(); + } + if (mqttClient) { + mqttClient.removeAllListeners(); + mqttClient = null; + } + if (mqttConnectStub) { + mqttConnectStub.restore(); + mqttConnectStub = null; + } + }); + } + + describe('Entities update in context broker via NGSI v1.0', simulationTestSuite.bind( + null, 'entities', {destination: 'context broker', ngsiVersion: '1.0'})); + + describe('Entities update in context broker via NGSI v2.0', simulationTestSuite.bind( + null, 'entities', {destination: 'context broker', ngsiVersion: '2.0'})); + + describe('Entities update in subscriber via NGSI v1.0', simulationTestSuite.bind( + null, 'entities', {destination: 'subscriber', ngsiVersion: '1.0'})); + + describe('UltraLight HTTP devices', simulationTestSuite.bind(null, 'devices', {protocol: 'UltraLight::HTTP'})); + + describe('UltraLight MQTT devices', simulationTestSuite.bind(null, 'devices', {protocol: 'UltraLight::MQTT'})); + + describe('JSON HTTP devices', simulationTestSuite.bind(null, 'devices', {protocol: 'JSON::HTTP'})); + + describe('JSON MQTT devices', simulationTestSuite.bind(null, 'devices', {protocol: 'JSON::MQTT'})); + }); + /* jshint camelcase: true */ +}); diff --git a/test/unit/interpolators/attributeFunctionInterpolator_test.js b/test/unit/interpolators/attributeFunctionInterpolator_test.js new file mode 100644 index 0000000..b1a0078 --- /dev/null +++ b/test/unit/interpolators/attributeFunctionInterpolator_test.js @@ -0,0 +1,745 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var nock = require('nock'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var attributeFunctionInterpolator = require(ROOT_PATH + '/lib/interpolators/attributeFunctionInterpolator'); + +var ATTRIBUTE_VALUE_1 = 111; +var ATTRIBUTE_VALUE_2 = 222; +var ATTRIBUTE_VALUE_3 = 333; + +describe('attributeFunctionInterpolator tests', function() { + var attributeFunctionInterpolatorFunction, + domain = { + service: 'theService', + subservice: '/theSubService' + }, + contextBroker = { + protocol: 'https', + host: 'localhost', + port: 1026, + ngsiVersion: '1.0' + }, + token = '9148f6f23c3e40c5b8b28766c50dffb5', + contextBrokerNock = nock( + contextBroker.protocol + '://' + contextBroker.host + ':' + contextBroker.port, + { + reqheaders: { + 'Fiware-Service': domain.service, + 'Fiware-ServicePath': domain.subservice + } + } + ); + + beforeEach(function() { + contextBrokerNock.post('/v1/queryContext').reply(200, function(uri, requestBody) { + if (requestBody.entities[0].id === 'EntityId1') { + return { + contextResponses: [ + { + contextElement: { + type: 'Entity', + isPattern: 'false', + id: 'EntityId1', + attributes: [ + { + name: 'AttributeName11', + type: 'Number', + value: ATTRIBUTE_VALUE_1 + }, + { + name: 'AttributeName12', + type: 'Number', + value: ATTRIBUTE_VALUE_1 * 2 + } + ] + }, + statusCode: { + code: 200, + reasonPhrase: 'OK' + } + } + ] + }; + } else if (requestBody.entities[0].id === 'EntityId2' && requestBody.entities[0].type === 'Entity2') { + return { + contextResponses: [ + { + contextElement: { + type: 'Entity2', + isPattern: 'false', + id: 'EntityId2', + attributes: [ + { + name: 'AttributeName21', + type: 'Number', + value: ATTRIBUTE_VALUE_2 + }, + { + name: 'AttributeName22', + type: 'Number', + value: ATTRIBUTE_VALUE_2 * 2 + } + ] + }, + statusCode: { + code: 200, + reasonPhrase: 'OK' + } + } + ] + }; + } else if (requestBody.entities[0].id === 'EntityId2') { + return { + contextResponses: [ + { + contextElement: { + type: 'Entity', + isPattern: 'false', + id: 'EntityId2', + attributes: [ + { + name: 'AttributeName21', + type: 'Number', + value: ATTRIBUTE_VALUE_3 + }, + { + name: 'AttributeName22', + type: 'Number', + value: ATTRIBUTE_VALUE_3 * 2 + } + ] + }, + statusCode: { + code: 200, + reasonPhrase: 'OK' + } + } + ] + }; + } + }); + }); + + it('should throw an error if ReferenceError is forced via the interpolation specification as a string', + function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator( + 'undeclaredVariable', domain, contextBroker); + attributeFunctionInterpolatorFunction(token); + done(new Error('It should throw an ValueResolutionError error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.ValueResolutionError); + done(); + } + } + ); + + it('should interpolate if a number is passed as the interpolation specification', function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator(666, domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(666); + done(); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should interpolate if a number is passed as a string as the interpolation specification', function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator('666', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(666); + done(); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should interpolate if a string is passed as the interpolation specification', function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator('\"some-text\"', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal('some-text'); + done(); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should interpolate if an array is passed as the interpolation specification', function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator([1, 2, 3], domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).containEql(1); + should(attributeFunctionInterpolatorFunction(token)).containEql(2); + should(attributeFunctionInterpolatorFunction(token)).containEql(3); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if an array is passed as a string as the interpolation specification', function(done) { + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator('[1, 2, 3]', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).containEql(1); + should(attributeFunctionInterpolatorFunction(token)).containEql(2); + should(attributeFunctionInterpolatorFunction(token)).containEql(3); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if a reference to an entity attribute (without entity type) is passed as the ' + + 'interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('${{EntityId1}{AttributeName11}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if a reference to an entity attribute (with entity type) is passed as the ' + + 'interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('${{EntityId2:#:Entity2}{AttributeName21}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_2); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if an addition to a reference to an entity attribute (without entity type) is passed as the ' + + 'interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('${{EntityId1}{AttributeName11}} + 111', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1 + 111); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if an addition to a reference to an entity attribute (with entity type) is passed as the ' + + 'interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('${{EntityId2:#:Entity2}{AttributeName21}} + 111', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_2 + 111); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if a function invocation on a reference to an entity attribute (without entity type) ' + + 'is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('Math.pow(${{EntityId1}{AttributeName11}}, 2);', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(Math.pow(ATTRIBUTE_VALUE_1, 2)); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if a function invocation on a reference to an entity attribute (with entity type) ' + + 'is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('Math.pow(${{EntityId2:#:Entity2}{AttributeName21}}, 2);', + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(Math.pow(ATTRIBUTE_VALUE_2, 2)); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if the addition of references to distinct entity\'s attributes (without entity type) ' + + 'is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + '${{EntityId1}{AttributeName11}} + ${{EntityId1}{AttributeName12}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1 + (ATTRIBUTE_VALUE_1 * 2)); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if the addition of references to distinct entity\'s attributes (with entity type) ' + + 'is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + '${{EntityId1}{AttributeName11}} + ${{EntityId2:#:Entity2}{AttributeName22}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1 + (ATTRIBUTE_VALUE_2 * 2)); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if the addition of references to attributes of distinct entities attributes ' + + '(without entity type) is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + '${{EntityId1}{AttributeName11}} + ${{EntityId2}{AttributeName21}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1 + ATTRIBUTE_VALUE_3); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if the addition of references to attributes of distinct entities attributes ' + + '(with entity type) is passed as the interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + '${{EntityId1}{AttributeName11}} + ${{EntityId2:#:Entity2}{AttributeName21}}', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(ATTRIBUTE_VALUE_1 + ATTRIBUTE_VALUE_2); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should throw an error if a invalid Javascript code with a reference to an entity attribute is passed as the ' + + 'interpolation specification', + function(done) { + try { + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator('Math.pow(${{EntityId1}{AttributeName11}}, 2', domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(Math.pow(ATTRIBUTE_VALUE_1, 2)); + done(new Error('It should throw an ValueResolutionError error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.ValueResolutionError); + done(); + } + } + ); + + it('should interpolate if packages are required in the interpolation specification', function(done) { + try { + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + 'var linearInterpolator = require("' + ROOT_PATH + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = linearInterpolator([[0,0],[10,10]])(5);', + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(5); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should throw an error if the packages required in the interpolation specification are not available', + function(done) { + try { + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + 'var linearInterpolator = require("' + ROOT_PATH + '/lib/interpolators/NON-EXISTENT"); ' + + 'module.exports = linearInterpolator([[0,0],[10,10]])(5);', + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(5); + done(new Error('It should throw an ValueResolutionError error')); + done(); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.ValueResolutionError); + done(); + } + } + ); + + it('should make available the simulator date if module.exports is used in the interpolation specification', + function(done) { + try { + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + 'module.exports = new SimulationDate();', + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token).getFullYear()).equal(new Date().getFullYear()); + should(attributeFunctionInterpolatorFunction(token).getMonth()).equal(new Date().getMonth()); + should(attributeFunctionInterpolatorFunction(token).getDate()).equal(new Date().getDate()); + should(attributeFunctionInterpolatorFunction(token).getDay()).equal(new Date().getDay()); + should(attributeFunctionInterpolatorFunction(token).getHours()).equal(new Date().getHours()); + should(attributeFunctionInterpolatorFunction(token).getMinutes()).equal(new Date().getMinutes()); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should pass the state and interpolate if it is used in the interpolation specification', function(done) { + try { + var attributeFunctionInterpolatorSpec = + '/* state: stateful1, stateful2 */ var linearInterpolator = require("' + ROOT_PATH + + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = { ' + + 'result: linearInterpolator([[0,0],[10,10]])(5) + (stateful1 = (stateful1 ? ++stateful1 : 1)) + ' + + '(stateful2 = (stateful2 ? ++stateful2 : 1)),' + + 'state: { stateful1: stateful1, stateful2: stateful2}' + + ' };'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(7); + should(attributeFunctionInterpolatorFunction(token)).equal(9); + should(attributeFunctionInterpolatorFunction(token)).equal(11); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should initiate (as a number), pass the state and interpolate if it is used in the interpolation specification', + function(done) { + try { + var attributeFunctionInterpolatorSpec = + '/* state: stateful1 = 5, stateful2 */ var linearInterpolator = require("' + ROOT_PATH + + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = { ' + + 'result: linearInterpolator([[0,0],[10,10]])(5) + stateful1 + ' + + '(stateful2 = (stateful2 ? ++stateful2 : 1)),' + + 'state: { stateful1: ++stateful1, stateful2: stateful2}' + + ' };'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(11); + should(attributeFunctionInterpolatorFunction(token)).equal(13); + should(attributeFunctionInterpolatorFunction(token)).equal(15); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should initiate (as a string), pass the state and interpolate if it is used in the interpolation specification', + function(done) { + try { + var attributeFunctionInterpolatorSpec = + '/* state: stateful1 = 5, stateful2 =\"tralara\" */ var linearInterpolator = require("' + ROOT_PATH + + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = { ' + + 'result: linearInterpolator([[0,0],[10,10]])(5) + (stateful2 === \"tralara\" ? stateful1 : 0),' + + 'state: { stateful1: ++stateful1, stateful2: \"\"}' + + ' };'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(10); + should(attributeFunctionInterpolatorFunction(token)).equal(5); + should(attributeFunctionInterpolatorFunction(token)).equal(5); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should initiate (as an array), pass the state and interpolate if it is used in the interpolation specification', + function(done) { + try { + var attributeFunctionInterpolatorSpec = + '/* state: stateful1 = [5], stateful2 */ var linearInterpolator = require("' + ROOT_PATH + + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = { ' + + 'result: linearInterpolator([[0,0],[10,10]])(5) + stateful1[0] + ' + + '(stateful2 = (stateful2 ? ++stateful2 : 1)),' + + 'state: { stateful1: [++stateful1], stateful2: stateful2}' + + ' };'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(11); + should(attributeFunctionInterpolatorFunction(token)).equal(13); + should(attributeFunctionInterpolatorFunction(token)).equal(15); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should initiate (as an array), pass the state and interpolate if it is used in the interpolation specification', + function(done) { + try { + var attributeFunctionInterpolatorSpec = + '/* state: stateful1 = {\"value\": 5}, stateful2 */ var linearInterpolator = require("' + ROOT_PATH + + '/lib/interpolators/linearInterpolator"); ' + + 'module.exports = { ' + + 'result: linearInterpolator([[0,0],[10,10]])(5) + stateful1.value + ' + + '(stateful2 = (stateful2 ? ++stateful2 : 1)),' + + 'state: { stateful1: {\"value\": ++stateful1.value}, stateful2: stateful2}' + + ' };'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction(token)).equal(11); + should(attributeFunctionInterpolatorFunction(token)).equal(13); + should(attributeFunctionInterpolatorFunction(token)).equal(15); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should pass a global number state variable between interpolators with distinct specifications', + function(done) { + global.fdsGlobals = { + numberVar: 666 + }; + try { + var attributeFunctionInterpolatorSpec1 = + 'var newNumber = numberVar + 1; module.exports = { result: newNumber, ' + + 'state: { globals: { numberVar: newNumber}}};'; + var + attributeFunctionInterpolatorFunction1 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec1, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction1(token)).equal(667); + var attributeFunctionInterpolatorSpec2 = + 'var newNumber = numberVar + 1; module.exports = { result: newNumber, ' + + 'state: { globals: { numberVar: newNumber}}};'; + var + attributeFunctionInterpolatorFunction2 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec2, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction2(token)).equal(668); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should pass a global string state variable between interpolators with distinct specifications', + function(done) { + global.fdsGlobals = { + textVar: 'some' + }; + try { + var attributeFunctionInterpolatorSpec1 = + 'var newText = textVar + \"text\"; module.exports = { result: newText, ' + + 'state: { globals: { textVar: newText}}};'; + var + attributeFunctionInterpolatorFunction1 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec1, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction1(token)).equal('sometext'); + var attributeFunctionInterpolatorSpec2 = + 'var newText = textVar + \"here\"; module.exports = { result: newText, ' + + 'state: { globals: { textVar: newText}}};'; + var + attributeFunctionInterpolatorFunction2 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec2, + domain, contextBroker); + should(attributeFunctionInterpolatorFunction2(token)).equal('sometexthere'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should pass a global array state variable between interpolators with distinct specifications', + function(done) { + global.fdsGlobals = { + arrayVar: [1, 2, 3] + }; + try { + var attributeFunctionInterpolatorSpec1 = + 'arrayVar.push(4); var newArray = arrayVar; module.exports = { result: newArray, ' + + 'state: { globals: { arrayVar: newArray}}};'; + var + attributeFunctionInterpolatorFunction1 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec1, + domain, contextBroker); + var result = attributeFunctionInterpolatorFunction1(token); + should(result.length).equal(4); + should(result).containEql(4); + var attributeFunctionInterpolatorSpec2 = + 'arrayVar.push(5); var newArray = arrayVar; module.exports = { result: newArray, ' + + 'state: { globals: { arrayVar: newArray}}};'; + var + attributeFunctionInterpolatorFunction2 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec2, + domain, contextBroker); + result = attributeFunctionInterpolatorFunction2(token); + should(result.length).equal(5); + should(result).containEql(5); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should pass a global object state variable between interpolators with distinct specifications', + function(done) { + global.fdsGlobals = { + objectVar: { + property1: 'value1' + } + }; + try { + var attributeFunctionInterpolatorSpec1 = + 'objectVar.property2 = \"value2\"; var newObject = objectVar; module.exports = { result: newObject, ' + + 'state: { globals: { objectVar: newObject}}};'; + var + attributeFunctionInterpolatorFunction1 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec1, + domain, contextBroker); + var result = attributeFunctionInterpolatorFunction1(token); + should(result).containEql({property1: 'value1'}); + should(result).containEql({property2: 'value2'}); + var attributeFunctionInterpolatorSpec2 = + 'objectVar.property3 = \"value3\"; var newObject = objectVar; module.exports = { result: newObject, ' + + 'state: { globals: { objectVar: newObject}}};'; + var + attributeFunctionInterpolatorFunction2 = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec2, + domain, contextBroker); + result = attributeFunctionInterpolatorFunction2(token); + should(result).containEql({property1: 'value1'}); + should(result).containEql({property2: 'value2'}); + should(result).containEql({property3: 'value3'}); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should combine local and global state variables in interpolators with the same specification', + function(done) { + global.fdsGlobals = { + objectVar: { + property1: 'value1' + } + }; + try { + var attributeFunctionInterpolatorSpec = + '/* state: localVar = \"localVar\" */ ' + + 'localVar = localVar + \"2\"; ' + + 'objectVar.property1 = objectVar.property1 + localVar; ' + + 'module.exports = { ' + + 'result: objectVar, ' + + 'state: { localVar: localVar, globals: { objectVar: objectVar}}' + + '};'; + var + attributeFunctionInterpolatorFunction = + attributeFunctionInterpolator( + attributeFunctionInterpolatorSpec, + domain, contextBroker); + var result = attributeFunctionInterpolatorFunction(token); + should(result).containEql({property1: 'value1localVar2'}); + result = attributeFunctionInterpolatorFunction(token); + should(result).containEql({property1: 'value1localVar2localVar22'}); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should throw an error if the Context Broker responds with an error', + function(done) { + nock.restore(); + contextBrokerNock.post('/v1/queryContext').reply(404); + try { + attributeFunctionInterpolatorFunction = attributeFunctionInterpolator( + '${{InexistentEntityId}{InexistentAttributeName}}', domain, contextBroker); + attributeFunctionInterpolatorFunction(token); + done(new Error('It should throw an ValueResolutionError error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.ValueResolutionError); + done(); + } + } + ); +}); diff --git a/test/unit/interpolators/dateIncrementInterpolator_test.js b/test/unit/interpolators/dateIncrementInterpolator_test.js new file mode 100644 index 0000000..90b33c6 --- /dev/null +++ b/test/unit/interpolators/dateIncrementInterpolator_test.js @@ -0,0 +1,190 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var dateIncrementInterpolator = require(ROOT_PATH + '/lib/interpolators/dateIncrementInterpolator'); + +describe('dateIncrementInterpolator tests', function() { + var dateIncrementInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid specification', function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number as a string is passed instead of a valid specification', function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an Array is passed instead of a valid specification', function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator([1,2,3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an Array is passed as a string instead of a valid specification', function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator('[1,2,3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an object with no origin property is passed instead of a valid specification', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator({increment: 0}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no increment property is passed instead of a valid specification', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator({origin: 'now'}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with an invalid origin property is passed instead of a valid specification', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator( + {origin: 'not-convertible-to-date-or-now', increment: 0}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no origin property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator('{"increment": 0}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no increment property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator('{"origin": "now"}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with an invalid origin property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator( + '{"origin": "not-convertible-to-date-or-now", "increment": 0}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate for now without increment if valid interpolation specification is passed as an object', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator({origin: 'now', increment: 0}); + should(new Date(dateIncrementInterpolatorFunction()).getTime()).lessThanOrEqual(new Date(Date.now() + 2000)); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for a date without increment if valid interpolation specification is passed as an object', + function(done) { + try { + dateIncrementInterpolatorFunction = dateIncrementInterpolator({origin: '2016-10-20T13:00:00Z', increment: 0}); + should(new Date(dateIncrementInterpolatorFunction()).getTime()).lessThanOrEqual( + new Date('2016-10-20T13:00:00Z').getTime() + 2000); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for a date with increment if valid interpolation specification is passed as an object', + function(done) { + try { + dateIncrementInterpolatorFunction = + dateIncrementInterpolator({origin: '2016-10-20T13:00:00Z', increment: 60}); + should(new Date(dateIncrementInterpolatorFunction()).getTime()).lessThanOrEqual( + new Date('2016-10-20T13:01:00Z').getTime() + 2000); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/linearInterpolator_test.js b/test/unit/interpolators/linearInterpolator_test.js new file mode 100644 index 0000000..065836e --- /dev/null +++ b/test/unit/interpolators/linearInterpolator_test.js @@ -0,0 +1,521 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var linearInterpolator = require(ROOT_PATH + '/lib/interpolators/linearInterpolator'); + +describe('linearInterpolator tests', function() { + var linearInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid interpolation array', function(done) { + try { + linearInterpolatorFunction = linearInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator([1, 2, 3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array', function(done) { + try { + linearInterpolatorFunction = linearInterpolator([[1], [2], [3]]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as a string specification', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as a string specification', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator('[1, 2, 3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator('[[1], [2], [3]]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator('[[1], [2], [3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as an object specification', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '666', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as an object specification', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '[1, 2, 3]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as an object specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '[[1], [2], [3]]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as an object specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '[[1], [2], [3]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return object is passed as an object specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '[[1, 1], [2, 2], [3, 3]]', return: {typeXXX: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return type is passed as an object specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: '[[1, 1], [2, 2], [3, 3]]', return: {type: 'floatXXX'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return rounding is passed as an object specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + {spec: '[[1, 1], [2, 2], [3, 3]]', return: {type: 'integer', rounding: 'floorXXX'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as an object specification ' + + 'as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator('{"spec": "666", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as an object specification as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator('{"spec": "[1, 2, 3]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as an object specification as a string', function(done) { + try { + linearInterpolatorFunction = linearInterpolator('{"spec": "[[1], [2], [3]]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as an object specification as a string', function(done) { + try { + linearInterpolatorFunction = linearInterpolator('{"spec": "[[1], [2], [3]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return object is passed as an object specification as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [2, 2], [3, 3]]", "return": {"typeXXX": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid return type is passed as an object specification as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [2, 2], [3, 3]]", "return": {"type": "floatXXX"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid return rounding is passed as an object specification as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [2, 2], [3, 3]]", "return": {"type": "integer", "rounding": "floorXXX"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate if valid interpolation array is passed as specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator([[1, 1], [5, 5], [10, 10]]); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2.5); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7.5); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if valid interpolation array is passed as a string specification', function(done) { + try { + linearInterpolatorFunction = linearInterpolator('[[1, 1], [5, 5], [10, 10]]'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2.5); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7.5); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator({spec: [[1, 1], [5, 5], [10, 10]], return: {type: 'float'}}); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2.5); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7.5); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding ceil', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + {spec: '[[1, 1], [5, 5], [10, 10]]', return: {type: 'integer', rounding: 'ceil'}}); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding floor', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + {spec: '[[1, 1], [5, 5], [10, 10]]', return: {type: 'integer', rounding: 'floor'}}); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding round', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + {spec: '[[1, 1], [5, 5], [10, 10]]', return: {type: 'integer', rounding: 'round'}}); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float '+ + 'as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": [[1, 1], [5, 5], [10, 10]], "return": {"type": "float"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2.5); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7.5); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding ceil as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": [[1, 1], [5, 5], [10, 10]], "return": {"type": "integer", "rounding": "ceil"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding floor as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": [[1, 1], [5, 5], [10, 10]], "return": {"type": "integer", "rounding": "floor"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding round as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": [[1, 1], [5, 5], [10, 10]], "return": {"type": "integer", "rounding": "round"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float ' + + 'as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [5, 5], [10, 10]]", "return": {"type": "float"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2.5); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7.5); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding ceil as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [5, 5], [10, 10]]", "return": {"type": "integer", "rounding": "ceil"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding floor as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [5, 5], [10, 10]]", "return": {"type": "integer", "rounding": "floor"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(2); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(7); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding round as a string', + function(done) { + try { + linearInterpolatorFunction = linearInterpolator( + '{"spec": "[[1, 1], [5, 5], [10, 10]]", "return": {"type": "integer", "rounding": "round"}}'); + should(linearInterpolatorFunction(1)).equal(1); + should(linearInterpolatorFunction(2.5)).equal(3); + should(linearInterpolatorFunction(5)).equal(5); + should(linearInterpolatorFunction(7.5)).equal(8); + should(linearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/multilinePositionInterpolator_test.js b/test/unit/interpolators/multilinePositionInterpolator_test.js new file mode 100644 index 0000000..f1bf02b --- /dev/null +++ b/test/unit/interpolators/multilinePositionInterpolator_test.js @@ -0,0 +1,490 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var multilinePositionInterpolator = require(ROOT_PATH + '/lib/interpolators/multilinePositionInterpolator'); + +/** + * Returns the decimal date associated to certain date + * @param {date} date The date + * @return {Number} The time in decimal format + */ +function toDecimalHours(date) { + return date.getHours() + (date.getMinutes() / 60) + (date.getSeconds() / 3600); +} + +describe('multilinePositionInterpolator tests', function() { + var multilinePositionInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid interpolation array', function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as a string specification', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator([1, 2, 3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as a string specification', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator('[1, 2, 3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator('[[1], [2], [3]]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array', function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator([[1], [2], [3]]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator('[[1], [2], [3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if no coordinates is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + speed: {value: 30, units: 'km/h'}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if no coordinates is passed in the specification as a string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"speed\": {\"value\": 30, \"units": "km/h"}, \"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if no speed is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1,2], [2,3], [4,5]], + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if no speed is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1,2], [2,3], [4,5]], \"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if no time is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1,2], [2,3], [4,5]], + speed: {value: 30, units: 'km/h'} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if no time is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1,2], [2,3], [4,5]], \"speed\": {\"value\": 30, \"units\": \"km/h\"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid coordinates is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [1, 2, 3], + speed: {value: 30, units: 'km/h'}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid coordinates is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [1, 2, 3], \"speed\": {\"value\": 30, \"units\": \"km/h\"}, ' + + '\"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid coordinates is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1], [2], [3]], + speed: {value: 30, units: 'km/h'}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid coordinates is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1], [2], [3], \"speed\": {\"value\": 30, \"units\": \"km/h\"}, ' + + '\"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {units: 'km/h'}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates: [[1, 2], [3, 4], [5, 6]], \"speed\": {\"units\": \"km/h\"}, ' + + '\"time\": {\"from\": 10, to: 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {value: 30}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1, 2], [3, 4], [5, 6]], \"speed\": {\"value\": 30}, ' + + '\"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {value: 30, units: 'invalid-units'}, + time: {from: 10, to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid speed is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1, 2], [3, 4], [5, 6]], \"speed\": {\"value\": 30, \"units\": \"invalid-units\"}, ' + + '\"time\": {\"from\": 10, \"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid time is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {value: 30, units: 'km/h'}, + time: {to: 22} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid time is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1, 2], [3, 4], [5, 6]], \"speed\": {\"value\": 30, \"units\": \"km/h\"}, ' + + '\"time\": {\"to\": 22}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid time is passed in the specification as an object', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {value: 30, units: 'km/h'}, + time: {from: 10} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if invalid time is passed in the specification as an string', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + '{\"coordinates\": [[1, 2], [3, 4], [5, 6]], \"speed\": {\"value\": 30, \"units\": \"km/h\"}, ' + + '\"time\": {\"from\": 10}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate if a valid specification object is passed', + function(done) { + try { + multilinePositionInterpolatorFunction = multilinePositionInterpolator( + { + coordinates: [[1, 2], [3, 4], [5, 6]], + speed: {value: 30, units: 'km/h'}, + time: {from: 10, to: 22} + } + ); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 5)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 5)))).containEql( + {coordinates: [1, 2]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 7)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 7)))).containEql( + {coordinates: [1, 2]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 8)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 8)))).containEql( + {coordinates: [1, 2]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 10)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 10)))).containEql( + {coordinates: [1, 2]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 17)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 17)))).containEql( + {coordinates: [2.3351126503586808, 3.3363745940384257]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 20)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 20)))).containEql( + {coordinates: [2.9083307610874596, 3.90859448519012]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 22)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 22)))).containEql( + {coordinates: [3.2898394138913325, 4.290919970982591]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 22)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 22, 30)))).containEql( + {coordinates: [3.2898394138913325, 4.290919970982591]}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 23)))).containEql( + {type: 'Point'}); + should(multilinePositionInterpolatorFunction(toDecimalHours(new Date(2016, 9, 21, 23)))).containEql( + {coordinates: [3.2898394138913325, 4.290919970982591]}); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/randomLinearInterpolator_test.js b/test/unit/interpolators/randomLinearInterpolator_test.js new file mode 100644 index 0000000..13a5e51 --- /dev/null +++ b/test/unit/interpolators/randomLinearInterpolator_test.js @@ -0,0 +1,544 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var randomLinearInterpolator = require(ROOT_PATH + '/lib/interpolators/randomLinearInterpolator'); + +describe('randomLinearInterpolator tests', function() { + var randomLinearInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid interpolation array', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator([1, 2, 3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator([[1], [2], [3]]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as a string specification', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as a string specification', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator('[1, random(2,4), 3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator('[[1], [random(2,4)], [3]]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as a string specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator('[[1], [random(2,3)], [4]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as an object specification', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator({spec: '666', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as an object specification', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: '[1, random(2,3), 4]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as an object specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: '[[1], [random(2,3)], [4]]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as an object specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: '[[1], [random(2,3)], [4]', return: {type: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return object is passed as an object specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: '[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]', return: {typeXXX: 'float'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return type is passed as an object specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: '[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]', return: {type: 'floatXXX'}}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return rounding is passed as an object specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + { + spec: '[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]', + return: {type: 'integer', rounding: 'floorXXX'} + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number is passed instead of a valid interpolation array as an object specification ' + + 'as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator('{"spec": "666", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a one level hierarchy array is passed instead of a valid interpolation array ' + + 'as an object specification as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[1, random(2,3), 4]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if a 2 level hierarchy array with one cardinality is passed instead of a ' + + 'valid interpolation array as an object specification as a string', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1], [random(2,3)], [4]]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid array is passed instead of a ' + + 'valid interpolation array as an object specification as a string', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1], [random(2,3)], [4]", "return": {"type": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an invalid return object is passed as an object specification as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]", "return": {"typeXXX": "float"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid return type is passed as an object specification as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]", "return": {"type": "floatXXX"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid return rounding is passed as an object specification as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 2], [random(3,4), 5], [random(6,7), random(8,9)]]", ' + + '"return": {"type": "integer", "rounding": "floorXXX"}}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate if valid interpolation array is passed as specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator([[1, 1], [5, 5], [10, 10]]); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(2.5)).equal(2.5); + should(randomLinearInterpolatorFunction(5)).equal(5); + should(randomLinearInterpolatorFunction(7.5)).equal(7.5); + should(randomLinearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if valid interpolation array is passed as a string specification', function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + }); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + {spec: [[1, 1], [5, 5], [10, 10]], return: {type: 'float'}}); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(2.5)).equal(2.5); + should(randomLinearInterpolatorFunction(5)).equal(5); + should(randomLinearInterpolatorFunction(7.5)).equal(7.5); + should(randomLinearInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding ceil', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + { + spec: '[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]', + return: {type: 'integer', rounding: 'ceil'} + } + ); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding floor', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + { + spec: '[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]', + return: {type: 'integer', rounding: 'floor'} + } + ); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding round', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + { + spec: '[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]', + return: {type: 'integer', rounding: 'round'} + } + ); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float '+ + 'as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": [[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]], ' + + '"return": {"type": "float"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding ceil as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": [[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]], ' + + '"return": {"type": "integer", "rounding": "ceil"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding floor as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": [[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]], ' + + '"return": {"type": "integer", "rounding": "floor"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer '+ + 'and rounding round as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": [[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]], ' + + '"return": {"type": "integer", "rounding": "round"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type float ' + + 'as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]", ' + + '"return": {"type": "float"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding ceil as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]", ' + + '"return": {"type": "integer", "rounding": "ceil"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding floor as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]", ' + + '"return": {"type": "integer", "rounding": "floor"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate if valid interpolation array is passed as an object specification with return type integer ' + + 'and rounding round as a string', + function(done) { + try { + randomLinearInterpolatorFunction = randomLinearInterpolator( + '{"spec": "[[1, 1], [random(4.5,5.5), 5], [7.5, random(7,8)], [random(9.5,10.5), random(10,11)]]", ' + + '"return": {"type": "integer", "rounding": "round"}}'); + should(randomLinearInterpolatorFunction(1)).equal(1); + should(randomLinearInterpolatorFunction(4.5)).lessThanOrEqual(5); + should(randomLinearInterpolatorFunction(7.5)).lessThanOrEqual(8); + should(randomLinearInterpolatorFunction(9.5)).lessThanOrEqual(11); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/stepAfterInterpolator_test.js b/test/unit/interpolators/stepAfterInterpolator_test.js new file mode 100644 index 0000000..84e963f --- /dev/null +++ b/test/unit/interpolators/stepAfterInterpolator_test.js @@ -0,0 +1,116 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var stepAfterInterpolator = require(ROOT_PATH + '/lib/interpolators/stepAfterInterpolator'); + +describe('stepAfterInterpolator tests', function() { + var stepAfterInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid specification', function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number as a string is passed instead of a valid specification', function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level Array is passed instead of a valid specification', function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator([1,2,3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level Array is passed as a string instead of a valid specification', + function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator('[1,2,3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid two level Array is passed instead of a valid specification', + function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator([[1], [2], [3]]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid two level Array is passed as a string instead of a valid specification', + function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator('[[1],[2],[3]]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate if valid interpolation specification is passed as an array', + function(done) { + try { + stepAfterInterpolatorFunction = stepAfterInterpolator([[1,1],[5,5],[10,10]]); + should(stepAfterInterpolatorFunction(1)).equal(1); + should(stepAfterInterpolatorFunction(2.5)).equal(1); + should(stepAfterInterpolatorFunction(5)).equal(5); + should(stepAfterInterpolatorFunction(7.5)).equal(5); + should(stepAfterInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/stepBeforeInterpolator_test.js b/test/unit/interpolators/stepBeforeInterpolator_test.js new file mode 100644 index 0000000..cefe1c2 --- /dev/null +++ b/test/unit/interpolators/stepBeforeInterpolator_test.js @@ -0,0 +1,116 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var stepBeforeInterpolator = require(ROOT_PATH + '/lib/interpolators/stepBeforeInterpolator'); + +describe('stepBeforeInterpolator tests', function() { + var stepBeforeInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid specification', function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number as a string is passed instead of a valid specification', function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level Array is passed instead of a valid specification', function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator([1,2,3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a one level Array is passed as a string instead of a valid specification', + function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator('[1,2,3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid two level Array is passed instead of a valid specification', + function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator([[1], [2], [3]]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an invalid two level Array is passed as a string instead of a valid specification', + function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator('[[1],[2],[3]]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate if valid interpolation specification is passed as an array', + function(done) { + try { + stepBeforeInterpolatorFunction = stepBeforeInterpolator([[1,1],[5,5],[10,10]]); + should(stepBeforeInterpolatorFunction(1)).equal(1); + should(stepBeforeInterpolatorFunction(2.5)).equal(5); + should(stepBeforeInterpolatorFunction(5)).equal(5); + should(stepBeforeInterpolatorFunction(7.5)).equal(10); + should(stepBeforeInterpolatorFunction(10)).equal(10); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/interpolators/textRotationInterpolator_test.js b/test/unit/interpolators/textRotationInterpolator_test.js new file mode 100644 index 0000000..51ae211 --- /dev/null +++ b/test/unit/interpolators/textRotationInterpolator_test.js @@ -0,0 +1,494 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var textRotationInterpolator = require(ROOT_PATH + '/lib/interpolators/textRotationInterpolator'); + +describe('textRotationInterpolator tests', function() { + var textRotationInterpolatorFunction; + + it('should throw an error if a number is passed instead of a valid specification', function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator(666); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if a number as a string is passed instead of a valid specification', function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator('666'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an Array is passed instead of a valid specification', function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator([1,2,3]); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an Array is passed as a string instead of a valid specification', function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator('[1,2,3]'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + }); + + it('should throw an error if an object with no units property is passed instead of a valid specification', + function(done) { + try { + textRotationInterpolatorFunction = + textRotationInterpolator( + {text: [[0,'PENDING'],[15,'REQUESTED'],[30,[[50,'COMPLETED'],[50,'ERROR']]],[45,'REMOVED']]}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no text property is passed instead of a valid specification', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator({units: 'minutes'}); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with an invalid units property is passed instead of a valid specification', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'not-valid-units', + text: [[0,'PENDING'],[15,'REQUESTED'],[30,[[50,'COMPLETED'],[50,'ERROR']]],[45,'REMOVED']] + } + ); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no units property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + textRotationInterpolatorFunction = + textRotationInterpolator( + '{"text": [[0,"PENDING"],[15,"REQUESTED"],[30,[[50,"COMPLETED"],[50,"ERROR"]]],[45,"REMOVED"]]}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with no text property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator('{"units": "minutes"}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should throw an error if an object with an invalid units property is passed instead of a valid specification ' + + 'as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "not-valid-units",' + + '"text": [[0,"PENDING"],[15,"REQUESTED"],[30,[[50,"COMPLETED"],[50,"ERROR"]]],[45,"REMOVED"]]}'); + done(new Error('It should throw an InvalidInterpolationSpec error')); + } catch(exception) { + should(exception).be.an.instanceof(fdsErrors.InvalidInterpolationSpec); + done(); + } + } + ); + + it('should interpolate for seconds as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'seconds', + text: [[5,'PENDING'],[15,'REQUESTED'],[30,[[50,'COMPLETED'],[50,'ERROR']]],[45,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:05Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:10Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:15Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:20Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:30Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:35Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:45Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:55Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for seconds as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "seconds",' + + '"text": [[5,"PENDING"],[15,"REQUESTED"],[30,[[50,"COMPLETED"],[50,"ERROR"]]],[45,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:05Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:10Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:15Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:20Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:30Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:35Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:45Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:55Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for minutes as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'minutes', + text: [[5,'PENDING'],[15,'REQUESTED'],[30,[[50,'COMPLETED'],[50,'ERROR']]],[45,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:05:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for minutes as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "minutes",' + + '"text": [[5,"PENDING"],[15,"REQUESTED"],[30,[[50,"COMPLETED"],[50,"ERROR"]]],[45,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:05:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T16:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for hours as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'hours', + text: [[5,'PENDING'],[15,'REQUESTED'],[18,[[50,'COMPLETED'],[50,'ERROR']]],[22,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T05:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for hours as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "hours",' + + '"text": [[5,"PENDING"],[15,"REQUESTED"],[18,[[50,"COMPLETED"],[50,"ERROR"]]],[22,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-10-20T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-20T05:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-20T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-20T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for days as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'days', + text: [[0,'PENDING'],[2,'REQUESTED'],[4,[[50,'COMPLETED'],[50,'ERROR']]],[6,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-10-16T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-17T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-18T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-19T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-21T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-22T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-23T23:55:00Z'))).equal('PENDING'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for days as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "days",' + + '"text": [[0,"PENDING"],[2,"REQUESTED"],[4,[[50,"COMPLETED"],[50,"ERROR"]]],[6,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-10-16T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-17T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-18T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-19T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-21T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-22T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-23T23:55:00Z'))).equal('PENDING'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for dates as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'dates', + text: [[5,'PENDING'],[10,'REQUESTED'],[20,[[50,'COMPLETED'],[50,'ERROR']]],[30,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-10-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-05T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-07T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for dates as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "dates",' + + '"text": [[5,"PENDING"],[10,"REQUESTED"],[20,[[50,"COMPLETED"],[50,"ERROR"]]],[30,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-10-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-10-05T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-07T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-10-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-10-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-10-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-10-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for months as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'months', + text: [[2,'PENDING'],[4,'REQUESTED'],[7,[[50,'COMPLETED'],[50,'ERROR']]],[10,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('2016-01-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-03-01T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-04-05T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-05-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-06-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-08-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-11-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-12-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for months as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "months",' + + '"text": [[2,"PENDING"],[4,"REQUESTED"],[7,[[50,"COMPLETED"],[50,"ERROR"]]],[10,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('2016-01-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2016-03-01T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-04-05T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2016-05-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2016-06-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-08-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2016-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2016-11-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2016-12-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for years as units if valid interpolation specification is passed as an object', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + { + units: 'years', + text: [[2000,'PENDING'],[2005,'REQUESTED'],[2010,[[50,'COMPLETED'],[50,'ERROR']]],[2015,'REMOVED']] + } + ); + should(textRotationInterpolatorFunction(new Date('1999-01-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2000-01-01T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2003-03-05T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2005-05-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2007-06-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2010-08-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2013-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2015-11-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2020-12-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); + + it('should interpolate for years as units if valid interpolation specification is passed as a string', + function(done) { + try { + textRotationInterpolatorFunction = textRotationInterpolator( + '{"units": "years",' + + '"text": [[2000,"PENDING"],[2005,"REQUESTED"],[2010,[[50,"COMPLETED"],[50,"ERROR"]]],[2015,"REMOVED"]]}' + ); + should(textRotationInterpolatorFunction(new Date('1999-01-01T00:00:00Z'))).equal(null); + should(textRotationInterpolatorFunction(new Date('2000-01-01T00:00:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2003-03-05T08:10:00Z'))).equal('PENDING'); + should(textRotationInterpolatorFunction(new Date('2005-05-10T15:15:00Z'))).equal('REQUESTED'); + should(textRotationInterpolatorFunction(new Date('2007-06-15T16:20:00Z'))).equal('REQUESTED'); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2010-08-20T18:30:00Z'))); + should(['COMPLETED', 'ERROR']).containEql(textRotationInterpolatorFunction(new Date('2013-10-25T19:35:00Z'))); + should(textRotationInterpolatorFunction(new Date('2015-11-30T22:45:00Z'))).equal('REMOVED'); + should(textRotationInterpolatorFunction(new Date('2020-12-31T23:55:00Z'))).equal('REMOVED'); + done(); + } catch(exception) { + done(exception); + } + } + ); +}); diff --git a/test/unit/messages/token-response-body.json b/test/unit/messages/token-response-body.json new file mode 100644 index 0000000..6790e57 --- /dev/null +++ b/test/unit/messages/token-response-body.json @@ -0,0 +1,37 @@ +{ + "token": { + "methods": [ + "password" + ], + "roles": [ + { + "id": "070b959e0271426eaff511a9c4c21c96", + "name": "c4b26f30149346b1944acb8dd901088c#SubServiceCustomer" + }, + { + "id": "25c5673b78794ed6a25086dc4f738a09", + "name": "c4b26f30149346b1944acb8dd901088c#SubServiceAdmin" + } + ], + "expires_at": "2016-08-08T11:58:26.401Z", + "project": { + "domain": { + "id": "c4b26f30149346b1944acb8dd901088c", + "name": "myService" + }, + "id": "56416a08f97a42f4b2f1cd1bd21612e9", + "name": "/mySubService" + }, + "catalog": [], + "extras": {}, + "user": { + "domain": { + "id": "c4b26f30149346b1944acb8dd901088c", + "name": "myService" + }, + "id": "eadb75f6aa3040bb864b35d5b17b2452", + "name": "userToGenerateAuthenticationTokens" + }, + "issued_at": "2016-08-08T10:58:26.401Z" + } +} diff --git a/test/unit/templates/template-array.json b/test/unit/templates/template-array.json new file mode 100644 index 0000000..b5d8bb5 --- /dev/null +++ b/test/unit/templates/template-array.json @@ -0,0 +1 @@ +[1, 2, 3] diff --git a/test/unit/templates/template-attribute-condition.json b/test/unit/templates/template-attribute-condition.json new file mode 100644 index 0000000..9c9a01a --- /dev/null +++ b/test/unit/templates/template-attribute-condition.json @@ -0,0 +1,6 @@ +[ + { + "content": "the-content", + "condition": "${{entity_name==the-.*-name}{name==the-.*-name}}" + } +] diff --git a/test/unit/templates/template-entity-condition.json b/test/unit/templates/template-entity-condition.json new file mode 100644 index 0000000..16a0885 --- /dev/null +++ b/test/unit/templates/template-entity-condition.json @@ -0,0 +1,6 @@ +[ + { + "content": "the-content", + "condition": "${{entity_name==the-.*-name}}" + } +] diff --git a/test/unit/templates/template-number.json b/test/unit/templates/template-number.json new file mode 100644 index 0000000..7cc86ad --- /dev/null +++ b/test/unit/templates/template-number.json @@ -0,0 +1 @@ +666 diff --git a/test/unit/templates/template-object.json b/test/unit/templates/template-object.json new file mode 100644 index 0000000..0e1d228 --- /dev/null +++ b/test/unit/templates/template-object.json @@ -0,0 +1,5 @@ +{ + "property1": "value1", + "property2": "value2", + "property3": "value3" +} diff --git a/test/unit/templates/template-schedule-entity-condition.json b/test/unit/templates/template-schedule-entity-condition.json new file mode 100644 index 0000000..0efafcb --- /dev/null +++ b/test/unit/templates/template-schedule-entity-condition.json @@ -0,0 +1,10 @@ +[ + { + "content": "not-matching", + "condition": "${{entity_name==the-.*-NAME}}" + }, + { + "content": "the-entity-schedule", + "condition": "${{entity_name==the-.*-name}}" + } +] diff --git a/test/unit/templates/template-string.json b/test/unit/templates/template-string.json new file mode 100644 index 0000000..1f81d7f --- /dev/null +++ b/test/unit/templates/template-string.json @@ -0,0 +1 @@ +"template-value" diff --git a/test/unit/templates/template-type-attribute-condition.json b/test/unit/templates/template-type-attribute-condition.json new file mode 100644 index 0000000..293450e --- /dev/null +++ b/test/unit/templates/template-type-attribute-condition.json @@ -0,0 +1,6 @@ +[ + { + "content": "the-attribute-type", + "condition": "${{entity_name==the-.*-name}{name==the-.*-name}}" + } +] diff --git a/test/unit/templates/template-type-entity-condition.json b/test/unit/templates/template-type-entity-condition.json new file mode 100644 index 0000000..7e6fa0e --- /dev/null +++ b/test/unit/templates/template-type-entity-condition.json @@ -0,0 +1,6 @@ +[ + { + "content": "the-entity-type", + "condition": "${{entity_name==the-.*-name}}" + } +] diff --git a/test/unit/templates/template-value-attribute-condition.json b/test/unit/templates/template-value-attribute-condition.json new file mode 100644 index 0000000..c5e3604 --- /dev/null +++ b/test/unit/templates/template-value-attribute-condition.json @@ -0,0 +1,14 @@ +[ + { + "content": "not-matching", + "condition": "${{entity_name==the-.*-NAME}{name==the-.*-name}}" + }, + { + "content": "not-matching", + "condition": "${{entity_name==the-.*-name}{name==the-.*-NAME}}" + }, + { + "content": "the-attribute-value", + "condition": "${{entity_name==the-.*-name}{name==the-.*-name}}" + } +] diff --git a/test/unit/transpilers/fiwareDeviceSimulatorTranspiler_test.js b/test/unit/transpilers/fiwareDeviceSimulatorTranspiler_test.js new file mode 100644 index 0000000..2fcf770 --- /dev/null +++ b/test/unit/transpilers/fiwareDeviceSimulatorTranspiler_test.js @@ -0,0 +1,806 @@ +/* + * Copyright 2016 Telefónica Investigación y Desarrollo, S.A.U + * + * This file is part of the Short Time Historic (STH) component + * + * STH is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * STH is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * See the GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with STH. + * If not, see http://www.gnu.org/licenses/. + * + * For those usages not covered by the GNU Affero General Public License + * please contact with: [german.torodelvalle@telefonica.com] + */ + +'use strict'; + +var should = require('should'); + +var ROOT_PATH = require('app-root-path'); +var fdsErrors = require(ROOT_PATH + '/lib/errors/fdsErrors'); +var fiwareDeviceSimulatorTranspiler = require(ROOT_PATH + '/lib/transpilers/fiwareDeviceSimulatorTranspiler'); + +describe('fiwareDeviceSimulatorTranspiler tests', function() { + it('should not import anything if no template is included', function() { + fiwareDeviceSimulatorTranspiler.transpile( + { + should: 'not-transform-anything' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration).containEql({should: 'not-transform-anything'}); + } + ); + }); + + it('should throw an error if a template cannot be resolved', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + property: 'import(inexistent-template)' + }, + function(err) { + should(err).be.an.instanceof(fdsErrors.SimulationConfigurationNotValid); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import a string template if defined in the exports property', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: 'template-value' + }, + property: 'import(template)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration).containEql({property: 'template-value'}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import a string template if defined in an external template file', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + property: 'import(test/unit/templates/template-string)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration).containEql({property: 'template-value'}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import a number template if defined in the exports property', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: 666 + }, + property: 'import(template)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration).containEql({property: 666}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import a number template if defined in an external template file', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + property: 'import(test/unit/templates/template-number)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration).containEql({property: 666}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import an array template if defined in the exports property', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [1, 2, 3] + }, + property: 'import(template)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.property).containEql(1); + should(newConfiguration.property).containEql(2); + should(newConfiguration.property).containEql(3); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import an array template if defined in an external template file', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + property: 'import(test/unit/templates/template-array)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.property).containEql(1); + should(newConfiguration.property).containEql(2); + should(newConfiguration.property).containEql(3); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import an object template if defined in the exports property', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: { + 'property1': 'value1', + 'property2': 'value2', + 'property3': 'value3' + } + }, + property: 'import(template)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.property).containEql({property1: 'value1'}); + should(newConfiguration.property).containEql({property2: 'value2'}); + should(newConfiguration.property).containEql({property3: 'value3'}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import an object template if defined in an external template file', function(done) { + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + property: 'import(test/unit/templates/template-object)' + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.property).containEql({property1: 'value1'}); + should(newConfiguration.property).containEql({property2: 'value2'}); + should(newConfiguration.property).containEql({property3: 'value3'}); + done(); + } + ); + } catch (exception) { + done(exception); + } + }); + + it('should import the template value if the entity condition is satified if defined in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-name', + schedule: 'import(template)' + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].schedule).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import the template value if the entity condition is satified if defined in an external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-name', + schedule: 'import(test/unit/templates/template-entity-condition)' + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].schedule).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the entity condition is not satified if defined in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-NAME', + schedule: 'import(template)' + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].schedule).equal('import(template)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the entity condition is not satified if defined in an ' + + 'external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-NAME', + schedule: 'import(test/unit/templates/template-entity-condition)' + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].schedule).equal( + 'import(test/unit/templates/template-entity-condition)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import the template value of an attribute if the entity condition is satified if defined ' + + 'in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-name', + value: 'import(template)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import the template value of an attribute if the entity condition is satified if defined ' + + 'in an external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-name', + value: 'import(test/unit/templates/template-entity-condition)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import the template value of an attribute if the attribute condition is satified if defined ' + + 'in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-name', + value: 'import(template)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import the template value of an attribute if the attribute condition is satified if defined ' + + 'in an external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-name', + value: 'import(test/unit/templates/template-attribute-condition)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('the-content'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the attribute condition is not satified in the entity part ' + + 'if defined in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-NAME', + active: [ + { + name: 'the-attribute-name', + value: 'import(template)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('import(template)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the attribute condition is not satified in the entity part ' + + 'if defined in an external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-NAME', + active: [ + { + name: 'the-attribute-name', + value: 'import(test/unit/templates/template-attribute-condition)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal( + 'import(test/unit/templates/template-attribute-condition)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the attribute condition is not satified in the attribute part ' + + 'if defined in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + template: [ + { + 'content': 'the-content', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-NAME', + value: 'import(template)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal('import(template)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should not import the template value if the attribute condition is not satified in the attribute part ' + + 'if defined in an external template file', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-name', + active: [ + { + name: 'the-attribute-NAME', + value: 'import(test/unit/templates/template-attribute-condition)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].active[0].value).equal( + 'import(test/unit/templates/template-attribute-condition)'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import correctly a complex simulation configuration file using templates if defined ' + + 'in the exports property', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + exports: { + 'template-1': [ + { + 'content': 'the-entity-type', + 'condition': '${{entity_name==the-.*-name}}' + } + ], + 'template-2': [ + { + 'content': 'not-matching', + 'condition': '${{entity_name==the-.*-NAME}}' + }, + { + 'content': 'the-entity-schedule', + 'condition': '${{entity_name==the-.*-name}}' + } + ], + 'template-3': [ + { + 'content': 'the-attribute-type', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-name}}' + } + ], + 'template-4': [ + { + 'content': 'not-matching', + 'condition': '${{entity_name==the-.*-NAME}{name==the-.*-name}}' + }, + { + 'content': 'not-matching', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-NAME}}' + }, + { + 'content': 'the-attribute-value', + 'condition': '${{entity_name==the-.*-name}{name==the-.*-name}}' + } + ] + }, + entities: [ + { + entity_name: 'the-entity-name', + type: 'import(template-1)', + schedule: 'import(template-2)', + active: [ + { + name: 'the-attribute-name', + type: 'import(template-3)', + value: 'import(template-4)' + }, + { + name: 'the-attribute-name', + type: 'import(template-3)', + value: 'import(template-4)' + } + ] + }, + { + entity_name: 'the-entity-name', + type: 'import(template-1)', + schedule: 'import(template-2)', + active: [ + { + name: 'the-attribute-name', + type: 'import(template-3)', + value: 'import(template-4)' + }, + { + name: 'the-attribute-name', + type: 'import(template-3)', + value: 'import(template-4)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].type).equal('the-entity-type'); + should(newConfiguration.entities[0].schedule).equal('the-entity-schedule'); + should(newConfiguration.entities[0].active[0].type).equal('the-attribute-type'); + should(newConfiguration.entities[0].active[0].value).equal('the-attribute-value'); + should(newConfiguration.entities[0].active[1].type).equal('the-attribute-type'); + should(newConfiguration.entities[0].active[1].value).equal('the-attribute-value'); + should(newConfiguration.entities[1].type).equal('the-entity-type'); + should(newConfiguration.entities[1].schedule).equal('the-entity-schedule'); + should(newConfiguration.entities[1].active[0].type).equal('the-attribute-type'); + should(newConfiguration.entities[1].active[0].value).equal('the-attribute-value'); + should(newConfiguration.entities[1].active[1].type).equal('the-attribute-type'); + should(newConfiguration.entities[1].active[1].value).equal('the-attribute-value'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); + + it('should import correctly a complex simulation configuration file using templates if defined ' + + 'in external template files', + function (done) { + /* jshint camelcase: false */ + try{ + fiwareDeviceSimulatorTranspiler.transpile( + { + entities: [ + { + entity_name: 'the-entity-name', + type: 'import(test/unit/templates/template-type-entity-condition)', + schedule: 'import(test/unit/templates/template-schedule-entity-condition)', + active: [ + { + name: 'the-attribute-name', + type: 'import(test/unit/templates/template-type-attribute-condition)', + value: 'import(test/unit/templates/template-value-attribute-condition)' + }, + { + name: 'the-attribute-name', + type: 'import(test/unit/templates/template-type-attribute-condition)', + value: 'import(test/unit/templates/template-value-attribute-condition)' + } + ] + }, + { + entity_name: 'the-entity-name', + type: 'import(test/unit/templates/template-type-entity-condition)', + schedule: 'import(test/unit/templates/template-schedule-entity-condition)', + active: [ + { + name: 'the-attribute-name', + type: 'import(test/unit/templates/template-type-attribute-condition)', + value: 'import(test/unit/templates/template-value-attribute-condition)' + }, + { + name: 'the-attribute-name', + type: 'import(test/unit/templates/template-type-attribute-condition)', + value: 'import(test/unit/templates/template-value-attribute-condition)' + } + ] + } + ] + }, + function(err, newConfiguration) { + should(err).equal(null); + should(newConfiguration.entities[0].type).equal('the-entity-type'); + should(newConfiguration.entities[0].schedule).equal('the-entity-schedule'); + should(newConfiguration.entities[0].active[0].type).equal('the-attribute-type'); + should(newConfiguration.entities[0].active[0].value).equal('the-attribute-value'); + should(newConfiguration.entities[0].active[1].type).equal('the-attribute-type'); + should(newConfiguration.entities[0].active[1].value).equal('the-attribute-value'); + should(newConfiguration.entities[1].type).equal('the-entity-type'); + should(newConfiguration.entities[1].schedule).equal('the-entity-schedule'); + should(newConfiguration.entities[1].active[0].type).equal('the-attribute-type'); + should(newConfiguration.entities[1].active[0].value).equal('the-attribute-value'); + should(newConfiguration.entities[1].active[1].type).equal('the-attribute-type'); + should(newConfiguration.entities[1].active[1].value).equal('the-attribute-value'); + done(); + } + ); + } catch (exception) { + done(exception); + } + /* jshint camelcase: true */ + } + ); +}); diff --git a/tools/github-pages.sh b/tools/github-pages.sh new file mode 100644 index 0000000..59845fc --- /dev/null +++ b/tools/github-pages.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +git checkout --orphan gh-pages +git rm -rf . +git checkout master -- ghpages +mv ghpages/* . +rmdir ghpages/ +echo "node_modules" > .gitignore +git add . +git commit -am "CREATE GitHub pages for the project" +git push origin gh-pages +git checkout master +git clone git://github.com/gtv/fiware-device-simulator.git site +cd site +git checkout gh-pages + diff --git a/tools/init-site-env.sh b/tools/init-site-env.sh new file mode 100644 index 0000000..0885782 --- /dev/null +++ b/tools/init-site-env.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +git clone git://github.com/gtv/fiware-device-simulator.git site +cd site +git checkout gh-pages \ No newline at end of file diff --git a/tools/mocha-globals.js b/tools/mocha-globals.js new file mode 100644 index 0000000..d26fa19 --- /dev/null +++ b/tools/mocha-globals.js @@ -0,0 +1,16 @@ +var sinon = require ('sinon'), + chai = require ('chai'), + sinonChai = require('sinon-chai'); + +chai.use(sinonChai); + +global.expect = chai.expect; +global.should = chai.should(); + +beforeEach(function(){ + global.sinon = sinon.sandbox.create(); +}); + +afterEach(function(){ + global.sinon.restore(); +}); diff --git a/tools/tasks/README.md b/tools/tasks/README.md new file mode 100644 index 0000000..4358a87 --- /dev/null +++ b/tools/tasks/README.md @@ -0,0 +1,8 @@ +Grunt Tasks +=========== + +Include here all the custom grunt tasks related to the project. + +Try to isolate common tasks in separate repositories, and share with your colleagues (*) + +(* pending to solve npm full compliance within pdihub) diff --git a/tools/tasks/contributors.js b/tools/tasks/contributors.js new file mode 100644 index 0000000..a8f9bc4 --- /dev/null +++ b/tools/tasks/contributors.js @@ -0,0 +1,35 @@ +module.exports = function(grunt) { + + var exec = require('child_process').exec; + + grunt.registerTask('contributors', 'Update contributors in package.json', function() { + var done = this.async(); + + exec('git log --pretty=short | git shortlog -nse', function(err, stdout) { + var pkgFile = grunt.config('pkgFile'); + var pkg = grunt.file.readJSON(pkgFile); + + pkg.contributors = stdout.toString().split('\n').slice(1, -1).map(function(line) { + return line.replace(/^[\W\d]+/, ''); + }); + + grunt.file.write(pkgFile, JSON.stringify(pkg, null, ' ') + '\n'); + + exec('git status -s ' + pkgFile, function(err, stdout) { + if (!stdout) { + grunt.log.ok('The contributors list is already up to date.'); + return done(); + } + + exec('git commit ' + pkgFile + ' -m "UPDATE contributors"', function(err) { + if (err) { + grunt.log.error('Cannot commit contributors changes.'); + } else { + grunt.log.ok('The contributors list has been updated.'); + } + done(); + }); + }); + }); + }); +};