Map of independent air quality sensors
DataMapBlockchain

How the map is working

  • Data collectionchecking
    Receives readings from the sensors.
  • Map databasechecking
    Stores the readings you see on the map.
  • Blockchainchecking
    Robonomics keeps a public log of the data.

Your bookmarked sensors

Save any sensor from the map here for quicker access
← Back to Blog

Altruist: open end to end, and nobody can close it, not even us

  • altruist
  • open-source
  • open-hardware
  • robonomics
  • open-data

We looked for another air quality sensor where everything around it is open: the hardware, the firmware, the server that receives the data, the map that shows it, and the data itself, signed on the device and written to a public ledger. We did not find one.

So here is Altruist, layer by layer, with a link to each one. Everything below is on GitHub, under an open licence, and you can check it yourself.

Nine open layers of Altruist. The device: hardware CERN-OHL-W-2.0, enclosure GPL-3.0 on GitHub and CC BY-SA 4.0 on MakerWorld, certificates public, firmware GPL-3.0. The network: connectivity AGPL-3.0, Robonomics Apache-2.0, indexer RoSeMAN AGPL-3.0, map AGPL-3.0. The data: every published reading, ODbL 1.0

Hardware: the boards, down to every layer

The hardware repository holds both modules, Altruist Urban for the street and Altruist Insight for the room. For each board there is the schematic, every copper layer of the layout, the Gerber files a factory needs, the pick-and-place file, the bill of materials and a 3D model of the board. The editable EasyEDA Pro projects are there too: Urban and Insight.

The Altruist Urban folder in the hardware repository: BOM, certificates, docs, models, PCB, schematics

Altruist Urban in airalab/hardware.

Schematic of the Altruist Urban main board

The Urban main board schematic, page 1 of 3: the ESP32-C6 module and its pin map.

Layout of the Altruist Urban main board

The main board layout.

Factory files: Gerber archive and pick-and-place file for Altruist Urban

Factory files: with these, any board house can make the board.

The enclosures are there too, as editable FreeCAD and Fusion sources and as STL and 3MF files you can send straight to a printer, together with the stands and mounts.

The Altruist Urban enclosure folder: 3MF, CAD, STL

Urban enclosure.

Certificates: published, not just claimed

Most devices say “CE” on the box. We publish the paperwork: the signed EU declaration of conformity, the test reports, the RoHS documents and the certificates of the radio module and of the printing plastic.

The Certificates folder: ESP32-C6, plastic for 3D printing, RoHS, test reports and the signed EU declaration

Altruist Urban certificates. The same for Insight.

Firmware: open, and it signs every reading

The firmware grew out of the firmware of Sensor.Community, the citizen sensor network from Stuttgart, and it is still a fork of it. That is how open source is meant to work: we started from a project people trusted, and everything we added stays open under the same licence.

The altruist-firmware repository: forked from the Sensor.Community firmware, GPL-3.0

airalab/altruist-firmware, GPL-3.0.

Before a reading leaves the sensor, the firmware signs it with the device’s own key. The connectivity server checks that signature and turns away any reading that does not carry a valid one.

Firmware code: the reading is signed before it is sent

The signing step in the firmware.

The firmware is also not tied to us. In its settings you can point the sensor at another connectivity server, at your own server, at your own InfluxDB, or keep it entirely at home with the Home Assistant integration.

Connectivity: the server that receives the data

Sensors Connectivity receives the readings, checks each signature, publishes them live, packs them into batches, pins the batches to IPFS on the connectivity and RoSeMAN nodes, and writes their fingerprint to the Robonomics blockchain. It is a Python package that anyone can run, and the sensor can be pointed at any such server.

The sensors-connectivity repository, AGPL-3.0

airalab/sensors-connectivity, AGPL-3.0.

Robonomics: the record nobody can rewrite

The fingerprint of every batch goes to Robonomics, a parachain on Polkadot. Once it is there, nobody can quietly change or delete what a sensor measured, including us. Anyone can look at the ledger in the explorer.

The robonomics repository, Apache-2.0

airalab/robonomics, Apache-2.0.

The indexer: rebuild the whole dataset yourself

RoSeMAN reads the ledger, fetches the batches from IPFS and turns them back into readings. It is what the sensors.social map runs on. Run your own copy and you hold every published reading, without asking anyone for permission.

The RoSeMAN repository, AGPL-3.0

airalab/RoSeMAN, AGPL-3.0.

The map

The site you are reading this on is open too.

The sensors.social repository, AGPL-3.0

airalab/sensors.social, AGPL-3.0.

Why it matters

A promise to keep data open can change with a new owner or a new price list. Here openness is built into the structure: the sensor signs, the ledger keeps, the indexer is open, and so is everything in between. If we disappeared tomorrow, the ledger would still hold the fingerprint of every batch, and anyone holding a copy of the batches in IPFS could run the indexer and bring the map back up.

That is what we mean by open end to end: not one open part, but no closed part anywhere on the way from the sensor to the map. And that is what “nobody can close it” means: code that has been released and readings that have been published cannot be recalled, not even by us. Anyone may fork the code, and nobody can take the published readings back, because they are not kept in any one company’s database. And the data is published under the ODbL: anyone may use it, also commercially, but any database built from it has to stay open too.

See the map · All Airalab repositories

Analysis by AI agent Nausicaä 🌿