How do you display current Phrase?


(Craig) #1

I’m trying to figure out how to display the current “Hello, Home” phrase.

When it was only modes it was simple “$location.mode” but I can’t figure out the equivalent for ‘location.helloHome’

the only references to “helloHome” is ‘location.helloHome.getPhrases()’ and ‘location.helloHome.excute’

I became a little frustrated when I wrote support hoping this was a quick question for them and they literally sent me to the documentation which has no reference to helloHome and told me to ask the community (they aren’t responsible for coding). My question back was if it’s undocumented, it doesn’t seem to be in use on any public apps, how is the community going to know? Haven’t gotten a response sense. Hopefully you guys can help!!!


(Michael Barry) #2

The lack of API documentation is infuriating. The new documentation developer, @Jim introduced himself 14 days ago. Maybe he can help out?


(Bruce) #3

There isn’t such a thing as a “current” Hello Home phrase. Those are just apps that run based on how you’ve set them up. There is not an associated state, except for whatever underlying conditions caused the app to run. What is it that you’re trying to discover?


(Craig) #4

@bravenel - Thank you for your response. I’m curuious on your thoughts below.

The more I think about what you say that makes complete sense but exposes what I view as a fundamental flaw or missing feature within the deployment of phrases in the application.

Phrases, in regards to hello, Home in some manner replace the concept of modes, but give you some additional much needed push features which modes don’t do. I’m not entirely sure why they kept modes / phrases as individual items because if you design your system to use modes but trigger items using phrases it’s very easy for your system to get out of sync. It’s almost as if they kept legacy features around while only partially integrating future features. Working in software I’m constantly battling this issue internally with my engineers. Anyways - I digress.

Example:

I want my home to know “I’m awake” and if I want apps operate in a certain manner when “I’m awake” I have to set a mode. But if I want to trigger a bunch of actions as soon as “I’m awake” I have to use a phrase. Now It’s kind enough to allow me to set a mode from the phrase so I only need to trigger one item (i.e. the phrase) and I kill two birds with one stone. But…

In addition I want the ability to determine the phrase I want to go to based on what my current phrase is (i.e. mode). This isn’t particularly difficult, I just capture the mode as well as the phrase, check against the mode and send a command using the phrase, however, to do this I have to request both mode and phrase for every pair, this isn’t the best user experience for my app, actually it’s some what of a pain (I’ll explain in just a moment).

Also, states unlike apps, have the added benefit of not trigger events over and over again if they are already set state you are attempting to complete. This is NOT true of apps (unless programmed). So if “I’m awake” mode is set and a phrase is run and then I detect an action that would send my house into the same mode/phrase the app sends the command. STs is smart enough to send a warning saying you are already in that mode (i.e. don’t do anything) but hello, Home isn’t and attempts to run the app. Good news, the sub app is smart enough to say everything is set the way you want so I’ll stop but that’s after 1-5 notifications explaining the situation have been triggered within the hello, Home screen. hello, Home becomes basically useless because every time there’s motion in my house I get a lines regardless of change in overall state (i.e. I see 100 I’m awakes, 100 homes, etc. etc).

Workaround: My fix for both is requesting the phrase and mode during installation of the app. I then use mode to determine what phrase to run or if to even run the phrase (i.e. it’s already set to that, ignore the request). This is easy enough EXCEPT I have 6 modes and 6 phrases, now I have to do double the steps when configuration the application. That sounds like a stupid complaint but it still is a bad user experience and I hate designing applications (especially ones I have to use) with a user experience that drives me nuts.

Long term fix: I might have to design an app to do this for me but I think STs should like at doing it. Almost everything in the world can trigger a phrase out of the box EXCEPT a mode change. Let me change a phrase based on a mode change and all of this goes away OR store the current phrase within a variable and let me call that variable.


(Geko) #5

You may find it helpful to review these discussions:

… and


(Bruce) #6

That’s a lot to wrap one’s head around. What I think is that you haven’t quite figured out how to do what you want yet, and the sign of that is your frustration with your own design as it intersects with ST. In some ways ST is a puzzle that unfortunately isn’t the most obvious one to solve, and probably isn’t what you expected. @geko’s suggested reading is a good place to start. I spun my wheels for a while until the pieces fell in place along the lines of what ST has in mind. Modes are quite powerful, although by their very nature limiting (unless you want a whole bunch of them and the attendant complexity). I get by with 3 primary modes (Home, Evening, and Night), all established by Hello Home phrases that run at Sunrise, Sunset and late at night, and a “dummy” mode, that alters certain behaviors when I go to bed (which is usually before my wife, hence the extra mode). I also only have one smart app that cares about the mode (i.e., location.mode is subscribed to) that adjusts dimmer levels at mode changes (one app with many instances). I do make extensive use of limiting other apps based on mode (i.e., Only when mode is…), and some based on time (Only during a certain time), and of course several scheduled things.

I think you are going down the wrong path to care about which phrase is used or to load complexity onto phrases. Phrases are just apps, that’s all they are. Use the “Automatically perform ‘Phrase’ when…” option to fire the phrases. I only have 5 phrases (Good Morning, Good Evening, Good Night, Goodbye, and I’m Back), and everything I want to accomplish works great within that overall framework of modes and phrases.

Look at this post by Alex, ST’s CEO, about how his own house works. It’s very similar to what I’m doing, only customized to his situation, as mine is customized to my situation.


(Craig) #7

Fair enough guys. To be fair I’ve read both of those threads and much of them are in regards to people wanting similar things (in many cases even more complex situations then mine). I was hoping this was a simple solution but it sounds more like a discussion of proper ST design so you have me curious!

@bravenel - maybe I’m misunderstanding you a little but the real power of phrases (and why I’m using them) is it can trigger LOTS of events at once. It’s like a “super” app. If I were to stop using phrases I would have to have individual apps for lots of different actions (which is worse than the current app situation I’m trying to stop). Once again, I might have misunderstood, but I also want all my modes to auto change based on motion rather than manual changes within the app.

Let me go through one situation and tell you how I solved it. I’d love to hear if you have a suggestion on a different way of accomplishing this and / or where I could have thought about it differently. I’ll use your example of “My wife going to bed before I do” - which sounds like your situation as well.

Requirement:

  • If motion in bedroom && bedroom closed
  • SET
    mode: “One Awake” run
    Phrase: “One Awake” (set themostat)
  • If no motion downstairs for X minutes && mode = “One Awake”
  • SET
    mode: “Night” run
    Phrase: “Good Night!” (to turn off all lights, set different thermostat, etc.)

I have several apps react differently depending on mode (i.e. if One Awake || Night do NOT turn on bedroom light but turn on bedroom nightlight, etc.

How I solved this:

Created an application that asks: Mode, Phrase, time period, motion sensor, and delay for each “situation”. If criteria are met, i.e. motion detected in that area, the time period is right, the delay has occurred (like in night), and the mode isn’t already set to that mode, than change mode to correct mode and run the correct phrase.

Issue: It seems redundant to have to collect mode and phrase as they are similar.

thoughts?


(Craig) #8

Interesting enough you really got me thinking on this. And I believe I could have done this using the out of the box phrases just slightly differently.

If I set “One Awake” when the bedroom door closes. I then can set “night” when “things settle down” but excluding ALL modes except “One Awake”. This isn’t ideal because if I add phrases I have to remember to update this BUT I could live with it and it removes my need to have to keep a customer app up and running.

I’m going to attempt to do that.


(Bruce) #9

Like I said, it’s a puzzle. You’ll know when you’ve solved it because things get very simple once you do. Complexity usually is a sign of square peg in round hole.