Japri

/ja prē/

Noun

  1. A smart system that gives users access to control and monitor connected home appliances (such as: lights and door) and even notifying users on certain events. Doesn’t it sound like J.A.R.V.I.S ? In Javanese accent (an Indonesian dialect), J.A.R.V.I.S. will sound like “Japri”, hence Japri.
  2. Jalur Pribadi (English translation: private lane/connection). This system is made with security kept in mind. It is made accessible only to authorized users. Hence, Japri.

Kiosk screen

Japri involves a web application and embedded system to work together to provide users real-time data such as sensors data and live streaming images from a browser. The web server is in the Raspberry Pi 3 that is housed under the kiosk screen, which is also why there are many cables coming in there.

Japri is an initiative I made after I graduated from Iowa State University to pursue my interest in learning new technologies, and create a product that will be useful for me and others. So far this has been very beneficial to me and my roommates. I am able to see when my package is delivered to my home when I am not there, I am able to know when a friend of mine comes knocking on my door when I am on my earphones, and many more!

I’ve been talking too much in text, and since a picture is worth a thousand words, here is Japri in action:

Highlighted features:

Desktop notification when using unnecessary lights

Get notified when you have your lights on during a bright day. Save up some electricity bills, yes!


Desktop notification on incoming chat

Communicate with your roommate.. from your desk (without screaming).


Unlock your door by tapping a tag on the door. Cool, no more finding key hole. And no more duplicating key for… *ahem*, just buy an NFC tag, register it in the system, and done!

Behind the scenes of unlocking the door

RGBW Light bulbs

Control your light… from a distant… I mean your bed. Yeah, I know that struggle.

Light strips

Responsive design Dashboard

Read essential information before leaving home through a kiosk screen.

Currently I use these APIs: Verse of the Day, Forecast, and Nextbus.


Email sent with an attachment

Don’t worry about your home :) Japri will notify you by email when it detects movement in front of your home. The attachment of the email is the important part. I decided to generate an animated GIF file that contains several images before and after the motion is detected.

These are the GIF frames dissected:

|Frame 1 Frame 2 Frame 3 Frame 4 Frame 5 MOTION DETECTED Frame 6 Frame 7 Frame 8 Frame 9 Frame 10|

The concept is like Apple’s Live Photos, I want to show moments before and after a motion is detected, this will give users a good perspective of what happened.

Desktop notification when motion is detected

Voice command: “Where is the bed?”

Have a house that listens to your needs. Yes, voice commands!

Japri has some useful voice commands such as:

Voice command: “Turn on the lights”

“Turn on/off the lights”

“I feel blue” — we all have that one day…

and even “Open the door.”

Voice command: “I feel blue”

Basically all of the commands in Japri can be hooked up with a voice command. Yay, modular design :)


Future features:

  • Text-to-speech. Japri may talk in the future
  • Alexa Voice Service. Japri can be more intelligent with the help of Alexa
  • Music player

The technologies I used to build the web application are:

Node.js: powers the web server and all of the logic to operate this smart home system

Socket.io: provides real-time data exchange

Angular.js: provides an Model View Architecture (MVC) architecture for the front-end

Japri also provides RESTful services. Pro: Reusability! When I make a native Android/iOS app, I can easily connect Japri’s REST API endpoints to other applications.


Lessons learned:

Before working on this project, I made a checklist containing all of the features I want to do. Most of them were new to me, but that did not stop me. I confronted many roadblocks while implementing those features, and I am happy they all have came to pass! So, never be afraid of diving into the unknown and learning new things.

In addition, be sure to plan and design before implementing your ideas. Spending more time in designing an application’s architecture will save you a lot of time in the future because you will not waste time redoing your works.

Don’t make holes on your apartment’s door to keep your deposit money.


If you have any question about the project or if you have a career opportunities for me, I am available to be contacted via email at kelvienhidayat@gmail.com

I am looking for a job in Software Development area in the USA or Indonesia.

For more technical explanation, please visit my code repository: Github

Extras:

Voice command: “Paint my love” ;)

At last, Javanese people will say “Matur nuwun” — Thank you for reading!