w1temp
Version:
Measure temperature through DS18B20 sensor connected to 1wire to Raspberry PI with node.js
68 lines (48 loc) • 2.25 kB
Markdown
Measure temperature through DS18B20 sensor connected to 1wire to Raspberry PI with `node.js`
`npm install w1temp`
W1 configuration:
1. at the end of file /boot/config.txt add `dtoverlay=w1-gpio,gpiopin=<gpiopin>` where <gpiopin> is pin where is connected w1 data channel
2. run `modprobe w1-gpio && modprobe w1-therm` (it can be at cron too: `@reboot sudo modprobe w1-gpio && sudo modprobe w1-therm`)
Turn on any gpio pin as W1 power.
Set any gpio pin to use as W1 data channel (required root permissions).
### W1Temp.getSensorsUids(*masterBusId* _= 1_)
Return Promise which returns list of available sensors uids, catch if fails.
If you operate multiple 1wire buses on one host, *masterBusId* defines the 1wire bus to use.
### W1Temp.getSensor(*sensorUid*, *enablePolling* _= true_, *interval* _= 250_, *onlyIfChanged* _= true_)
Return Promise which returns sensor instance, catch if fails.
The *enablePolling* argument controls whether the sensor will emit *change* events by monitoring the sensor value in the background. Defaults to enabled.
### <sensor_instance>.getTemperature()
Returns actual temperature on sensor.
Return Promise which returns temperature on sensor.
Event on change temperature.
```javascript
var W1Temp = require('w1temp');
// turn on gpio pin 13 as W1 power if you want to
W1Temp.setGpioPower(13);
// set gpio pin 6 to use as W1 data channel
// if is not set by instructions above (required root permissions)
W1Temp.setGpioData(6);
// print list of available sensors uids (ex.: [ '28-00000636a3e3' ])
W1Temp.getSensorsUids().then(function (sensorsUids) {
console.log(sensorsUids);
});
// get instance of temperature sensor
W1Temp.getSensor('28-00000636a3e3').then(function (sensor) {
// print actual temperature
var temp = sensor.getTemperature();
console.log('Actual temp:', temp, '°C');
// print actual temperature on changed
sensor.on('change', function (temp) {
console.log('Temp changed:', temp, '°C');
});
});
```