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)
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: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
#| 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.}
#| (...)
(...)
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 Mozilla's Thing 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://www.npmjs.com/package/generic-sensors-lite
- https://github.com/rzr/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/mozilla-iot-generic-sensors-adapter
- 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
- http://www.iotjs.net/
- http://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