Addon adapter for WebThings Gateway using python module to handle I2C sensors and GPIOs of Raspberry Pi's extension board "SenseHat".
Install WebThings Gateway on RaspberryPI (It was made for https://github.com/WebThingsIO/gateway/releases/download/0.12.0/gateway-0.12.0.img.zip )
- Connect to device's wifi "WebThings Gateway FFFF" and then open https://gateway.local/, Setup WiFi Setup
- Connect back to LAN Wifi open https://gateway.local/things again
From "Settings" add-on menu:
- Add "and enable add-on
- Then add "SenseHat" from the things dashboard.
For using Inertial measurement unit (IMU sensors), calibration will help to get more accurate measurements.
sudo apt-get install librtimulib-utils
cd ~/.config/sense_hat/
mv -f RTIMULib.ini RTIMULib.ini.orig
RTIMULibCal
#| RTIMULibCal - using RTIMULib.ini
#| Settings file not found. Using defaults and creating settings file
#| Detected LSM9DS1 at standard/standard address
#| Using fusion algorithm RTQF
#| min/max compass calibration not in use
#| Ellipsoid compass calibration not in use
#| Accel calibration not in use
#| LSM9DS1 init complete
#| Options are:
#| m - calibrate magnetometer with min/max
#| e - calibrate magnetometer with ellipsoid (do min/max first)
#| a - calibrate accelerometers
#| (...)
grep '=' RTIMULib.ini
If done correctly north should be indicated by edge where power LED is located the compass value is actually the "yaw" value, while "pitch" is around this same edge. Remaining "roll" value can be changed by rotating on longest middle axis of board.
Once added in gateway, it can be used along the rule engine:
# From Settings / Developer / Enable SSH
# https://sensehat.mozilla-iot.org/settings/developer
ssh [email protected] # password=raspberry
sudo systemctl stop mozilla-iot-gateway
rm -rf ~/.mozilla-iot/addons/sense-hat-*
cd ~/.mozilla-iot/addons/
git clone https://github.com/rzr/sense-hat-webthing sense-hat-adapter
make -C sense-hat-adapter help prep start # unprep # to restore
sudo systemctl restart mozilla-iot-gateway
sudo journalctl -f -xu mozilla-iot-gateway.service
From "/things" webpage "SenseHat" can be added (+, Add, Done)
Note that instead of restarting gateway, from Web UI, any addon can disabled and enabled again.
More examples can be also used as standone webthing server:
cd example
# If on debian, it will be faster:
sudo apt-get install python3-sense-hat
pip3 install webthing
# Or if not on debian:
# pip3 install -r requirements.txt
./sense-hat-single-thing.py
Then add thing using "URL" adapter it should be discovered as (https://localhost:8888)
Same procedure for other exampl, like multiple things which is handling orientation sensor.
For reference the following items are supported:
- https://www.st.com/resource/en/datasheet/hts221.pdf
- https://www.st.com/resource/en/datasheet/lps25hb.pdf
- https://www.st.com/resource/en/datasheet/lsm9ds1.pdf
Thanks to Geof Cohler (@gcohler) for support.
- https://libraries.io/pypi/sense-hat-webthing
- https://pypi.org/project/sense-hat-webthing/
- https://mastodon.social/@rzr/104052909544715058#LavalVirtual2020
- WebThingsIO/addon-list#822
- https://discourse.mozilla.org/t/is-there-an-add-on-for-pi-sense-hat/58024/5
- https://www.openhub.net/p/sense-hat-webthing
- rzr/generic-sensors-webthings#13
- https://github.com/WebThingsIO/wiki/wiki#general-1
- https://github.com/WebThingsIO/gateway-addon-python
- https://hacks.mozilla.org/2018/02/creating-an-add-on-for-the-project-things-gateway/
- https://libraries.io/pypi/sense-hat
- https://www.raspberrypi.org/products/sense-hat/
- https://www.raspberrypi.org/documentation/hardware/sense-hat/
- https://github.com/astro-pi/python-sense-hat
- https://pythonhosted.org/sense-hat/api/
- https://github.com/raspberrypi/rpi-sense/
- https://projects.raspberrypi.org/en/projects/getting-started-with-the-sense-hat
- https://iot.mozilla.org/schemas/
- https://github.com/WebThingsIO/webthing-python/
- https://github.com/WebThingsIO/tplink-adapter
- https://github.com/WebThingsIO/eufy-adapter