Difference between App and Driver?

What is the difference between an app and a driver? It appears to me that in some cases, the differentiation is a bit blurred.

I have a lighting system with a serial port for control, and I want to build support for it. However, I'm unsure if I need an app, or a driver, or a combination of both.

The Vera just had plugins, and there was no differentiation at all.

While there are plenty of similarities, certain system calls are only available to one or the other.

A simple look at the Main pages of a significant app and the Driver Info page to see massive differences in the what they display. Selection fields that alter what other selections are possible, etc.

Although I too wonder why a single "add some code" page and let the system deposit in the right bucket hasn't been created. I know lots of users make a simple mistake of pasting Apps in the Driver bucket and Drivers in the Apps bucket. An improvement was made to detect this and offer wisdom, it does seem an attractive enhancement to just fix it. :smiley:

But of course it only looks simple. :slight_smile:

A Driver interfaces directly with the device.

App can be of 2 things... a standalone app like RM and a App that manipulates the Driver and in turn controls the device..

So, you're saying that I may need both an app and a driver. A driver to control the switch and dimmer loads, and an app to create all of the devices from a list that I paste into a field (device discovery not supported in the serial protocol).

If you don’t need the fancier UI elements, I suspect you can write it with a Parent Device and a set of Child devices (that the Parent device creates/manages)

The Parent device can still have rudimentary input Parameters, so that could be your driving list for it to create the various children it needs... in a lot of ways it’ll be like your Vera code.

I have my Alarm code prototyped this way and it’s working fine. My parent Device is using the IP of the WizNet - Proprietary/Closed PRT3 adapter combo, and making the calls to create the various children.

I’ll add the Uber Parent (App) down the line, once I get the basics setup, but I don’t need it to get going.

:point_up_2::point_up_2: This is probably what you want.

You asked what the difference was so I gave a layman's explanation.