Child Apps - Able to filter?

Hi,

So I’m looking to create a a SmartApp for full home automation…

However this will be using multiple child apps, but each child app will have a “Type” associated to it, depending on the type will then control what the childs function is…

So for example one child type could be “Room” and another be “Scene”, now considering I’m expecting many types and multiples of those types, ideally I don’t want to work with one massive long list of child apps…

Firstly and ideally is it possible to only display one “Type” of child based on the value in a field… I can do this in a drop down list, but not in the screen that lets me go in to the child and edit it? I don’t think this is possible though?

If that isn’t possible, is it possible to create and app label that has a prefix of the “Type” plus a title taken from another field? Again I don’t think this is possible either…

Anyway if you could let me know or if you can think of another way of doing it?

I wish I could answer your questions, but I don’t know the answers.

I do have a question.

In an effort to save you time and prevent the reinvention of the wheel… have you come across the smartapp “CoRE”?

It can do pretty much anything that’s currently possible in ST.

I understand where you are coming from as far as the long list of child apps. I modified the code in CoRE and have multiple installs and use naming protocols for them.

Upstairs
Downstairs
Outside
System
Presence
Text to speech

It keeps it all organized and works great.

Cheers for the reply and yes aware of CoRE, although very powerful, it won’t do everything I need it to do and I’m trying to make something simpler to use as a novice, but very powerful…

Hopefully I can figure out a better way to present child apps though…

What are you trying to do?

Essentially to build a full home automation app, that is modular, primarily for my own purpose, but will be released once I have a version I’m happy to release.

But the key points are:

  1. It must be easy for a novice to build each of the modules and the modules must easily be able to interact
  2. It should not use hacky workarounds - e.g. creating dummy switches (unless there is no other option)
  3. It will not use the buggy SHM, modes and routines.

In terms of my general notes/ideas, the below will be the modules, some will exist on the parent some on the child, you can now probably start to see why having many apps un-filterable could become problematic… Like I said I can filter in a drop down list, but can’t work out how to filter or force naming conventions in the list to edit smart apps… I’m hoping someone can help :frowning:

Zones:

  • zone should have current scene
  • zone should have presence sense
  • zone should know if TV is on - if so movement sense is disabled
  • temperature

Scene:

  • lights
  • switches
  • perhaps later blinds etc.
  • notify e.g. Flash light - needs to not conflict with automatic scenes and needs to capture correct scene. (Could signal alarm active and not disarmed, or automatic disable etc.)

Time band:

  • Dynamically requested - Not based on ST mode

Security:

  • movement sensor
  • text messaging
  • alarm
  • voice announcement
  • disarm by people
  • based on zone
  • day and night modes
  • audio status report when home
  • auto arm night mode when no movement in x zones for Y minutes but disable when z sensor is triggered…
  • automatic lighting while not in the house to seem like home.

People:

  • Announce when home “Welcome home Jake alarm disabled” or “Welcome home, alarm already disabled, Jane is home, no security alerts”
  • provide security update only to those who should get it.
  • turn off alarm and announcements triggered by x sensor

Multimedia:

  • Plex
  • TV
  • Kodi

Doorbell:

  • audio notification
  • SMS if out of house

I presume this is to be OUTSIDE of the SmartThings app correct? Or are you looking at apps to run inside of SmartThings and are configurable?

If it is outside, You can do it in whatever way you want to. I would use C++, but I like compiled code.

If internal, there are structures in the groovy implementation that allow you to have the user configure the type of items to modify. You should go to the docs pages for more information. (There is a lot of documentation there.)

Hi Glen,

No this will be a SmartApp inside of SmartThings…

My question is not how to achieve the automatons or capture values, I’ve written several different SmartApps previously which cover some of the aspects above I want to implement.

My question is purely on the presentation of child apps within ST, which the documentation makes no reference to unfortunately, I assume because it’s not possible to either return only a subset or to automate a prefix on to a child app label…

I think he is asking can he have multiple child app lists within a SmartApp and filter the lists to only show certain apps. I believe the answer is no, but I don’t know for sure.

app(name: "childApps", appName: appName(), ...

Thanks @whoismoses yes that’s ideally what I am asking for, but like you say I don’t think this is possible either!

An alternative would be the ability to take a user defined string and add a prefix then set as the app label, which I couldn’t find how to do before, but the App.updateLabel() function may be the answer to this! Will give that a look this evening…

Not ideal but will at least mean I can group the child apps!

Just had some time to have a play App.updateLabel() means I can apply a prefix to the apps, which in the absence of filtering the full list will have to do!

I know the SmartLighting app also has the ability to highlight the apps with red on the left (instead of the normal blue). I don’t know how they do that.

I think that’s just for mandatory fields isn’t it? I’ll take a look though in case there is something that might be useful!

Sorry it was SmartHome monitor and blue not red. I only have child apps under custom, only it shows blue.

Ahh, appears to relate to if the child app is installed or not, I suspect it’s not configurable though… but anyway thanks for your help, the prefix should be a sufficient workaround…

So my smart app is currently progressing well!

But I thought I’d update on the blue and red bar thing!

So by default you will get no bar

However if you set required: true, you will get a red bar

and then if you additionally set, state: “complete” the red bar becomes a blue bar!

1 Like

Hey Jake,
I was wondering if you figured this out? I sort of did and I think it might work for you.

Are you talking about the filtering? or the colors?

If the filtering then no I didn’t ever get the the bottom of it… and just prefixed the app label with the type, which is actually working really well… would be interested if you do have a solution though!

If the colors then I covered this in the previous post :slight_smile:

No not the colored, just the filtering.

Nice, yeah if you do have something please share :slight_smile:

If ST supported this I would be soooooooo happy.

Also the ability to customize the app label with a dynamic description and icon would add a lot of functionality…

  • be able to link to a downstream child would be awesome too, like if you’re browsing a child app and it relates to a different child app it would be cool to be able to send your users right to that app.

something like (this is pseudo code so don’t expect this to be accurate!)

...

def locks = findChildLockUsers()
locks.each { -> lockUser
  href(name: "toLockUserPage", appPage: "lockUser.${lockUser.id}.rootPage", title: "userPage", description: lockUser.description(), image: lockUser.image()...
...

def findChildLockUsers()
  def lockUsers = []
  parent.childApps.each do { -> child
    if (<this is a user child app>) {
      lockUser.push(child)
    }
  }
  return lockUsers
end
}

Or even just an image so that in the aggregate child app list it would be easy to pick out what is what…
more pseudo code:

label title: "Name for User", ... image: 'https://example.com/user.png'
2 Likes