Giter Site home page Giter Site logo

azure / verified-telemetry Goto Github PK

View Code? Open in Web Editor NEW
20.0 8.0 4.0 5.94 MB

Azure Verified Telemetry for IoT is a state-of-the-art solution to seamlessly determine the health of the sensor in real-time.

Home Page: https://www.microsoft.com/en-us/research/project/dependableiot/

License: Other

CMake 5.44% C 94.56%
dependability sensor-reliability data-quality preview

verified-telemetry's Introduction

codecov

PROJECT ARCHIVED

This repository has been archived and is now read-only. It will continue to be available for viewing purposes, however caution should be used as security fixes are no longer being applied.


Verified Telemetry for Azure IoT

Overview

The quality of sensor data is fundamental for driving IoT adoption. Since IoT sensors are often made of low-cost components, deployed in-the-wild and in harsh environments, they are prone to failures leading to faulty or dirty data. The effect of this faulty data will lead to the well-known garbage-in / garbage-out process, leading to cascading ill-effects upstream and at times catastrophic decisions.

Verified Telemetry (VT) is a state-of-the-art solution to determine the health of the sensor, i.e., working or faulty, which is consequently used to determine the quality of the sensed data. This is achieved by devising an intelligent “sensor fingerprint”, a set of unique electrical characteristics that differs between working and faulty sensors. The fingerprints can detect faults for a wide variety of off-the-shelf sensors and can be easily implemented with lightweight software code running on the IoT device. This novel approach empowers customers with a reliable and automated way to remotely measure and observe the health of the sensor in real-time alongside the data collected. The data associated with a validated fingerprint results in Verified Telemetry.

Verified Telemetry uses two technologies - FallCurve for analog sensors, CurrentSense for Digital Sensors.

Fall Curve

It reads the

VT_Overview

API documentation

Refer to the Verified Telemetry API for details on the VT Azure RTOS and FreeRTOS SDKs and how they are used.

Resource Requirements

Verified Telemetry is designed to run on resource contrained MCUs, flash and RAM is limited. Below is our resource requirements for Verified Telemetry for a size optimized (-Os) binary:

Type Size
Flash 13.0 kB
RAM 4.6 kB

Plug and Play

Verified Telemetry Library provides capabilities for interaction using a Plug and Play Model. Details about this model can be found here.

Samples

We provide multiple device and solution samples to showcase the usage of Verified Telemetry. Please follow the samples below to see Verified Telemetry in action.

To get you started with the device, refer to the following device samples for Azure RTOS and FreeRTOS:

To get you started with the solution, refer to the following Grafana sample:

Using Verified Telemetry

Verified Telemetry utilizes CMake for building the project. To integrate Verified Telemetry into your projects build system follow these steps:

  1. Using Git, submodule VT into your project:

    git submodule add https://github.com/Azure/Verified-Telemetry.git
  2. In your CMake, set VT_MIDDLEWARE_RTOS to either AZURE_RTOS or FREERTOS depending on which middleware is appropriate for your project:

    set(VT_MIDDLEWARE_RTOS "AZURE_RTOS")
  3. In your CMake, add the VT directory:

    add_subdirectory(verified-telemetry)
  4. In your CMake, add VT into your targets link library:

    target_link_libraries(${PROJECT_NAME}
        az::iot::vt
    )

Porting to your Platform

Verified Telemetry requires platform specific functions to be defined at the application layer and then passed to VT during initialization.

NOTE

The application developer will implement the following functions:

Function Implementation Requirements FallCurve Required?
adc_single_init Initialize ADC when the controller and channel are passed as arguments REQUIRED
adc_single_read Return ADC data when the controller and channel are passed as arguments REQUIRED
adc_buffer_read Return buffer filled with ADC data using DMA/non-blocking read when the controller, channel, sampling frequency and sample length are passed as arguments REQUIRED
gpio_on Set a GPIO pin HIGH when the GPIO port and pin are passed as arguments REQUIRED
gpio_off Set a GPIO pin LOW when the GPIO port and pin are passed as arguments REQUIRED
tick_init Initialize a tick counter with a time resolution that is passed as an argument REQUIRED
tick_deinit De-initialize a running tick counter REQUIRED
tick Return the present tick value REQUIRED
interrupt_enable Enable global interrupts on the MCU OPTIONAL
interrupt_disable Disable global interrupts on the MCU OPTIONAL

Support

If you need support, please see our SUPPORT.md file.

Contributing

For details on contributing to this repository, see the contributing guide.

Reporting Security Vulnerabilities

If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's definition of a security vulnerability, please report it to the Microsoft Security Response Center.

License

Verified Telemetry are licensed under the MIT license.

verified-telemetry's People

Contributors

akshaynambi avatar cout-of-the-box avatar microsoft-github-operations[bot] avatar nishant-shrivastava avatar ryanwinter avatar sumukhmarathe avatar tanmaey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.