From 6d1d60a9c15c7ea39f704311c5287a1fa225c023 Mon Sep 17 00:00:00 2001 From: rxf Date: Mon, 18 Dec 2023 17:23:59 +0100 Subject: [PATCH] auf aktuelle esprimo-Version updated --- .DS_Store | Bin 0 -> 8196 bytes .dockerignore | 1 + .gitignore | 2 + Dockerfile_readin | 27 ++ build_and_copy.sh | 4 +- crontab.tmp | 2 +- deploy.sh | 19 + docker-compose.yml | 51 ++- docs/.DS_Store | Bin 0 -> 6148 bytes docs/Laerm_API.pdf | Bin 0 -> 73338 bytes mongo.js | 2 +- package-lock.json | 939 +-------------------------------------------- package.json | 2 +- parse.js | 7 +- readdata.js | 1 - ts_rotate | 9 + 16 files changed, 102 insertions(+), 964 deletions(-) create mode 100644 .DS_Store create mode 100644 Dockerfile_readin create mode 100755 deploy.sh create mode 100644 docs/.DS_Store create mode 100644 docs/Laerm_API.pdf create mode 100644 ts_rotate diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..44791d936334cfe1b7abdd4b575508f5706b4a07 GIT binary patch literal 8196 zcmeHMTWl3Y7@luiV0XE6S_*6rs7EUTwOm?kp@8Jj3(|5^PNAiMhjY#@u(I7PXZM_< zgxE+-OhBWF`X)xBQ6D7n8Z|;_aWEJxyES!3UIton+>p zng9QHX1@9UoilqFV`wj$O^g|gF_p5Ad^#0ZNJ202Wl4#8DoKL;S#H=L$~j(++V5Xx z9e2bC#0bO)#0bO)#0Xpu2+)}=l6sYMUuxqrMj%GuhD1QTACi=XOhs};%J9`eMR)}u zDXsuvqB<89lF3M>A~_-@X(&Oul9aB9t{9N+)Sry(Qjr{yQo1ulmk&fEBf6m=9G#w@ z49yu*QpRPBK#aiU2#D~hWG3@ip84bN@3|qz_Jb8GE2fYdbtQ$l9(|2pw$GB9py+wrhIB?OxF}{m?fp6{@Cc z8D4kn*sA8H#$mUukvYi-FeTww_pi< zU*2}B({>N;9JbBi z&;UW_2KE8lDrj1@($?!{2dzYLW{KV~@~u6f7#u$l>;dhTiMbTzNJ!T+*QHy@zQJxvxprWy^JAr<2WD4mUM9 z&dR%Vqpu_}z8l&#J*Bi$DV&pAZKiEEGxiqWyqT$^F9a{SF0Hs74KDV*wUp2^z2xtFZ=au?}76!4_=AHuPa1GT4tS9zX#BiYVb> zJcg4vg~#zMUdAhU6|dntDLh^ zj)%U9)KbI}#{!(Jszyo5~R;<7!--5!0=ss-P>MCashDZ7MOHPm#@q`XZG$ z&Zo*|L!wcosNzc4)R!lkG>RQwA)5_}7ER@ljn(=ZjiQKGj@B9T=C0G%>zs)w*5s4g z6P+qW0$2Y%Mc-f_u#bqMqeRgk*pKXI_BT{;%taD+U=fk>PAo+$R-uikDTuido6wET z=*3PVXFmpzhlv9?2%8A%6Ga6a{@-==@Bi0+BJl_@0x<&r8v>~8On0`^ z@K<{ki@SD`@_x!93A+&~Ll-K->p02qI! /etc/timezone + +RUN crontab crontab.tmp +RUN deluser --remove-home node + +RUN touch cmds.sh \ + && echo 'crond -f' >>cmds.sh + +CMD sh ./cmds.sh + + + diff --git a/build_and_copy.sh b/build_and_copy.sh index 79d3359..8d4a210 100755 --- a/build_and_copy.sh +++ b/build_and_copy.sh @@ -14,8 +14,8 @@ set -x port="" -orgName=timeseries -name=timeseries +orgName=readin +name=readin usage() { diff --git a/crontab.tmp b/crontab.tmp index 8b48cc6..60f118f 100644 --- a/crontab.tmp +++ b/crontab.tmp @@ -1,2 +1,2 @@ -1-59/5 * * * * cd /opt/app && npm start +3-59/5 * * * * cd /opt/app && npm start diff --git a/deploy.sh b/deploy.sh new file mode 100755 index 0000000..d039f5f --- /dev/null +++ b/deploy.sh @@ -0,0 +1,19 @@ +# Deploy Sensor-Files via esprimo und docker.citysensor.de +# 2023-12-17 rxf +# + +# set -x + +LINUX='esprimo' +path="/home/rxf/Projekte/Sensors" +name=readin + +rsync -avn --exclude=node_modules --exclude=.git --exclude=deploy.sh --exclude=TRANSFERE --exclude=INFLUXSERVER --exclude=data --exclude=log --exclude=.idea --exclude=.vscode --exclude=docs ./ $LINUX:$path/$name +exit 0 + +ssh $LINUX "cd $path/$name; + ./build_and_copy.sh localhost; + docker tag $name docker.citysensor.de/$name; + docker push docker.citysensor.de/$name;" + +exit 0 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 8869733..d3fe7af 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,45 +1,54 @@ version: '3.9' volumes: - mongo_data_1: + mongo_vol: + influx_vol: services: - node: + timeseries: image: timeseries environment: DEVELOP: "true" MONGOHOST: mongodb + MONGOUSRP: "rexfue:noise4mongo" + MONGOAUTH: "true" INFLUXHOST: influxdb + INFLUXTOKEN: "q35XUBaElzcy8dDd9HF2_mpeHvYCampZg_9mJNP5jeBQRopq3EWIzNTZ555QLSIXhZC05RXCoFgjiaT7VzyNkQ==" TYP: "[\"noise\", \"thp\"]" volumes: - ${PWD}/log:/var/log container_name: timeseries restart: unless-stopped - influx: - image: influxdb:latest - container_name: influxdb + mongodb: + image: mongo:6 volumes: - - ${PWD}/INFLUXSERVER/data:/var/lib/influxdb2 - - ${PWD}/INFLUXSERVER/config:/etc/influxdb2 + - ${PWD}/entries:/docker-entrypoint-initdb.d + - mongo_vol:/data/db + ports: + - "27017:27017" + container_name: mongodb + environment: + - MONGO_INITDB_DATABASE=sensor_data + - MONGO_INITDB_ROOT_USERNAME=${MONGO_ROOT_USERNAME} + - MONGO_INITDB_ROOT_PASSWORD=${MONGO_ROOT_PASSWORD} + restart: unless-stopped + + influxdb: + image: influxdb:2.0 ports: - '8086:8086' + volumes: + - influx_vol:/var/lib/influxdb2 environment: - DOCKER_INFLUXDB_INIT_MODE: ${DOCKER_INFLUXDB_INIT_MODE} + DOCKER_INFLUXDB_INIT_MODE: setup DOCKER_INFLUXDB_INIT_USERNAME: ${DOCKER_INFLUXDB_INIT_USERNAME} DOCKER_INFLUXDB_INIT_PASSWORD: ${DOCKER_INFLUXDB_INIT_PASSWORD} - DOCKER_INFLUXDB_INIT_ORG: ${DOCKER_INFLUXDB_INIT_ORG} - DOCKER_INFLUXDB_INIT_BUCKET: ${DOCKER_INFLUXDB_INIT_BUCKET} - restart: unless-stopped + DOCKER_INFLUXDB_INIT_ORG: citysensor + DOCKER_INFLUXDB_INIT_BUCKET: sensor_data + DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: ${DOCKER_INFLUXTOKEN} + restart: + unless-stopped + container_name: influxdb - mongodb: - image: mongo - volumes: - - mongo_data_1:/data/db - - ${PWD}/TRANSFERE:/TRANSFERE - ports: - - "27098:27017" - container_name: mongodb - # command: '--auth' - restart: unless-stopped diff --git a/docs/.DS_Store b/docs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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%0DH4! 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

aS?ICVq3Quv{XG2ox)Zt`y7hcV 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 literal 0 HcmV?d00001 diff --git a/mongo.js b/mongo.js index 6da26ce..f90fa27 100644 --- a/mongo.js +++ b/mongo.js @@ -11,7 +11,7 @@ let MONGOHOST = process.env.MONGOHOST || 'localhost' let MONGOPORT = process.env.MONGOPORT || 27017 let MONGOAUTH = process.env.MONGOAUTH || 'false' let MONGOUSRP = process.env.MONGOUSRP || '' -let MONGOBASE = process.env.MONGOBASE || 'allsensors' +let MONGOBASE = process.env.MONGOBASE || 'sensor_data' let MONGO_URL = 'mongodb://' + MONGOHOST + ':' + MONGOPORT; // URL to mongo database diff --git a/package-lock.json b/package-lock.json index e7d2581..33dbea7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19 +1,17 @@ { - "name": "timeseries_mongo", - "version": "1.2.0", + "name": "timeseries", + "version": "2.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "timeseries_mongo", - "version": "1.2.0", + "name": "timeseries", + "version": "2.1.0", "license": "ISC", "dependencies": { "axios": "^0.26.1", "luxon": "^2.3.1", "mongodb": "^4.4.1", - "mqtt": "^4.3.7", - "node-schedule": "^2.1.0", "posix-getopt": "^1.2.1" } }, @@ -1232,11 +1230,6 @@ "follow-redirects": "^1.14.8" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1256,31 +1249,12 @@ } ] }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -1315,121 +1289,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/commist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "dependencies": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "engines": [ - "node >= 6.0" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/cron-parser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz", - "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==", - "dependencies": { - "is-nan": "^1.3.2", - "luxon": "^1.26.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cron-parser/node_modules/luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, "node_modules/fast-xml-parser": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", @@ -1471,90 +1330,6 @@ } } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/help-me": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", - "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", - "dependencies": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1574,69 +1349,11 @@ } ] }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-sdsl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-2.1.4.tgz", - "integrity": "sha512-/Ew+CJWHNddr7sjwgxaVeIORIH4AMVC9dy0hPf540ZGMVgS9d3ajwuVdyhDt6/QUvT8ATjR3yuYBKsS79F+H4A==" - }, - "node_modules/leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/luxon": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", @@ -1651,22 +1368,6 @@ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "optional": true }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, "node_modules/mongodb": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz", @@ -1693,99 +1394,6 @@ "whatwg-url": "^11.0.0" } }, - "node_modules/mqtt": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", - "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", - "dependencies": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - }, - "bin": { - "mqtt": "bin/mqtt.js", - "mqtt_pub": "bin/pub.js", - "mqtt_sub": "bin/sub.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "dependencies": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/node-schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.0.tgz", - "integrity": "sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==", - "dependencies": { - "cron-parser": "^3.5.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/number-allocator": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.10.tgz", - "integrity": "sha512-K4AvNGKo9lP6HqsZyfSr9KDaqnwFzW203inhQEOwFrmFaYevpdX4VNwdOLk197aHujzbT//z6pCBrCOUYSM5iw==", - "dependencies": { - "debug": "^4.3.1", - "js-sdsl": "^2.1.2" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/posix-getopt": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.2.1.tgz", @@ -1794,20 +1402,6 @@ "node": "*" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", @@ -1816,48 +1410,6 @@ "node": ">=6" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=" - }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -1880,11 +1432,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -1894,27 +1441,6 @@ "memory-pager": "^1.0.2" } }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dependencies": { - "readable-stream": "^3.0.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", @@ -1938,21 +1464,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "optional": true }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, "node_modules/undici-types": { "version": "5.25.3", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -1981,44 +1497,6 @@ "engines": { "node": ">=12" } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } }, "dependencies": { @@ -3070,41 +2548,17 @@ "follow-redirects": "^1.14.8" } }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, "bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", "optional": true }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "bson": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", @@ -3122,97 +2576,6 @@ "ieee754": "^1.1.13" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "commist": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-1.1.0.tgz", - "integrity": "sha512-rraC8NXWOEjhADbZe9QBNzLAN5Q3fsTPQtBV+fEVj6xKIgDgNiEVE6ZNfHpZOqfQ21YUzfVNUXLOEZquYvQPPg==", - "requires": { - "leven": "^2.1.0", - "minimist": "^1.1.0" - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "cron-parser": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-3.5.0.tgz", - "integrity": "sha512-wyVZtbRs6qDfFd8ap457w3XVntdvqcwBGxBoTvJQH9KGVKL/fB+h2k3C8AqiVxvUQKN1Ps/Ns46CNViOpVDhfQ==", - "requires": { - "is-nan": "^1.3.2", - "luxon": "^1.26.0" - }, - "dependencies": { - "luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==" - } - } - }, - "debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { - "ms": "2.1.2" - } - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "duplexify": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.2.tgz", - "integrity": "sha512-fz3OjcNCHmRP12MJoZMPglx8m4rrFP8rovnk4vT8Fs+aonZoCwGg10dSsQsfP/E62eZcPTMSMP6686fu9Qlqtw==", - "requires": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "requires": { - "once": "^1.4.0" - } - }, "fast-xml-parser": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", @@ -3227,125 +2590,16 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "requires": { - "get-intrinsic": "^1.1.1" - } - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "help-me": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-3.0.0.tgz", - "integrity": "sha512-hx73jClhyk910sidBB7ERlnhMlFsJJIBqSVMFDwPN8o2v9nmp5KgLq1Xz1Bf1fCMMZ6mPrX159iG0VLy/fPMtQ==", - "requires": { - "glob": "^7.1.6", - "readable-stream": "^3.6.0" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" }, - "is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - } - }, - "js-sdsl": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-2.1.4.tgz", - "integrity": "sha512-/Ew+CJWHNddr7sjwgxaVeIORIH4AMVC9dy0hPf540ZGMVgS9d3ajwuVdyhDt6/QUvT8ATjR3yuYBKsS79F+H4A==" - }, - "leven": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", - "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" - }, - "long-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", - "integrity": "sha1-lyHXiLR+C8taJMLivuGg2lXatRQ=" - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, "luxon": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/luxon/-/luxon-2.5.2.tgz", @@ -3357,19 +2611,6 @@ "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", "optional": true }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" - }, "mongodb": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.17.1.tgz", @@ -3391,131 +2632,16 @@ "whatwg-url": "^11.0.0" } }, - "mqtt": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.7.tgz", - "integrity": "sha512-ew3qwG/TJRorTz47eW46vZ5oBw5MEYbQZVaEji44j5lAUSQSqIEoul7Kua/BatBW0H0kKQcC9kwUHa1qzaWHSw==", - "requires": { - "commist": "^1.0.0", - "concat-stream": "^2.0.0", - "debug": "^4.1.1", - "duplexify": "^4.1.1", - "help-me": "^3.0.0", - "inherits": "^2.0.3", - "lru-cache": "^6.0.0", - "minimist": "^1.2.5", - "mqtt-packet": "^6.8.0", - "number-allocator": "^1.0.9", - "pump": "^3.0.0", - "readable-stream": "^3.6.0", - "reinterval": "^1.1.0", - "rfdc": "^1.3.0", - "split2": "^3.1.0", - "ws": "^7.5.5", - "xtend": "^4.0.2" - } - }, - "mqtt-packet": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-6.10.0.tgz", - "integrity": "sha512-ja8+mFKIHdB1Tpl6vac+sktqy3gA8t9Mduom1BA75cI+R9AHnZOiaBQwpGiWnaVJLDGRdNhQmFaAqd7tkKSMGA==", - "requires": { - "bl": "^4.0.2", - "debug": "^4.1.1", - "process-nextick-args": "^2.0.1" - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node-schedule": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.0.tgz", - "integrity": "sha512-nl4JTiZ7ZQDc97MmpTq9BQjYhq7gOtoh7SiPH069gBFBj0PzD8HI7zyFs6rzqL8Y5tTiEEYLxgtbx034YPrbyQ==", - "requires": { - "cron-parser": "^3.5.0", - "long-timeout": "0.1.1", - "sorted-array-functions": "^1.3.0" - } - }, - "number-allocator": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.10.tgz", - "integrity": "sha512-K4AvNGKo9lP6HqsZyfSr9KDaqnwFzW203inhQEOwFrmFaYevpdX4VNwdOLk197aHujzbT//z6pCBrCOUYSM5iw==", - "requires": { - "debug": "^4.3.1", - "js-sdsl": "^2.1.2" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, "posix-getopt": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/posix-getopt/-/posix-getopt-1.2.1.tgz", "integrity": "sha512-BbGTiH8MOWAuc6h5yITkSn9k3HP4+QOCV9t6I5F62OrH7zqTHRo08QNsgELRreTBxcvRhbSpMoUnAx77Dz4yUA==" }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "reinterval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reinterval/-/reinterval-1.1.0.tgz", - "integrity": "sha1-M2Hs+jymwYKDOA3Qu5VG85D17Oc=" - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -3530,11 +2656,6 @@ "smart-buffer": "^4.2.0" } }, - "sorted-array-functions": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", - "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==" - }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -3544,27 +2665,6 @@ "memory-pager": "^1.0.2" } }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "requires": { - "readable-stream": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "requires": { - "safe-buffer": "~5.2.0" - } - }, "strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", @@ -3585,21 +2685,11 @@ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "optional": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, "undici-types": { "version": "5.25.3", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -3619,27 +2709,6 @@ "tr46": "^3.0.0", "webidl-conversions": "^7.0.0" } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.7.tgz", - "integrity": "sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A==", - "requires": {} - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" } } } diff --git a/package.json b/package.json index 8561b98..8592724 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "main": "main.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node fetchnewdata.js -m >>/var/log/timeseries.log 2>&1" + "start": "node fetchnewdata.js -m >>/var/log/readin.log 2>&1" }, "type": "module", "keywords": [], diff --git a/parse.js b/parse.js index e24588f..334d788 100644 --- a/parse.js +++ b/parse.js @@ -146,7 +146,7 @@ const buildNewEntry = (item, typ, dt, now) => { const types = { P1: 'pm', P2: 'pm', P0: 'pm', temperature: 'thp', humidity: 'thp', pressure: 'thp', - noise_LAeq: 'noise', noise_LA_max: 'noise', + noise_LAeq: 'noise', noise_LA_max: 'noise', noise_LA_min: 'noise', counts_per_minute: 'radioactivity', lat: 'gps' }; @@ -182,6 +182,9 @@ export const constructDBaseEntries = async (client, body, args) => { if (typ === 'unknown') { // extract measurement type typ = getType(vtyp) } + if(typ === 'noise') { + vtyp = vtyp.slice(6) + } let val = v.value; // and value let x try { @@ -196,7 +199,7 @@ export const constructDBaseEntries = async (client, body, args) => { values[vtyp] = x ival += `${vtyp}=${x},` // if noise sensor precalculate pow10 - if (vtyp == 'noise_LAeq') { + if (vtyp == 'LAeq') { let e10 = Math.pow(10, x / 10) values.E10tel_eq = e10 ival += `E10tel_eq=${e10},` diff --git a/readdata.js b/readdata.js index 704df40..878776c 100644 --- a/readdata.js +++ b/readdata.js @@ -49,4 +49,3 @@ function saveDatatoFile(fn, data) { function readDatafromFile(fn) { return JSON.parse(fs.readFileSync(fn)) } - diff --git a/ts_rotate b/ts_rotate new file mode 100644 index 0000000..b26c703 --- /dev/null +++ b/ts_rotate @@ -0,0 +1,9 @@ +/var/log/timeseries.log { + daily + rotate 7 + delaycompress + compress + notifempty + missingok +} +