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?
bamarayne
(Jason "The Enabler" as deemed so by @Smart)
2
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
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…
bamarayne
(Jason "The Enabler" as deemed so by @Smart)
4
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:
It must be easy for a novice to build each of the modules and the modules must easily be able to interact
It should not use hacky workarounds - e.g. creating dummy switches (unless there is no other option)
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
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
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.)
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.
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.
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…
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
bamarayne
(Jason "The Enabler" as deemed so by @Smart)
18
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'