Reading temperature sensor

Added code to read the temperature sensor using the ds18x20 library. If the necessary drivers are not running, then the script does not try to read the temperature.

James Peret 7 年之前
父节点
当前提交
a16f44179e
共有 2 个文件被更改,包括 22 次插入9 次删除
  1. 21 9
      external_temperature_sensor.js
  2. 1 0
      package.json

+ 21 - 9
external_temperature_sensor.js

@@ -1,19 +1,31 @@
1 1
 var logger = require('winston');
2
+var sensor = require("ds18x20")
2 3
 
3 4
 module.exports.start = function(channel){
4 5
   logger.info("Starting External temperature module");
5
-  setInterval(function () {
6
-    var temperature = readSensor();
7
-    channel.emit('temperature_external', { temperature: temperature });
8
-  }, 1000);
6
+  var isLoaded = sensor.isDriverLoaded();
7
+  if(isLoaded){
8
+    console.log(isLoaded);
9
+    var devices = sensor.list();
10
+    console.log(devices);
11
+    setInterval(function () {
12
+      var temperature = readSensor(devices, channel);
13
+    }, 5000);
14
+  }
15
+
9 16
 
10 17
 }
11 18
 
12
-function readSensor() {
19
+function readSensor(devices) {
13 20
   // Read Sensor data
21
+  sensor.get(devices[devices.length - 1], function(err, temp){
22
+  	if(err){
23
+  		console.log(err);
24
+  	}
25
+  	channel.emit('temperature_external', { temperature: temp });
26
+  });
14 27
   // give random data for testing
15
-  var high = 25;
16
-  var low = 23;
17
-  var temp =  Math.random() * (high - low) + low
18
-  return temp
28
+  // var high = 25;
29
+  // var low = 23;
30
+  // var temp =  Math.random() * (high - low) + low
19 31
 }

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
10 10
   "license": "ISC",
11 11
   "dependencies": {
12 12
     "body-parser": "^1.17.2",
13
+    "ds18x20": "^0.2.0",
13 14
     "ejs": "^2.5.7",
14 15
     "express": "^4.15.4",
15 16
     "express-ejs-layouts": "^2.3.1",