Skip to content

suyash-harman/device-message

 
 

Device Message

Maven Build & Sonar Analysis Quality Gate Status Vulnerabilities License Compliance Latest Release

Device message service is used to publish data to devices when there is any new configuration created, updated or deleted by user through API's.

Table of Contents

Getting Started

Device Message component exposes API that is invoked by internal service to send the configuration data to the device and also store them in Mongo DB with the attributes like data, domain, version, command along with the config data.

To build the project in the local working directory after the project has been cloned/forked, run:

mvn clean install

from the command line interface.

Prerequisites

The list of tools required to build and run the project:

  • Java 17
  • Maven
  • Container environment

Installation

Coding style check configuration

checkstyle.xml is the coding standard to follow while writing new/updating existing code.

Checkstyle plugin maven-checkstyle-plugin:3.2.1 is integrated in pom.xml which runs in the validate phase and check goal of the maven lifecycle and fails the build if there are any checkstyle errors in the project.

To run checkstyle plugin explicitly, run the following command: mvn checkstyle:check

Running the tests

To run the tests for this system run the below maven command.

mvn test

Or run a specific test

mvn test -Dtest="TheFirstUnitTest"

To run a method from within a test

mvn test -Dtest="TheSecondUnitTest#whenTestCase2_thenPrintTest2_1"

Deployment

  1. The component can be deployed as Kubernetes pod by installing Device Message charts.

Link: Charts

  1. Mongo DB need to installed and database/schema should be created with the required collections.

Architecture

Sequence diagram of Device Message:

Usage

  1. Device Message component is responsible for sending the configuration to the device whenever there is an update in the configuration.
  2. Internal service calls the Device Message API to initiate sending the configuration.
  3. The Device Message component sends the configuration to the device using an MQTT channel.
  4. The configuration is saved in the Device Shadow collection database.
  5. The device client can later retrieve the latest configuration by calling the Device Shadow API also.

Built With Dependencies

  • Spring - Web framework used for building the application
  • Maven - Build tool used for dependency management
  • MongoDB - MongoDB driver to connect with NoSQL document database
  • Project Lombok - Auto-generates Java boilerplate code (e.g., getters, setters, builders)
  • Apache Common - Java Library
  • Jackson - Reading JSON Objects
  • Morphia - A Java tool for mapping Java objects to MongoDB documents.
  • Logback - Concrete logging implementation used with SLF4J.
  • slf4j - Logging facade providing abstraction for various logging frameworks.
  • Mockito - Mocking framework for testing.
  • JUnit - Unit testing framework.

How to contribute

Please read CONTRIBUTING.md for details on our contribution guidelines, and the process for submitting pull requests to us.

Code of Conduct

Please read CODE_OF_CONDUCT.md for details on our code of conduct, and the process for submitting pull requests to us.

Contributors

The list of contributors who participated in this project.

Security Contact Information

Please read SECURITY.md to raise any security related issues

Support

Contact the project developers via the project's "dev" list - ecsp-dev

Troubleshooting

Please read CONTRIBUTING.md for details on how to raise an issue and submit a pull request to us.

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Announcements

All updates to this component are present in our releases page. For the versions available, see the tags on this repository.

About

Device Message repo to maintain code to publish message to device / vehicle

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Java 98.1%
  • Shell 1.2%
  • Dockerfile 0.7%