{"id":49861436,"url":"https://github.com/staex-io/emf","last_synced_at":"2026-05-14T21:43:10.237Z","repository":{"id":231171194,"uuid":"781020354","full_name":"staex-io/emf","owner":"staex-io","description":"Сertification automation of cell towers’ compliance with regulations related to electromagnetic field radiation.","archived":false,"fork":false,"pushed_at":"2024-06-11T19:29:59.000Z","size":38715,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-12T02:51:57.777Z","etag":null,"topics":["cell","cell-company","cell-tower","certification","electromagnetic","emf","measurement","radiation","telco","towco"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/staex-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-02T15:47:41.000Z","updated_at":"2024-06-11T19:29:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"686e459b-ec79-4a72-aa94-cfa0c6c6ebc9","html_url":"https://github.com/staex-io/emf","commit_stats":null,"previous_names":["staex-io/emf"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/staex-io/emf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staex-io%2Femf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staex-io%2Femf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staex-io%2Femf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staex-io%2Femf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/staex-io","download_url":"https://codeload.github.com/staex-io/emf/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staex-io%2Femf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33044934,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cell","cell-company","cell-tower","certification","electromagnetic","emf","measurement","radiation","telco","towco"],"created_at":"2026-05-14T21:43:09.192Z","updated_at":"2026-05-14T21:43:10.224Z","avatar_url":"https://github.com/staex-io.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EMF\n\nThe goal of this project is to digitize and automate certification of cell towers’ compliance with regulations related to electromagnetic field (EMF) radiation levels.\n\nProliferation of mobile 4G and 5G networks increased people’s concerns about the negative influence of these networks on people’s health. As a result European policy makers created regulations that limit the maximum level of EMF radiation produced by wireless antennas. Since a cell tower usually hosts multiple antennas, the EMF compliance certification lies on the shoulders of cell tower companies. The current certification process is mostly manual and involves subcontractors going to each tower and making measurements using specialized equipment. This is inefficient in terms of time and money especially when you need to repeat the certification periodically, i.e. when the new antennas are mounted on the tower.\n\nWe want to automate this process using industry-grade EMF sensors that save their measurements in the blockchain. The sensors are perpetually mounted on the towers and are connected to the single-board computer that periodically (e.g. once a day/month, after each new antenna is installed etc.) sends the data to the blockchain.\n\nWithin the smart contracts we would like to store each cell company and their cell towers on-chain and link with them EMF measurements which will be stored on-chain too. From time to time we would like to issue on-chain certificates which will be based on EMF measurements. These certificates can be included into the official documents that the cell tower company submits to the regulatory authorities.\n\nWe partner with a cell tower company that is particularly interested in reducing the operational costs associated with EMF certification. The automation of this process via blockchain would substantially reduce these costs.\n\n---\n\n![](./docs/images/emf_general.png)\n\n---\n\n![](./docs/images/emf_precise.png)\n\n---\n\n**[Flow](./docs/render/Flow.svg)**\n\nBy flow above you can find how this software works step-by-step.\n\nEMF - electromagnetic field.\n\nUseful links about regulation:\n- https://single-market-economy.ec.europa.eu/sectors/electrical-and-electronic-engineering-industries-eei/radio-equipment-directive-red_en\n- https://www.sgs.com/en/news/2023/01/cc-2022-q4-finding-the-best-way-to-demonstrate-compliance-with-cybersecurity-regulations\n- https://www.tuvsud.com/en/resource-centre/stories/new-eu-security-legislation-under-radio-equipment-directive\n\nOur initial idea is to develop special measurement software in Rust which can be run on IoT devices. This software will accumulate data from the measurement module and store it on-chain using smart contracts. Using stored measurement we can issue on-chain certificates for cell towers companies through the smart contract.\n\nThis software contains by three parts:\n\n1. [Smart contract](./emf_contract/) using [ink!](https://use.ink/) language\n2. [Agent](./agent/) - software which receives new measurements and store them on-chain\n3. [Indexer](./agent/) - part of the agent which listens for on-chain events and store them in the database\n3. [User interface](./emf-ui/) - EMF user interface to see cell towers on the map and crete new one\n\n## How to run\n\n```shell\ncd emf_contract\n# Run substrate node.\nmake run_substrate\n\n# In separate terminal session.\ncd emf_contract\n# Deploy smart contract.\nmake deploy\n\n# In separate terminal session.\ncd agent\n# Run agent.\n# Use smart contract address from deploy stage.\nrm -rf emf.indexer.sqlite ; RUST_LOG=trace,agent::indexer=error TIME_TO_ACCUMULATE=0 \\\n  cargo run -- run 5GPGUPaCzQKHao1bQ5y9BybDzbpsbjAribjTQ3xSe1dcxJxe '\u003cphrase\u003e'\n\n# In separate terminal session.\ncd emf-ui\n# Prepare .env file.\necho -n \"VITE_CONTRACT_ADDRESS=5GPGUPaCzQKHao1bQ5y9BybDzbpsbjAribjTQ3xSe1dcxJxe\" \u003e .env\n# Run user interface.\nmake run-docker\n# Open browser page at: http://localhost:5173/\n\n# In case you need tokens for your wallet (entity or sub-entity).\ncd agent\n# Do faucet.\ncargo run -- faucet 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY\n\n# Initialize entity and sub-entity on UI.\n\n# Start producing measurements.\ncat \u003c(echo -n '{\"value\":5}') | nc 127.0.0.1 3322\n```\n\n## Documentation\n\n[Initialize entity (cell company)](./docs/cell-company-initialization.md) \\\n[Create and link sub-entity (cell tower)](./docs/cell-tower-creation.md) \\\n[Issue certificate](./docs/issue-certificate.md) \\\n[How to use the map?](./docs/how-to-use-map.md) \\\n[Connect wallet](./docs/connect-wallet.md)\n\n## Drift\n\nIn case you need fully automatically started environment you can use drift mode.\n\nYou can start drift mode for demo purposes. In this mode Substrate node starts automatically, smart contract is deployed and agent with indexer is up and running. Also in this mode there are 3 already prepared towers with data and certificates.\n\nThis mode has a timeout for an hour after tests passing. Also it starts to generate random measurements for random entities and sub-entities.\n\n```shell\ncd agent \u0026\u0026 make drift\n```\n\n## Staex Public Network (SPN)\n\nIf you want to provide more secure communication with your IoT devices you can use [Staex](https://staex.io) software and our Staex Public Network (https://staex.io/blog/public-network-for-iot-devices).\n\n[Here](https://docs.staex.io/how-to-guides/quick-start/) you can find precise documentation how to start own node and use it.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaex-io%2Femf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstaex-io%2Femf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaex-io%2Femf/lists"}