iome is a platform for developing physical interfaces with a web application frontend using modern, off-the-shelf technologies.
The overall system looks like:
______________________ _____________________ _________________________
| Buttons, Knobs, etc. | ---> | Wifi-enabled micro- | <-- WiFi ------> | Device with a display |
---------------------- | controller running | | \ | and a web browser, e.g. |
____________________ | an HTTP server and | | OR | phone, tablet, computer |
| LEDs, Motors, etc. | <----- | minimal web applic- | | --------------------------
-------------------- | ation framework | | /\
--------------------- [ Router ] ---------'
This was created specificially to serve as a wireless HTML5 game console:
More generally, it enables wireless access to physical switch, knob, etc. data via a Websocket.
This means that you can:
- Build/buy something like the Dev Kit v1
- Load it up with the
iome
software (if necessary) - Power it up
- Connect your computer to the
iome-{theUniqueId}
Wifi Access Point that it creates by default - Surf your browser over to
http://192.168.4.1
- Open the browser dev console and do:
const ws = new WebSocket(`ws://192.168.4.1/input`)
ws.onmessage = e => {
const data = JSON.parse(e.data)
console.log(data)
}
- Watch the data change as you interact with the physical buttons, knob, etc.
From there, you can integrate that WebSocket hook into whatever web application code you want.
The default configuration creates an Access Point on boot, but you can edit the config to specify that it connect to an existing Access Point instead. You can use the editor described here to do this. Once connected, you should, providing your AP supports mDNS, be able to access it via http://iome-{uniqueId}.local
, as opposed to having to discover and specify its IP address.
This first development kit features a familiar household rotary push-button dimmer knob as its primary physical input and three living hinge tactile switch buttons (labelled 1, 2, 3). It employs the popular, low-cost ESP32 running Micropython as the brains of the operation.
![sketchy prototype](https://user-images.githubusercontent.com/585182/69062387-d80cc680-09e8-11ea-82ab-671f9070fd5e.png)
Sketchy is a motorized Etch A Sketch display appliance.