Sharing high frequency smart meter data with explicit consent of the consumer can help the energy transition in the Netherlands. This Alliander R&D project investigates the use of the distributed ledger IOTA and Masked Authenticated Messaging (MAM) for decentralized energy data streams adhering to the GDPR privacy regulation.
A Raspberry Pi running IOTA interfacing software connected via a P1 cable (USB to RJ11) to a Dutch smart meter.
Also see the blog post GDPR-compliant smart meter data on the IOTA Tangle — four lessons learned while putting the consumer in control.
- User is in control of his data
- A level playing field is created where service providers (e.g., app developers) can use the data
- Data goes from smart meter to service provider directly (directly via a restricted MAM channel)
- Adheres to GDPR by asking for goal and consent
- Decentralized consent management via IOTA MAM
- Post-quantum cryptography (signing via IOTA Kerl and asymmetric encryption via NTRU)
- Smart Meter: Dutch Smart Meter with a high frequency energy data port (P1 port).
- Service Provider Wattt Insights: An example of a service provider that graphs energy usage data and interfaces with My Home.
- Raspberry Pi energy data reader: A Raspberry Pi that is connected to a Dutch smart meter's P1 port (with high frequence energy data) via a USB to RJ11 cable.
- My Home: An IOTA wallet that contains your devices and consent frontend that interfaces with IOTA where users can:
- Pair with one Raspberry Pi (so that My Home can send the Pi instructions via a restricted MAM channel)
- Give consent for service provider to access data
- Revoke consent of service provider to access data
git clone git@github.com:Alliander/decentralized-auth.git
cd decentralized-auth
Install Docker and Docker Compose. Use node version 8.6. Then run:
docker-compose up
Navigate to localhost:4000 for My Home consent management wallet and to localhost:5000 for the Wattt Insights service provider example.
To start components separately:
Set environment variables:
export IOTA_PROVIDER=xxxxxx # when not running local-testnet
export IOTA_MIN_WEIGHT_MAGNITUDE=14
Start My Home consent management backend (which serves the frontend as well):
cd my-home/backend && npm start
Start Service Provider wattt.nl backend (which serves the frontend as well):
cd service-provider/backend && npm start
Start the Raspberry Pi client locally with a fresh seed.
cd raspberry-pi-client
SEED=$(cat /dev/urandom | LC_ALL=C tr -dc 'A-Z9' | fold -w 81 | head -n 1) npm start
When connecting a RJ11 cable to USB ensure the P1_SERIAL_PORT
environment variable is set to its USB serial port.
See the separate projects's READMEs for more information.
Run the raspberry-pi-client on a Raspberry Pi connected with a smart meter using a RJ11 cable.
Deploy my-home. An example runs at www.iotahome.nl.
Deploy service-provider. An example runs at www.wattt.nl.
- A description of the architecture
- The scenarios (pairing with a device, giving consent, revoking consent)
- The technologies used
- The advantages and disadvantages of using IOTA for GDPR proof energy data streams
- And issues we are aware of
We would be happy if you can create issues (also for suggestions) or pull requests.
© 2018 Alliander
This project is licenced under Apache 2.0.