Simple sonoff TRVZB thermostatic valve widget

a UI simple widget to use with the thermostatic valves. In my case with sonoff TRVZB.

Screenshots
widget

Resources

uid: thermostatic-valve-control
tags: []
props:
  parameters:
    - description: Thermostat to control
      label: Description
      name: Title
      required: false
      type: TEXT
    - context: item
      description: Temperature Room
      label: Ist Temperature Item
      name: tempItem
      required: true
      type: TEXT
    - context: item
      description: Valve System Mode
      label: System Mode Item
      name: systemModeItem
      required: true
      type: TEXT
    - context: item
      description: Temperature Setpoint
      label: Setpoint Item
      name: setpointItem
      required: true
      type: TEXT
    - context: item
      description: Battery Status Item
      label: Battery Status Item
      name: batteryStatusItem
      required: false
      type: TEXT
    - context: item
      description: Running Mode Item
      label: Running Mode Item
      name: runningModeItem
      required: false
      type: TEXT
timestamp: Jan 1, 2025, 4:51:46 PM
component: f7-card
config:
  noBorder: false
  noShadow: false
  outline: false
  padding: true
  style:
    --f7-card-border-radius: 15px
    --f7-card-box-shadow: 0px 5px 10px rgba(0,0,0,0.15)
    --f7-card-content-padding-horizontal: 16px
    --f7-card-content-padding-vertical: 0px
    --f7-card-header-font-size: 14px
    --f7-card-header-font-weight: 600
    --f7-card-margin-horizontal: 5px
    width: 100%
slots:
  content:
    - component: oh-label-card
      config:
        action: analyzer
        actionAnalyzerCoordSystem: time
        actionAnalyzerItems: =[props.tempItem,props.setpointItem]
        icon: f7:thermometer
        item: =(props.tempItem)
        noShadow: true
        title: =(props.Title)
        trendItem: =(props.tempItem)
        vertical: false
    - component: oh-stepper-card
      config:
        autorepeat: true
        color-theme: gray
        fill: false
        item: =(props.setpointItem)
        large: false
        max: 30
        min: 10
        noBorder: true
        noShadow: true
        raised: true
        round: true
        small: true
        step: 0.5
    - component: f7-row
      config:
        class:
          - padding-bottom
      slots:
        default:
          - component: f7-col
            config:
              width: 100
            slots:
              default:
                - component: f7-segmented
                  config:
                    class:
                      - segmented-round
                    colorTheme: gray
                    outline: true
                    raised: true
                    round: true
                    strong: false
                    style:
                      width: 100%
                  slots:
                    default:
                      - component: oh-button
                        config:
                          action: command
                          actionCommand: off
                          actionItem: =props.systemModeItem
                          active: =(items[props.systemModeItem].state == 'off')
                          round: true
                          small: false
                          text: off
                          textColor: white
                          title: Off
                          style:
                            font-size: 16pt
                      - component: oh-button
                        config:
                          action: command
                          actionCommand: auto
                          actionItem: =props.systemModeItem
                          active: =(items[props.systemModeItem].state == 'auto')
                          round: true
                          small: false
                          text: auto
                          textColor: white
                          title: Auto
                          style:
                            font-size: 16pt
                      - component: oh-button
                        config:
                          action: command
                          actionCommand: heat
                          actionItem: =props.systemModeItem
                          active: =(items[props.systemModeItem].state == 'heat')
                          round: true
                          small: false
                          text: heat
                          textColor: white
                          title: Heat
                          style:
                            font-size: 16pt
    - component: f7-row
      config:
        class:
          - padding-bottom
      slots:
        default:
          - component: f7-col
            config:
              width: 50
              style:
                display: flex
                justify-content: center
                align-items: center
            slots:
              default:
                - component: oh-label-card
                  config:
                    item: =(props.batteryStatusItem)
                    title: Battery
                    noShadow: true
                    value: =(items[props.batteryStatusItem].displayState) + '%'
                    style:
                      font-size: 16pt
                      color: green
                      text-align: center
          - component: f7-col
            config:
              width: 50
              style:
                display: flex
                justify-content: center
                align-items: center
            slots:
              default:
                - component: oh-label-card
                  config:
                    item: =(props.runningModeItem)
                    title: State
                    noShadow: true
                    value: =(items[props.runningModeItem].state)
                    style:
                      font-size: 16pt
                      color: red
                      text-align: center

Nice, Thank you. I did find that my TRVZB Valves didn’t support “Auto” (I might have a firmware version issue?) and I also found that the state for systemMode needed to be either “0” for Off or “4” for Heat, in quotes. I ended up removing the “Auto” button.

i suppose you use zigbee binding. i suggest you to use zigbee2mqtt, because expose all channel and you can control system mode (off -auto - heat) with mqtt topic. control your trvbz firmware, last version are 1.2.1 .