diff --git a/app/app.tar.gz b/app/app.tar.gz new file mode 100644 index 0000000..c31d43d Binary files /dev/null and b/app/app.tar.gz differ diff --git a/app/client/state_details.js b/app/client/state_details.js index 11cf6b7..857d379 100644 --- a/app/client/state_details.js +++ b/app/client/state_details.js @@ -22,16 +22,13 @@ Template.state_details.rendered = function() { .range([0, $(self.timelineWrapper).width()]) }; - - - function sensor_data_collection() { var controllerId = Session.get('controller_id'); return SensorData.find({ controllerId: controllerId }, { sort: { - created_at: -1 + created_at: 1 } }); } @@ -60,9 +57,13 @@ Template.state_details.rendered = function() { */ function buildTemperatureGraph() { - var sensorReadings = sensor_data_collection(); + var unfilteredReadings = sensor_data_collection(); + + // we want to show only 11 points from all data + var breakingPoint = Math.floor(countValues(unfilteredReadings) / 10); + + var sensorReadings = filterDataPoints(unfilteredReadings, breakingPoint); - console.log("Added: ", sensorReadings.count()); var times = sensorReadings.map(function(reading) { return moment(reading.created_at).format("HH:mm:ss"); }); @@ -70,6 +71,8 @@ function buildTemperatureGraph() { return reading.temperatureValue; }); + var breakingPoint = Math.floor(times.length / 11); + return new Chartist.Line('#temperature_graph', { labels: times, series: [values] @@ -85,10 +88,13 @@ function buildTemperatureGraph() { * Function to draw the graph */ function buildHumidityGraph() { + var unfilteredReadings = sensor_data_collection(); + // we want to show only 11 points from all data - filtering will add + // the last one so 10 + 1 = 11 + var breakingPoint = Math.floor(countValues(unfilteredReadings) / 10); - var sensorReadings = sensor_data_collection(); + var sensorReadings = filterDataPoints(unfilteredReadings, breakingPoint); - console.log("Added: ", sensorReadings.count()); var times = sensorReadings.map(function(reading) { return moment(reading.created_at).format("HH:mm:ss"); }); @@ -96,6 +102,8 @@ function buildHumidityGraph() { return reading.humidityValue; }); + + return new Chartist.Line('#humidity_graph', { labels: times, series: [values] @@ -106,3 +114,40 @@ function buildHumidityGraph() { } }); } + +function filterDataPoints(data, breakingPoint) { + + if (breakingPoint === 0) { + return data; + } + var result = []; + var index = 0; + var lastUnpushedRow = null; + data.forEach(function(row) { + if (index % breakingPoint === 0) { + result.push(row); + lastUnpushedRow = null; + } else { + lastUnpushedRow = row; + } + index++; + }); + + // in order to always have the latest value + if(lastUnpushedRow) { + + result.push(lastUnpushedRow); + } + return result; +} + + +// dirty hack for the complicated way of getting +// acual number of values +function countValues(data) { + var count = 0; + data.forEach(function(row) { + count++; + }); + return count; +}; diff --git a/app/server/startup.js b/app/server/startup.js index 17e054f..f36bb70 100644 --- a/app/server/startup.js +++ b/app/server/startup.js @@ -4,29 +4,10 @@ if (Meteor.isServer) { SyncedCron.start(); }); - - - // Global API configuration var Api = new Restivus({ useDefaultAuth: true, prettyJson: true }); - // Api.addRoute('sensorData', { - // authRequired: false - // }, { - // post: function() { - // SensorData.insert({ - // temperatureValue: parseFloat(this.bodyParams.temperatureValue), - // humidityValue: parseFloat(this.bodyParams.humidityValue), - // tankFull: this.bodyParams.tankFull, - // owner: this.bodyParams.owner, - // created_at: new Date() - // }); - // return []; - // } - // }); - - } diff --git a/controller/sensors.py b/controller/sensors.py index bf43949..2981731 100644 --- a/controller/sensors.py +++ b/controller/sensors.py @@ -8,7 +8,10 @@ import RPi.GPIO as GPIO # Try to read the state of GPIO_PIN_TANKFULL GPIO.setmode(GPIO.BCM) GPIO.setup(config.GPIO_PIN_TANKFULL, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) -tankFull = GPIO.input(config.GPIO_PIN_TANKFULL) + +# tank sensor has inverse logic - 0 when it is full 1 when it is not +# so we are inverting its value here +tankFull = (not GPIO.input(config.GPIO_PIN_TANKFULL)) GPIO.cleanup() print 'Bacva puna: {}'.format(tankFull)