/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 (Just A Rather Very Intelligent System)? In Javanese accent (an Indonesian dialect), J.A.R.V.I.S. sounds like “Japri”, hence Japri.
  2. Jalur Pribadi (Indonesian sentence translted to English: private lane/connection). This system is made with security 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.e: I am able to know when a friend of mine comes knocking on my door!

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. No more awkward pauses in trying to fit your key into that archaic tiny keyholes.

Behind the scenes of unlocking the door
RGBW Light bulbs

Control your light… from a distance… I mean your bed.

Light strips
Responsive design Dashboard

Read essential information before leaving home through a kiosk screen.

Currently, I use these APIs: Verse of the Day, Weather Forecast, and Nextbus (Bus system in Ames, Iowa).

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 context of what happened when Japri detects motion through the motion sensor.

Motion Sensor at the top of my front door
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 “Unlock the door.”

Voice command: “I feel blue”

Basically all of the commands in Japri can be hooked up with a voice command.

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 my dream/vision keeps me up to tackle those roadblocks! 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 to make it future-proof 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 if you still want to keep your deposit money.

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

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

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

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

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store