HarmonyHub Binding - "missing" buttonPress values

Hi All.

I have upgraded to OH3 and have been playing with the Widget as per the following:

This is a very cool widget and provides excellent functionality, so I decided to try and expand it to match my Harmony Elite remote. I have however come across some stumbling blocks related to the support of all the buttons.

As per the binding documentation the following button press values are supported:

Mute,VolumeDown,VolumeUp,DirectionDown,DirectionLeft,DirectionRight,DirectionUp,Select,Stop,Play,Rewind,Pause,FastForward,SkipBackward,SkipForward,Menu,Back,Home,SelectGame,PageDown,PageUp,Aspect,Display,Search,Cross,Circle,Square,Triangle,PS,Info,NumberEnter,Hyphen,Number0,Number1,Number2,Number3,Number4,Number5,Number6,Number7,Number8,Number9,PrevChannel,ChannelDown,ChannelUp,Record,FrameAdvance,C,B,D,A,Live,ThumbsDown,ThumbsUp,TiVo,WiiA,WiiB,Guide,Clear,Green,Red,Blue,Yellow,Dot,Return,Favorite,Exit,Sleep

And the latest list of supported values can be found by:

A complete list of names for device buttons values can be determined via the REST API for channel-types, http://YourServer:8080/rest/channel-types (opens new window). Search the JSON for “harmonyhub:device”.

I have tried to access the list using the API Explorer on OH3.0 but I am not able to find the list of supported values. I am able to see the channels etc on my Hub.

I have tried to use the “supported” colour buttons (Red, Green, Yellow and Blue), but get no response from the HarmonyHub.

The widget “button” is working as I get a response if I send a “working” command (such as Menu)to the Hub. If I send “Red” I get no response:

    - component: oh-link
      config:
        style:
          position: absolute
          top: 549px
          left: 47px
          color: white
        text: RED
        action: command
        actionCommand: Menu
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: red
        style:
          position: absolute
          left: 28px
          top: 550px
          width: 60px
          height: 20px
          border-radius: 12px

So my questions would be:

How do I debug this for “supported” values as the remote works etc
How do I interact with the Binding Developer to ask for what appears to be unsupported values to be added?. There appears to be 12 on my remote that I cannot get to work?

Many thanks as always
Mark

Reposting due to post being affected by server issue.

Hi

So I have done some further testing etc and debugging with the following:

log:set TRACE com.digitaldan.harmony

So If I send Info to the HarmonyHub I get the following:

19:03:47.938 [TRACE] [ub.internal.handler.HarmonyHubHandler] - Handling command 'Info' for harmonyhub:hub:MarkHub:buttonPress
19:03:47.953 [DEBUG] [com.digitaldan.harmony.HarmonyClient ] - Sending: {"hbus":{"cmd":"vnd.logitech.harmony/vnd.logitech.harmony.engine?holdAction","id":"dc3b38ab-9883-47c9-b808-ddc074627ef7","params":{"action":"{\"type\":\"IRCommand\",\"deviceId\":\"60277394\",\"command\":\"Info\"}","status":"press","timestamp":44875259}}}
19:03:47.953 [TRACE] [com.digitaldan.harmony.HarmonyClient ] - writeSuccess for message dc3b38ab-9883-47c9-b808-ddc074627ef7
19:03:48.156 [DEBUG] [com.digitaldan.harmony.HarmonyClient ] - Sending: {"hbus":{"cmd":"vnd.logitech.harmony/vnd.logitech.harmony.engine?holdAction","id":"5b7d2a4f-687c-497e-8d87-acc0cd54d24b","params":{"action":"{\"type\":\"IRCommand\",\"deviceId\":\"60277394\",\"command\":\"Info\"}","status":"release","timestamp":44875462}}}
19:03:48.156 [TRACE] [com.digitaldan.harmony.HarmonyClient ] - writeSuccess for message 5b7d2a4f-687c-497e-8d87-acc0cd54d24b

If I send Red I get:

19:04:19.559 [TRACE] [ub.internal.handler.HarmonyHubHandler] - Handling command 'red' for harmonyhub:hub:MarkHub:buttonPress
19:04:19.559 [DEBUG] [com.digitaldan.harmony.HarmonyClient ] - Sending: {"hbus":{"cmd":"vnd.logitech.harmony/vnd.logitech.harmony.engine?holdAction","id":"c209725f-d99e-417f-b1c4-c3f24145ea9b","params":{"action":"{\"type\":\"IRCommand\",\"deviceId\":\"60277394\",\"command\":\"Red\"}","status":"press","timestamp":44906865}}}
19:04:19.559 [TRACE] [com.digitaldan.harmony.HarmonyClient ] - writeSuccess for message c209725f-d99e-417f-b1c4-c3f24145ea9b
19:04:19.764 [DEBUG] [com.digitaldan.harmony.HarmonyClient ] - Sending: {"hbus":{"cmd":"vnd.logitech.harmony/vnd.logitech.harmony.engine?holdAction","id":"321225bd-bd9d-42c2-9a56-f5acfa85c7d9","params":{"action":"{\"type\":\"IRCommand\",\"deviceId\":\"60277394\",\"command\":\"Red\"}","status":"release","timestamp":44907070}}}
19:04:19.764 [TRACE] [com.digitaldan.harmony.HarmonyClient ] - writeSuccess for message 321225bd-bd9d-42c2-9a56-f5acfa85c7d9

Which look like both commands are working.

I also noted that when sending the colour commands to the Hub, the Green LED does flash to indicate a command received.

However the Red command works on the Remote, but not via the HarmonyHub Binding for some reason.

If I assign a different value (such as Info etc) to the Red button on the Widget, that value works. So issue seems to be specific to the colour Keys.

Wonder if this is similar to what @Craigers mentioned here regarding the DVR button -

@Craigers also confirmed that my edited Widget seems to work on his setup using the colour buttons, so I am now at a loss for what else to try.

My updated widget is as follows:

uid: harmony-test
tags: []
props:
  parameters:
    - context: item
      description: Select the Harmony you wish to use at an equipment item level
      label: Select Harmony Equipment
      name: harmony
      required: true
      type: TEXT
  parameterGroups: []
timestamp: Feb 7, 2021, 12:56:30 PM
component: f7-card
config:
  style:
    background-color: rgb(26, 26, 26)
    --f7-card-margin-horizontal: 0px
    border-radius: 70px
    width: 20rem
    height: 44rem
slots:
  default:
    - component: Label
      config:
        text: ="Harmony"
        style:
          position: absolute
          left: 125px
          top: 15px
          color: white
          font-size: 18px
          line-height: 32px
          white-space: nowrap
          overflow: hidden
          text-overflow: ellipsis
          text-shadow: -1px 1px 1px hsl(0,0%,66%)
    - component: oh-button
      config:
        text: Off
        raised: true
        large: true
        textColor: white
        bgColor: black
        action: command
        actionCommand: PowerOff
        actionItem: =props.harmony+"_CurrentActivity"
        style:
          position: absolute
          left: 30px
          top: 60px
          border-radius: 12px
    - component: oh-button
      config:
        text: "=(items[props.harmony+'_CurrentActivity'].state === 'PowerOff') ? 'Click to Start' : items[props.harmony+'_CurrentActivity'].state"
        raised: true
        large: true
        textColor: white
        bgColor: gray
        action: options
        actionItem: =props.harmony+"_CurrentActivity"
        style:
          position: absolute
          right: 40px
          top: 60px
          width: 185px
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 130px
          top: 110px
          width: 60px
          height: 85px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 115px
          left: 150px
          color: white
        iconF7: play
        iconSize: 25
        action: command
        actionCommand: PLAY
        actionItem: =props.harmony+"_PlayerControl"
    - component: oh-link
      config:
        style:
          position: absolute
          top: 165px
          left: 150px
          color: white
        iconF7: pause
        iconSize: 25
        action: command
        actionCommand: PAUSE
        actionItem: =props.harmony+"_PlayerControl"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 110px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 117px
          left: 40px
          color: white
        iconF7: backward_end_alt
        iconSize: 25
        action: command
        actionCommand: PREVIOUS
        actionItem: =props.harmony+"_PlayerControl"
    - component: oh-link
      config:
        style:
          position: absolute
          top: 117px
          left: 85px
          color: white
        iconF7: backward
        iconSize: 25
        action: command
        actionCommand: REWIND
        actionItem: =props.harmony+"_PlayerControl"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 155px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 117px
          right: 40px
          color: white
        iconF7: forward_end_alt
        iconSize: 25
        action: command
        actionCommand: NEXT
        actionItem: =props.harmony+"_PlayerControl"
    - component: oh-link
      config:
        style:
          position: absolute
          top: 117px
          right: 85px
          color: white
        iconF7: forward
        iconSize: 25
        action: command
        actionCommand: FASTFORWARD
        actionItem: =props.harmony+"_PlayerControl"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 155px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 162px
          left: 65px
          color: red
        iconF7: circle_fill
        iconSize: 25
        action: command
        actionCommand: Record
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 110px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 162px
          right: 65px
          color: white
        iconF7: stop_fill
        iconSize: 25
        action: command
        actionCommand: Stop
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 40px
          top: 210px
          width: 100px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 220px
          right: 68px
          color: white
        text: MENU
        action: command
        actionCommand: Menu
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 40px
          top: 210px
          width: 100px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 220px
          left: 78px
          color: white
        text: EXIT
        action: command
        actionCommand: Exit
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 260px
          width: 60px
          height: 50px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 272px
          left: 47px
          color: white
        iconF7: speaker_3
        iconSize: 25
        action: command
        actionCommand: VolumeUp
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 125px
          top: 255px
          width: 70px
          height: 60px
          border-radius: 50%
    - component: oh-link
      config:
        style:
          position: absolute
          top: 267px
          left: 143px
          color: white
          z-index: 2
        iconF7: arrowtriangle_up
        iconSize: 35
        action: command
        actionCommand: DirectionUp
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 260px
          width: 60px
          height: 50px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 273px
          right: 47px
          color: white
        iconF7: arrow_up_square
        iconSize: 25
        action: command
        actionCommand: ChannelUp
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 65px
          top: 315px
          width: 60px
          height: 70px
          border-radius: 50%
    - component: oh-link
      config:
        style:
          position: absolute
          top: 333px
          left: 71px
          color: white
          z-index: 2
        iconF7: arrowtriangle_left
        iconSize: 35
        action: command
        actionCommand: DirectionLeft
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 127px
          top: 318px
          width: 65px
          height: 65px
          border-radius: 50%
          border: gray solid 1px
          z-index: 2
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 80px
          top: 270px
          width: 160px
          height: 160px
          border-radius: 50%
          z-index: 1
    - component: oh-link
      config:
        text: OK
        style:
          font-size: 25px
          position: absolute
          top: 331px
          left: 142px
          color: white
          z-index: 3
        iconSize: 75
        action: command
        actionCommand: Select
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 65px
          top: 315px
          width: 60px
          height: 70px
          border-radius: 50%
    - component: oh-link
      config:
        style:
          position: absolute
          top: 333px
          right: 71px
          color: white
        iconF7: arrowtriangle_right
        iconSize: 35
        action: command
        actionCommand: DirectionRight
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 125px
          top: 380px
          width: 70px
          height: 60px
          border-radius: 50%
    - component: oh-link
      config:
        style:
          position: absolute
          top: 400px
          left: 142px
          color: white
        iconF7: arrowtriangle_down
        iconSize: 35
        action: command
        actionCommand: DirectionDown
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 390px
          width: 60px
          height: 50px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 404px
          left: 47px
          color: white
        iconF7: speaker_1
        iconSize: 25
        action: command
        actionCommand: VolumeDown
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 390px
          width: 60px
          height: 50px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 403px
          right: 47px
          color: white
        iconF7: arrow_down_square
        iconSize: 25
        action: command
        actionCommand: ChannelDown
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 40px
          top: 450px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 456px
          left: 72px
          color: white
        iconF7: speaker_slash_rtl
        iconSize: 25
        action: command
        actionCommand: Mute
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 40px
          top: 450px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 457px
          right: 70px
          color: white
        iconF7: arrow_uturn_left
        iconSize: 25
        action: command
        actionCommand: ChannelPrev
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 500px
          width: 80px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 510px
          left: 55px
          color: white
        text: DVR
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 500px
          width: 80px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 510px
          left: 140px
          color: white
        text: GUIDE
        action: command
        actionCommand: Guide
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 120px
          top: 500px
          width: 80px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 510px
          right: 58px
          color: white
        text: INFO
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 500px
          width: 80px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 549px
          left: 47px
          color: white
        text: RED
        action: command
        actionCommand: red
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: red
        style:
          position: absolute
          left: 28px
          top: 550px
          width: 60px
          height: 20px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 549px
          left: 105px
          color: white
        text: GREEN
        action: command
        actionCommand: green
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: green
        style:
          position: absolute
          left: 97px
          top: 550px
          width: 60px
          height: 20px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 549px
          left: 167px
          color: white
        text: YELLOW
        action: command
        actionCommand: yellow
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: yellow
        style:
          position: absolute
          left: 164px
          top: 550px
          width: 60px
          height: 20px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 549px
          left: 243px
          color: white
        text: BLUE
        action: command
        actionCommand: blue
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: blue
        style:
          position: absolute
          left: 230px
          top: 550px
          width: 60px
          height: 20px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 587px
          left: 62px
          color: white
        iconF7: lightbulb
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 580px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 588px
          left: 150px
          color: white
        iconF7: plus
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: oh-link
      config:
        style:
          position: absolute
          top: 635px
          left: 150px
          color: white
        iconF7: minus
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 130px
          top: 580px
          width: 60px
          height: 90px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 587px
          right: 55px
          color: white
        iconF7: lightbulb_fill
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 580px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 637px
          left: 62px
          color: white
        iconF7: lightbulb
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          left: 30px
          top: 630px
          width: 90px
          height: 40px
          border-radius: 12px
    - component: oh-link
      config:
        style:
          position: absolute
          top: 637px
          right: 55px
          color: white
        iconF7: lightbulb_fill
        iconSize: 25
        action: command
        actionCommand: Info
        actionItem: =props.harmony+"_ButtonPress"
    - component: f7-badge
      config:
        bgColor: black
        style:
          position: absolute
          right: 30px
          top: 630px
          width: 90px
          height: 40px
          border-radius: 12px

I have also looked at the JSON string generated at Binding Start, which seems to indicate the Coloured Buttons are configured?

So I am now at a loss for where to from here?

Thanks as always
Mark

The binding does not have any hard coded values in it, it dynamically generates the channels based on the the list of commands the HUB reports it supports which is specific to each user’s setup. This is what is in the channel-types JSON looks like for one of my Tivo’s (yes i still rock a Tivo) which supports the colored buttons:

{
        "parameters": [],
        "parameterGroups": [],
        "description": "Send a button press to device TiVo Roamio Pro",
        "label": "Send Button Press",
        "itemType": "String",
        "kind": "STATE",
        "stateDescription": {
            "readOnly": false,
            "options": [
                {
                    "value": "PowerToggle",
                    "label": "Power Toggle"
                },
                {
                    "value": "NumberEnter",
                    "label": "Number Enter"
                },
                {
                    "value": "Dot",
                    "label": "."
                },
                {
                    "value": "Hyphen",
                    "label": "-"
                },
                {
                    "value": "Number0",
                    "label": "0"
                },
                {
                    "value": "Number1",
                    "label": "1"
                },
                {
                    "value": "Number2",
                    "label": "2"
                },
                {
                    "value": "Number3",
                    "label": "3"
                },
                {
                    "value": "Number4",
                    "label": "4"
                },
                {
                    "value": "Number5",
                    "label": "5"
                },
                {
                    "value": "Number6",
                    "label": "6"
                },
                {
                    "value": "Number7",
                    "label": "7"
                },
                {
                    "value": "Number8",
                    "label": "8"
                },
                {
                    "value": "Number9",
                    "label": "9"
                },
                {
                    "value": "Clear",
                    "label": "Clear"
                },
                {
                    "value": "Mute",
                    "label": "Mute"
                },
                {
                    "value": "VolumeDown",
                    "label": "Volume Down"
                },
                {
                    "value": "VolumeUp",
                    "label": "Volume Up"
                },
                {
                    "value": "PrevChannel",
                    "label": "Prev Channel"
                },
                {
                    "value": "ChannelDown",
                    "label": "Channel Down"
                },
                {
                    "value": "ChannelUp",
                    "label": "Channel Up"
                },
                {
                    "value": "DirectionDown",
                    "label": "Direction Down"
                },
                {
                    "value": "DirectionLeft",
                    "label": "Direction Left"
                },
                {
                    "value": "DirectionRight",
                    "label": "Direction Right"
                },
                {
                    "value": "DirectionUp",
                    "label": "Direction Up"
                },
                {
                    "value": "Select",
                    "label": "Select"
                },
                {
                    "value": "Play",
                    "label": "Play"
                },
                {
                    "value": "Rewind",
                    "label": "Rewind"
                },
                {
                    "value": "Pause",
                    "label": "Pause"
                },
                {
                    "value": "FastForward",
                    "label": "Fast Forward"
                },
                {
                    "value": "Record",
                    "label": "Record"
                },
                {
                    "value": "FrameAdvance",
                    "label": "Frame Advance"
                },
                {
                    "value": "SkipBackward",
                    "label": "Skip Backward"
                },
                {
                    "value": "SkipForward",
                    "label": "Skip Forward"
                },
                {
                    "value": "Back",
                    "label": "Back"
                },
                {
                    "value": "C",
                    "label": "C"
                },
                {
                    "value": "B",
                    "label": "B"
                },
                {
                    "value": "D",
                    "label": "D"
                },
                {
                    "value": "A",
                    "label": "A"
                },
                {
                    "value": "List",
                    "label": "List"
                },
                {
                    "value": "Live",
                    "label": "Live"
                },
                {
                    "value": "ThumbsDown",
                    "label": "Thumbs Down"
                },
                {
                    "value": "ThumbsUp",
                    "label": "Thumbs Up"
                },
                {
                    "value": "TiVo",
                    "label": "TiVo"
                },
                {
                    "value": "Green",
                    "label": "Green"
                },
                {
                    "value": "Red",
                    "label": "Red"
                },
                {
                    "value": "Blue",
                    "label": "Blue"
                },
                {
                    "value": "Yellow",
                    "label": "Yellow"
                },
                {
                    "value": "Guide",
                    "label": "Guide"
                },
                {
                    "value": "Info",
                    "label": "Info"
                },
                {
                    "value": "PageDown",
                    "label": "Page Down"
                },
                {
                    "value": "PageUp",
                    "label": "Page Up"
                },
                {
                    "value": "Zoom",
                    "label": "Zoom"
                },
                {
                    "value": "Netflix",
                    "label": "Netflix"
                },
                {
                    "value": "Input",
                    "label": "Input"
                },
                {
                    "value": "Ondemand",
                    "label": "Ondemand"
                }
            ]
        },
        "tags": [],
        "UID": "harmonyhub:device:GreatRoom:52436552:buttonPress",
        "advanced": false
    }

What are you sending the command to ? Are you sending it to a specific device (like the Tivo above), or are you sending it to the Bridge/Hub? The difference is that sending the command to the Hub bridge means it will use the button mapping for the current activity (like “Watch TV”, “Play Game”, “Watch Movie”, etc…) , where sending the button press to the device will always map that button to whatever the device supports. It is always helpful to post the item and thing configuration you have.

Hi @digitaldan

Thanks for the reply.

I am sending the command to the Hub. So sending Red, which on my remote brings up the Playlist of my currently active device if I use the remote. However when sending the command via OpenHab / Harmony Hub Binding I see the light on the hub flash - indicating something has been received, however nothing actually happens on the device. Also, if I send the buttonPress of any other button it seems to work as expected. So Info brings up Info, Mute brings Mutes etc.

Harmony Hub Thing:

UID: harmonyhub:hub:MarkHub
label: HarmonyHub Mark Hub
thingTypeUID: harmonyhub:hub
configuration:
  host: 10.163.199.245
  heartBeatInterval: 30

From Rest API:

{
  "statusInfo": {
    "status": "ONLINE",
    "statusDetail": "NONE"
  },
  "editable": true,
  "label": "HarmonyHub Mark Hub",
  "configuration": {
    "host": "10.163.199.245",
    "heartBeatInterval": 30
  },
  "properties": {
    "name": "Mark Hub"
  },
  "UID": "harmonyhub:hub:MarkHub",
  "thingTypeUID": "harmonyhub:hub",
  "channels": [
    {
      "linkedItems": [],
      "uid": "harmonyhub:hub:MarkHub:activityStarting",
      "id": "activityStarting",
      "channelTypeUID": "harmonyhub:eventTrigger",
      "kind": "TRIGGER",
      "label": "Activity Starting Trigger",
      "description": "Triggered when an activity is starting",
      "defaultTags": [],
      "properties": {},
      "configuration": {}
    },
    {
      "linkedItems": [],
      "uid": "harmonyhub:hub:MarkHub:activityStarted",
      "id": "activityStarted",
      "channelTypeUID": "harmonyhub:eventTrigger",
      "kind": "TRIGGER",
      "label": "Activity Started Trigger",
      "description": "Triggered when an activity is started",
      "defaultTags": [],
      "properties": {},
      "configuration": {}
    },
    {
      "linkedItems": [
        "HarmonyHubMarkHub_ButtonPress"
      ],
      "uid": "harmonyhub:hub:MarkHub:buttonPress",
      "id": "buttonPress",
      "channelTypeUID": "harmonyhub:buttonPress",
      "itemType": "String",
      "kind": "STATE",
      "label": "Button Press",
      "description": "The label/name of the button to press on a Harmony Hub which will be sent to the device associated with the current activity and label",
      "defaultTags": [],
      "properties": {},
      "configuration": {}
    },
    {
      "linkedItems": [
        "HarmonyHubMarkHub_PlayerControl"
      ],
      "uid": "harmonyhub:hub:MarkHub:player",
      "id": "player",
      "channelTypeUID": "harmonyhub:player",
      "itemType": "Player",
      "kind": "STATE",
      "label": "Player Control",
      "description": "Send player commands (Rewind,FastForward,Play,Pause,SkipForward,SkipBackwards) to the device associated with the current running activity.",
      "defaultTags": [],
      "properties": {},
      "configuration": {}
    },
    {
      "linkedItems": [
        "HarmonyHubMarkHub_CurrentActivity"
      ],
      "uid": "harmonyhub:hub:MarkHub:currentActivity",
      "id": "currentActivity",
      "channelTypeUID": "harmonyhub:hub:MarkHub:currentActivity",
      "itemType": "String",
      "kind": "STATE",
      "defaultTags": [],
      "properties": {},
      "configuration": {}
    }
  ]

Not sure how to get you the item configuration as it is all internal.


EDIT: From RestAPI:

{
  "link": "http://localhost:8080/rest/items/HarmonyHubMarkHub_ButtonPress",
  "state": "NULL",
  "stateDescription": {
    "pattern": "%s",
    "readOnly": false,
    "options": []
  },
  "editable": true,
  "type": "String",
  "name": "HarmonyHubMarkHub_ButtonPress",
  "label": "Button Press",
  "category": "",
  "tags": [
    "Point"
  ],
  "groupNames": [
    "HarmonyHubMarkHub"
  ]
}

I have downloaded the full JSON string when the binding restarts and can see the colour buttons in the JSON. I do however not see any commands that look like they would be for the Home Control buttons on the Harmony Elite remote.

Also appears that the binding is sending something to the hub as per the Trace logs I posted.

How do you retrieve this?

As I mentioned I have logged this with Logitech/Harmony and they asked for a set of logs as it appears that something is getting sent to the Hub - they are just taking quite some time to respond.

Appreciate you help
Mark

Sorry, maybe i misunderstood, are we talking about the colors or home control buttons? The Home control buttons are not part of the API we use, or at least were not when i wrote this binding (i have not checked in a while).

If you can enable TRACE logging for the underlying websocket client, we can get a raw output of the devices and commands that are supported , you can do this in the OH console with

log:set TRACE com.digitaldan.harmony

Then pause and un-pause the thing from the UI and take a look at the logs. You will see a VERY long json message there, feel free to PM me the content.

Thanks @digitaldan

I have PM’d you the JSON file as requested.

My query/issue is twofold.

Firstly I am unable to get the Color buttons to work via the binding. Initially I thought the commands were not supported by the binding, based on the documentation, With subsequent investigation however I have discovered that they are supported and it appears that something is being sent to the Hub. However no action occurs on the Hub - even though the same command sent via the actualy remote works 100%

Secondly I am trying to access the Home Control functions via OpenHab. These as you said may not be supported by the API?

Cheers
Mark

Yes, this is what i said in my previous post

What activity is active when you are sending the color commands, what device should be receiving them ?

Hi Dan

Thanks.

The active activity is “Explorer Ultra” and the device that is configured to receive the Red command on the hub is the DSTV Explora Ultra.

Not sure if this helps clarify? I amended one of my rules as follows:

rule "Turn OFF Activities "
when
  Item Harmony_Power_Off received command OFF
then
  //HarmonyHubMarkHub_CurrentActivity.sendCommand("PowerOff")
  //HarmonyHubMarkHub_ButtonPress.sendCommand("Red")
    DSTVUltraMode1_SendButtonPress.sendCommand("Red")
end

For either the Hub or the Device if I send “Info” I get the required result. For either if I send “Red” I get no result other than a flash of the LED on the Hub.

Cheers
Mark

Hmm, that is odd, it does seem like it should be working from the example you posted, i have not heard of the color buttons not working, but to be fair, i don’t use them on mine normally, but i will give it a test later today. Also i did find some postings of others who figured out how to activate the home control actions on the hub through the API, so i might look into that soon, although the more frequent request from people it to be able to react to those buttons presses from the physical remote, which i don’t think is possible.

Hi

So after a very bumpy ride with Harmony Support I have managed to resolve my issue!

Turns out that the colour buttons did not have any commands assigned to them at the device level. So they should not be confused witht he colour buttons on the Elite Remote - they appear to have nothing to do with each other.

A good test is to add the button that is not working to the Harmony APP and see if the command works from there.

So my resolution was to “learn” the colour commands from a working remote and then everything worked.

Regarding the Home Automation support - I spotted the following:

This seems to give some direction regarding the Home Automations buttons.

Hope that @digitaldan gets a chance to look at supporting those. Would be happy to test etc if required.

Thanks all.

Not sure i understand this statement, i thought you said you were able to push the color buttons on the elite remote and that worked as expected on your equipment.

As i said above, i already found how to activate home control functions through the api, this is all the doc you posted mentions, so nothing new there.

What exactly? Mimicking the home control buttons? Again, this will only let you control IOT devices (like lights) that should probably already be connected to your openHAB, we can’t respond to those buttons (you need the hue emulator binding for that), so its not a super high priority in my mind, i’ll get around to it sometime, but not soon. What smart home equipment do you have connected to your hub that is not connected to your openHAB instance?

Will try explain a bit better…

With a Harmony Remote one can map any command to any button on the physical Harmony Remote. When sending a command via the binding to the Harmony Hub, you are not actually sending the “ButtonPress” which is what I thought. You are actually sending the underlying command, which is some (possibly most) cases would be the same.

So in my case:
Remote has Red button with “PlayList” assigned
However the Red command does not have anything assigned (that works on my system).

So when I press Red on the Remote I get the PlayList
If I send Red via the Binding nothing happens other than the Hub blinking to show command processed. This also happens if one adds the Red button for a device in the App.

I then “learned” the PlayList command to the Red button definition for the device.

Now when sending Red via the Binding the PlayList is activated.

Probably a misunderstanding on my part because of what I was doing (Modifying a Harmony Widget) to fully emulate the Harmony Elite Remote. Though it now appears this is not quite as simple as that as each button would need to be mapped as per each users requirements… Not everyone is going to have the same buttons - especially when it comes to the colour buttons which may not even exist on some remotes etc.

As a test I have created a new button mapping for a “button” called Mark and will try send Mark via the binding and see what happens - not working at this stage but assume that the command has to sync back to the binding etc before it would even become available.

My aim was to modify a Harmony Widget to fully emulate the Harmony Elite Remote. So getting the Home Auto buttons to work via the Binding would have been first prize. However I guess that the same could be achieved using the Hue Binding etc. - though then any changes in the Harmony Setup would not replicate to the Widget and would have to be manually applied.

I appreciate that this would not be a high priority for anyone especially with all the other great things out there for OH3. But would be really happy to see the possibilities if and when you do get around to it.

Always appreciate the feedback.