diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b629cf04..ad6dbeae 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -20,7 +20,7 @@ env: jobs: lint: name: Lint code using eslint - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 @@ -55,7 +55,7 @@ jobs: build: name: Build frontend - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 diff --git a/app/images/rg-15.png b/app/images/rg-15.png new file mode 100644 index 00000000..57221308 Binary files /dev/null and b/app/images/rg-15.png differ diff --git a/app/images/senseBoxMCUS2.png b/app/images/senseBoxMCUS2.png new file mode 100644 index 00000000..735cbda1 Binary files /dev/null and b/app/images/senseBoxMCUS2.png differ diff --git a/app/images/solarpanel2.png b/app/images/solarpanel2.png new file mode 100644 index 00000000..07abc432 Binary files /dev/null and b/app/images/solarpanel2.png differ diff --git a/app/scripts/app.js b/app/scripts/app.js index 239b52bf..cd9a5d5d 100644 --- a/app/scripts/app.js +++ b/app/scripts/app.js @@ -491,7 +491,7 @@ '$translateProvider', function ($translateProvider) { $translateProvider.useStaticFilesLoader({ - prefix: 'https://unpkg.com/@sensebox/opensensemap-i18n@4.3.0/dist/', + prefix: 'https://unpkg.com/@sensebox/opensensemap-i18n@latest/dist/', suffix: '.json', }); $translateProvider.use('de_DE'); diff --git a/app/scripts/controllers/account.box.edit.script.js b/app/scripts/controllers/account.box.edit.script.js index ad7a243b..571b7640 100644 --- a/app/scripts/controllers/account.box.edit.script.js +++ b/app/scripts/controllers/account.box.edit.script.js @@ -12,10 +12,12 @@ vm.box = boxData; vm.display_enabled = false; vm.enable_debug = false; - vm.serialPort = 'Serial1'; + vm.sdsSerialPort = 'Serial1'; + vm.rg15SerialPort = 'Serial1'; vm.boxScript = ''; vm.showConfiguration = false; - vm.showSerialPort = false; + vm.showSdsPort = false; + vm.showRG15Port = false; vm.soilDigitalPort = 'A'; vm.showSoilDigitalPort = false; vm.soundMeterPort = 'B'; @@ -43,16 +45,11 @@ //// function activate () { + console.log(boxData); if (boxData.model.startsWith('homeV2Wifi')) { vm.showConfiguration = true; vm.showWifiConfiguration = true; } - if (boxData.model === 'homeV2WifiFeinstaub' || boxData.sensorsArray.filter(function (s) { - return s.title === 'PM10'; - }).length > 0) { - vm.showSerialPort = true; - } - if (boxData.model === 'homeV2Lora') { vm.showConfiguration = true; vm.showTTNConfiguration = true; @@ -67,6 +64,17 @@ }).length !== 0) { vm.showSoilDigitalPort = true; } + if (boxData.sensorsArray.filter(function (s) { + return s.sensorType === 'RG15'; + }).length !== 0) { + vm.showRG15Port = true; + } + + if (boxData.sensorsArray.filter(function (s) { + return (s.sensorType === 'SPS30' || s.sensorType === 'SDS 011'); + }).length !== 0) { + vm.showSdsPort = true; + } if (boxData.sensorsArray.filter(function (s) { return s.sensorType === 'SOUNDLEVELMETER'; @@ -91,8 +99,9 @@ function getScript () { return AccountService.getScript(boxData._id, { - serialPort: vm.serialPort, soilDigitalPort: vm.soilDigitalPort, + sdsSerialPort: vm.sdsSerialPort, + rg15SerialPort: vm.rg15SerialPort, soundMeterPort: vm.soundMeterPort, windSpeedPort: vm.windSpeedPort, ssid: vm.wifi.ssid, diff --git a/app/scripts/controllers/register.js b/app/scripts/controllers/register.js index 186c25ef..6ac6da28 100644 --- a/app/scripts/controllers/register.js +++ b/app/scripts/controllers/register.js @@ -37,9 +37,12 @@ bme680: false, co2: false, dps310: false, - sps30: false + sps30: false, + rg15: false, + sb041: false, }, - serialPort: 'Serial1', + sdsSerialPort: 'Serial1', + rg15SerialPort: 'Serial1', soilDigitalPort: 'A', soundMeterPort: 'B', windSpeedPort: 'C', @@ -196,7 +199,9 @@ function getScript () { return AccountService.getScript(vm.newSenseBox.id, { - serialPort: vm.newSenseBox.serialPort, + model: vm.newSenseBox.model === 'homeV2WifiFeinstaub' ? 'homeV2' : vm.newSenseBox.model, + sdsSerialPort: vm.newSenseBox.sdsSerialPort, + rg15SerialPort: vm.newSenseBox.rg15SerialPort, soilDigitalPort: vm.newSenseBox.soilDigitalPort, soundMeterPort: vm.newSenseBox.soundMeterPort, windSpeedPort: vm.newSenseBox.windSpeedPort, @@ -232,6 +237,7 @@ return 'homeV2'; } + if (vm.modelSelected.id.startsWith('home')) { return 'home'; } @@ -374,7 +380,8 @@ function downloadArduino (boxId, model) { var data = {}; if (model.startsWith('homeV2')) { - data.serialPort = vm.newModel.serialPort; + data.sdsSerialPort = vm.newSenseBox.sdsSerialPort; + data.rg15SerialPort = vm.newSenseBox.rg15SerialPort; data.soilDigitalPort = vm.newSenseBox.soilDigitalPort; data.soundMeterPort = vm.newSenseBox.soundMeterPort; data.windSpeedPort = vm.newSenseBox.windSpeedPort; @@ -415,6 +422,9 @@ } else { vm.newSenseBox.model = vm.modelSelected.id; } + vm.newSenseBox.solar = vm.newModel.solar; + + if (vm.modelSelected.id === 'homeV2') { vm.newSenseBox.sensorTemplates = []; @@ -445,13 +455,19 @@ case 'sps30': vm.newSenseBox.sensorTemplates.push('sps30'); break; + case 'rg15': + vm.newSenseBox.sensorTemplates.push('rg15'); + break; + case 'sb041': + vm.newSenseBox.sensorTemplates.push('sb041'); + break; } } } } if (vm.extensions.feinstaub.id !== '') { vm.newSenseBox.sensorTemplates.push('sds 011'); - vm.newSenseBox.serialPort = vm.newModel.serialPort; + vm.newSenseBox.sdsSerialPort = vm.newModel.sdsSerialPort; } if (vm.extensions.soilMoisture.id !== '') { vm.newSenseBox.sensorTemplates.push('smt50'); @@ -465,6 +481,10 @@ vm.newSenseBox.sensorTemplates.push('windspeed'); vm.newSenseBox.windSpeedPort = vm.extensions.windSpeed.port; } + if (vm.newModel.solar) { + vm.newSenseBox.sensorTemplates.push('solar'); + } + } if (vm.newModel.connection) { @@ -479,6 +499,7 @@ vm.newSenseBox.model + vm.extensions.feinstaub.id; } + AccountService.postNewBox(vm.newSenseBox) .then(function (data) { vm.newSenseBox.id = data.data._id; @@ -677,6 +698,36 @@ unit = 'µg/m³'; sensorType = 'SPS30'; break; + case 'rg15_intensity': + icon = 'osem-cloud'; + title = 'Niederschlagsintensität'; + unit = 'mm/h'; + sensorType = 'RG15'; + break; + case 'rg15_totalAcc': + icon = 'osem-cloud'; + title = 'Gesamtniederschlag'; + unit = 'mm'; + sensorType = 'RG15'; + break; + case 'sb041_level': + icon = 'osem-battery'; + title = 'Ladelevel'; + unit = 'V'; + sensorType = 'SB041'; + break; + case 'sb041_batteryvoltage': + icon = 'osem-battery'; + title = 'Batteriespannung'; + unit = 'V'; + sensorType = 'SB041'; + break; + case 'sb041_solarvoltage': + icon = 'osem-battery'; + title = 'Solarspannung'; + unit = 'V'; + sensorType = 'SB041'; + break; } return { @@ -842,7 +893,6 @@ if (newValue.indexOf('home') === 0) { vm.modelSelected.name = 'senseBox Home ' + newValue.substring(4); vm.sensorSetup = vm.modelSelected.id; - vm.newModel.connection = null; vm.extensions.feinstaub.id = ''; @@ -850,7 +900,6 @@ return; } - if (newValue.indexOf('luftdaten') === 0) { vm.sensorSetup = vm.modelSelected.id; vm.extensions.feinstaub.id = ''; @@ -947,6 +996,13 @@ addSensorTemplate('SPS30_PM25'); addSensorTemplate('SPS30_PM4'); addSensorTemplate('SPS30_PM10'); + } else if (newValue.rg15 && oldValue.rg15 === false) { + addSensorTemplate('rg15_intensity'); + addSensorTemplate('rg15_totalAcc'); + } else if (newValue.sb041 && oldValue.sb041 === false) { + addSensorTemplate('sb041_level'); + addSensorTemplate('sb041_batteryvoltage'); + addSensorTemplate('sb041_solarvoltage'); } // Remove sensor templates @@ -973,8 +1029,18 @@ removeSensorTemplate(generateSensorTemplate('SPS30_P25')); removeSensorTemplate(generateSensorTemplate('SPS30_PM4')); removeSensorTemplate(generateSensorTemplate('SPS30_PM10')); + } else if (oldValue.rg15 && newValue.rg15 === '') { + removeSensorTemplate(generateSensorTemplate('rg15_intensity')); + removeSensorTemplate(generateSensorTemplate('rg15_eventAcc')); + removeSensorTemplate(generateSensorTemplate('rg15_totalAcc')); + } else if (oldValue.sb041 && newValue.sb041 === '') { + removeSensorTemplate(generateSensorTemplate('sb041_level')); + removeSensorTemplate(generateSensorTemplate('sb041_batteryvoltage')); + removeSensorTemplate(generateSensorTemplate('sb041_solarvoltage')); } + + // Check on change for sensors with same address if ([vm.newModel.sensors.bme680, vm.newModel.sensors.dps310, vm.newModel.sensors.pressure].filter(Boolean).length >= 2) { vm.showSameAddressWarning = true; diff --git a/app/views/account.box.edit.script.html b/app/views/account.box.edit.script.html index 8611ef62..4fdc3d11 100644 --- a/app/views/account.box.edit.script.html +++ b/app/views/account.box.edit.script.html @@ -30,11 +30,25 @@