The wheel - reinvented
This is my attempt at reinventing the wheel with some added roundness.
Consider creating an interface to an LED, the age-old LED-on/LED-off problem:
How to turn the led on and off? We could add a switch, a temporary switch, a motion sensor, etc, and that is on the hardware side alone. We could also interface via USB and have the LED controlled via IOT/IOE, interpreted/compiled code on the host (computer) side and so forth.
All solutions have their optimal place and I do not aim to assess each and every solution. What I am working on here is a way to define the interface, that could be used by any external controller.
In the led case, we have two actions, one to turn the led on that I will call ledOn, the other to turn the led off, that I will call ledOff.
This project is an attempt to create an interface enabling remote function calls to such functions as the two previously defined (ledOn and ledOff ).
How far have I got
I made a start during last year's edition of the Hackaday Prize and got as far as the Android proof-of-concept coding. After much head-banging, I managed to make inroads and this year might get somewhere, with the help of your likes.
- I am working on the jsoknit definition. This is the contract so to speak such that if an embedded device has a jsoknit defined interface and a remote device has a. a means to access the embedded device and b. a jsoknit parser, the remote device should be able to make function calls to the embedded device.
- I have a working Arduino/Android working proof-of-concept, demonstrating remote function calls as described in 1.
- I have documented all steps in enabling Bluetooth communication on the Arduino as described in this GitHub repository.
- I am working on a json parser, written for Android, that is able to parse a jsoknit interface definition and create the appropriate Android widgets and callback functions in a single Android application (no need for one application for every jsoknit device). This is a java class to be added to 5.
- I am working on an Android Jsoknit Application and so far so good. There is Bluetooth communication between Android and Arduino, once the json parser defined in 4. is added, the Android application will be complete.
How far do I aim to get
I am aiming, by October 2016, to have a basic vocabulary of widgets defined such as buttons, switches, read labels and write labels and with the help of this basic vocabulary, implement as many proofs-of-concept as possible within this 1/2 year between now and then, such as PID heat controllers, pressure sensors, temperature sensors, pH meters and so forth. It would also be nice to either implement the jsoknit parser in a different language such as Python or use the Java jsoknit parser in other environments such as web based applications.
Would you like to help?
If any of this sounds interesting, you are welcome to join the project. Prize monies to be divided following formula:
Where Pm is prize money, Lt tax liabilities and n number of contributing participants in this project. Note I am donating my claim (hence n-1) to the group effort so please participate and do not let the formula result in a division by zero!
Suggested areas are:
- Android application development (Java)
- Android UX design
- Arduino proofs-of-concept (C++)
- Documentation (GitHub & Hackaday)
- Graphics (high-octane eye candy)
- Jsoknit definition (JSON)
- Python (or any other language) jsoknit parser
Thanks for reading!