Inspiration
While wearable hardware has become readily available to the general public, developers have not developed software that has utilized the technology to its fullest. Wearables apps these days are limited to mostly health and fitness applications...but why stop there? Wearables can be used to solve problems in all aspects of life and at this hackathon we sought out to prove just that.
What it does
Chef Ware provides a seamless way for users to interact with recipes. With Myo and smartwatch integration, one can easily navigate through recipes, set timers, and be read instructions without the use of their hands.
The web application displays the recipes. The user can then navigate using arm gestures on their Myo and then view the instructions/set timers on their pebble. Also, the user can choose to be read the instructions.
How it was built
WARNING: The following may be extremely technical...proceed with caution :)
- A simple node.js and express boilerplate was what the app started with, and mongoose was soon added (the ODM for MongoDB) to perform writes to the database we're hosting in the cloud.
- The BigOven API is used to search for recipes, and also to retrieve the list of ingredients and / or steps to make them.
- The search page simply queries the BigOven API for the search term the user specified, and displays the results.
- In order to sync the web application with the Pebble, a few things needed to be done. For example, when a user navigated to the next step in the web application, the Pebble needed to reflect that change. To accommodate this type of behavior, every time the user went to the home screen, their username was given a
user_id, and both of these pieces of information went to the server oversocket.io. The server would then remember this client and keep track of the socket it came from. If the user performed an action that took them to a different part of the application, a command was sent throughsocket.ioso that they knew not to disconnect from this client. When a client is disconnected (leaves the webpage, etc.) the MongoDB document that belongs to that client's id would then be deleted. This kept our MongoDB database relatively clean and only held data that was actively being updated and / or retrieved.
-Another feature we required was that if the step the user was on required a timer, you can start it through pressing a button on the Pebble and a timer would also start on the appropriate client's webpage. To accomplish this, we've included socket.io into the application in order to maintain a channel of communication between the server and client after the page loads, and we've written RESTful HTTP endpoints on our server that the Pebble can get data from. When the button is pressed on Pebble, it makes a POST request to the /api/token/{user-id} endpoint on our web server and tells us the duration of the timer, and if it needed to be created or paused. The web server then sent this information to the particular client's webpage (determined by hashing the user_id by Socket) which caused a javascript timer to appear in the DOM. In order for the Pebble to know which step the user is on, it made a GET request to the /api/status/{user-id} endpoint once every five seconds. Also, to sync to the correct client Socket initially the Pebble hits the /api/join endpoint on our server. The Pebble specifies which username they'd like to connect to, and the server checks to see if they're in the list of people who are currently connected to it. If they are, the server responds with the user's user-id so that the Pebble can know which client to keep track of in its interface.
- Our application also can read the steps out loud to you if you would like that, and it was accomplished through nuance's Javascript SDK for Text-to-Speech. This was almost entirely client-side javascript coding.
- The Myo armband is the perfect hardware to control the recipe in the web interface without hands. This is why a script was written for the Myo armband that can changed to a different step, trigger the reading of the step out loud, or view the ingredients again.
Challenges we ran into
The biggest struggle was finding a way for our web application to communicate with the pebble smartwatch. We solved this problem with the through the use of socket.io and MongoDB, but none of us have had experience linking a Pebble to a web app previously. Other challenges include getting the text-to-speech API to start working, styling with bootstrap, and Pebble's limit on size of response data. After a number of google searches, we were able to find answers to all of our questions!
Accomplishments that we're proud of
- Our success with integration of Pebble Pebble in a web app.
- The ability to seamlessly but appropriately aggregate all of this hardware and software technology to the same application(mongodb + socket.io + pebble + Myo).
- Voice Processing
- API Integration
- Myo Integration
What we've learned
A lot of further web development. The new web technologies include Heroku, Materialize, and socket.io. In summary, how to hack and build something awesome.
What's next for Chef-Ware?
Introduce this technology to the current and future chefs of the world. We'd love to get their feedback to help improve the application to its absolute potential.


Log in or sign up for Devpost to join the conversation.