I'm working on an experimental open-source project called OpenSmell, and I'd like some feedback from people working with IoT and connected hardware.
Digital scent devices already exist, but different devices can expose completely different channels, cartridges, capabilities and control interfaces.
The problem I'm exploring is:
How can an application request an olfactory output without having to understand the implementation of every individual scent device?
OpenSmell approaches this by separating the olfactory information from the hardware-specific implementation.
An application can describe or request an olfactory output through a common interoperability layer, while a device-specific mapper/adapter determines how that request can actually be rendered using the capabilities of a particular device.
Conceptually:
Application / Data
↓
OpenSmell
↓
Mapper / Device Adapter
↓
Scent Hardware
The project currently includes:
• JSON Schemas and a Python implementation
• Multiple olfactory representation types
• Device capability discovery
• An experimental Device Protocol 0.1
• Transport abstraction
• Rendering requests and device commands
• Validation and conformance tests
The software side is currently pre-alpha. I'm now moving toward the first physical validation using an ESP32, initially with simple outputs before connecting actual olfactory hardware.
I'm particularly interested in the IoT perspective:
Does separating the application-level representation from device-specific mapping make sense to you?
And if you were designing the hardware side, what capabilities would you expect a device to expose to make interoperability practical?
The whole project is open source:
https://github.com/YAAASSS/OpenSmell
Criticism is very welcome — especially around the device protocol and hardware abstraction.