Giter Club home page Giter Club logo

flownexus's Introduction

doc/source/_static/LogoForReadme.png

Flow Nexus Overview ๐ŸŒ

This repository hosts a framework to build IoT applications using the LwM2M protocol. The framework is based on a Leshan LwM2M server and a Django Backend. This combination allows to manage low power IoT devices, e.g. running Zephyr OS efficiently.

Getting Started ๐Ÿ› ๏ธ

Explore our documentation to learn more about the project and get started!

โš ๏ธ Warning: The framework is a work in progress and is not yet ready for production use.

flownexus's People

Contributors

jonas-rem avatar kappuccino111 avatar

Stargazers

Carlos Eduardo Parra avatar  avatar  avatar

Watchers

Lucian avatar  avatar

flownexus's Issues

Logging: optimize logging, document

Logging is important to monitor the system in operation. There has to be a resource that can be analyzed after discovering problems. This could be simple logfiles or larger frameworks like OpenSearch

Django: Bidirectional communication example

The server communicates with devices bidirectional. The majority of data is coming from the devices, this data does not need server involvement as the server always listens for incoming data. Configuration, OTA Updates.. requires communication from server to device. Pending requests from server to devices can be tracked in the database model. In case a device wakes up every few hours, the server has to track those messages outside of the ReST-API call.

There has to be a concept where communication is triggered and supervised from within Django:

  • subscribe to lwm2m observe resources from Django (Currently this is done in Leshan)
  • trigger on incoming data from device
  • implement some sort of regular trigger that queries the database to start the device communication

Django: Create download server

  • Option to upload binaries e.g. from Admin Interface
  • Generate Download links that can be send to devices
  • Assign binary to table Firmware, add download_url, file_name, version

Error while running the ./django_startup.sh script

Replication: To replicate the issue , first remove the existing database through rm -rf db.sqlite3. Run the script. Stop the script. Re-running the script produces this error :

sqlite3.IntegrityError: UNIQUE constraint failed: sensordata_resourcetype.object_id, sensordata_resourcetype.resource_id

Fix : After the fixture gets loaded into the database for the first time , we add a condition to check whether the data has already been loaded through a custom script since the sensordata_resourcetype has a unique constraint.

@jonas-rem were you deleting db.sqlite3 to run this script again ??

Django: Dashboards

Aside from the Admin Dashboard, individual dashboards are required for monitoring and interacting with an IoT system. Some dashboards may be open to access, others need access protection.

  • Firmware Update Dashboad (Monitoring, triggering OTA Updates)
  • Event Dashboard
  • Graph Dashboards (e.g. Temperature graph for one device)
  • Dashboard that shows pending communication (Server -> Device)

Device Logging: Send logs from Zephyr to Server

It can be helpful for debugging to send logs from Zephyr to the server. There has to be a custom resource type for log messages. This resource type should have the option to set a log level in the related device (DBG, INF, ERR, OFF).

Deploy: Provide method for easy deployment

Before deploying to a public website the following points have to be checked:

  • Django should not be set to debug and the deployment key should not be set to the default key.

Release v0.1.0

This issue is used to track the pending tasks of the upcoming v0.1.0 release. The release is is scheduled for 03.08.2024.

Goals of the first release:

  1. Establish a release process
  2. Make the server ready for limited prototyping deployment. This means supporting a few actual IoT devices and keeping them up-to-date via OTA Updates and debugging them via remote logging and remote rebooting.
  3. This is still a prototype release without activated security, not intended to be used in a productive environment!

Feature List:

CI: Style Checks, Automate testing

Github Actions are an easy way to build and test the project with each new Pull Request.

  • Check Whitespaces
  • python Linter
  • java Linter
  • Spellcheck e.g. Codespell

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.