My wants to dive into full-stack development and practice project management skills, as well as the need for my potato to have a way to track different devices' statuses by streaming data from them.

What it does

It allows clients like a Raspberry Pi or an Android phone to stream data over MQTT. Mosca (the broker) authenticates a client, receives a packet that contains an object and then places it into a MongoDB collection for a certain topic.

The browser acts as the only interface to the frontend for the "server" for now, which is really the broker that handles connection requests and packets in MQTT. It also authenticates the owner of the network.

How I built it

I used an open source node module called Mosca so I can handle broker jobs and write a pub/sub API in Node and MQTT.js. We are developing an Android interface with Kotlin to interact with hardware abstraction layer APIs.

The main reason I chose MQTT over HTTP is that the concept of document representation in HTML is not always applicable because the client isn't always a browser. MQTT also has simpler header configurations that reduce overhead costs.

Challenges I ran into

It was easy to learn the features of MQTT. Figuring out how I exactly wanted to benefit from these features was difficult initially. The key is to switch thinking to the design of MQTT and the needs of the network. In addition, most tutorials online were surrounding the MERN stack and not many were for MQTT, so I spent more time reading docs and MQTT implementation-related articles and papers. This helped a lot with gaining a much deeper understanding of the protocol.

Accomplishments that I'm proud of

Building a big project

What I learned

Everything about MQTT, Android development (a tiny bit)

What's next for iota

  1. Eventually I want to build an interface into every client in the network with a display and WiFi capability. DISRUPTING THE IOT SPACE BY CONNECTING THE WORLD

  2. When it comes time to scale the database due to data accumulation over time, I will migrate my data to a remote server and do some secret magical analytics stuff. In the mean time, data is visualized through the browser UI

  3. Build an iOS interface

  4. Design a better-looking logo than that of Google Cloud IoT Core

Built With

Share this project: