[RELEASE] HD+ - Android Dashboard

That sounds very interesting...I don't remember seeing that before.

@jpage4500 - FYI, your boss called, and they haven't seen you in a month and wonder where you are.

:wink:

Seriously, I don't know how you have any life outside working on this app with all the great stuff you're doing. Thank you for the amazing service you're doing for the community.

1 Like

Where does one go a nice icon pack for this?

:point_up_2: [RELEASE] Hubitat Dashboard - Android dashboard app

What time of device is this? I don't see anything with a 'variable' attribute in the docs

Can you send the JSON for this device (capabilities, attributes, commands)?

It's a built-in HE device
Screenshot_2020-11-15_17-55-43

Since it's a built-in I don't think I can. Maybe I just don't know where to look. Here is the device page


You can see the attribute I'm talking about in the upper right.

I just started the timer for 2 hours and here is the HE tile that displays the time left and that I'm trying to duplicate in your app
Screenshot_2020-11-15_18-03-45

I remembered reading about this in a topic here so I went looking and found

This of use?

1 Like

D'oh! Didn't think it might be public. Thanks, I'm sure it will help @jpage4500

RE: Omni Sensor & JSON - I added this device to my HE and then added it to the MakerAPI.

At that point, you can get the JSON response returned from Maker API (and what's received in the dashboard app) by clicking on the 'get all devices w/full details' link (Maker API settings). You can just show the omni device only by replacing "all" with the device ID.

The final result should look something like this:
http://192.168.0.202/apps/api/38/devices/415?access_token=41ae***

{
  "id": "415",
  "name": "test sensor",
  "label": "test sensor",
  "attributes": [
    {
      "name": "acceleration",
      "currentValue": "inactive",
      "dataType": "ENUM",
      "values": [
        "inactive",
        "active"
      ]
    },
    {
      "name": "carbonDioxide",
      "currentValue": 350,
      "dataType": "NUMBER"
    },
    {
      "name": "carbonMonoxide",
      "currentValue": "clear",
      "dataType": "ENUM",
      "values": [
        "detected",
        "tested",
        "clear"
      ]
    },
    {
      "name": "contact",
      "currentValue": "closed",
      "dataType": "ENUM",
      "values": [
        "closed",
        "open"
      ]
    },
    {
      "name": "energy",
      "currentValue": null,
      "dataType": "NUMBER"
    },
    {
      "name": "humidity",
      "currentValue": 35,
      "dataType": "NUMBER"
    },
    {
      "name": "illuminance",
      "currentValue": 50,
      "dataType": "NUMBER"
    },
    {
      "name": "motion",
      "currentValue": "inactive",
      "dataType": "ENUM",
      "values": [
        "inactive",
        "active"
      ]
    },
    {
      "name": "power",
      "currentValue": null,
      "dataType": "NUMBER"
    },
    {
      "name": "presence",
      "currentValue": "present",
      "dataType": "ENUM",
      "values": [
        "present",
        "not present"
      ]
    },
    {
      "name": "smoke",
      "currentValue": "clear",
      "dataType": "ENUM",
      "values": [
        "clear",
        "tested",
        "detected"
      ]
    },
    {
      "name": "temperature",
      "currentValue": 70,
      "dataType": "NUMBER"
    },
    {
      "name": "variable",
      "currentValue": "2:00",
      "dataType": "STRING"
    },
    {
      "name": "water",
      "currentValue": "dry",
      "dataType": "ENUM",
      "values": [
        "wet",
        "dry"
      ]
    }
  ],
  "capabilities": [
    "IlluminanceMeasurement",
    {
      "attributes": [
        {
          "name": "illuminance",
          "dataType": null
        }
      ]
    },
    "TemperatureMeasurement",
    {
      "attributes": [
        {
          "name": "temperature",
          "dataType": null
        }
      ]
    },
    "RelativeHumidityMeasurement",
    {
      "attributes": [
        {
          "name": "humidity",
          "dataType": null
        }
      ]
    },
    "ContactSensor",
    {
      "attributes": [
        {
          "name": "contact",
          "dataType": null
        }
      ]
    },
    "MotionSensor",
    {
      "attributes": [
        {
          "name": "motion",
          "dataType": null
        }
      ]
    },
    "PresenceSensor",
    {
      "attributes": [
        {
          "name": "presence",
          "dataType": null
        }
      ]
    },
    "WaterSensor",
    {
      "attributes": [
        {
          "name": "water",
          "dataType": null
        }
      ]
    },
    "AccelerationSensor",
    {
      "attributes": [
        {
          "name": "acceleration",
          "dataType": null
        }
      ]
    },
    "EnergyMeter",
    {
      "attributes": [
        {
          "name": "energy",
          "dataType": null
        }
      ]
    },
    "PowerMeter",
    {
      "attributes": [
        {
          "name": "power",
          "dataType": null
        }
      ]
    },
    "SmokeDetector",
    {
      "attributes": [
        {
          "name": "smoke",
          "dataType": null
        }
      ]
    },
    "CarbonMonoxideDetector",
    {
      "attributes": [
        {
          "name": "carbonMonoxide",
          "dataType": null
        }
      ]
    },
    "CarbonDioxideMeasurement",
    {
      "attributes": [
        {
          "name": "carbonDioxide",
          "dataType": null
        }
      ]
    }
  ],
  "commands": [
    "COClear",
    "CODetected",
    "accelerationActive",
    "accelerationInactive",
    "arrived",
    "close",
    "departed",
    "dry",
    "motionActive",
    "motionInactive",
    "open",
    "setCarbonDioxide",
    "setEnergy",
    "setIlluminance",
    "setPower",
    "setRelativeHumidity",
    "setTemperature",
    "setVariable",
    "smokeClear",
    "smokeDetected",
    "wet"
  ]
}

Anyway, long-story short this device looks like it supports all of the sensor capabilities. But, I still can't figure where "variable" comes from (ie: which capability is it related to?). So, I'm not sure what device type I can use to support this.. I'll do some searching on the forums and maybe it'll be explained somewhere

1 Like

Thanks for the pointer. Here is the info though I don't know how to conveniently format it.

{"id":"993","name":"De-Icing Time Left","label":"De-Icing Time Left","attributes":[{"name":"acceleration","currentValue":null,"dataType":"ENUM","values":["inactive","active"]},{"name":"carbonDioxide","currentValue":null,"dataType":"NUMBER"},{"name":"carbonMonoxide","currentValue":null,"dataType":"ENUM","values":["detected","tested","clear"]},{"name":"contact","currentValue":null,"dataType":"ENUM","values":["closed","open"]},{"name":"energy","currentValue":null,"dataType":"NUMBER"},{"name":"humidity","currentValue":null,"dataType":"NUMBER"},{"name":"illuminance","currentValue":null,"dataType":"NUMBER"},{"name":"motion","currentValue":null,"dataType":"ENUM","values":["inactive","active"]},{"name":"power","currentValue":null,"dataType":"NUMBER"},{"name":"presence","currentValue":null,"dataType":"ENUM","values":["present","not present"]},{"name":"smoke","currentValue":null,"dataType":"ENUM","values":["clear","tested","detected"]},{"name":"temperature","currentValue":null,"dataType":"NUMBER"},{"name":"variable","currentValue":"stopped","dataType":"STRING"},{"name":"water","currentValue":null,"dataType":"ENUM","values":["wet","dry"]}],"capabilities":["IlluminanceMeasurement",{"attributes":[{"name":"illuminance","dataType":null}]},"TemperatureMeasurement",{"attributes":[{"name":"temperature","dataType":null}]},"RelativeHumidityMeasurement",{"attributes":[{"name":"humidity","dataType":null}]},"ContactSensor",{"attributes":[{"name":"contact","dataType":null}]},"MotionSensor",{"attributes":[{"name":"motion","dataType":null}]},"PresenceSensor",{"attributes":[{"name":"presence","dataType":null}]},"WaterSensor",{"attributes":[{"name":"water","dataType":null}]},"AccelerationSensor",{"attributes":[{"name":"acceleration","dataType":null}]},"EnergyMeter",{"attributes":[{"name":"energy","dataType":null}]},"PowerMeter",{"attributes":[{"name":"power","dataType":null}]},"SmokeDetector",{"attributes":[{"name":"smoke","dataType":null}]},"CarbonMonoxideDetector",{"attributes":[{"name":"carbonMonoxide","dataType":null}]},"CarbonDioxideMeasurement",{"attributes":[{"name":"carbonDioxide","dataType":null}]}],"commands":["COClear","CODetected","accelerationActive","accelerationInactive","arrived","close","departed","dry","motionActive","motionInactive","open","setCarbonDioxide","setEnergy","setIlluminance","setPower","setRelativeHumidity","setTemperature","setVariable","smokeClear","smokeDetected","wet"]}

I figured out how to handle this.. I'll just add a new device type "Variable String" which will be an option if the device has a "variable" attribute in it. Easy enough to add in

1 Like

Thanks so much! I'm sorry this turned out to be such an effort.

version 1.0.714 (beta)

  • add new button popup dialog for displaying multiple buttons on a device
  • allow editing button labels (ie: replace "1" with "Kitchen")
  • add new device type: "Variable String" which displays the variable attribute of a device (if set)
  • simplify Blink camera states & icons

I added a small icon on button device types which will display a popup showing all of the buttons available. The button labels now can be edited as well to give them more meaningful names.


I'm still not 100% satisfied with the button UI.. at some point it'd be nice to be able to set icons and/or colors to each button. But, this seems like a step in the right direction.

Also note that any of these buttons can be clicked, held or double-clicked. Each of these actions will call a different method on the HE (press/hold/doubleTap). I'm not sure how many people actually use all of these actions but it's there in case you do.

There's also a new "Variable String" device type which you can use if your device has a "variable" attribute.

3 Likes

Thank you! I'll try it out in a few hours, after I get the last yard work of the season done.

I've decided to use tap and hold to select the hours I mentioned here

I use the "tap" to select the face value and "hold" to select face value + 4 so I get 1-8 hours which is plenty for my use case.

FYI, I decided to not use "double-tap" because the timeout is too short and I wind up with 2 taps instead. This is NOT a complaint, just info.

Thanks, @jpage4500, the variable string addition gives me exactly what I want. :+1:

Again I have the issue with copying the config to my phone results in the folder names not matching the contents. It's not a big problem to rename them though.

Just popping in to say wow again. I am continually impressed with this app. You just don't see many good apps developed for android to integrate with your home automation.

Considering just about everyone carries around fairly powerful device I would think there is a hell of a market for this sort of stuff. Why not put your phone to great use and utilize some of that processing power?

Maybe its just me.

1 Like

Great App! Thanks! One question... Since the new update came out, I have a new hub update tile that showed up on my dashboards. I cannot figure out how to get rid of it? I have updated my hub, didn’t go away. I have deleted that tile manually and it comes back. What am I missing?

1 Like
  • The app will check for hub updates every 2 hours and if one is found will display that 'update' tile. If no update is found (ie: you updated the hub), the tile will disappear.
  • You can disable the checking completely with a setting (menu -> more options)
  • I also updated my hub yesterday (2.2.4.139) and then this morning noticed the hub update tile was back.. sure enough, there was another hub update (2.2.4.141) available. Guessing Hubitat had to push out some emergency fixes to the earlier update..

hmm.. I'll try this out. So, the folder name on 1 device doesn't display correctly on the 2nd device after importing the config file?

1 Like

Thank you!