Skip to content

Commit

Permalink
feat(registration): new mcu model
Browse files Browse the repository at this point in the history
Added new MCU models and adept new API
  • Loading branch information
mpfeil committed May 17, 2018
1 parent 6b8ac68 commit c27bff1
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 42 deletions.
67 changes: 52 additions & 15 deletions app/scripts/controllers/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@
var vm = this;

vm.newModel = {
controller: null,
connection: null,
sensors: {
temp: false,
pressure: false,
light: false,
pollution: false
}
},
serialPort: 'Serial1'
};

vm.radioModel = null;
// vm.radioModel = null;
vm.stepTitle = '';
vm.stepIndex = 0;
vm.showNext = true;
Expand Down Expand Up @@ -112,11 +112,15 @@
}

function isSenseBoxModel () {
if (vm.modelSelected.id.startsWith('homeV2')) {
return 'homeV2';
}

if (vm.modelSelected.id.startsWith('home')) {
return false;
return 'home';
}

return true;
return '';
}

function setStepTitle() {
Expand Down Expand Up @@ -211,8 +215,12 @@
sensor.icon = newIcon.name;
};

function downloadArduino (boxId) {
AccountService.getScript(boxId)
function downloadArduino (boxId, model) {
var data = {};
if (model.startsWith('homeV2')) {
data.serialPort = vm.newModel.serialPort;
}
AccountService.getScript(boxId, data)
.then(function (data) {
vm.boxScript = data;
})
Expand All @@ -221,13 +229,6 @@
});
};

$scope.open = {
collapse1: true,
collapse2: false,
collapse3: false,
collapse4: false
};

function completeRegistration () {
setStepTitle();
vm.alerts = [];
Expand Down Expand Up @@ -258,6 +259,37 @@
vm.newSenseBox.model = vm.modelSelected.id;
}

if (vm.modelSelected.id === 'homeV2') {
vm.newSenseBox.sensorTemplates = [];
for (const key in vm.newModel.sensors) {
if (vm.newModel.sensors.hasOwnProperty(key)) {
const element = vm.newModel.sensors[key];
if (element) {
switch (key) {
case 'temp':
vm.newSenseBox.sensorTemplates.push('hdc1080');
break;
case 'pressure':
vm.newSenseBox.sensorTemplates.push('bmp280');
break;
case 'light':
vm.newSenseBox.sensorTemplates.push('veml6070');
vm.newSenseBox.sensorTemplates.push('tsl45315');
break;
}
}
}
}
if (vm.extensions.feinstaub.id !== '') {
vm.newSenseBox.sensorTemplates.push('sds 011');
vm.newSenseBox.serialPort = vm.newModel.serialPort;
}
}

if (vm.newModel.connection) {
vm.newSenseBox.model = vm.newSenseBox.model + vm.newModel.connection;
}

if (vm.extensions.feinstaub.id !== '') {
vm.newSenseBox.model = vm.newSenseBox.model + vm.extensions.feinstaub.id;
}
Expand All @@ -276,7 +308,7 @@
vm.alerts.push(alert);
vm.regSuccess = true;
});
downloadArduino(data.data._id);
downloadArduino(data.data._id, data.data.model);
vm.registeredSensors = data.data['sensors'];
vm.completed = true;
vm.stepIndex = 0;
Expand Down Expand Up @@ -404,6 +436,9 @@
vm.modelSelected.name = 'senseBox Home ' + newValue.substring(4);
vm.sensorSetup = vm.modelSelected.id;

vm.newModel.connection = null;
vm.extensions.feinstaub.id = '';

vm.invalidHardware = false;

return;
Expand All @@ -412,6 +447,7 @@
if (newValue.indexOf('luftdaten') === 0) {
vm.sensorSetup = vm.modelSelected.id;
vm.extensions.feinstaub.id = '';
vm.newModel.connection = null;

var nameParts = newValue.split('_');

Expand All @@ -432,6 +468,7 @@
if (newValue === 'custom') {
vm.sensorSetup = '';
vm.extensions.feinstaub.id = '';
vm.newModel.connection = null;

vm.invalidHardware = false;

Expand Down
4 changes: 2 additions & 2 deletions app/scripts/services/account.js
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@
.catch(failed);
}

function getScript (boxId) {
return $http.get(app.API_URL + '/boxes/' + boxId + '/script', {auth: true})
function getScript (boxId, data) {
return $http.get(app.API_URL + '/boxes/' + boxId + '/script', {auth: true, params: data})
.then(function (response) {
return response.data;
})
Expand Down
66 changes: 41 additions & 25 deletions app/views/register.html
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ <h1><small>{{ 'STEP2_SUB1' | translate }}</small></h1>
</div>
</div>
<hr>
<!-- Location -->
<div id="location">
<div class="text-center">
<h1><small>{{ 'STEP2_SUB2' | translate }}</small></h1>
Expand Down Expand Up @@ -136,6 +137,7 @@ <h1><small>{{ 'STEP2_SUB2' | translate }}</small></h1>
</div>
</div>
<hr>
<!-- Hardware -->
<div id="hardware">
<div class="text-center">
<h1><small>{{ 'STEP2_SUB3' | translate }}</small></h1>
Expand All @@ -160,7 +162,12 @@ <h3>Microcontroller</h3>
<h3>senseBox:home</h3>
<p>based on Arduino/Genuino Uno</p>
<p>
<label class="btn btn-success" ng-model="register.newModel.controller" uib-btn-radio="'home'" uncheckable>Auswählen</label>
<div class="radio radio-success">
<input type="radio" name="model" id="home" value="home" ng-model="register.modelSelected.id" required>
<label for="home">
Auswählen
</label>
</div>
</p>
</div>
</div>
Expand All @@ -172,36 +179,41 @@ <h3>senseBox:home</h3>
<h3>senseBox:home</h3>
<p>based on senseBox MCU</p>
<p>
<label class="btn btn-success" ng-model="register.newModel.controller" uib-btn-radio="'homeV2'" uncheckable>Auswählen</label>
<div class="radio radio-success">
<input type="radio" name="model" id="homeV2" value="homeV2" ng-model="register.modelSelected.id" required>
<label for="homeV2">
Auswählen
</label>
</div>
</p>
</div>
</div>
</div>
</div>
</div>
<div class="row" ng-hide="register.newModel.controller === null">
<div class="row" ng-show="register.isSenseBoxModel() !== ''">
<div style="text-align: center;">
<h3>Verbindungsart</h3>
<hr>
<div class="col-lg-6">
<div class="radio radio-success">
<input type="radio" name="model" id="sensebox-ethernet" value="Ethernet" ng-model="register.newModel.connection" required>
<input type="radio" name="connection" id="sensebox-ethernet" value="Ethernet" ng-model="register.newModel.connection" ng-required="register.modelSelected.id === 'home' || register.modelSelected.id === 'homeV2'">
<label for="sensebox-ethernet">
Ethernet
</label>
</div>
</div>
<div class="col-lg-6">
<div class="radio radio-success">
<input type="radio" name="model" id="sensebox-wifi" value="Wifi" ng-model="register.newModel.conncetion" required>
<input type="radio" name="connection" id="sensebox-wifi" value="Wifi" ng-model="register.newModel.connection" ng-required="register.modelSelected.id === 'home' || register.modelSelected.id === 'homeV2'">
<label for="sensebox-wifi">
WiFi
</label>
</div>
</div>
</div>
</div>
<div class="row" ng-hide="register.newModel.controller === 'home' || register.newModel.controller === null">
<div class="row" ng-show="register.isSenseBoxModel() === 'homeV2'">
<div style="text-align: center;">
<h3>Sensoren</h3>
<ul class="sensor-list" style="border: none;">
Expand All @@ -212,8 +224,8 @@ <h3>Sensoren</h3>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6" style="border-right: 1px solid #e1e4e8;">
<div style="text-align: left;">
<div class="checkbox checkbox-success checkbox-inline" style="vertical-align: middle;">
<input type="checkbox" id="checkbox0" ng-model="register.newModel.sensors.temp"></input>
<label for="checkbox0"> </label>
<input type="checkbox" id="tempSensor" ng-model="register.newModel.sensors.temp"></input>
<label for="tempSensor"> </label>
</div>
<img src="https://sensebox.kaufen/api//public/uploads/thumbs/thumb--1524084036833-hds%20top.png" style="vertical-align: middle; height: 90px; width: 90px;"/>
<span style="vertical-align: middle;">Temperatur &amp; Luftfeuchtigkeit</span>
Expand All @@ -224,8 +236,8 @@ <h3>Sensoren</h3>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6" style="border-right: 1px solid #e1e4e8;">
<div style="text-align: left;">
<div class="checkbox checkbox-success checkbox-inline" style="vertical-align: middle;">
<input type="checkbox" id="checkbox1" ng-model="register.newModel.sensors.pressure"></input>
<label for="checkbox1"> </label>
<input type="checkbox" id="pressureSensor" ng-model="register.newModel.sensors.pressure"></input>
<label for="pressureSensor"> </label>
</div>
<img src="https://sensebox.kaufen/api//public/uploads/thumbs/thumb--1524085326737-bmp%20v2%20top.png" style="vertical-align: middle; height: 90px; width: 90px;"/>
<span style="vertical-align: middle;">Luftdruck &amp; Temperatur</span>
Expand All @@ -236,8 +248,8 @@ <h3>Sensoren</h3>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6" style="border-right: 1px solid #e1e4e8;">
<div style="text-align: left;">
<div class="checkbox checkbox-success checkbox-inline" style="vertical-align: middle;">
<input type="checkbox" id="checkbox2" ng-model="register.newModel.sensors.light"></input>
<label for="checkbox2"> </label>
<input type="checkbox" id="lightSensor" ng-model="register.newModel.sensors.light"></input>
<label for="lightSensor"> </label>
</div>
<img src="https://sensebox.kaufen/api//public/uploads/thumbs/thumb--1525169435866-v+uv%20bottom.png" style="vertical-align: middle; height: 90px; width: 90px;"/>
<span style="vertical-align: middle;">Beleuchtungsstärke &amp; UV-Strahlung</span>
Expand All @@ -248,8 +260,8 @@ <h3>Sensoren</h3>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6" style="border-right: 1px solid #e1e4e8;">
<div style="text-align: left;">
<div class="checkbox checkbox-success checkbox-inline" style="vertical-align: middle;">
<input type="checkbox" id="checkbox3" ng-model="register.newModel.sensors.pollution"></input>
<label for="checkbox3"> </label>
<input type="checkbox" id="pollutionSensor" ng-true-value="'Feinstaub'" ng-false-value="''" ng-model="register.extensions.feinstaub.id"></input>
<label for="pollutionSensor"> </label>
</div>
<img src="https://sensebox.kaufen/api//public/uploads/thumbs/thumb--1525358769594-nova-fitness-sds011-laser-pm25-pm10-dust-feinstaub-sensor-modul-luft-qualitaet-detector-built-in-fan.jpg" style="vertical-align: middle; height: 90px; width: 90px;"/>
<span style="vertical-align: middle;">Feinstaub (PM10 &amp; PM2.5)</span>
Expand All @@ -259,10 +271,10 @@ <h3>Sensoren</h3>
<div class="form-group">
<label for="groupTag">Anschluss</label>
<div class="input-group xxxl">
<select id="groupTag" class="form-control" style="border-radius: 4px;">
<select id="groupTag" class="form-control" style="border-radius: 4px;" ng-model="register.newModel.serialPort">
<!---->
<option value="serial1">Serial 1</option>
<option value="serial2">Serial 2</option>
<option value="Serial1">Serial 1</option>
<option value="Serial2">Serial 2</option>
</select>
</div>
</div>
Expand All @@ -273,9 +285,9 @@ <h3>Sensoren</h3>
</ul>
</div>
</div>
<div class="row" ng-hide="register.newModel.controller === 'homeV2' || register.newModel.controller === null">
<div class="row" ng-show="register.isSenseBoxModel() === 'home'">
<div style="text-align: center;">
<h3>Erweiterungen</h3>
<h3>{{'EDIT_EXTENSIONS'|translate}}</h3>
<ul class="sensor-list" style="border: none;">
<li class="sensor-row" style="border-bottom: 1px solid #e1e4e8;">
<div class="row">
Expand All @@ -284,8 +296,8 @@ <h3>Erweiterungen</h3>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-6">
<div style="text-align: left;">
<div class="checkbox checkbox-success checkbox-inline" style="vertical-align: middle;">
<input type="checkbox" id="checkbox3" ng-model="register.newModel.sensors.pollution"></input>
<label for="checkbox3"> </label>
<input type="checkbox" id="homeExtensionsFeinstaub" ng-true-value="'Feinstaub'" ng-false-value="''" ng-model="register.extensions.feinstaub.id"></input>
<label for="homeExtensionsFeinstaub"> </label>
</div>
<img src="https://sensebox.kaufen/api//public/uploads/thumbs/thumb--1525358769594-nova-fitness-sds011-laser-pm25-pm10-dust-feinstaub-sensor-modul-luft-qualitaet-detector-built-in-fan.jpg" style="vertical-align: middle; height: 90px; width: 90px;"/>
<span style="vertical-align: middle;">{{'EXTENSIONS_FINE_PARTICULATE_MATTER'|translate}}</span>
Expand Down Expand Up @@ -474,8 +486,8 @@ <h1><small>{{ 'STEP2_SUB4' | translate }}</small></h1>
MQTT <i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': register.open.collapse4, 'glyphicon-chevron-right': !register.open.collapse4}"></i>
</uib-accordion-heading>
<div class="checkbox checkbox-success checkbox-inline">
<input type="checkbox" id="checkbox0" ng-model="register.mqtt.enabled"></input>
<label for="checkbox0">{{ 'MQTT_ENABLE' | translate }}</label>
<input type="checkbox" id="enableMQTT" ng-model="register.mqtt.enabled"></input>
<label for="enableMQTT">{{ 'MQTT_ENABLE' | translate }}</label>
</div>

<!-- MQTT URL -->
Expand Down Expand Up @@ -589,10 +601,14 @@ <h3>senseBox</h3>
<table class="table table-striped table-bordered">
<tbody>
<tr>
<td style="width: 50%;">senseBox Model</td>
<td style="width: 50%;">Hardware</td>
<td style="width: 50%;"><strong>{{register.modelSelected.name}}</strong></td>
</tr>
<tr>
<tr ng-hide="register.isSenseBoxModel() === ''">
<td style="width: 50%;">Verbindungsart</td>
<td style="width: 50%;"><strong>{{register.newModel.connection}}</strong></td>
</tr>
<tr ng-hide="register.isSenseBoxModel() === 'homeV2' || register.isSenseBoxModel() ===''">
<td style="width: 50%;">senseBox {{'EDIT_EXTENSIONS'|translate}}</td>
<td style="width: 50%;"><strong ng-if="register.extensions.feinstaub.id !== ''">{{'EXTENSIONS_FINE_PARTICULATE_MATTER'|translate}}</strong></td>
</tr>
Expand Down

0 comments on commit c27bff1

Please sign in to comment.