Imagine a very simple case where you want to automate your home lighting: you leave your house and lights go off, you arrive and lights go on. Very simple. All products can do that. A problem arise when you don’t live alone. You go out while your significant other is still at home and all lights still go off. Not very smart. The problem is that all products act on a specific event but they know nothing about anything else. Actually there is no brain, it’s just action-reaction. ImSmart provides the brain and memory so you can solve the problem above and more complex ones.
ImSmart is designed to be many hubs and hub extensions, IFTTT being a major tool designed to work with ImSmart. IFTTT connects to more than 300 type of devices and services and is doing the action-reaction job. Fortunately we can insert the brain functions by using the Maker Service in IFTTT and the whole process looks like the one below.
In this diagram, a hub is the hardware that helps you communicate with your connected objects, like your Philips Hue hub, or your Samsung SmartThings hub.
A hub extension acts just like a hub but it is not hardware. For example IFTTT is a hub extension. You can interact with IFTTT while it has connections to your hubs at home, hence they are extensions.
Of course this example is very simple and you would actually not need ImSmart to turn off your lights. But now that you've defined this variable and trigger you can make it more flexible and powerful. This example works fine as long as you live alone. Let's assume that you don't live alone. What will happen when you leave home at 10PM while your significant other stays home? All lights turn off and soon you receive a text message reading "WTF is wrong with your gadgets?". Although funny once, you don't want a bad automated home. We can fix this 2 ways: using an additional location variable (e.g. SO_At_Home) and update the trigger accordingly, or use a motion sensor to check if someone is still home (handy if you have a larger family). I will show you how to fix it using an additional variable here and how to fix it with a motion sensor, here.