Skip to content
Go to file


Failed to load latest commit information.
Latest commit message
Commit time

Energy usage data streams with consent of device owner Proof of Concept

Smart Meter

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.

Smart Meter with Raspberry Pi

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)


architecture overview

  • 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:
    1. Pair with one Raspberry Pi (so that My Home can send the Pi instructions via a restricted MAM channel)
    2. Give consent for service provider to access data
    3. Revoke consent of service provider to access data


git clone
cd decentralized-auth

Running locally

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

Start My Home consent management backend (which serves the frontend as well):

cd my-home/backend && npm start

Start Service Provider 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
Deploy service-provider. An example runs at

Further information


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.


Sharing smart meter measurements with consent on IOTA (R&D)





No releases published


No packages published
You can’t perform that action at this time.