If someone would ask me what I think is best about resin.io I really would not know what I should answer because I almost like every little thing about it.
In two of my latest projects however I was heavily using the devices public-url to access remote devices via web API or web sockets for realtime bidirectional communication.
Clients have access to their end-devices via Smartphone App which is making a connection to the end-device based on the public-url.
To make setting up and storing of public-urls a little more nicer and easier I came up with the idea of implementing a device registry service that automatically tracks the public-url along with other things. I would like to share this basic idea with you and get feedback. To get a better understanding let me summarize the idea into a few details. For better understanding let’s call the registry service Gister …
So here’s the basic structure:
In Gister an application is very similar to applications in resin.io. The Gister-Operator creates an application for it’s use-case, for example an IoT sensor product which might be called “IoT-Sense”. So this application will have the name “IoT-Sense”.
A Devicetype is the “prototype” of the resin.io device and can have data-fields, very similar to environment/device variables in resin.io. But mostly important, after creating a Devicetype (for example in our application with the name “IoT-Sensor-Device1”) an unique **Device-Type-Token" is being generated.
Users are the customers of the Gistry-Operator and are the people who are buying and actually using the products. They have to create an Account on the Gister-Service (which can be done via API and integrated into the Gister-Operators homepage, for example). After unboxing a new device they have to set their account credentials into the device and when it connects to the internet it calls the Gister-API and forwards the Device-Data along with resin.io’s public url so that this is being stored in Gisters Device-Registry.
A client can be for example a smartphone which connects via public-url to the end-device. But instead of using the inconvenient way of manually entering the long and not-so-good-human-readable public-url the user of the client can simply enter it’s Gister Account credentials and a list of his registered things / end-devices is being loaded via Gister’s API. With this information the client application has access to the public-url and can connect to the end-device without manually entering the public-url.
So concerning my projects and clients I really need such a service since this really helps settings up connected microservices spread over embedded end-devices using resin.io. I am going to start developing such a service (Actually, I have already started).
So what do you guys think? Maybe there is an existing service that does exactly what I am looking for. Sure lot’s of things can be done with resin.io API but the aspect of serving this to creator of devices (which are my customers) and their customers (which are the creators customers - who buy the product in the end) is something that simply cannot be done with resin.io API alone.
In the end a Gister Device-Type can also carry parameters like Publish/Subscribe Keys for PubSub, etc.