Works now for noise sensors
This commit is contained in:
@@ -132,8 +132,8 @@ export const getSensorData = async (params) => {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
export const getActData = async (opts, props) => {
|
export const getActData = async (opts) => {
|
||||||
let ret = {values: [], props: props, err: null}
|
let ret = {err: null, values: []}
|
||||||
let sorting = ''
|
let sorting = ''
|
||||||
if(opts.sort) {
|
if(opts.sort) {
|
||||||
if (opts.sort === 1) {
|
if (opts.sort === 1) {
|
||||||
|
|||||||
+58
-69
@@ -8,6 +8,7 @@ import {getOneProperty} from "../actions/getproperties.js";
|
|||||||
import * as ERR from "../utilities/errortexts.js"
|
import * as ERR from "../utilities/errortexts.js"
|
||||||
import {DateTime} from 'luxon'
|
import {DateTime} from 'luxon'
|
||||||
import {getData4map} from "../actions/data4map.js";
|
import {getData4map} from "../actions/data4map.js";
|
||||||
|
import {NODATA} from "../utilities/errortexts.js";
|
||||||
|
|
||||||
const setoptionfromtable = (opt,tabval) => {
|
const setoptionfromtable = (opt,tabval) => {
|
||||||
let ret = opt
|
let ret = opt
|
||||||
@@ -42,18 +43,24 @@ export const getNoiseData = async (params, possibles, props) => {
|
|||||||
let {start, stop} = calcRange(opts) // calc time range
|
let {start, stop} = calcRange(opts) // calc time range
|
||||||
opts.start = start
|
opts.start = start
|
||||||
opts.stop = stop
|
opts.stop = stop
|
||||||
let erg = await x.func(opts, props) // get the data
|
let erg = await x.func(opts) // get the data
|
||||||
ret.sid = opts.sensorid
|
ret = {
|
||||||
ret.start = opts.start.slice(7)
|
err: erg.err,
|
||||||
ret.span = opts.span
|
sid: opts.sensorid,
|
||||||
if ((x.what === 'havg') || (x.what === 'davg')) {
|
indoor: props.location[0].indoor,
|
||||||
ret.average = x.avg
|
span: opts.span,
|
||||||
ret.peak = opts.peak
|
start: opts.start.slice(7),
|
||||||
|
data: opts.data,
|
||||||
|
peak: opts.peak,
|
||||||
|
count: erg.values.length,
|
||||||
|
values: erg.values,
|
||||||
|
}
|
||||||
|
if (!x.peak) {
|
||||||
|
delete ret.peak
|
||||||
|
}
|
||||||
|
if(ret.values.length === 0) {
|
||||||
|
ret.err = ERR.NODATA
|
||||||
}
|
}
|
||||||
ret.count = erg.values.length
|
|
||||||
ret.values = erg.values
|
|
||||||
ret.err = erg.err
|
|
||||||
ret.props = erg.props
|
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -85,9 +92,8 @@ export const getNoiseData = async (params, possibles, props) => {
|
|||||||
// ....
|
// ....
|
||||||
//
|
//
|
||||||
// *********************************************
|
// *********************************************
|
||||||
const getLiveData = async (opt, props) => {
|
const getLiveData = async (opt) => {
|
||||||
let retur = {sid: opt.sensorid, span: opt.span, start: opt.datetime, count: 0, values: [], err: null};
|
return await getActData(opt)
|
||||||
return await getActData(opt, props)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -117,19 +123,21 @@ const getLiveData = async (opt, props) => {
|
|||||||
// ....
|
// ....
|
||||||
//
|
//
|
||||||
// *********************************************
|
// *********************************************
|
||||||
const gethavgData = async (opts) => {
|
const gethavgData = async (opts, props) => {
|
||||||
|
|
||||||
let e = await getNoiseAVGData(opts)
|
let e = await getNoiseAVGData(opts)
|
||||||
if (opts.csv) {
|
if (opts.csv) {
|
||||||
let csvStr = "datetime,n_AVG,peakcount\n";
|
let csvStr = "datetime,n_AVG,peakcount\n"
|
||||||
|
if(!e.err) {
|
||||||
for (let item of e) {
|
for (let item of e) {
|
||||||
if (item.n_AVG != -1) {
|
if (item.n_AVG != -1) {
|
||||||
csvStr += item.datetime + ',' + item.n_AVG + ',' + item.peakcount + '\n'
|
csvStr += item.datetime + ',' + item.n_AVG + ',' + item.peakcount + '\n'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return csvStr;
|
}
|
||||||
|
return csvStr
|
||||||
} else {
|
} else {
|
||||||
return e
|
return {err: e.err, values: e.values}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,6 +171,7 @@ async function getdavgData(opts) {
|
|||||||
let erg = await getNoiseAVGData(opts);
|
let erg = await getNoiseAVGData(opts);
|
||||||
let val = [];
|
let val = [];
|
||||||
let csvStr = 'datetime,n_AVG,peakcount\n';
|
let csvStr = 'datetime,n_AVG,peakcount\n';
|
||||||
|
if(!erg.err) {
|
||||||
for (let i = 0; i < erg.length; i += 24) {
|
for (let i = 0; i < erg.length; i += 24) {
|
||||||
let sum = 0;
|
let sum = 0;
|
||||||
let count = 0;
|
let count = 0;
|
||||||
@@ -187,19 +196,11 @@ async function getdavgData(opts) {
|
|||||||
val.push(werte);
|
val.push(werte);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (opts.csv) {
|
if (opts.csv) {
|
||||||
return csvStr;
|
return csvStr;
|
||||||
} else {
|
} else {
|
||||||
return val
|
return {err: erg.err, values: val}
|
||||||
// {
|
|
||||||
// sid: opts.sensorid,
|
|
||||||
// span: opts.span,
|
|
||||||
// start: opts.start.slice(7),
|
|
||||||
// 'average': 'day',
|
|
||||||
// peak: opts.peak,
|
|
||||||
// count: val.length,
|
|
||||||
// values: val
|
|
||||||
// };
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -237,6 +238,7 @@ async function getdaynightData(opts) {
|
|||||||
let erg = await getNoiseAVGData(opts);
|
let erg = await getNoiseAVGData(opts);
|
||||||
let val = [];
|
let val = [];
|
||||||
let csvStr = 'datetime,n_dayAVG,n_nightAVG\n';
|
let csvStr = 'datetime,n_dayAVG,n_nightAVG\n';
|
||||||
|
if(!erg.err) {
|
||||||
let done = false;
|
let done = false;
|
||||||
let dt;
|
let dt;
|
||||||
// The received houerly data array always (!!) starts at 0h00 local (!) time.
|
// The received houerly data array always (!!) starts at 0h00 local (!) time.
|
||||||
@@ -257,8 +259,7 @@ async function getdaynightData(opts) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i < (erg.length - 8)) {
|
if (i < (erg.length - 8)) {
|
||||||
for (let k = 0; k < 8; k++, i++)
|
for (let k = 0; k < 8; k++, i++) {
|
||||||
{
|
|
||||||
if (erg[i].n_sum != -1) {
|
if (erg[i].n_sum != -1) {
|
||||||
if (werte.datetime === undefined) {
|
if (werte.datetime === undefined) {
|
||||||
let dt = DateTime.fromISO(erg[i].datetime, {zone: 'utc'})
|
let dt = DateTime.fromISO(erg[i].datetime, {zone: 'utc'})
|
||||||
@@ -290,17 +291,11 @@ async function getdaynightData(opts) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (opts.csv) {
|
if (opts.csv) {
|
||||||
return csvStr;
|
return csvStr;
|
||||||
} else {
|
} else {
|
||||||
return val
|
return {err: erg.err, values: val}
|
||||||
// {
|
|
||||||
// sid: opts.sensorid,
|
|
||||||
// span: opts.span,
|
|
||||||
// start: opts.start.slice(7),
|
|
||||||
// count: val.length,
|
|
||||||
// values: val
|
|
||||||
// };
|
|
||||||
} }
|
} }
|
||||||
|
|
||||||
// *********************************************
|
// *********************************************
|
||||||
@@ -334,6 +329,7 @@ async function getLdenData(opts) {
|
|||||||
let erg = await getNoiseAVGData(opts);
|
let erg = await getNoiseAVGData(opts);
|
||||||
let val = [];
|
let val = [];
|
||||||
let csvStr = 'datetime,lden\n';
|
let csvStr = 'datetime,lden\n';
|
||||||
|
if(!erg.err) {
|
||||||
let done = false;
|
let done = false;
|
||||||
const calcAVG = (sum, cnt) => {
|
const calcAVG = (sum, cnt) => {
|
||||||
if (cnt != 0) {
|
if (cnt != 0) {
|
||||||
@@ -354,8 +350,7 @@ async function getLdenData(opts) {
|
|||||||
let werte = {};
|
let werte = {};
|
||||||
let dayAVG = 0, evnAVG = 0, nightAVG = 0;
|
let dayAVG = 0, evnAVG = 0, nightAVG = 0;
|
||||||
for (let k = 0; k < 12; k++, i++) {
|
for (let k = 0; k < 12; k++, i++) {
|
||||||
if (erg[i].n_sum != -1)
|
if (erg[i].n_sum != -1) {
|
||||||
{
|
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = erg[i].datetime;
|
||||||
}
|
}
|
||||||
@@ -364,8 +359,7 @@ async function getLdenData(opts) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (let k = 0; k < 4; k++, i++) {
|
for (let k = 0; k < 4; k++, i++) {
|
||||||
if (erg[i].n_sum != -1)
|
if (erg[i].n_sum != -1) {
|
||||||
{
|
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = erg[i].datetime;
|
||||||
}
|
}
|
||||||
@@ -374,10 +368,8 @@ async function getLdenData(opts) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (i < (erg.length - 8)) {
|
if (i < (erg.length - 8)) {
|
||||||
for (let k = 0; k < 8; k++, i++)
|
for (let k = 0; k < 8; k++, i++) {
|
||||||
{
|
if (erg[i].n_sum != -1) {
|
||||||
if (erg[i].n_sum != -1)
|
|
||||||
{
|
|
||||||
if (werte.datetime == undefined) {
|
if (werte.datetime == undefined) {
|
||||||
werte.datetime = erg[i].datetime;
|
werte.datetime = erg[i].datetime;
|
||||||
}
|
}
|
||||||
@@ -405,17 +397,11 @@ async function getLdenData(opts) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (opts.csv) {
|
if (opts.csv) {
|
||||||
return csvStr;
|
return csvStr;
|
||||||
} else {
|
} else {
|
||||||
return val
|
return {err: erg.err, values: val}
|
||||||
// {
|
|
||||||
// sid: opts.sensorid,
|
|
||||||
// span: opts.span,
|
|
||||||
// start: opts.start.slice(7),
|
|
||||||
// count: val.length,
|
|
||||||
// values: val
|
|
||||||
// };
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -425,18 +411,18 @@ const getAPIprops = (opt) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const whatTable = [
|
const whatTable = [
|
||||||
{'what':'live', 'span': 1, 'daystart': false, avg: null, 'func': getLiveData},
|
{'what':'live', 'span': 1, 'daystart': false, peak: false, 'func': getLiveData},
|
||||||
{'what':'havg', 'span': 30, 'daystart': true, avg: 'hour', 'func': gethavgData},
|
{'what':'havg', 'span': 7, 'daystart': true, peak: true, 'func': gethavgData},
|
||||||
{'what':'davg', 'span': 30, 'daystart': true, avg: 'day', 'func': getdavgData},
|
{'what':'davg', 'span': 30, 'daystart': true, peak: true, 'func': getdavgData},
|
||||||
{'what':'daynight', 'span': 30, 'daystart': true, avg: null, 'func': getdaynightData},
|
{'what':'daynight', 'span': 30, 'daystart': true, peak: false, 'func': getdaynightData},
|
||||||
{'what':'lden', 'span': 30, 'daystart': true, avg: null, 'func': getLdenData},
|
{'what':'lden', 'span': 30, 'daystart': true, peak: false, 'func': getLdenData},
|
||||||
{'what':'props', 'span': 0, 'daystart': true, avg: null, 'func': getAPIprops},
|
{'what':'props', 'span': 0, 'daystart': true, peak:false, 'func': getAPIprops},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
const getNoiseAVGData = async (opts) => {
|
const getNoiseAVGData = async (opts) => {
|
||||||
let ret = {data: {count: 0, values: []}, err: null}
|
let ret = {err: null, values: []}
|
||||||
let emptyValues = {n_AVG:-1};
|
let emptyValues = {n_AVG:-1}
|
||||||
let small = '|> keep(columns: ["_time", "peakcount", "n_AVG"])'
|
let small = '|> keep(columns: ["_time", "peakcount", "n_AVG"])'
|
||||||
if (opts.long) {
|
if (opts.long) {
|
||||||
small = ''
|
small = ''
|
||||||
@@ -469,7 +455,7 @@ esum = data
|
|||||||
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|
|> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
|
||||||
|> rename(columns: {"E10tel_eq" : "n_sum"})
|
|> rename(columns: {"E10tel_eq" : "n_sum"})
|
||||||
peak = data
|
peak = data
|
||||||
|> filter(fn: (r) => r._field == "noise_LAeq")
|
|> filter(fn: (r) => r._field == "noise_LA_max")
|
||||||
|> aggregateWindow(
|
|> aggregateWindow(
|
||||||
every: 1h,
|
every: 1h,
|
||||||
fn: (column, tables=<-) => tables
|
fn: (column, tables=<-) => tables
|
||||||
@@ -489,9 +475,12 @@ peak = data
|
|||||||
join( tables: {P1: part1, P2: part2}, on: ["_time"])
|
join( tables: {P1: part1, P2: part2}, on: ["_time"])
|
||||||
${small}
|
${small}
|
||||||
`
|
`
|
||||||
let erg = await fetchFromInflux(ret, queryAVG)
|
ret = await fetchFromInflux(ret, queryAVG)
|
||||||
if(erg.err) {
|
if(ret.err) {
|
||||||
return returnOnError(ret, err, getNoiseAVGData.name)
|
return returnOnError(ret, ret.err, getNoiseAVGData.name)
|
||||||
|
}
|
||||||
|
if(ret.values.length === 0) {
|
||||||
|
return returnOnError(ret, ERR.NODATA, getNoiseAVGData.name)
|
||||||
}
|
}
|
||||||
// The times are always the END of the period (so: period from 00:00h to 01:00h -> time is 01:00)
|
// The times are always the END of the period (so: period from 00:00h to 01:00h -> time is 01:00)
|
||||||
|
|
||||||
@@ -500,9 +489,9 @@ peak = data
|
|||||||
// index will be incremented by 24). Missing values are marked by: {n_sum=-1, n_AVG=-1}.
|
// index will be incremented by 24). Missing values are marked by: {n_sum=-1, n_AVG=-1}.
|
||||||
let hoursArr = new Array(opts.span * 24); // generate new array
|
let hoursArr = new Array(opts.span * 24); // generate new array
|
||||||
hoursArr.fill(emptyValues); // fill array with 'empty' values
|
hoursArr.fill(emptyValues); // fill array with 'empty' values
|
||||||
let startDay = DateTime.fromISO(erg.values[0].datetime, {zone: 'utc'}).get('day'); // calc first day
|
let startDay = DateTime.fromISO(ret.values[0].datetime, {zone: 'utc'}).get('day'); // calc first day
|
||||||
let k = 0;
|
let k = 0;
|
||||||
for (let d of erg.values) { // loop through docs
|
for (let d of ret.values) { // loop through docs
|
||||||
let stunde = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('hour') // get current hour
|
let stunde = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('hour') // get current hour
|
||||||
let day = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('day') // get current day
|
let day = DateTime.fromISO(d.datetime, {zone: 'utc'}).get('day') // get current day
|
||||||
if (day != startDay) { // if date has changed
|
if (day != startDay) { // if date has changed
|
||||||
|
|||||||
Reference in New Issue
Block a user