Lightweight implementation of W3C spec, targeting constrained devices.
Several JavaScript runtimes are supported (node.js, IoT.js using JerryScript)
By default simulator are used and generate random values, but following sensors can be plugged on pins of your favorite single board computer:
- BH1650: for measuring illuminance (i2c=0x23)
- BMPx80: for measuring temperature, or any compatible sensor (ie: BMP180, i2c=0x77)
- TCS34725: for measuring colors (i2c=0x29)
- HTU21D: for measuring humidity (i2c=0x40) Buy
Privileged access to hardware resources is also required too (setup or use sudo).
For instance on Raspbian:
sudo raspi-config # Enable I2C
ls -l /dev/i2c* || sudo reboot
sudo apt-get install i2c-tools
/usr/sbin/i2cdetect -y 1
#| 0 1 2 3 4 5 6 7 8 9 a b c d e f
#| 00: -- -- -- -- -- -- -- -- -- -- -- -- --
#| 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 20: -- -- -- 23 -- -- -- -- -- 29 -- -- -- -- -- --
#| 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 70: -- -- -- -- -- -- -- 77
git clone --recursive https://github.com/rzr/generic-sensors-lite
cd generic-sensors-lite
npm install
npm start
#| node example/index.js
#| (...)
#| {"illuminance": 123.}
#| (...)
#| {"celsius": 42.}
#| (...)
(...)
First install IoT.js as explained at:
For Debian and derived (Ubuntu, Rasbian, Armbian):
curl https://raw.githubusercontent.com/rzr/iotjs-express/master/extra/tools/iotjs/setup.sh \
| bash -x -e
For constrained environments:
make start
#| (...)
#| iotjs example/index.js
#| (...)
#| {"illuminance": 123.}
#| (...)
#| {"celsius": 42.}
#| (...)
Note: It has been verified on GNU/Linux not TizenRT yet (TODO).
node lib/ambientlight "{ \"controller\": \"bh1750\"}"
An extra example is provided to show integration in WebThings project. Sensors are powered by webthing-iotjs and monitored on dashboard as progressive web app (PWA).
Usage:
make runtime=iotjs start
make -C example/webthing runtime=iotjs start
#| (...)
log: Serving: http://localhost:8888/properties
#| (...)
curl http://localhost:8888/properties
#| { (...) "illuminance":123., "celsius":42., "color":"#c0a175" (...) }
Respectively node could be supported too, just adapt to webthing-node API instead of webthing-iotjs (TODO):
make -C example/webthing runtime=node start
#| (...)
- https://purl.org/rzr/
- https://purl.org/rzr/sensors
- http://rzr.github.io/rzr-presentations/docs/sensors-webthings
- https://www.npmjs.com/package/generic-sensors-lite/
- https://github.com/rzr/generic-sensors-lite/
- https://libraries.io/npm/generic-sensors-lite/
- https://www.openhub.net/p/generic-sensors-lite
- https://medium.com/samsung-internet-dev/sensors-webthings-bc48ad9963dd#
- https://w3c.github.io/sensors/#section-mock-sensor-type
- https://developer.mozilla.org/en-US/docs/Web/API/Sensor_APIs
- https://github.com/rzr/generic-sensors-webthing/
- https://web.archive.org/web/20181208022842/https://s-opensource.org/2018/04/25/mozilla-iot-generic-sensors/
- miroRucka/bh1750#17
- dbridges/bmp085-sensor#7
- https://github.com/samsunginternet/color-sensor-js
- https://github.com/samsung/iotjs/wiki
- https://github.com/samsung/iotjs
- https://www.iotjs.net/
- https://jerryscript.net/
- https://github.com/rzr/webthing-iotjs/wiki/IotJs
- https://github.com/rzr/webthing-iotjs/wiki/Sensor
- https://social.samsunginter.net/@rzr/100969945665369600
- https://travis-ci.org/rzr/generic-sensors-lite