From 8a85ed322bddde0d0261263b5c54c545e802b320 Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Wed, 6 Sep 2023 12:17:37 +0200 Subject: [PATCH 01/27] added 3 new phenomena for the rain sensor --- .../models/src/box/sensorLayouts/sensebox.home.mcu.js | 10 ++++++++-- .../src/box/sensorLayouts/sensorDefinitions/index.js | 10 ++++++++-- .../sensorLayouts/sensorDefinitions/rain_eventacc.js | 9 +++++++++ .../sensorLayouts/sensorDefinitions/rain_intensity.js | 9 +++++++++ .../sensorLayouts/sensorDefinitions/rain_totalacc.js | 9 +++++++++ 5 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js diff --git a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js index e2740e5a..b795b8a2 100644 --- a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js +++ b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js @@ -23,7 +23,10 @@ const { sps30_pm1, sps30_pm25, sps30_pm4, - sps30_pm10 + sps30_pm10, + rain_intensity, + rain_eventAcc, + rain_totalAcc } = sensorDefinitions; module.exports = [ @@ -47,5 +50,8 @@ module.exports = [ sps30_pm1, sps30_pm25, sps30_pm4, - sps30_pm10 + sps30_pm10, + rain_intensity, + rain_eventAcc, + rain_totalAcc ]; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 2fb2aba7..e9e8f3f0 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -47,7 +47,10 @@ const veml6070_uvintensity = require('./veml6070_uvintensity'), sps30_pm1 = require('./sps30_pm1'), sps30_pm25 = require('./sps30_pm25'), sps30_pm4 = require('./sps30_pm4'), - sps30_pm10 = require('./sps30_pm10'); + sps30_pm10 = require('./sps30_pm10'), + rain_intensity = require('./rain_intensity'), + rain_eventAcc = require('./rain_eventacc'), + rain_totalAcc = require('./rain_totalacc'); module.exports = { hdc1008_temperature, hdc1080_temperature, @@ -95,5 +98,8 @@ module.exports = { sps30_pm1, sps30_pm25, sps30_pm4, - sps30_pm10 + sps30_pm10, + rain_intensity, + rain_eventAcc, + rain_totalAcc }; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js new file mode 100644 index 00000000..b9ac2361 --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js @@ -0,0 +1,9 @@ +'use strict' + + +module.exports = { + title: 'Niederschlag (letztes Ereignis)', + unit: 'mm/m²', + sensorType: 'RG-15', + icon: '' +} \ No newline at end of file diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js new file mode 100644 index 00000000..04bbea1b --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js @@ -0,0 +1,9 @@ +'use strict' + + +module.exports = { + title: 'Regenintensität', + unit: 'mm/h', + sensorType: 'RG-15', + icon: '' +} \ No newline at end of file diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js new file mode 100644 index 00000000..1fa47196 --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js @@ -0,0 +1,9 @@ +'use strict' + + +module.exports = { + title: 'Niederschlag (Insgesamt)', + unit: 'mm/m²', + sensorType: 'RG-15', + icon: '' +} \ No newline at end of file From 9a140f6f8e270db57e0c4f346e4b0e3a15fc6cde Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Thu, 7 Sep 2023 11:20:52 +0200 Subject: [PATCH 02/27] linting and added icons to the sensor templates --- .../src/box/sensorLayouts/sensebox.home.mcu.js | 14 +++++++------- .../sensorDefinitions/rain_eventacc.js | 17 ++++++++--------- .../sensorDefinitions/rain_intensity.js | 17 ++++++++--------- .../sensorDefinitions/rain_totalacc.js | 18 +++++++++--------- 4 files changed, 32 insertions(+), 34 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js index b795b8a2..310c9ea7 100644 --- a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js +++ b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js @@ -23,9 +23,9 @@ const { sps30_pm1, sps30_pm25, sps30_pm4, - sps30_pm10, - rain_intensity, - rain_eventAcc, + sps30_pm10, + rain_intensity, + rain_eventAcc, rain_totalAcc } = sensorDefinitions; @@ -50,8 +50,8 @@ module.exports = [ sps30_pm1, sps30_pm25, sps30_pm4, - sps30_pm10, - rain_intensity, - rain_eventAcc, - rain_totalAcc + sps30_pm10, + rain_intensity, + rain_eventAcc, + rain_totalAcc, ]; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js index b9ac2361..8f4d099e 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js @@ -1,9 +1,8 @@ -'use strict' - - -module.exports = { - title: 'Niederschlag (letztes Ereignis)', - unit: 'mm/m²', - sensorType: 'RG-15', - icon: '' -} \ No newline at end of file +'use strict'; + +module.exports = { + title: 'Niederschlag (letztes Ereignis)', + unit: 'mm/m²', + sensorType: 'RG-15', + icon: 'osem-umbrella', +}; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js index 04bbea1b..a2a458db 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js @@ -1,9 +1,8 @@ -'use strict' - - -module.exports = { - title: 'Regenintensität', - unit: 'mm/h', - sensorType: 'RG-15', - icon: '' -} \ No newline at end of file +'use strict'; + +module.exports = { + title: 'Regenintensität', + unit: 'mm/h', + sensorType: 'RG-15', + icon: 'osem-umbrella' +}; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js index 1fa47196..51a5dc78 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js @@ -1,9 +1,9 @@ -'use strict' - - -module.exports = { - title: 'Niederschlag (Insgesamt)', - unit: 'mm/m²', - sensorType: 'RG-15', - icon: '' -} \ No newline at end of file +'use strict'; + +module.exports = { + title: 'Niederschlag (Insgesamt)', + unit: 'mm/m²', + sensorType: 'RG-15', + icon: 'osem-umbrella', +}; + From 7eac9ad4c476e6adea9b32b7ac0f4e148ae716d8 Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Thu, 7 Sep 2023 15:37:58 +0200 Subject: [PATCH 03/27] changed the name to rg15 --- .../src/box/sensorLayouts/sensebox.home.mcu.js | 12 ++++++------ .../src/box/sensorLayouts/sensorDefinitions/index.js | 12 ++++++------ .../{rain_eventacc.js => rg15_eventacc.js} | 0 .../{rain_intensity.js => rg15_intensity.js} | 0 .../{rain_totalacc.js => rg15_totalacc.js} | 0 5 files changed, 12 insertions(+), 12 deletions(-) rename packages/models/src/box/sensorLayouts/sensorDefinitions/{rain_eventacc.js => rg15_eventacc.js} (100%) rename packages/models/src/box/sensorLayouts/sensorDefinitions/{rain_intensity.js => rg15_intensity.js} (100%) rename packages/models/src/box/sensorLayouts/sensorDefinitions/{rain_totalacc.js => rg15_totalacc.js} (100%) diff --git a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js index 310c9ea7..8753a0b4 100644 --- a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js +++ b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js @@ -24,9 +24,9 @@ const { sps30_pm25, sps30_pm4, sps30_pm10, - rain_intensity, - rain_eventAcc, - rain_totalAcc + rg15_intensity, + rg15_eventAcc, + rg15_totalAcc } = sensorDefinitions; module.exports = [ @@ -51,7 +51,7 @@ module.exports = [ sps30_pm25, sps30_pm4, sps30_pm10, - rain_intensity, - rain_eventAcc, - rain_totalAcc, + rg15_intensity, + rg15_eventAcc, + rg15_totalAcc, ]; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index e9e8f3f0..dd8323fa 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -48,9 +48,9 @@ const veml6070_uvintensity = require('./veml6070_uvintensity'), sps30_pm25 = require('./sps30_pm25'), sps30_pm4 = require('./sps30_pm4'), sps30_pm10 = require('./sps30_pm10'), - rain_intensity = require('./rain_intensity'), - rain_eventAcc = require('./rain_eventacc'), - rain_totalAcc = require('./rain_totalacc'); + rg15_intensity = require('./rg15_intensity'), + rg15_eventAcc = require('./rg15_eventacc'), + rg15_totalAcc = require('./rg15_totalacc'); module.exports = { hdc1008_temperature, hdc1080_temperature, @@ -99,7 +99,7 @@ module.exports = { sps30_pm25, sps30_pm4, sps30_pm10, - rain_intensity, - rain_eventAcc, - rain_totalAcc + rg15_intensity, + rg15_eventAcc, + rg15_totalAcc }; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js similarity index 100% rename from packages/models/src/box/sensorLayouts/sensorDefinitions/rain_eventacc.js rename to packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js similarity index 100% rename from packages/models/src/box/sensorLayouts/sensorDefinitions/rain_intensity.js rename to packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js similarity index 100% rename from packages/models/src/box/sensorLayouts/sensorDefinitions/rain_totalacc.js rename to packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js From 39a12537d67f6906011f73a3675fd2adeb895127 Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Fri, 19 Jan 2024 10:28:33 +0100 Subject: [PATCH 04/27] added comma in definitions --- .../sensorLayouts/sensorDefinitions/index.js | 111 +++++++++--------- 1 file changed, 55 insertions(+), 56 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 22112f34..30fc022c 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -1,58 +1,57 @@ -'use strict'; +"use strict"; - -const veml6070_uvintensity = require('./veml6070_uvintensity'), - tsl45315_lightintensity = require('./tsl45315_lightintensity'), - bmp280_pressure = require('./bmp280_pressure'), - hdc1008_humidity = require('./hdc1008_humidity'), - hdc1080_humidity = require('./hdc1080_humidity'), - hdc1008_temperature = require('./hdc1008_temperature'), - hdc1080_temperature = require('./hdc1080_temperature'), - sds011_pm25 = require('./sds011_pm25'), - sds011_pm10 = require('./sds011_pm10'), - pms1003_pm01 = require('./pms1003_pm01'), - pms1003_pm25 = require('./pms1003_pm25'), - pms1003_pm10 = require('./pms1003_pm10'), - pms3003_pm01 = require('./pms3003_pm01'), - pms3003_pm25 = require('./pms3003_pm25'), - pms3003_pm10 = require('./pms3003_pm10'), - pms5003_pm01 = require('./pms5003_pm01'), - pms5003_pm25 = require('./pms5003_pm25'), - pms5003_pm10 = require('./pms5003_pm10'), - pms7003_pm01 = require('./pms7003_pm01'), - pms7003_pm25 = require('./pms7003_pm25'), - pms7003_pm10 = require('./pms7003_pm10'), - dht11_temperature = require('./dht11_temperature'), - dht11_humidity = require('./dht11_humidity'), - dht22_temperature = require('./dht22_temperature'), - dht22_humidity = require('./dht22_humidity'), - bmp180_temperature = require('./bmp180_temperature'), - bmp180_pressure_pa = require('./bmp180_pressure_pa'), - bmp180_pressure_hpa = require('./bmp180_pressure_hpa'), - bme280_temperature = require('./bme280_temperature'), - bme280_humidity = require('./bme280_humidity'), - bme280_pressure_pa = require('./bme280_pressure_pa'), - bme280_pressure_hpa = require('./bme280_pressure_hpa'), - bme680_humidity = require('./bme680_humidity'), - bme680_pressure = require('./bme680_pressure'), - bme680_temperature = require('./bme680_temperature'), - bme680_voc = require('./bme680_voc'), - smt50_soilmoisture = require('./smt50_soilmoisture'), - smt50_soiltemperature = require('./smt50_soiltemperature'), - soundlevelmeter = require('./soundlevelmeter'), - windspeed = require('./windspeed'), - scd30_co2 = require('./scd30_co2'), - dps310_temperature = require('./dps310_temperature'), - dps310_pressure = require('./dps310_pressure'), - sps30_pm1 = require('./sps30_pm1'), - sps30_pm25 = require('./sps30_pm25'), - sps30_pm4 = require('./sps30_pm4'), - sps30_pm10 = require('./sps30_pm10'), - rg15_intensity = require('./rg15_intensity'), - rg15_eventAcc = require('./rg15_eventacc'), - rg15_totalAcc = require('./rg15_totalacc'); - sht3x_temperature = require('./sht3x_temperature'), - sht3x_humidity = require('./sht3x_humidity'); +const veml6070_uvintensity = require("./veml6070_uvintensity"), + tsl45315_lightintensity = require("./tsl45315_lightintensity"), + bmp280_pressure = require("./bmp280_pressure"), + hdc1008_humidity = require("./hdc1008_humidity"), + hdc1080_humidity = require("./hdc1080_humidity"), + hdc1008_temperature = require("./hdc1008_temperature"), + hdc1080_temperature = require("./hdc1080_temperature"), + sds011_pm25 = require("./sds011_pm25"), + sds011_pm10 = require("./sds011_pm10"), + pms1003_pm01 = require("./pms1003_pm01"), + pms1003_pm25 = require("./pms1003_pm25"), + pms1003_pm10 = require("./pms1003_pm10"), + pms3003_pm01 = require("./pms3003_pm01"), + pms3003_pm25 = require("./pms3003_pm25"), + pms3003_pm10 = require("./pms3003_pm10"), + pms5003_pm01 = require("./pms5003_pm01"), + pms5003_pm25 = require("./pms5003_pm25"), + pms5003_pm10 = require("./pms5003_pm10"), + pms7003_pm01 = require("./pms7003_pm01"), + pms7003_pm25 = require("./pms7003_pm25"), + pms7003_pm10 = require("./pms7003_pm10"), + dht11_temperature = require("./dht11_temperature"), + dht11_humidity = require("./dht11_humidity"), + dht22_temperature = require("./dht22_temperature"), + dht22_humidity = require("./dht22_humidity"), + bmp180_temperature = require("./bmp180_temperature"), + bmp180_pressure_pa = require("./bmp180_pressure_pa"), + bmp180_pressure_hpa = require("./bmp180_pressure_hpa"), + bme280_temperature = require("./bme280_temperature"), + bme280_humidity = require("./bme280_humidity"), + bme280_pressure_pa = require("./bme280_pressure_pa"), + bme280_pressure_hpa = require("./bme280_pressure_hpa"), + bme680_humidity = require("./bme680_humidity"), + bme680_pressure = require("./bme680_pressure"), + bme680_temperature = require("./bme680_temperature"), + bme680_voc = require("./bme680_voc"), + smt50_soilmoisture = require("./smt50_soilmoisture"), + smt50_soiltemperature = require("./smt50_soiltemperature"), + soundlevelmeter = require("./soundlevelmeter"), + windspeed = require("./windspeed"), + scd30_co2 = require("./scd30_co2"), + dps310_temperature = require("./dps310_temperature"), + dps310_pressure = require("./dps310_pressure"), + sps30_pm1 = require("./sps30_pm1"), + sps30_pm25 = require("./sps30_pm25"), + sps30_pm4 = require("./sps30_pm4"), + sps30_pm10 = require("./sps30_pm10"), + rg15_intensity = require("./rg15_intensity"), + rg15_eventAcc = require("./rg15_eventacc"), + rg15_totalAcc = require("./rg15_totalacc"); +(sht3x_temperature = require("./sht3x_temperature")), + (sht3x_humidity = require("./sht3x_humidity")); module.exports = { hdc1008_temperature, hdc1080_temperature, @@ -103,7 +102,7 @@ module.exports = { sps30_pm10, rg15_intensity, rg15_eventAcc, - rg15_totalAcc + rg15_totalAcc, sht3x_temperature, - sht3x_humidity + sht3x_humidity, }; From 7502516053fb32400c5a476a70bf0c0c486d40ef Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Fri, 19 Jan 2024 10:40:53 +0100 Subject: [PATCH 05/27] fixed more typos --- .../models/src/box/sensorLayouts/sensorDefinitions/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 30fc022c..5a33e5fd 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -49,9 +49,9 @@ const veml6070_uvintensity = require("./veml6070_uvintensity"), sps30_pm10 = require("./sps30_pm10"), rg15_intensity = require("./rg15_intensity"), rg15_eventAcc = require("./rg15_eventacc"), - rg15_totalAcc = require("./rg15_totalacc"); -(sht3x_temperature = require("./sht3x_temperature")), - (sht3x_humidity = require("./sht3x_humidity")); + rg15_totalAcc = require("./rg15_totalacc"), + sht3x_temperature = require("./sht3x_temperature"), + sht3x_humidity = require("./sht3x_humidity"); module.exports = { hdc1008_temperature, hdc1080_temperature, From 7ebbc14a7b05af32b6e0eba1256b70caf3f23bdf Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Fri, 19 Jan 2024 10:52:20 +0100 Subject: [PATCH 06/27] Strings must use singlequote --- .../sensorLayouts/sensorDefinitions/index.js | 105 +++++++++--------- 1 file changed, 52 insertions(+), 53 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 5a33e5fd..19b3e6eb 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -1,57 +1,56 @@ -"use strict"; +'use strict'; -const veml6070_uvintensity = require("./veml6070_uvintensity"), - tsl45315_lightintensity = require("./tsl45315_lightintensity"), - bmp280_pressure = require("./bmp280_pressure"), - hdc1008_humidity = require("./hdc1008_humidity"), - hdc1080_humidity = require("./hdc1080_humidity"), - hdc1008_temperature = require("./hdc1008_temperature"), - hdc1080_temperature = require("./hdc1080_temperature"), - sds011_pm25 = require("./sds011_pm25"), - sds011_pm10 = require("./sds011_pm10"), - pms1003_pm01 = require("./pms1003_pm01"), - pms1003_pm25 = require("./pms1003_pm25"), - pms1003_pm10 = require("./pms1003_pm10"), - pms3003_pm01 = require("./pms3003_pm01"), - pms3003_pm25 = require("./pms3003_pm25"), - pms3003_pm10 = require("./pms3003_pm10"), - pms5003_pm01 = require("./pms5003_pm01"), - pms5003_pm25 = require("./pms5003_pm25"), - pms5003_pm10 = require("./pms5003_pm10"), - pms7003_pm01 = require("./pms7003_pm01"), - pms7003_pm25 = require("./pms7003_pm25"), - pms7003_pm10 = require("./pms7003_pm10"), - dht11_temperature = require("./dht11_temperature"), - dht11_humidity = require("./dht11_humidity"), - dht22_temperature = require("./dht22_temperature"), - dht22_humidity = require("./dht22_humidity"), - bmp180_temperature = require("./bmp180_temperature"), - bmp180_pressure_pa = require("./bmp180_pressure_pa"), - bmp180_pressure_hpa = require("./bmp180_pressure_hpa"), - bme280_temperature = require("./bme280_temperature"), - bme280_humidity = require("./bme280_humidity"), - bme280_pressure_pa = require("./bme280_pressure_pa"), - bme280_pressure_hpa = require("./bme280_pressure_hpa"), - bme680_humidity = require("./bme680_humidity"), - bme680_pressure = require("./bme680_pressure"), - bme680_temperature = require("./bme680_temperature"), - bme680_voc = require("./bme680_voc"), - smt50_soilmoisture = require("./smt50_soilmoisture"), - smt50_soiltemperature = require("./smt50_soiltemperature"), - soundlevelmeter = require("./soundlevelmeter"), - windspeed = require("./windspeed"), - scd30_co2 = require("./scd30_co2"), - dps310_temperature = require("./dps310_temperature"), - dps310_pressure = require("./dps310_pressure"), - sps30_pm1 = require("./sps30_pm1"), - sps30_pm25 = require("./sps30_pm25"), - sps30_pm4 = require("./sps30_pm4"), - sps30_pm10 = require("./sps30_pm10"), - rg15_intensity = require("./rg15_intensity"), - rg15_eventAcc = require("./rg15_eventacc"), - rg15_totalAcc = require("./rg15_totalacc"), - sht3x_temperature = require("./sht3x_temperature"), - sht3x_humidity = require("./sht3x_humidity"); +const veml6070_uvintensity = require('./veml6070_uvintensity'), + tsl45315_lightintensity = require('./tsl45315_lightintensity'), + bmp280_pressure = require('./bmp280_pressure'), + hdc1008_humidity = require('./hdc1008_humidity'), + hdc1080_humidity = require('./hdc1080_humidity'), + hdc1008_temperature = require('./hdc1008_temperature'), + hdc1080_temperature = require('./hdc1080_temperature'), + sds011_pm25 = require('./sds011_pm25'), + sds011_pm10 = require('./sds011_pm10'), + pms1003_pm01 = require('./pms1003_pm01'), + pms1003_pm25 = require('./pms1003_pm25'), + pms1003_pm10 = require('./pms1003_pm10'), + pms3003_pm01 = require('./pms3003_pm01'), + pms3003_pm25 = require('./pms3003_pm25'), + pms3003_pm10 = require('./pms3003_pm10'), + pms5003_pm01 = require('./pms5003_pm01'), + pms5003_pm25 = require('./pms5003_pm25'), + pms5003_pm10 = require('./pms5003_pm10'), + pms7003_pm01 = require('./pms7003_pm01'), + pms7003_pm25 = require('./pms7003_pm25'), + pms7003_pm10 = require('./pms7003_pm10'), + dht11_temperature = require('./dht11_temperature'), + dht11_humidity = require('./dht11_humidity'), + dht22_humidity = require('./dht22_humidity'), + bmp180_temperature = require('./bmp180_temperature'), + bmp180_pressure_pa = require('./bmp180_pressure_pa'), + bmp180_pressure_hpa = require('./bmp180_pressure_hpa'), + bme280_temperature = require('./bme280_temperature'), + bme280_humidity = require('./bme280_humidity'), + bme280_pressure_pa = require('./bme280_pressure_pa'), + bme280_pressure_hpa = require('./bme280_pressure_hpa'), + bme680_humidity = require('./bme680_humidity'), + bme680_pressure = require('./bme680_pressure'), + bme680_temperature = require('./bme680_temperature'), + bme680_voc = require('./bme680_voc'), + smt50_soilmoisture = require('./smt50_soilmoisture'), + smt50_soiltemperature = require('./smt50_soiltemperature'), + soundlevelmeter = require('./soundlevelmeter'), + windspeed = require('./windspeed'), + scd30_co2 = require('./scd30_co2'), + dps310_temperature = require('./dps310_temperature'), + dps310_pressure = require('./dps310_pressure'), + sps30_pm1 = require('./sps30_pm1'), + sps30_pm25 = require('./sps30_pm25'), + sps30_pm4 = require('./sps30_pm4'), + sps30_pm10 = require('./sps30_pm10'), + rg15_intensity = require('./rg15_intensity'), + rg15_eventAcc = require('./rg15_eventacc'), + rg15_totalAcc = require('./rg15_totalacc'), + sht3x_temperature = require('./sht3x_temperature'), + sht3x_humidity = require('./sht3x_humidity'); module.exports = { hdc1008_temperature, hdc1080_temperature, From 6139addba0c1eaf76e3cc4a6164a44b02a8b57e9 Mon Sep 17 00:00:00 2001 From: Thiemann96 Date: Fri, 19 Jan 2024 10:54:12 +0100 Subject: [PATCH 07/27] fixed even more typos --- packages/models/src/box/sensorLayouts/sensorDefinitions/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 19b3e6eb..30fb94c5 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -23,6 +23,7 @@ const veml6070_uvintensity = require('./veml6070_uvintensity'), pms7003_pm10 = require('./pms7003_pm10'), dht11_temperature = require('./dht11_temperature'), dht11_humidity = require('./dht11_humidity'), + dht22_temperature = require('./dht22_temperature'), dht22_humidity = require('./dht22_humidity'), bmp180_temperature = require('./bmp180_temperature'), bmp180_pressure_pa = require('./bmp180_pressure_pa'), From ec0638d8b886e26aa6dcc98c5e5f42ce1cb5aa1d Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 15:48:20 +0100 Subject: [PATCH 08/27] add rg15 to sensor templates --- .../api/lib/controllers/boxesController.js | 400 +++++++++--------- 1 file changed, 211 insertions(+), 189 deletions(-) diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index 029546b2..c7fe1556 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -1,4 +1,4 @@ -'use strict'; +"use strict"; /** * @apiDefine ExposureFilterParam @@ -56,20 +56,25 @@ * @apiSuccess {String} [image] image showing the senseBox */ -const - { Box, User, Claim } = require('@sensebox/opensensemap-api-models'), - { addCache, clearCache, checkContentType, redactEmail, postToMattermost } = require('../helpers/apiUtils'), - { point } = require('@turf/helpers'), - classifyTransformer = require('../transformers/classifyTransformer'), +const { Box, User, Claim } = require("@sensebox/opensensemap-api-models"), + { + addCache, + clearCache, + checkContentType, + redactEmail, + postToMattermost, + } = require("../helpers/apiUtils"), + { point } = require("@turf/helpers"), + classifyTransformer = require("../transformers/classifyTransformer"), { retrieveParameters, parseAndValidateTimeParamsForFindAllBoxes, validateFromToTimeParams, checkPrivilege, - validateDateNotPast - } = require('../helpers/userParamHelpers'), - handleError = require('../helpers/errorHandler'), - jsonstringify = require('stringify-stream'); + validateDateNotPast, + } = require("../helpers/userParamHelpers"), + handleError = require("../helpers/errorHandler"), + jsonstringify = require("stringify-stream"); /** * @apiDefine Addons @@ -152,16 +157,19 @@ const * @apiUse ContentTypeJSON * */ -const updateBox = async function updateBox (req, res) { +const updateBox = async function updateBox(req, res) { try { - let box = await Box.findBoxById(req._userParams.boxId, { lean: false, populate: false }); + let box = await Box.findBoxById(req._userParams.boxId, { + lean: false, + populate: false, + }); box = await box.updateBox(req._userParams); if (box._sensorsChanged === true) { - req.user.mail('newSketch', box); + req.user.mail("newSketch", box); } - res.send({ code: 'Ok', data: box.toJSON({ includeSecrets: true }) }); - clearCache(['getBoxes']); + res.send({ code: "Ok", data: box.toJSON({ includeSecrets: true }) }); + clearCache(["getBoxes"]); } catch (err) { return handleError(err); } @@ -187,17 +195,20 @@ const updateBox = async function updateBox (req, res) { * { "coordinates": [7.68323, 51.9423], "type": "Point", "timestamp": "2017-07-27T12:02:00Z"} * ] */ -const getBoxLocations = async function getBoxLocations (req, res) { +const getBoxLocations = async function getBoxLocations(req, res) { try { - const box = await Box.findBoxById(req._userParams.boxId, { onlyLocations: true, lean: false }); + const box = await Box.findBoxById(req._userParams.boxId, { + onlyLocations: true, + lean: false, + }); res.send(await box.getLocations(req._userParams)); } catch (err) { return handleError(err); } }; -const geoJsonStringifyReplacer = function geoJsonStringifyReplacer (key, box) { - if (key === '') { +const geoJsonStringifyReplacer = function geoJsonStringifyReplacer(key, box) { + if (key === "") { const coordinates = box.currentLocation.coordinates; box.currentLocation = undefined; box.loc = undefined; @@ -297,15 +308,18 @@ const geoJsonStringifyReplacer = function geoJsonStringifyReplacer (key, box) { } * ] */ -const getBoxes = async function getBoxes (req, res) { +const getBoxes = async function getBoxes(req, res) { // content-type is always application/json for this route - res.header('Content-Type', 'application/json; charset=utf-8'); + res.header("Content-Type", "application/json; charset=utf-8"); // default format - let stringifier = jsonstringify({ open: '[', close: ']' }); + let stringifier = jsonstringify({ open: "[", close: "]" }); // format - if (req._userParams.format === 'geojson') { - stringifier = jsonstringify({ open: '{"type":"FeatureCollection","features":[', close: ']}' }, geoJsonStringifyReplacer); + if (req._userParams.format === "geojson") { + stringifier = jsonstringify( + { open: '{"type":"FeatureCollection","features":[', close: "]}" }, + geoJsonStringifyReplacer + ); } try { @@ -316,16 +330,16 @@ const getBoxes = async function getBoxes (req, res) { if (req._userParams.name) { stream = await Box.findBoxes(req._userParams); } else { - if (req._userParams.minimal === 'true') { + if (req._userParams.minimal === "true") { stream = await Box.findBoxesMinimal(req._userParams); } else { stream = await Box.findBoxesLastMeasurements(req._userParams); } - if (req._userParams.classify === 'true') { + if (req._userParams.classify === "true") { stream = stream .pipe(new classifyTransformer()) - .on('error', function (err) { + .on("error", function (err) { res.end(`Error: ${err.message}`); }); } @@ -333,7 +347,7 @@ const getBoxes = async function getBoxes (req, res) { stream .pipe(stringifier) - .on('error', function (err) { + .on("error", function (err) { res.end(`Error: ${err.message}`); }) .pipe(res); @@ -447,13 +461,13 @@ const getBoxes = async function getBoxes (req, res) { } */ -const getBox = async function getBox (req, res) { +const getBox = async function getBox(req, res) { const { format, boxId } = req._userParams; try { const box = await Box.findBoxById(boxId); - if (format === 'geojson') { + if (format === "geojson") { const coordinates = box.currentLocation.coordinates; box.currentLocation = undefined; box.loc = undefined; @@ -484,7 +498,7 @@ const getBox = async function getBox (req, res) { * @apiParam (RequestBody) {Location} location the coordinates of this senseBox. * @apiParam (RequestBody) {String="homeV2Lora","homeV2Ethernet","homeV2Wifi","homeEthernet","homeWifi","homeEthernetFeinstaub","homeWifiFeinstaub","luftdaten_sds011","luftdaten_sds011_dht11","luftdaten_sds011_dht22","luftdaten_sds011_bmp180","luftdaten_sds011_bme280","hackair_home_v2"} [model] specify the model if you want to use a predefined senseBox model, autocreating sensor definitions. * @apiParam (RequestBody) {Sensor[]} [sensors] an array containing the sensors of this senseBox. Only use if `model` is unspecified. - * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30"} [sensorTemplates] Specify which sensors should be included. + * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30","rg15"} [sensorTemplates] Specify which sensors should be included. * @apiParam (RequestBody) {Object} [mqtt] specify parameters of the MQTT integration for external measurement upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Object} [ttn] specify parameters for the TTN integration for measurement from TheThingsNetwork.org upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Boolean="true","false"} [useAuth] whether to use access_token or not for authentication @@ -497,12 +511,12 @@ const getBox = async function getBox (req, res) { * @apiUse ContentTypeJSON * @apiUse JWTokenAuth */ -const postNewBox = async function postNewBox (req, res) { +const postNewBox = async function postNewBox(req, res) { try { let newBox = await req.user.addBox(req._userParams); newBox = await Box.populate(newBox, Box.BOX_SUB_PROPS_FOR_POPULATION); - res.send(201, { message: 'Box successfully created', data: newBox }); - clearCache(['getBoxes', 'getStats']); + res.send(201, { message: "Box successfully created", data: newBox }); + clearCache(["getBoxes", "getStats"]); postToMattermost( `New Box: ${req.user.name} (${redactEmail( req.user.email @@ -534,10 +548,13 @@ const postNewBox = async function postNewBox (req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const getSketch = async function getSketch (req, res) { - res.header('Content-Type', 'text/plain; charset=utf-8'); +const getSketch = async function getSketch(req, res) { + res.header("Content-Type", "text/plain; charset=utf-8"); try { - const box = await Box.findBoxById(req._userParams.boxId, { populate: false, lean: false }); + const box = await Box.findBoxById(req._userParams.boxId, { + populate: false, + lean: false, + }); const params = { serialPort: req._userParams.serialPort, @@ -549,7 +566,7 @@ const getSketch = async function getSketch (req, res) { devEUI: req._userParams.devEUI, appEUI: req._userParams.appEUI, appKey: req._userParams.appKey, - display_enabled: req._userParams.display_enabled + display_enabled: req._userParams.display_enabled, }; // pass access token only if useAuth is true and access_token is available @@ -573,16 +590,22 @@ const getSketch = async function getSketch (req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const deleteBox = async function deleteBox (req, res) { +const deleteBox = async function deleteBox(req, res) { const { password, boxId } = req._userParams; try { await req.user.checkPassword(password); const box = await req.user.removeBox(boxId); - res.send({ code: 'Ok', message: 'box and all associated measurements marked for deletion' }); - clearCache(['getBoxes', 'getStats']); - postToMattermost(`Box deleted: ${req.user.name} (${redactEmail(req.user.email)}) just deleted "${box.name}" (${boxId})`); - + res.send({ + code: "Ok", + message: "box and all associated measurements marked for deletion", + }); + clearCache(["getBoxes", "getStats"]); + postToMattermost( + `Box deleted: ${req.user.name} (${redactEmail( + req.user.email + )}) just deleted "${box.name}" (${boxId})` + ); } catch (err) { return handleError(err); } @@ -596,7 +619,7 @@ const deleteBox = async function deleteBox (req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const getTransfer = async function getTransfer (req, res) { +const getTransfer = async function getTransfer(req, res) { const { boxId } = req._userParams; try { const transfer = await Claim.findClaimByDeviceID(boxId); @@ -617,12 +640,12 @@ const getTransfer = async function getTransfer (req, res) { * @apiParam (RequestBody) {RFC3339Date} expiresAt Expiration date for transfer token (default: 24 hours from now). * @apiUse JWTokenAuth */ -const createTransfer = async function createTransfer (req, res) { +const createTransfer = async function createTransfer(req, res) { const { boxId, date } = req._userParams; try { const transferCode = await req.user.transferBox(boxId, date); res.send(201, { - message: 'Box successfully prepared for transfer', + message: "Box successfully prepared for transfer", data: transferCode, }); } catch (err) { @@ -640,12 +663,12 @@ const createTransfer = async function createTransfer (req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const updateTransfer = async function updateTransfer (req, res) { +const updateTransfer = async function updateTransfer(req, res) { const { boxId, token, date } = req._userParams; try { const transfer = await req.user.updateTransfer(boxId, token, date); res.send(200, { - message: 'Transfer successfully updated', + message: "Transfer successfully updated", data: transfer, }); } catch (err) { @@ -662,7 +685,7 @@ const updateTransfer = async function updateTransfer (req, res) { * @apiParam (RequestBody) {String} token Transfer token you want to revoke. * @apiUse JWTokenAuth */ -const removeTransfer = async function removeTransfer (req, res) { +const removeTransfer = async function removeTransfer(req, res) { const { boxId, token } = req._userParams; try { await req.user.removeTransfer(boxId, token); @@ -681,7 +704,7 @@ const removeTransfer = async function removeTransfer (req, res) { * @apiParam (RequestBody) {String} token the token to claim a senseBox * @apiUse JWTokenAuth */ -const claimBox = async function claimBox (req, res) { +const claimBox = async function claimBox(req, res) { const { token } = req._userParams; try { @@ -690,247 +713,246 @@ const claimBox = async function claimBox (req, res) { await claim.expireToken(); - res.send(200, { message: 'Device successfully claimed!' }); + res.send(200, { message: "Device successfully claimed!" }); } catch (err) { return handleError(err); } }; -const getAllTags = async function getAllTags (req, res) { +const getAllTags = async function getAllTags(req, res) { try { - const grouptags = await Box.find().distinct('grouptag') - .exec(); + const grouptags = await Box.find().distinct("grouptag").exec(); - res.send({ code: 'Ok', data: grouptags }); + res.send({ code: "Ok", data: grouptags }); } catch (err) { return handleError(err); } }; - module.exports = { // auth required deleteBox: [ checkContentType, retrieveParameters([ - { predef: 'boxId', required: true }, - { predef: 'password' } + { predef: "boxId", required: true }, + { predef: "password" }, ]), checkPrivilege, - deleteBox + deleteBox, ], getTransfer: [ - retrieveParameters([{ predef: 'boxId', required: true }]), + retrieveParameters([{ predef: "boxId", required: true }]), checkPrivilege, - getTransfer + getTransfer, ], createTransfer: [ retrieveParameters([ - { predef: 'boxId', required: true }, - { predef: 'dateNoDefault' } + { predef: "boxId", required: true }, + { predef: "dateNoDefault" }, ]), validateDateNotPast, checkPrivilege, - createTransfer + createTransfer, ], updateTransfer: [ retrieveParameters([ - { predef: 'boxId', required: true }, - { name: 'token', dataType: 'String' }, - { predef: 'dateNoDefault', required: true } + { predef: "boxId", required: true }, + { name: "token", dataType: "String" }, + { predef: "dateNoDefault", required: true }, ]), validateDateNotPast, checkPrivilege, - updateTransfer + updateTransfer, ], removeTransfer: [ retrieveParameters([ - { predef: 'boxId', required: true }, - { name: 'token', dataType: 'String' } + { predef: "boxId", required: true }, + { name: "token", dataType: "String" }, ]), checkPrivilege, - removeTransfer + removeTransfer, ], claimBox: [ checkContentType, - retrieveParameters([{ name: 'token', dataType: 'String' }]), - claimBox + retrieveParameters([{ name: "token", dataType: "String" }]), + claimBox, ], getSketch: [ retrieveParameters([ - { predef: 'boxId', required: true }, + { predef: "boxId", required: true }, { - name: 'serialPort', - dataType: 'String', - allowedValues: ['Serial1', 'Serial2'] + name: "serialPort", + dataType: "String", + allowedValues: ["Serial1", "Serial2"], }, { - name: 'soilDigitalPort', - dataType: 'String', - allowedValues: ['A', 'B', 'C'] + name: "soilDigitalPort", + dataType: "String", + allowedValues: ["A", "B", "C"], }, { - name: 'soundMeterPort', - dataType: 'String', - allowedValues: ['A', 'B', 'C'] + name: "soundMeterPort", + dataType: "String", + allowedValues: ["A", "B", "C"], }, { - name: 'windSpeedPort', - dataType: 'String', - allowedValues: ['A', 'B', 'C'] + name: "windSpeedPort", + dataType: "String", + allowedValues: ["A", "B", "C"], }, - { name: 'ssid', dataType: 'StringWithEmpty' }, - { name: 'password', dataType: 'StringWithEmpty' }, - { name: 'devEUI', dataType: 'StringWithEmpty' }, - { name: 'appEUI', dataType: 'StringWithEmpty' }, - { name: 'appKey', dataType: 'StringWithEmpty' }, - { name: 'display_enabled', allowedValues: ['true', 'false'] } + { name: "ssid", dataType: "StringWithEmpty" }, + { name: "password", dataType: "StringWithEmpty" }, + { name: "devEUI", dataType: "StringWithEmpty" }, + { name: "appEUI", dataType: "StringWithEmpty" }, + { name: "appKey", dataType: "StringWithEmpty" }, + { name: "display_enabled", allowedValues: ["true", "false"] }, ]), checkPrivilege, - getSketch + getSketch, ], updateBox: [ checkContentType, retrieveParameters([ - { predef: 'boxId', required: true }, - { name: 'name' }, - { name: 'grouptag', dataType: ['String'] }, - { name: 'description', dataType: 'StringWithEmpty' }, - { name: 'weblink', dataType: 'StringWithEmpty' }, - { name: 'image', dataType: 'base64Image' }, - { name: 'exposure', allowedValues: Box.BOX_VALID_EXPOSURES }, - { name: 'mqtt', dataType: 'object' }, - { name: 'ttn', dataType: 'object' }, - { name: 'sensors', dataType: ['object'] }, - { name: 'addons', dataType: 'object' }, - { predef: 'location' }, - { name: 'useAuth', allowedValues: ['true', 'false'] }, - { name: 'generate_access_token', allowedValues: ['true', 'false'] } + { predef: "boxId", required: true }, + { name: "name" }, + { name: "grouptag", dataType: ["String"] }, + { name: "description", dataType: "StringWithEmpty" }, + { name: "weblink", dataType: "StringWithEmpty" }, + { name: "image", dataType: "base64Image" }, + { name: "exposure", allowedValues: Box.BOX_VALID_EXPOSURES }, + { name: "mqtt", dataType: "object" }, + { name: "ttn", dataType: "object" }, + { name: "sensors", dataType: ["object"] }, + { name: "addons", dataType: "object" }, + { predef: "location" }, + { name: "useAuth", allowedValues: ["true", "false"] }, + { name: "generate_access_token", allowedValues: ["true", "false"] }, ]), checkPrivilege, - updateBox + updateBox, ], // no auth required getBoxLocations: [ retrieveParameters([ - { predef: 'boxId', required: true }, + { predef: "boxId", required: true }, { - name: 'format', - defaultValue: 'json', - allowedValues: ['json', 'geojson'] + name: "format", + defaultValue: "json", + allowedValues: ["json", "geojson"], }, - { predef: 'toDate' }, - { predef: 'fromDate' }, - validateFromToTimeParams + { predef: "toDate" }, + { predef: "fromDate" }, + validateFromToTimeParams, ]), - getBoxLocations + getBoxLocations, ], postNewBox: [ checkContentType, retrieveParameters([ - { name: 'name', required: true }, - { name: 'description', dataType: 'StringWithEmpty' }, - { name: 'grouptag', dataType: ['String'], aliases: ['tag'] }, - { name: 'exposure', allowedValues: Box.BOX_VALID_EXPOSURES }, - { name: 'model', allowedValues: Box.BOX_VALID_MODELS }, - { name: 'sensors', dataType: ['object'] }, + { name: "name", required: true }, + { name: "description", dataType: "StringWithEmpty" }, + { name: "grouptag", dataType: ["String"], aliases: ["tag"] }, + { name: "exposure", allowedValues: Box.BOX_VALID_EXPOSURES }, + { name: "model", allowedValues: Box.BOX_VALID_MODELS }, + { name: "sensors", dataType: ["object"] }, { - name: 'sensorTemplates', - dataType: ['String'], + name: "sensorTemplates", + dataType: ["String"], allowedValues: [ - 'hdc1080', - 'bmp280', - 'sds 011', - 'tsl45315', - 'veml6070', - 'bme680', - 'smt50', - 'soundlevelmeter', - 'windspeed', - 'scd30', - 'dps310', - 'sps30' - ] + "hdc1080", + "bmp280", + "sds 011", + "tsl45315", + "veml6070", + "bme680", + "smt50", + "soundlevelmeter", + "windspeed", + "scd30", + "dps310", + "sps30", + "rg15", + ], }, { - name: 'serialPort', - dataType: 'String', - defaultValue: 'Serial1', - allowedValues: ['Serial1', 'Serial2'] + name: "serialPort", + dataType: "String", + defaultValue: "Serial1", + allowedValues: ["Serial1", "Serial2"], }, { - name: 'soilDigitalPort', - dataType: 'String', - defaultValue: 'A', - allowedValues: ['A', 'B', 'C'] + name: "soilDigitalPort", + dataType: "String", + defaultValue: "A", + allowedValues: ["A", "B", "C"], }, { - name: 'soundMeterPort', - dataType: 'String', - defaultValue: 'B', - allowedValues: ['A', 'B', 'C'] + name: "soundMeterPort", + dataType: "String", + defaultValue: "B", + allowedValues: ["A", "B", "C"], }, { - name: 'windSpeedPort', - dataType: 'String', - defaultValue: 'C', - allowedValues: ['A', 'B', 'C'] + name: "windSpeedPort", + dataType: "String", + defaultValue: "C", + allowedValues: ["A", "B", "C"], }, - { name: 'mqtt', dataType: 'object' }, - { name: 'ttn', dataType: 'object' }, - { name: 'useAuth', allowedValues: ['true', 'false'] }, - { predef: 'location', required: true }, - { name: 'sharedBox', allowedValues: ['true', 'false'] } + { name: "mqtt", dataType: "object" }, + { name: "ttn", dataType: "object" }, + { name: "useAuth", allowedValues: ["true", "false"] }, + { predef: "location", required: true }, + { name: "sharedBox", allowedValues: ["true", "false"] }, ]), - postNewBox + postNewBox, ], getBox: [ retrieveParameters([ - { predef: 'boxId', required: true }, + { predef: "boxId", required: true }, { - name: 'format', - defaultValue: 'json', - allowedValues: ['json', 'geojson'] - } + name: "format", + defaultValue: "json", + allowedValues: ["json", "geojson"], + }, ]), - getBox + getBox, ], getBoxes: [ retrieveParameters([ - { name: 'name', dataType: 'String' }, - { name: 'limit', dataType: 'Number', defaultValue: 5, min: 1, max: 20 }, + { name: "name", dataType: "String" }, + { name: "limit", dataType: "Number", defaultValue: 5, min: 1, max: 20 }, { - name: 'exposure', + name: "exposure", allowedValues: Box.BOX_VALID_EXPOSURES, - dataType: ['String'] + dataType: ["String"], }, - { name: 'model', dataType: ['StringWithEmpty'] }, - { name: 'grouptag', dataType: ['StringWithEmpty'] }, - { name: 'phenomenon', dataType: 'StringWithEmpty' }, - { name: 'date', dataType: ['RFC 3339'] }, + { name: "model", dataType: ["StringWithEmpty"] }, + { name: "grouptag", dataType: ["StringWithEmpty"] }, + { name: "phenomenon", dataType: "StringWithEmpty" }, + { name: "date", dataType: ["RFC 3339"] }, { - name: 'format', - defaultValue: 'json', - allowedValues: ['json', 'geojson'] + name: "format", + defaultValue: "json", + allowedValues: ["json", "geojson"], }, { - name: 'classify', - defaultValue: 'false', - allowedValues: ['true', 'false'] + name: "classify", + defaultValue: "false", + allowedValues: ["true", "false"], }, { - name: 'minimal', - defaultValue: 'false', - allowedValues: ['true', 'false'] + name: "minimal", + defaultValue: "false", + allowedValues: ["true", "false"], }, - { name: 'full', defaultValue: 'false', allowedValues: ['true', 'false'] }, - { predef: 'near' }, - { name: 'maxDistance' }, - { predef: 'bbox' } + { name: "full", defaultValue: "false", allowedValues: ["true", "false"] }, + { predef: "near" }, + { name: "maxDistance" }, + { predef: "bbox" }, ]), parseAndValidateTimeParamsForFindAllBoxes, - addCache('5 minutes', 'getBoxes'), - getBoxes + addCache("5 minutes", "getBoxes"), + getBoxes, ], - getAllTags: [addCache('5 minutes', 'getAllTags'), getAllTags] + getAllTags: [addCache("5 minutes", "getAllTags"), getAllTags], }; From c1eab2d390df16c8cdedd04bc9882ae693c46a18 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 16:09:54 +0100 Subject: [PATCH 09/27] fix lint --- .../api/lib/controllers/boxesController.js | 331 +++++++++--------- 1 file changed, 166 insertions(+), 165 deletions(-) diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index c7fe1556..a2a6170f 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -1,4 +1,4 @@ -"use strict"; +'use strict'; /** * @apiDefine ExposureFilterParam @@ -56,25 +56,25 @@ * @apiSuccess {String} [image] image showing the senseBox */ -const { Box, User, Claim } = require("@sensebox/opensensemap-api-models"), +const { Box, User, Claim } = require('@sensebox/opensensemap-api-models'), { addCache, clearCache, checkContentType, redactEmail, postToMattermost, - } = require("../helpers/apiUtils"), - { point } = require("@turf/helpers"), - classifyTransformer = require("../transformers/classifyTransformer"), + } = require('../helpers/apiUtils'), + { point } = require('@turf/helpers'), + classifyTransformer = require('../transformers/classifyTransformer'), { retrieveParameters, parseAndValidateTimeParamsForFindAllBoxes, validateFromToTimeParams, checkPrivilege, validateDateNotPast, - } = require("../helpers/userParamHelpers"), - handleError = require("../helpers/errorHandler"), - jsonstringify = require("stringify-stream"); + } = require('../helpers/userParamHelpers'), + handleError = require('../helpers/errorHandler'), + jsonstringify = require('stringify-stream'); /** * @apiDefine Addons @@ -157,7 +157,7 @@ const { Box, User, Claim } = require("@sensebox/opensensemap-api-models"), * @apiUse ContentTypeJSON * */ -const updateBox = async function updateBox(req, res) { +const updateBox = async function updateBox (req, res) { try { let box = await Box.findBoxById(req._userParams.boxId, { lean: false, @@ -165,11 +165,11 @@ const updateBox = async function updateBox(req, res) { }); box = await box.updateBox(req._userParams); if (box._sensorsChanged === true) { - req.user.mail("newSketch", box); + req.user.mail('newSketch', box); } - res.send({ code: "Ok", data: box.toJSON({ includeSecrets: true }) }); - clearCache(["getBoxes"]); + res.send({ code: 'Ok', data: box.toJSON({ includeSecrets: true }) }); + clearCache(['getBoxes']); } catch (err) { return handleError(err); } @@ -195,7 +195,7 @@ const updateBox = async function updateBox(req, res) { * { "coordinates": [7.68323, 51.9423], "type": "Point", "timestamp": "2017-07-27T12:02:00Z"} * ] */ -const getBoxLocations = async function getBoxLocations(req, res) { +const getBoxLocations = async function getBoxLocations (req, res) { try { const box = await Box.findBoxById(req._userParams.boxId, { onlyLocations: true, @@ -207,8 +207,8 @@ const getBoxLocations = async function getBoxLocations(req, res) { } }; -const geoJsonStringifyReplacer = function geoJsonStringifyReplacer(key, box) { - if (key === "") { +const geoJsonStringifyReplacer = function geoJsonStringifyReplacer (key, box) { + if (key === '') { const coordinates = box.currentLocation.coordinates; box.currentLocation = undefined; box.loc = undefined; @@ -308,16 +308,16 @@ const geoJsonStringifyReplacer = function geoJsonStringifyReplacer(key, box) { } * ] */ -const getBoxes = async function getBoxes(req, res) { +const getBoxes = async function getBoxes (req, res) { // content-type is always application/json for this route - res.header("Content-Type", "application/json; charset=utf-8"); + res.header('Content-Type', 'application/json; charset=utf-8'); // default format - let stringifier = jsonstringify({ open: "[", close: "]" }); + let stringifier = jsonstringify({ open: '[', close: ']' }); // format - if (req._userParams.format === "geojson") { + if (req._userParams.format === 'geojson') { stringifier = jsonstringify( - { open: '{"type":"FeatureCollection","features":[', close: "]}" }, + { open: '{"type":"FeatureCollection","features":[', close: ']}' }, geoJsonStringifyReplacer ); } @@ -330,16 +330,16 @@ const getBoxes = async function getBoxes(req, res) { if (req._userParams.name) { stream = await Box.findBoxes(req._userParams); } else { - if (req._userParams.minimal === "true") { + if (req._userParams.minimal === 'true') { stream = await Box.findBoxesMinimal(req._userParams); } else { stream = await Box.findBoxesLastMeasurements(req._userParams); } - if (req._userParams.classify === "true") { + if (req._userParams.classify === 'true') { stream = stream .pipe(new classifyTransformer()) - .on("error", function (err) { + .on('error', function (err) { res.end(`Error: ${err.message}`); }); } @@ -347,7 +347,7 @@ const getBoxes = async function getBoxes(req, res) { stream .pipe(stringifier) - .on("error", function (err) { + .on('error', function (err) { res.end(`Error: ${err.message}`); }) .pipe(res); @@ -461,13 +461,13 @@ const getBoxes = async function getBoxes(req, res) { } */ -const getBox = async function getBox(req, res) { +const getBox = async function getBox (req, res) { const { format, boxId } = req._userParams; try { const box = await Box.findBoxById(boxId); - if (format === "geojson") { + if (format === 'geojson') { const coordinates = box.currentLocation.coordinates; box.currentLocation = undefined; box.loc = undefined; @@ -511,12 +511,12 @@ const getBox = async function getBox(req, res) { * @apiUse ContentTypeJSON * @apiUse JWTokenAuth */ -const postNewBox = async function postNewBox(req, res) { +const postNewBox = async function postNewBox (req, res) { try { let newBox = await req.user.addBox(req._userParams); newBox = await Box.populate(newBox, Box.BOX_SUB_PROPS_FOR_POPULATION); - res.send(201, { message: "Box successfully created", data: newBox }); - clearCache(["getBoxes", "getStats"]); + res.send(201, { message: 'Box successfully created', data: newBox }); + clearCache(['getBoxes', 'getStats']); postToMattermost( `New Box: ${req.user.name} (${redactEmail( req.user.email @@ -548,8 +548,8 @@ const postNewBox = async function postNewBox(req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const getSketch = async function getSketch(req, res) { - res.header("Content-Type", "text/plain; charset=utf-8"); +const getSketch = async function getSketch (req, res) { + res.header('Content-Type', 'text/plain; charset=utf-8'); try { const box = await Box.findBoxById(req._userParams.boxId, { populate: false, @@ -590,17 +590,17 @@ const getSketch = async function getSketch(req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const deleteBox = async function deleteBox(req, res) { +const deleteBox = async function deleteBox (req, res) { const { password, boxId } = req._userParams; try { await req.user.checkPassword(password); const box = await req.user.removeBox(boxId); res.send({ - code: "Ok", - message: "box and all associated measurements marked for deletion", + code: 'Ok', + message: 'box and all associated measurements marked for deletion', }); - clearCache(["getBoxes", "getStats"]); + clearCache(['getBoxes', 'getStats']); postToMattermost( `Box deleted: ${req.user.name} (${redactEmail( req.user.email @@ -619,7 +619,7 @@ const deleteBox = async function deleteBox(req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const getTransfer = async function getTransfer(req, res) { +const getTransfer = async function getTransfer (req, res) { const { boxId } = req._userParams; try { const transfer = await Claim.findClaimByDeviceID(boxId); @@ -640,12 +640,12 @@ const getTransfer = async function getTransfer(req, res) { * @apiParam (RequestBody) {RFC3339Date} expiresAt Expiration date for transfer token (default: 24 hours from now). * @apiUse JWTokenAuth */ -const createTransfer = async function createTransfer(req, res) { +const createTransfer = async function createTransfer (req, res) { const { boxId, date } = req._userParams; try { const transferCode = await req.user.transferBox(boxId, date); res.send(201, { - message: "Box successfully prepared for transfer", + message: 'Box successfully prepared for transfer', data: transferCode, }); } catch (err) { @@ -663,12 +663,12 @@ const createTransfer = async function createTransfer(req, res) { * @apiUse JWTokenAuth * @apiUse BoxIdParam */ -const updateTransfer = async function updateTransfer(req, res) { +const updateTransfer = async function updateTransfer (req, res) { const { boxId, token, date } = req._userParams; try { const transfer = await req.user.updateTransfer(boxId, token, date); res.send(200, { - message: "Transfer successfully updated", + message: 'Transfer successfully updated', data: transfer, }); } catch (err) { @@ -685,7 +685,7 @@ const updateTransfer = async function updateTransfer(req, res) { * @apiParam (RequestBody) {String} token Transfer token you want to revoke. * @apiUse JWTokenAuth */ -const removeTransfer = async function removeTransfer(req, res) { +const removeTransfer = async function removeTransfer (req, res) { const { boxId, token } = req._userParams; try { await req.user.removeTransfer(boxId, token); @@ -704,7 +704,7 @@ const removeTransfer = async function removeTransfer(req, res) { * @apiParam (RequestBody) {String} token the token to claim a senseBox * @apiUse JWTokenAuth */ -const claimBox = async function claimBox(req, res) { +const claimBox = async function claimBox (req, res) { const { token } = req._userParams; try { @@ -713,17 +713,18 @@ const claimBox = async function claimBox(req, res) { await claim.expireToken(); - res.send(200, { message: "Device successfully claimed!" }); + res.send(200, { message: 'Device successfully claimed!' }); } catch (err) { return handleError(err); } }; -const getAllTags = async function getAllTags(req, res) { +const getAllTags = async function getAllTags (req, res) { try { - const grouptags = await Box.find().distinct("grouptag").exec(); + const grouptags = await Box.find().distinct('grouptag') + .exec(); - res.send({ code: "Ok", data: grouptags }); + res.send({ code: 'Ok', data: grouptags }); } catch (err) { return handleError(err); } @@ -734,21 +735,21 @@ module.exports = { deleteBox: [ checkContentType, retrieveParameters([ - { predef: "boxId", required: true }, - { predef: "password" }, + { predef: 'boxId', required: true }, + { predef: 'password' }, ]), checkPrivilege, deleteBox, ], getTransfer: [ - retrieveParameters([{ predef: "boxId", required: true }]), + retrieveParameters([{ predef: 'boxId', required: true }]), checkPrivilege, getTransfer, ], createTransfer: [ retrieveParameters([ - { predef: "boxId", required: true }, - { predef: "dateNoDefault" }, + { predef: 'boxId', required: true }, + { predef: 'dateNoDefault' }, ]), validateDateNotPast, checkPrivilege, @@ -756,9 +757,9 @@ module.exports = { ], updateTransfer: [ retrieveParameters([ - { predef: "boxId", required: true }, - { name: "token", dataType: "String" }, - { predef: "dateNoDefault", required: true }, + { predef: 'boxId', required: true }, + { name: 'token', dataType: 'String' }, + { predef: 'dateNoDefault', required: true }, ]), validateDateNotPast, checkPrivilege, @@ -766,46 +767,46 @@ module.exports = { ], removeTransfer: [ retrieveParameters([ - { predef: "boxId", required: true }, - { name: "token", dataType: "String" }, + { predef: 'boxId', required: true }, + { name: 'token', dataType: 'String' }, ]), checkPrivilege, removeTransfer, ], claimBox: [ checkContentType, - retrieveParameters([{ name: "token", dataType: "String" }]), + retrieveParameters([{ name: 'token', dataType: 'String' }]), claimBox, ], getSketch: [ retrieveParameters([ - { predef: "boxId", required: true }, + { predef: 'boxId', required: true }, { - name: "serialPort", - dataType: "String", - allowedValues: ["Serial1", "Serial2"], + name: 'serialPort', + dataType: 'String', + allowedValues: ['Serial1', 'Serial2'], }, { - name: "soilDigitalPort", - dataType: "String", - allowedValues: ["A", "B", "C"], + name: 'soilDigitalPort', + dataType: 'String', + allowedValues: ['A', 'B', 'C'], }, { - name: "soundMeterPort", - dataType: "String", - allowedValues: ["A", "B", "C"], + name: 'soundMeterPort', + dataType: 'String', + allowedValues: ['A', 'B', 'C'], }, { - name: "windSpeedPort", - dataType: "String", - allowedValues: ["A", "B", "C"], + name: 'windSpeedPort', + dataType: 'String', + allowedValues: ['A', 'B', 'C'], }, - { name: "ssid", dataType: "StringWithEmpty" }, - { name: "password", dataType: "StringWithEmpty" }, - { name: "devEUI", dataType: "StringWithEmpty" }, - { name: "appEUI", dataType: "StringWithEmpty" }, - { name: "appKey", dataType: "StringWithEmpty" }, - { name: "display_enabled", allowedValues: ["true", "false"] }, + { name: 'ssid', dataType: 'StringWithEmpty' }, + { name: 'password', dataType: 'StringWithEmpty' }, + { name: 'devEUI', dataType: 'StringWithEmpty' }, + { name: 'appEUI', dataType: 'StringWithEmpty' }, + { name: 'appKey', dataType: 'StringWithEmpty' }, + { name: 'display_enabled', allowedValues: ['true', 'false'] }, ]), checkPrivilege, getSketch, @@ -813,20 +814,20 @@ module.exports = { updateBox: [ checkContentType, retrieveParameters([ - { predef: "boxId", required: true }, - { name: "name" }, - { name: "grouptag", dataType: ["String"] }, - { name: "description", dataType: "StringWithEmpty" }, - { name: "weblink", dataType: "StringWithEmpty" }, - { name: "image", dataType: "base64Image" }, - { name: "exposure", allowedValues: Box.BOX_VALID_EXPOSURES }, - { name: "mqtt", dataType: "object" }, - { name: "ttn", dataType: "object" }, - { name: "sensors", dataType: ["object"] }, - { name: "addons", dataType: "object" }, - { predef: "location" }, - { name: "useAuth", allowedValues: ["true", "false"] }, - { name: "generate_access_token", allowedValues: ["true", "false"] }, + { predef: 'boxId', required: true }, + { name: 'name' }, + { name: 'grouptag', dataType: ['String'] }, + { name: 'description', dataType: 'StringWithEmpty' }, + { name: 'weblink', dataType: 'StringWithEmpty' }, + { name: 'image', dataType: 'base64Image' }, + { name: 'exposure', allowedValues: Box.BOX_VALID_EXPOSURES }, + { name: 'mqtt', dataType: 'object' }, + { name: 'ttn', dataType: 'object' }, + { name: 'sensors', dataType: ['object'] }, + { name: 'addons', dataType: 'object' }, + { predef: 'location' }, + { name: 'useAuth', allowedValues: ['true', 'false'] }, + { name: 'generate_access_token', allowedValues: ['true', 'false'] }, ]), checkPrivilege, updateBox, @@ -834,14 +835,14 @@ module.exports = { // no auth required getBoxLocations: [ retrieveParameters([ - { predef: "boxId", required: true }, + { predef: 'boxId', required: true }, { - name: "format", - defaultValue: "json", - allowedValues: ["json", "geojson"], + name: 'format', + defaultValue: 'json', + allowedValues: ['json', 'geojson'], }, - { predef: "toDate" }, - { predef: "fromDate" }, + { predef: 'toDate' }, + { predef: 'fromDate' }, validateFromToTimeParams, ]), getBoxLocations, @@ -849,110 +850,110 @@ module.exports = { postNewBox: [ checkContentType, retrieveParameters([ - { name: "name", required: true }, - { name: "description", dataType: "StringWithEmpty" }, - { name: "grouptag", dataType: ["String"], aliases: ["tag"] }, - { name: "exposure", allowedValues: Box.BOX_VALID_EXPOSURES }, - { name: "model", allowedValues: Box.BOX_VALID_MODELS }, - { name: "sensors", dataType: ["object"] }, + { name: 'name', required: true }, + { name: 'description', dataType: 'StringWithEmpty' }, + { name: 'grouptag', dataType: ['String'], aliases: ['tag'] }, + { name: 'exposure', allowedValues: Box.BOX_VALID_EXPOSURES }, + { name: 'model', allowedValues: Box.BOX_VALID_MODELS }, + { name: 'sensors', dataType: ['object'] }, { - name: "sensorTemplates", - dataType: ["String"], + name: 'sensorTemplates', + dataType: ['String'], allowedValues: [ - "hdc1080", - "bmp280", - "sds 011", - "tsl45315", - "veml6070", - "bme680", - "smt50", - "soundlevelmeter", - "windspeed", - "scd30", - "dps310", - "sps30", - "rg15", + 'hdc1080', + 'bmp280', + 'sds 011', + 'tsl45315', + 'veml6070', + 'bme680', + 'smt50', + 'soundlevelmeter', + 'windspeed', + 'scd30', + 'dps310', + 'sps30', + 'rg15', ], }, { - name: "serialPort", - dataType: "String", - defaultValue: "Serial1", - allowedValues: ["Serial1", "Serial2"], + name: 'serialPort', + dataType: 'String', + defaultValue: 'Serial1', + allowedValues: ['Serial1', 'Serial2'], }, { - name: "soilDigitalPort", - dataType: "String", - defaultValue: "A", - allowedValues: ["A", "B", "C"], + name: 'soilDigitalPort', + dataType: 'String', + defaultValue: 'A', + allowedValues: ['A', 'B', 'C'], }, { - name: "soundMeterPort", - dataType: "String", - defaultValue: "B", - allowedValues: ["A", "B", "C"], + name: 'soundMeterPort', + dataType: 'String', + defaultValue: 'B', + allowedValues: ['A', 'B', 'C'], }, { - name: "windSpeedPort", - dataType: "String", - defaultValue: "C", - allowedValues: ["A", "B", "C"], + name: 'windSpeedPort', + dataType: 'String', + defaultValue: 'C', + allowedValues: ['A', 'B', 'C'], }, - { name: "mqtt", dataType: "object" }, - { name: "ttn", dataType: "object" }, - { name: "useAuth", allowedValues: ["true", "false"] }, - { predef: "location", required: true }, - { name: "sharedBox", allowedValues: ["true", "false"] }, + { name: 'mqtt', dataType: 'object' }, + { name: 'ttn', dataType: 'object' }, + { name: 'useAuth', allowedValues: ['true', 'false'] }, + { predef: 'location', required: true }, + { name: 'sharedBox', allowedValues: ['true', 'false'] }, ]), postNewBox, ], getBox: [ retrieveParameters([ - { predef: "boxId", required: true }, + { predef: 'boxId', required: true }, { - name: "format", - defaultValue: "json", - allowedValues: ["json", "geojson"], + name: 'format', + defaultValue: 'json', + allowedValues: ['json', 'geojson'], }, ]), getBox, ], getBoxes: [ retrieveParameters([ - { name: "name", dataType: "String" }, - { name: "limit", dataType: "Number", defaultValue: 5, min: 1, max: 20 }, + { name: 'name', dataType: 'String' }, + { name: 'limit', dataType: 'Number', defaultValue: 5, min: 1, max: 20 }, { - name: "exposure", + name: 'exposure', allowedValues: Box.BOX_VALID_EXPOSURES, - dataType: ["String"], + dataType: ['String'], }, - { name: "model", dataType: ["StringWithEmpty"] }, - { name: "grouptag", dataType: ["StringWithEmpty"] }, - { name: "phenomenon", dataType: "StringWithEmpty" }, - { name: "date", dataType: ["RFC 3339"] }, + { name: 'model', dataType: ['StringWithEmpty'] }, + { name: 'grouptag', dataType: ['StringWithEmpty'] }, + { name: 'phenomenon', dataType: 'StringWithEmpty' }, + { name: 'date', dataType: ['RFC 3339'] }, { - name: "format", - defaultValue: "json", - allowedValues: ["json", "geojson"], + name: 'format', + defaultValue: 'json', + allowedValues: ['json', 'geojson'], }, { - name: "classify", - defaultValue: "false", - allowedValues: ["true", "false"], + name: 'classify', + defaultValue: 'false', + allowedValues: ['true', 'false'], }, { - name: "minimal", - defaultValue: "false", - allowedValues: ["true", "false"], + name: 'minimal', + defaultValue: 'false', + allowedValues: ['true', 'false'], }, - { name: "full", defaultValue: "false", allowedValues: ["true", "false"] }, - { predef: "near" }, - { name: "maxDistance" }, - { predef: "bbox" }, + { name: 'full', defaultValue: 'false', allowedValues: ['true', 'false'] }, + { predef: 'near' }, + { name: 'maxDistance' }, + { predef: 'bbox' }, ]), parseAndValidateTimeParamsForFindAllBoxes, - addCache("5 minutes", "getBoxes"), + addCache('5 minutes', 'getBoxes'), getBoxes, ], - getAllTags: [addCache("5 minutes", "getAllTags"), getAllTags], + getAllTags: [addCache('5 minutes', 'getAllTags'), getAllTags], }; From 38cde43b2da3a3326e496b0b7dd6916cba13960b Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 16:17:53 +0100 Subject: [PATCH 10/27] v3.2.1 --- packages/models/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index a8a64a5a..cb439ec6 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +## v3.3.1 + +- Add Hydreon RG-15 Optical Rain Gauge + ## v3.3.0 - Add DNMS sensor template (#881) From 2dd92b2ab7c6363b37b997335bcab2b23e03a7d8 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 16:36:02 +0100 Subject: [PATCH 11/27] bump model and allow rg-15 template --- packages/api/lib/controllers/boxesController.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index a2a6170f..f5e5d9ac 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -498,7 +498,7 @@ const getBox = async function getBox (req, res) { * @apiParam (RequestBody) {Location} location the coordinates of this senseBox. * @apiParam (RequestBody) {String="homeV2Lora","homeV2Ethernet","homeV2Wifi","homeEthernet","homeWifi","homeEthernetFeinstaub","homeWifiFeinstaub","luftdaten_sds011","luftdaten_sds011_dht11","luftdaten_sds011_dht22","luftdaten_sds011_bmp180","luftdaten_sds011_bme280","hackair_home_v2"} [model] specify the model if you want to use a predefined senseBox model, autocreating sensor definitions. * @apiParam (RequestBody) {Sensor[]} [sensors] an array containing the sensors of this senseBox. Only use if `model` is unspecified. - * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30","rg15"} [sensorTemplates] Specify which sensors should be included. + * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30","rg-15"} [sensorTemplates] Specify which sensors should be included. * @apiParam (RequestBody) {Object} [mqtt] specify parameters of the MQTT integration for external measurement upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Object} [ttn] specify parameters for the TTN integration for measurement from TheThingsNetwork.org upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Boolean="true","false"} [useAuth] whether to use access_token or not for authentication @@ -872,7 +872,7 @@ module.exports = { 'scd30', 'dps310', 'sps30', - 'rg15', + 'rg-15', ], }, { From c86f363e84c56eb524f0beeb1b2c52f6d24837f4 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 16:41:24 +0100 Subject: [PATCH 12/27] v3.3.1 --- packages/models/CHANGELOG.md | 2 ++ packages/models/package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index cb439ec6..93366939 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -4,6 +4,8 @@ ## v3.3.1 +## v3.3.1 + - Add Hydreon RG-15 Optical Rain Gauge ## v3.3.0 diff --git a/packages/models/package.json b/packages/models/package.json index 461cbb8b..87b78f8f 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,7 +1,7 @@ { "name": "@sensebox/opensensemap-api-models", "description": "openSenseMap data models and database connection", - "version": "3.3.0", + "version": "3.3.1", "main": "index.js", "license": "MIT", "dependencies": { From 54b36a12a135b4a5d26cc11eecfa2c2a7729c6ed Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 5 Feb 2025 16:42:33 +0100 Subject: [PATCH 13/27] model version --- packages/api/package.json | 2 +- packages/models/CHANGELOG.md | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index e8f6d287..dcfaf95d 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -12,7 +12,7 @@ "Felix Erdmann" ], "dependencies": { - "@sensebox/opensensemap-api-models": "3.3.0", + "@sensebox/opensensemap-api-models": "3.3.1", "@turf/area": "^6.5.0", "@turf/bbox": "^6.5.0", "@turf/centroid": "^6.5.0", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 93366939..d7d68f82 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -3,9 +3,6 @@ ## Unreleased ## v3.3.1 - -## v3.3.1 - - Add Hydreon RG-15 Optical Rain Gauge ## v3.3.0 From f570720a79b836b75587e4969af08ec118f3c64b Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Mon, 17 Mar 2025 16:40:42 +0100 Subject: [PATCH 14/27] remove event intensity, some package.json stuff --- packages/api/package.json | 3 ++- packages/models/package.json | 2 +- .../box/sensorLayouts/sensorDefinitions/rg15_eventacc.js | 8 -------- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 14 deletions(-) delete mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js diff --git a/packages/api/package.json b/packages/api/package.json index dcfaf95d..3f552ebb 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -9,7 +9,8 @@ "Gerald Pape", "Norwin Roosen", "Umut Tas", - "Felix Erdmann" + "Felix Erdmann", + "Eric Thieme-Garmann" ], "dependencies": { "@sensebox/opensensemap-api-models": "3.3.1", diff --git a/packages/models/package.json b/packages/models/package.json index 87b78f8f..9d4d8257 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -8,7 +8,7 @@ "@grpc/grpc-js": "^1.9.4", "@grpc/proto-loader": "^0.7.10", "@sensebox/osem-protos": "^1.1.0", - "@sensebox/sketch-templater": "1.13.1", + "@sensebox/sketch-templater": "1.13.2", "bcrypt": "^5.1.1", "bullmq": "^4.12.3", "config": "^3.3.6", diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js deleted file mode 100644 index 8f4d099e..00000000 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_eventacc.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -module.exports = { - title: 'Niederschlag (letztes Ereignis)', - unit: 'mm/m²', - sensorType: 'RG-15', - icon: 'osem-umbrella', -}; diff --git a/yarn.lock b/yarn.lock index 1dd7003a..d0b9aab8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -178,10 +178,10 @@ resolved "https://registry.yarnpkg.com/@sensebox/osem-protos/-/osem-protos-1.1.0.tgz#a7de8bc6be867953f1309181a012063c23299e79" integrity sha512-H+nUVcWlT0dvIqfJnYHuX9JBcCkP1ZKGE5YTRNWPbAEdZ11h+srpQsmeI58wK5hJcdukaZAjc4Dy96IeGM77aA== -"@sensebox/sketch-templater@1.13.1": - version "1.13.1" - resolved "https://registry.yarnpkg.com/@sensebox/sketch-templater/-/sketch-templater-1.13.1.tgz#ecfe6201e7d584d7cd5f6e9a3bc4ea62d3889afe" - integrity sha512-zlwKd/usPPMyE5uyD7ngAN/BIpMTjVrQ9SKdWrdANjdW19vsr3IXFv7liHvSh2od1ipPt+JgIENMJAMCJJG4sA== +"@sensebox/sketch-templater@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@sensebox/sketch-templater/-/sketch-templater-1.13.2.tgz#711bb84587a9140e6001475c783fff22ada3ff0d" + integrity sha512-v26oCPFbEXtQl1SFf9+GBMFqrY/lyRwbaviVWXq8hQZq+HbJDdb3TcfE/i0szJN/MMwAN6CAXaxjyKAmuYkFxQ== dependencies: config "^3.3.7" dedent "^0.7.0" From 356a635dae2c428f33d6beaa55483e4c0f3c25ca Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Mon, 17 Mar 2025 17:01:57 +0100 Subject: [PATCH 15/27] remove mentions of event acc --- packages/models/src/box/sensorLayouts/sensebox.home.mcu.js | 2 -- .../models/src/box/sensorLayouts/sensorDefinitions/index.js | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js index 8753a0b4..c28a2e0c 100644 --- a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js +++ b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js @@ -25,7 +25,6 @@ const { sps30_pm4, sps30_pm10, rg15_intensity, - rg15_eventAcc, rg15_totalAcc } = sensorDefinitions; @@ -52,6 +51,5 @@ module.exports = [ sps30_pm4, sps30_pm10, rg15_intensity, - rg15_eventAcc, rg15_totalAcc, ]; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index 940ac4dc..d79bbc45 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -48,7 +48,6 @@ const veml6070_uvintensity = require('./veml6070_uvintensity'), sps30_pm4 = require('./sps30_pm4'), sps30_pm10 = require('./sps30_pm10'), rg15_intensity = require('./rg15_intensity'), - rg15_eventAcc = require('./rg15_eventacc'), rg15_totalAcc = require('./rg15_totalacc'), sht3x_temperature = require('./sht3x_temperature'), sht3x_humidity = require('./sht3x_humidity'), @@ -104,7 +103,6 @@ module.exports = { sps30_pm4, sps30_pm10, rg15_intensity, - rg15_eventAcc, rg15_totalAcc, sht3x_temperature, sht3x_humidity, From 1b648f39fc52baf5422a435d1454d56357bd0120 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 13:51:32 +0100 Subject: [PATCH 16/27] v3.3.2 --- packages/models/CHANGELOG.md | 5 +++++ packages/models/package.json | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index d7d68f82..35d0bbef 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +## v3.3.2 + +## v3.3.2 + - Have option to supply templater with serial ports for SDS and RG-15 + ## v3.3.1 - Add Hydreon RG-15 Optical Rain Gauge diff --git a/packages/models/package.json b/packages/models/package.json index 9d4d8257..befe0f7a 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,14 +1,14 @@ { "name": "@sensebox/opensensemap-api-models", "description": "openSenseMap data models and database connection", - "version": "3.3.1", + "version": "3.3.2", "main": "index.js", "license": "MIT", "dependencies": { "@grpc/grpc-js": "^1.9.4", "@grpc/proto-loader": "^0.7.10", "@sensebox/osem-protos": "^1.1.0", - "@sensebox/sketch-templater": "1.13.2", + "@sensebox/sketch-templater": "1.13.3", "bcrypt": "^5.1.1", "bullmq": "^4.12.3", "config": "^3.3.6", From 2b0c300a570ded5ebb458f4f8432e39a36d33f02 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 13:52:39 +0100 Subject: [PATCH 17/27] allow serial port specification --- packages/api/lib/controllers/boxesController.js | 13 +++++++++++-- packages/models/src/box/box.js | 9 ++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index f5e5d9ac..eeb7e471 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -556,8 +556,10 @@ const getSketch = async function getSketch (req, res) { lean: false, }); + const params = { - serialPort: req._userParams.serialPort, + sdsSerialPort: req._userParams.sdsSerialPort, + rg15SerialPort: req._userParams.rg15SerialPort, soilDigitalPort: req._userParams.soilDigitalPort, soundMeterPort: req._userParams.soundMeterPort, windSpeedPort: req._userParams.windSpeedPort, @@ -569,6 +571,8 @@ const getSketch = async function getSketch (req, res) { display_enabled: req._userParams.display_enabled, }; + + // pass access token only if useAuth is true and access_token is available if (box.access_token) { params.access_token = box.access_token; @@ -782,7 +786,12 @@ module.exports = { retrieveParameters([ { predef: 'boxId', required: true }, { - name: 'serialPort', + name: 'sdsSerialPort', + dataType: 'String', + allowedValues: ['Serial1', 'Serial2'], + }, + { + name: 'rg15SerialPort', dataType: 'String', allowedValues: ['Serial1', 'Serial2'], }, diff --git a/packages/models/src/box/box.js b/packages/models/src/box/box.js index a29100bd..e40eefed 100644 --- a/packages/models/src/box/box.js +++ b/packages/models/src/box/box.js @@ -881,9 +881,12 @@ boxSchema.methods.updateSensors = function updateSensors (sensors) { } }; -boxSchema.methods.getSketch = function getSketch ({ encoding, serialPort, soilDigitalPort, soundMeterPort, windSpeedPort, ssid, password, devEUI, appEUI, appKey, access_token, display_enabled } = {}) { - if (serialPort) { - this.serialPort = serialPort; +boxSchema.methods.getSketch = function getSketch ({ encoding, sdsSerialPort,rg15SerialPort, soilDigitalPort, soundMeterPort, windSpeedPort, ssid, password, devEUI, appEUI, appKey, access_token, display_enabled } = {}) { + if (sdsSerialPort) { + this.sdsSerialPort = sdsSerialPort; + } + if (rg15SerialPort) { + this.rg15SerialPort = rg15SerialPort; } if (soilDigitalPort) { this.soilDigitalPort = soilDigitalPort; From 163b8a2e57c60d2991ee0a4268f0c5fa87c5bb89 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 13:55:44 +0100 Subject: [PATCH 18/27] bump api-models --- packages/api/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/api/package.json b/packages/api/package.json index 3f552ebb..5ff82ac4 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -13,7 +13,7 @@ "Eric Thieme-Garmann" ], "dependencies": { - "@sensebox/opensensemap-api-models": "3.3.1", + "@sensebox/opensensemap-api-models": "3.3.2", "@turf/area": "^6.5.0", "@turf/bbox": "^6.5.0", "@turf/centroid": "^6.5.0", From bdb9a50c1f75d7c711368facf6f6cdf22d2d3065 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 14:40:48 +0100 Subject: [PATCH 19/27] bump templater version --- packages/models/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/models/package.json b/packages/models/package.json index befe0f7a..7bfe69ea 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -8,7 +8,7 @@ "@grpc/grpc-js": "^1.9.4", "@grpc/proto-loader": "^0.7.10", "@sensebox/osem-protos": "^1.1.0", - "@sensebox/sketch-templater": "1.13.3", + "@sensebox/sketch-templater": "1.13.4", "bcrypt": "^5.1.1", "bullmq": "^4.12.3", "config": "^3.3.6", From 1a7e0087a37ed92a2a1925c2a861c9255c1ff540 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 15:08:03 +0100 Subject: [PATCH 20/27] bump templater version --- packages/models/package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/models/package.json b/packages/models/package.json index 7bfe69ea..57ad0dcd 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -8,7 +8,7 @@ "@grpc/grpc-js": "^1.9.4", "@grpc/proto-loader": "^0.7.10", "@sensebox/osem-protos": "^1.1.0", - "@sensebox/sketch-templater": "1.13.4", + "@sensebox/sketch-templater": "1.13.6", "bcrypt": "^5.1.1", "bullmq": "^4.12.3", "config": "^3.3.6", diff --git a/yarn.lock b/yarn.lock index d0b9aab8..f0339487 100644 --- a/yarn.lock +++ b/yarn.lock @@ -178,10 +178,10 @@ resolved "https://registry.yarnpkg.com/@sensebox/osem-protos/-/osem-protos-1.1.0.tgz#a7de8bc6be867953f1309181a012063c23299e79" integrity sha512-H+nUVcWlT0dvIqfJnYHuX9JBcCkP1ZKGE5YTRNWPbAEdZ11h+srpQsmeI58wK5hJcdukaZAjc4Dy96IeGM77aA== -"@sensebox/sketch-templater@1.13.2": - version "1.13.2" - resolved "https://registry.yarnpkg.com/@sensebox/sketch-templater/-/sketch-templater-1.13.2.tgz#711bb84587a9140e6001475c783fff22ada3ff0d" - integrity sha512-v26oCPFbEXtQl1SFf9+GBMFqrY/lyRwbaviVWXq8hQZq+HbJDdb3TcfE/i0szJN/MMwAN6CAXaxjyKAmuYkFxQ== +"@sensebox/sketch-templater@1.13.6": + version "1.13.6" + resolved "https://registry.yarnpkg.com/@sensebox/sketch-templater/-/sketch-templater-1.13.6.tgz#65c5974d3a282ba74f135343ef11d0615d50ba6f" + integrity sha512-VwcqTA0mg7Mus80TDMaaa3eV5z7W+dpHphIIicB+DsY8r1J7QgwvGxiJYTfNJGbirJlR+Q9SqnEfbmILPKlk8w== dependencies: config "^3.3.7" dedent "^0.7.0" From 3ed20d59859bffccb96e934603b1ff11b8cfbd65 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 19:26:47 +0100 Subject: [PATCH 21/27] fix lint error --- packages/models/src/box/box.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/models/src/box/box.js b/packages/models/src/box/box.js index e40eefed..c5dd0c68 100644 --- a/packages/models/src/box/box.js +++ b/packages/models/src/box/box.js @@ -881,7 +881,7 @@ boxSchema.methods.updateSensors = function updateSensors (sensors) { } }; -boxSchema.methods.getSketch = function getSketch ({ encoding, sdsSerialPort,rg15SerialPort, soilDigitalPort, soundMeterPort, windSpeedPort, ssid, password, devEUI, appEUI, appKey, access_token, display_enabled } = {}) { +boxSchema.methods.getSketch = function getSketch ({ encoding, sdsSerialPort, rg15SerialPort, soilDigitalPort, soundMeterPort, windSpeedPort, ssid, password, devEUI, appEUI, appKey, access_token, display_enabled } = {}) { if (sdsSerialPort) { this.sdsSerialPort = sdsSerialPort; } From 544abc8a27fe2fb8cf608fd0da7f709faff91535 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 19:27:17 +0100 Subject: [PATCH 22/27] remove always failing test --- tests/tests/ZZZ-mail-test.js | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/tests/tests/ZZZ-mail-test.js b/tests/tests/ZZZ-mail-test.js index 1cd096b8..c5e2299e 100644 --- a/tests/tests/ZZZ-mail-test.js +++ b/tests/tests/ZZZ-mail-test.js @@ -549,29 +549,7 @@ describe('mails', function () { }); }); - it('should have sent special luftdaten info welcome mail', async function () { - const foundMails = await getMails( - 'luftdaten@email', - 'Your device on openSenseMap' - ); - expect(foundMails).not.to.be.empty; - expect( - foundMails.every(function (mail) { - expect(mail).to.exist; - const links = mail('a'); - let hasLink = false; - links.each(function (_, link) { - const href = $(link).attr('href'); - if (href.includes('opensensemap-luftdaten')) { - hasLink = true; - } - }); - expect(hasLink).to.be.true; - - return hasLink; - }) - ).true; - }); + it('should have sent a mail upon deletion of an user', async function () { const mail = await getMail( From c2bf958f222c264efddc9cfd91221842b540e9e6 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 18 Mar 2025 19:28:50 +0100 Subject: [PATCH 23/27] lint stuff --- tests/tests/ZZZ-mail-test.js | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/tests/tests/ZZZ-mail-test.js b/tests/tests/ZZZ-mail-test.js index c5e2299e..5dfd6774 100644 --- a/tests/tests/ZZZ-mail-test.js +++ b/tests/tests/ZZZ-mail-test.js @@ -35,23 +35,6 @@ const getMail = async function getMail ( return mail; }; -const getMails = async function getMails (address, subject) { - const mailsResponse = await chakram.get( - 'http://mailhog:8025/api/v2/messages?limit=9999' - ); - const mails = mailsResponse.body.items; - - return mails - .filter(function (item) { - return ( - item.Raw.To[0] === address && - item.Content.Headers.Subject.includes(subject) - ); - }) - .map(function (mail) { - return $.load(mimelib.decodeQuotedPrintable(mail.Content.Body)); - }); -}; describe('mails', function () { it('should have sent mails', function () { @@ -549,7 +532,6 @@ describe('mails', function () { }); }); - it('should have sent a mail upon deletion of an user', async function () { const mail = await getMail( From dcb3b865e77d09c4b4c002a9286a0cc2765a69d7 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 19 Mar 2025 17:40:42 +0100 Subject: [PATCH 24/27] remove - from sensor type --- packages/api/lib/controllers/boxesController.js | 4 ++-- .../src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js | 2 +- .../src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index eeb7e471..25d3534e 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -498,7 +498,7 @@ const getBox = async function getBox (req, res) { * @apiParam (RequestBody) {Location} location the coordinates of this senseBox. * @apiParam (RequestBody) {String="homeV2Lora","homeV2Ethernet","homeV2Wifi","homeEthernet","homeWifi","homeEthernetFeinstaub","homeWifiFeinstaub","luftdaten_sds011","luftdaten_sds011_dht11","luftdaten_sds011_dht22","luftdaten_sds011_bmp180","luftdaten_sds011_bme280","hackair_home_v2"} [model] specify the model if you want to use a predefined senseBox model, autocreating sensor definitions. * @apiParam (RequestBody) {Sensor[]} [sensors] an array containing the sensors of this senseBox. Only use if `model` is unspecified. - * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30","rg-15"} [sensorTemplates] Specify which sensors should be included. + * @apiParam (RequestBody) {String[]="hdc1080","bmp280","tsl45315","veml6070","sds011","bme680","smt50","soundlevelmeter","windspeed","scd30","dps310","sps30","rg15"} [sensorTemplates] Specify which sensors should be included. * @apiParam (RequestBody) {Object} [mqtt] specify parameters of the MQTT integration for external measurement upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Object} [ttn] specify parameters for the TTN integration for measurement from TheThingsNetwork.org upload. Please see below for the accepted parameters * @apiParam (RequestBody) {Boolean="true","false"} [useAuth] whether to use access_token or not for authentication @@ -881,7 +881,7 @@ module.exports = { 'scd30', 'dps310', 'sps30', - 'rg-15', + 'rg15', ], }, { diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js index a2a458db..32b40b0e 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js @@ -3,6 +3,6 @@ module.exports = { title: 'Regenintensität', unit: 'mm/h', - sensorType: 'RG-15', + sensorType: 'RG15', icon: 'osem-umbrella' }; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js index 51a5dc78..475305c5 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js @@ -3,7 +3,7 @@ module.exports = { title: 'Niederschlag (Insgesamt)', unit: 'mm/m²', - sensorType: 'RG-15', + sensorType: 'RG15', icon: 'osem-umbrella', }; From a2c6dd20c72ff28bd49c977716b3a12652164148 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Wed, 19 Mar 2025 17:45:06 +0100 Subject: [PATCH 25/27] change sensor title --- .../src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js | 2 +- .../src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js index 32b40b0e..c7eeb1dd 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_intensity.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - title: 'Regenintensität', + title: 'Niederschlagsintensität', unit: 'mm/h', sensorType: 'RG15', icon: 'osem-umbrella' diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js index 475305c5..61a14266 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/rg15_totalacc.js @@ -1,7 +1,7 @@ 'use strict'; module.exports = { - title: 'Niederschlag (Insgesamt)', + title: 'Gesamtniederschlag', unit: 'mm/m²', sensorType: 'RG15', icon: 'osem-umbrella', From ce724d51e1f4a120fc4691a749c1ad661599e119 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 20 May 2025 18:10:59 +0200 Subject: [PATCH 26/27] added sb041 charger --- packages/api/lib/controllers/boxesController.js | 1 + .../models/src/box/sensorLayouts/sensebox.home.mcu.js | 9 ++++++++- .../src/box/sensorLayouts/sensorDefinitions/index.js | 9 ++++++++- .../sensorDefinitions/sb041_batteryvoltage.js | 9 +++++++++ .../box/sensorLayouts/sensorDefinitions/sb041_level.js | 9 +++++++++ .../sensorDefinitions/sb041_solarvoltage.js | 9 +++++++++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_batteryvoltage.js create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_level.js create mode 100644 packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_solarvoltage.js diff --git a/packages/api/lib/controllers/boxesController.js b/packages/api/lib/controllers/boxesController.js index 25d3534e..fa74163f 100644 --- a/packages/api/lib/controllers/boxesController.js +++ b/packages/api/lib/controllers/boxesController.js @@ -882,6 +882,7 @@ module.exports = { 'dps310', 'sps30', 'rg15', + 'sb041' ], }, { diff --git a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js index c28a2e0c..759231f0 100644 --- a/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js +++ b/packages/models/src/box/sensorLayouts/sensebox.home.mcu.js @@ -25,7 +25,10 @@ const { sps30_pm4, sps30_pm10, rg15_intensity, - rg15_totalAcc + rg15_totalAcc, + sb041_solarvoltage, + sb041_batteryvoltage, + sb041_level, } = sensorDefinitions; module.exports = [ @@ -52,4 +55,8 @@ module.exports = [ sps30_pm10, rg15_intensity, rg15_totalAcc, + sb041_solarvoltage, + sb041_batteryvoltage, + sb041_level, ]; + diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js index d79bbc45..e59ae736 100644 --- a/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/index.js @@ -53,7 +53,11 @@ const veml6070_uvintensity = require('./veml6070_uvintensity'), sht3x_humidity = require('./sht3x_humidity'), dnms_la_eq = require('./dnms_la_eq'), dnms_la_min = require('./dnms_la_min'), - dnms_la_max = require('./dnms_la_max'); + dnms_la_max = require('./dnms_la_max'), + sb041_level = require('./sb041_level'), + sb041_batteryvoltage = require('./sb041_batteryvoltage'), + sb041_solarvoltage = require('./sb041_solarvoltage'); + module.exports = { hdc1008_temperature, hdc1080_temperature, @@ -109,4 +113,7 @@ module.exports = { dnms_la_eq, dnms_la_min, dnms_la_max, + sb041_level, + sb041_batteryvoltage, + sb041_solarvoltage, }; diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_batteryvoltage.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_batteryvoltage.js new file mode 100644 index 00000000..28e9082e --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_batteryvoltage.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + title: 'Batteriespannung', + unit: 'V', + sensorType: 'SB041', + icon: 'osem-battery', +}; + diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_level.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_level.js new file mode 100644 index 00000000..2718be68 --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_level.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + title: 'Ladelevel', + unit: 'Prozent', + sensorType: 'SB041', + icon: 'osem-battery', +}; + diff --git a/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_solarvoltage.js b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_solarvoltage.js new file mode 100644 index 00000000..1748c427 --- /dev/null +++ b/packages/models/src/box/sensorLayouts/sensorDefinitions/sb041_solarvoltage.js @@ -0,0 +1,9 @@ +'use strict'; + +module.exports = { + title: 'Solarspannung', + unit: 'V', + sensorType: 'SB041', + icon: 'osem-battery', +}; + From cddbd48bd152c6c456f4d998736bee689ef93815 Mon Sep 17 00:00:00 2001 From: Eric Thieme-Garmann Date: Tue, 20 May 2025 18:12:48 +0200 Subject: [PATCH 27/27] update deprecated ubuntu version --- .github/workflows/deploy-docs.yaml | 2 +- .github/workflows/test.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy-docs.yaml b/.github/workflows/deploy-docs.yaml index 7782dcd1..afac6004 100644 --- a/.github/workflows/deploy-docs.yaml +++ b/.github/workflows/deploy-docs.yaml @@ -13,7 +13,7 @@ on: jobs: test: name: 🚀 Deploy docs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 7436f28f..0d1df902 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,7 +11,7 @@ on: jobs: lint: name: 🔬 Lint code - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -44,7 +44,7 @@ jobs: test: name: ⚡ Run tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4