UNPKG

ds18b20

Version:

Get temperature from the DS18B20 sensor connected to RPI

334 lines (332 loc) 12.4 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for lib/ds18b20.js</title> <meta charset="utf-8"> <link rel="stylesheet" href="../prettify.css"> <link rel="stylesheet" href="../base.css"> <style type='text/css'> div.coverage-summary .sorter { background-image: url(../sort-arrow-sprite.png); } </style> </head> <body> <div class="header low"> <h1>Code coverage report for <span class="entity">lib/ds18b20.js</span></h1> <h2> Statements: <span class="metric">12.24% <small>(6 / 49)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Branches: <span class="metric">0% <small>(0 / 20)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Functions: <span class="metric">0% <small>(0 / 8)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Lines: <span class="metric">12.24% <small>(6 / 49)</small></span> &nbsp;&nbsp;&nbsp;&nbsp; Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp; </h2> <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">lib/</a> &#187; ds18b20.js</div> </div> <div class="body"> <pre><table class="coverage"> <tr><td class="line-count">1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-no">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">'use strict'; &nbsp; // // Get and temperature from connected sensors. // // @chamerling // &nbsp; <span class="cstat-no" title="statement not covered" >var fs = require('fs');</span> &nbsp; <span class="cstat-no" title="statement not covered" >var W1_FILE = '/sys/bus/w1/devices/w1_bus_master1/w1_master_slaves';</span> &nbsp; <span class="fstat-no" title="function not covered" >function parseHexData(data) {</span> <span class="cstat-no" title="statement not covered" > var arr = data.split(' ');</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (arr[1].charAt(0) === 'f') {</span> <span class="cstat-no" title="statement not covered" > var x = parseInt('0xffff' + arr[1].toString() + arr[0].toString(), 16);</span> <span class="cstat-no" title="statement not covered" > return (-((~x + 1) * 0.0625));</span> } else <span class="cstat-no" title="statement not covered" >if (arr[1].charAt(0) === '0') {</span> <span class="cstat-no" title="statement not covered" > return parseInt('0x0000' + arr[1].toString() + arr[0].toString(), 16) * 0.0625;</span> } <span class="cstat-no" title="statement not covered" > throw new Error('Can not parse data');</span> } &nbsp; <span class="fstat-no" title="function not covered" >function parseDecimalData(data) {</span> <span class="cstat-no" title="statement not covered" > var arr = data.split('\n');</span> &nbsp; <span class="cstat-no" title="statement not covered" > if (arr[0].indexOf('YES') &gt; -1) {</span> <span class="cstat-no" title="statement not covered" > var output = data.match(/t=(-?(\d+))/);</span> <span class="cstat-no" title="statement not covered" > return Math.round(output[1] / 100) / 10;</span> } else <span class="cstat-no" title="statement not covered" >if (arr[0].indexOf('NO') &gt; -1) {</span> <span class="cstat-no" title="statement not covered" > return false;</span> } <span class="cstat-no" title="statement not covered" > throw new Error('Can not get temperature');</span> } &nbsp; <span class="cstat-no" title="statement not covered" >var parsers = {</span> 'hex': parseHexData, 'decimal': parseDecimalData, 'default': parseDecimalData }; &nbsp; <span class="fstat-no" title="function not covered" >function parseData(data, options) {</span> <span class="cstat-no" title="statement not covered" > var parser = options.parser || 'default';</span> <span class="cstat-no" title="statement not covered" > if (!parsers[parser]) {</span> <span class="cstat-no" title="statement not covered" > parser = 'default';</span> } <span class="cstat-no" title="statement not covered" > return parsers[parser](data);</span> } <span class="cstat-no" title="statement not covered" >module.exports.parseData = parseData;</span> &nbsp; // Get all connected sensor IDs as array // @param callback(err, array) <span class="fstat-no" title="function not covered" >function sensors(callback) {</span> &nbsp; <span class="cstat-no" title="statement not covered" > fs.readFile(W1_FILE, 'utf8', <span class="fstat-no" title="function not covered" >function(err, data) {</span></span> <span class="cstat-no" title="statement not covered" > if (err) {</span> <span class="cstat-no" title="statement not covered" > return callback(err);</span> } &nbsp; <span class="cstat-no" title="statement not covered" > var parts = data.split('\n');</span> <span class="cstat-no" title="statement not covered" > parts.pop();</span> <span class="cstat-no" title="statement not covered" > return callback(null, parts);</span> }); } <span class="cstat-no" title="statement not covered" >module.exports.sensors = sensors;</span> &nbsp; // Get the temperature of a given sensor // @param sensor : The sensor ID // @param callback : callback (err, value) <span class="fstat-no" title="function not covered" >function temperature(sensor, options, callback) {</span> <span class="cstat-no" title="statement not covered" > if (options instanceof Function) {</span> <span class="cstat-no" title="statement not covered" > callback = options;</span> <span class="cstat-no" title="statement not covered" > options = {};</span> } &nbsp; <span class="cstat-no" title="statement not covered" > fs.readFile('/sys/bus/w1/devices/' + sensor + '/w1_slave', 'utf8', <span class="fstat-no" title="function not covered" >function(err, data) {</span></span> <span class="cstat-no" title="statement not covered" > if (err) {</span> <span class="cstat-no" title="statement not covered" > return callback(err);</span> } &nbsp; <span class="cstat-no" title="statement not covered" > try {</span> <span class="cstat-no" title="statement not covered" > return callback(null, parseData(data, options));</span> } catch(e) { <span class="cstat-no" title="statement not covered" > return callback(new Error('Can not read temperature for sensor ' + sensor));</span> } }); }; <span class="cstat-no" title="statement not covered" >module.exports.temperature = temperature;</span> &nbsp; <span class="fstat-no" title="function not covered" >function temperatureSync(sensor, options) {</span> <span class="cstat-no" title="statement not covered" > options = options || {};</span> <span class="cstat-no" title="statement not covered" > var data = fs.readFileSync('/sys/bus/w1/devices/' + sensor + '/w1_slave', 'utf8');</span> <span class="cstat-no" title="statement not covered" > return parseData(data, options);</span> }; <span class="cstat-no" title="statement not covered" >module.exports.temperatureSync = temperatureSync;</span> &nbsp;</pre></td></tr> </table></pre> </div> <div class="footer"> <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Fri Oct 23 2015 22:43:33 GMT+0200 (CEST)</div> </div> <script src="../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../sorter.js"></script> </body> </html>