diff --git a/source/_dashboards/tile.markdown b/source/_dashboards/tile.markdown
index a64f248800b..64f33f24642 100644
--- a/source/_dashboards/tile.markdown
+++ b/source/_dashboards/tile.markdown
@@ -138,9 +138,42 @@ modes:
type: list
{% endconfiguration %}
+### Climate HVAC modes
+
+Widget that displays buttons to control the HVAC mode for a [climate](/integrations/climate).
+
+
+
+ Screenshot of the tile card with the climate HVAC modes feature
+
+
+```yaml
+features:
+ - type: "climate-hvac-modes"
+ hvac_modes:
+ - auto
+ - heat_cool
+ - heat
+ - cool
+ - dry
+ - fan_only
+ - "off"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`climate-hvac-modes`"
+ type: string
+hvac_modes:
+ required: true
+ description: List of modes to show on the card. The list can contain `auto`, `heat_cool`, `heat`, `cool`, `dry`, `fan_only` and `off`.
+ type: list
+{% endconfiguration %}
+
### Cover open/close
-Widget that display buttons to open, close or stop a [cover](/integrations/cover).
+Widget that displays buttons to open, close, or stop a [cover](/integrations/cover).
@@ -159,9 +192,30 @@ type:
type: string
{% endconfiguration %}
+### Cover position
+
+Widget that displays a slider to control the position for a [cover](/integrations/cover).
+
+
+
+ Screenshot of the tile card with the cover position feature
+
+
+```yaml
+features:
+ - type: "cover-position"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`cover-position`"
+ type: string
+{% endconfiguration %}
+
### Cover tilt
-Widget that display buttons to open, close or stop a [cover](/integrations/cover).
+Widget that displays buttons to open, close, or stop a [cover](/integrations/cover).
@@ -180,9 +234,30 @@ type:
type: string
{% endconfiguration %}
+### Cover tilt position
+
+Widget that displays a slider to control the tilt position for a [cover](/integrations/cover).
+
+
+
+ Screenshot of the tile card with the cover tilt position feature
+
+
+```yaml
+features:
+ - type: "cover-tilt-position"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`cover-tilt-position`"
+ type: string
+{% endconfiguration %}
+
### Fan speed
-Widget that display speed controls for a [fan](/integrations/fan).
+Widget that displays speed controls for a [fan](/integrations/fan).
@@ -201,9 +276,37 @@ type:
type: string
{% endconfiguration %}
+### Lawn mower commands
+
+Widget that displays buttons to control a [lawn mower](/integrations/lawn_mower).
+
+
+
+ Screenshot of the tile card with the lawn mower commands feature
+
+
+```yaml
+features:
+ - type: "lawn-mower-commands"
+ commands:
+ - start_pause
+ - dock
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`lawn-mower-commands`"
+ type: string
+commands:
+ required: true
+ description: List of commands to show on the card. The list can contain `start_pause` and `dock`.
+ type: list
+{% endconfiguration %}
+
### Light brightness
-Widget that display a slider to select the brightness for a [light](/integrations/light).
+Widget that displays a slider to select the brightness for a [light](/integrations/light).
@@ -222,9 +325,51 @@ type:
type: string
{% endconfiguration %}
+### Light color temp
+
+Widget that displays a slider to select the color temperature for a [light](/integrations/light).
+
+
+
+ Screenshot of the tile card with the light color temperature feature
+
+
+```yaml
+features:
+ - type: "light-color-temp"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`light-color-temp`"
+ type: string
+{% endconfiguration %}
+
+### Target temperature
+
+Widget that displays buttons to select the target temperature for a [climate](/integrations/climate) or a [water heater](/integrations/water_heater).
+
+
+
+ Screenshot of the tile card with the target temperature feature
+
+
+```yaml
+features:
+ - type: "target-temperature"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`target-temperature`"
+ type: string
+{% endconfiguration %}
+
### Vacuum commands
-Widget that display buttons to control a [vacuum](/integrations/vacuum).
+Widget that displays buttons to control a [vacuum](/integrations/vacuum).
@@ -252,3 +397,36 @@ commands:
description: List of commands to show on the card. The list can contain `start_pause`, `stop`, `clean_spot`, `locate` and `return_home`.
type: list
{% endconfiguration %}
+
+### Water heater operation modes
+
+Widget that displays buttons to control the operation mode of a [water heater](/integrations/water_heater).
+
+
+
+ Screenshot of the tile card with the water heater operation modes feature
+
+
+```yaml
+features:
+ - type: "water-heater-operation-modes"
+ operation_modes:
+ - electric
+ - gas
+ - heat_pump
+ - eco
+ - performance
+ - high_demand
+ - "off"
+```
+
+{% configuration %}
+type:
+ required: true
+ description: "`water-heater-operation-modes`"
+ type: string
+operation_modes:
+ required: true
+ description: List of modes to show on the card. The list can contain `electric`, `gas`, `heat_pump`, `eco`, `performance`, `high_demand` and `off`.
+ type: list
+{% endconfiguration %}
diff --git a/source/_dashboards/weather-forecast.markdown b/source/_dashboards/weather-forecast.markdown
index 5e5c0c7db37..fe6a05a4709 100644
--- a/source/_dashboards/weather-forecast.markdown
+++ b/source/_dashboards/weather-forecast.markdown
@@ -23,6 +23,8 @@ Name:
description: The name of the location where the weather platform is located. If not set, the name will be the name set on the weather entity
Show Forecast:
description: Check this if you would like to show the upcoming forecast under the current weather.
+Forecast type:
+ description: Select the forecast to display between "Daily", "Hourly" and "Twice daily".
Secondary Info Attribute:
description: Here you can specify a secondary attribute to show under the current temperature. Ex. Extrema, Precipitation, Humidity. If not set, it will default to Extrema (High/Low) if available, if not available then Precipitation and if precipitation isn't available then Humidity.
Theme:
@@ -60,6 +62,11 @@ show_forecast:
description: Show next hours/days forecast.
type: boolean
default: true
+forecast_type:
+ required: true
+ description: Type of forecast to display, one of `daily`, `hourly` or `twice_daily`.
+ type: string
+ default: Automatically selects in order of `daily`, `hourly` and `twice_daily`.
secondary_info_attribute:
required: false
description: Which attribute to display under the temperature.
@@ -86,8 +93,11 @@ double_tap_action:
### Example
```yaml
+show_current: true
+show_forecast: true
type: weather-forecast
entity: weather.openweathermap
+forecast_type: daily
```
### Advanced
diff --git a/source/_integrations/coned.markdown b/source/_integrations/coned.markdown
new file mode 100644
index 00000000000..482ab3dc817
--- /dev/null
+++ b/source/_integrations/coned.markdown
@@ -0,0 +1,20 @@
+---
+title: Consolidated Edison (ConEd)
+description: Get energy usage from Consolidated Edison (ConEd) using the Opower integration
+ha_category:
+ - Energy
+ - Sensor
+ha_release: 2023.9
+ha_domain: coned
+ha_integration_type: virtual
+ha_supporting_domain: opower
+ha_supporting_integration: Opower
+ha_codeowners:
+ - '@tronikos'
+ha_config_flow: true
+ha_platforms:
+ - sensor
+ha_iot_class: Cloud Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 649184fbf5f..2addac68763 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -613,7 +613,8 @@ climates:
required: true
type: integer
write_registers:
- description: "Request type, use `write_registers` if true else `write_register`."
+ description: "Request type, use `write_registers` if true else `write_register`.
+ If more than one value is specified for a specific mode, only the first one is used for writing to the register."
required: false
type: boolean
default: false
@@ -625,15 +626,15 @@ climates:
state_off:
description: "Value corresponding to HVAC Off mode."
required: false
- type: integer
+ type: [integer, list]
state_heat:
description: "Value corresponding to HVAC Heat mode."
required: false
- type: integer
+ type: [integer, list]
state_cool:
description: "Value corresponding to HVAC Cool mode."
required: false
- type: integer
+ type: [integer, list]
state_auto:
description: "Value corresponding to HVAC Auto mode."
required: false
@@ -641,15 +642,15 @@ climates:
state_dry:
description: "Value corresponding to HVAC Dry mode."
required: false
- type: integer
+ type: [integer, list]
state_fan_only:
description: "Value corresponding to HVAC Fan only mode."
required: false
- type: integer
+ type: [integer, list]
state_heat_cool:
description: "Value corresponding to HVAC Heat/Cool mode."
required: false
- type: integer
+ type: [integer, list]
hvac_onoff_register:
description: "Address of On/Off state.
When zero is read from this register, the HVAC state is set to Off, otherwise the `hvac_mode_register`
diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown
index 76061b8852d..a92ddace82e 100644
--- a/source/_integrations/opower.markdown
+++ b/source/_integrations/opower.markdown
@@ -17,8 +17,10 @@ ha_integration_type: integration
The Opower integration allows you to get energy information from utilities that use [Opower](https://www.oracle.com/industries/utilities/opower-energy-efficiency/).
-More than 175 utilities use Opower. Currently only the following ones are supported:
+More than 175 utilities use Opower. Currently only the following utilities are supported by this integration:
+- Consolidated Edison (ConEd) and subsidiaries
+ - Orange & Rockland Utilities (ORU)
- Evergy
- Exelon subsidiaries
- Atlantic City Electric
@@ -30,9 +32,35 @@ More than 175 utilities use Opower. Currently only the following ones are suppor
- Pacific Gas & Electric (PG&E)
- Puget Sound Energy (PSE)
-To add this integration to your installation, you will need your login username and password for your utility website. Two-factor authentication is not supported.
+When you add the Opower integration to Home Assistant, you will need to provide your utility account's authentication details to enable retrieving your energy data.
+This is typically the same information needed to access your utility's website.
-When using Opower with any of the Exelon subsidiaries, you need to actively disable two-factor authentication. Log onto the website, select **Don't use 2FA** and **Don't ask me again**. If you have already enabled 2FA, disable it.
+## Utility Authentication Requirements
+
+For many utilities, only a username and password are required to access your accounts. Some utilities requires additional authentication information.
+It might be necessary to configure your utility account with an authentication method that is compatible with the Opower integration.
+Utility-specific authentication requirements are listed below:
+
+### Consolidated Edison (ConEd)
+
+Your ConEd account must be set up to use two-factor authentication using time-based one time passwords (TOTP). Other authentication methods, such as secret questions, are not supported.
+
+When adding the Opower ConEd integration you will need to provide the TOTP secret that is used to synchronize your authenticator app, such as Google Authenticator, to your ConEd account.
+
+NOTE: The TOTP secret is not one of the 6 digit time-based numeric codes.
+It is a string of around 16 characters containing the shared secret that enables your authenticator app to generate the correct time-based code at the appropriate time.
+The QR codes used for setting up TOTP accounts contain the secret.
+Using the TOTP secret, the Opower integration will be able to generate the correct time-based code when it needs to authenticate to the ConEd website.
+
+If you have an existing TOTP set up, there are methods for exporting the account from your authenticator app and then using a tool to obtain the TOTP secret from the encoded string.
+
+Alternatively, you can create a new TOTP secret for your account and use the "no camera to scan" option to capture the TOTP secret. You may also want to capture the QR code by taking a picture, or using a QR code scanner. There are tools available that can decode the TOTP data from a QR code.
+
+**NOTE: At this time, ConEd only has a single TOTP set up per account. Therefore, it is important that you configure the same TOTP secret for ConEd access in both Opower and your authenticator app.**
+
+### Exelon subsidiaries
+
+When using Opower with any of the Exelon subsidiaries, such as such as BGE, ComEd, PECO, Pepco, etc., you need to actively disable two-factor authentication. Log onto the website, select **Don't use 2FA** and **Don't ask me again**. If you have already enabled 2FA, disable it.
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/oru_opower.markdown b/source/_integrations/oru_opower.markdown
new file mode 100644
index 00000000000..437b84c312d
--- /dev/null
+++ b/source/_integrations/oru_opower.markdown
@@ -0,0 +1,20 @@
+---
+title: Orange and Rockland Utilities (ORU) Opower
+description: Get energy usage from Orange and Rockland Utilities using the Opower integration
+ha_category:
+ - Energy
+ - Sensor
+ha_release: 2023.9
+ha_domain: oru_opower
+ha_integration_type: virtual
+ha_supporting_domain: opower
+ha_supporting_integration: Opower
+ha_codeowners:
+ - '@tronikos'
+ha_config_flow: true
+ha_platforms:
+ - sensor
+ha_iot_class: Cloud Polling
+---
+
+{% include integrations/supported_brand.md %}
diff --git a/source/_integrations/system_bridge.markdown b/source/_integrations/system_bridge.markdown
index c7ebffdb16d..94130ececfd 100644
--- a/source/_integrations/system_bridge.markdown
+++ b/source/_integrations/system_bridge.markdown
@@ -137,3 +137,26 @@ data:
bridge: "deviceid"
text: "Hello"
```
+
+### Service `system_bridge.power_command`
+
+Sends power command to the system.
+
+{% my developer_call_service service="system_bridge.power_command" title="Show service in your Home Assistant instance." %}
+
+
+```yaml
+service: system_bridge.power_command
+data:
+ bridge: "device"
+ command: "sleep"
+```
+
+Supported commands are:
+
+- `hibernate`
+- `lock`
+- `logout`
+- `restart`
+- `shutdown`
+- `sleep`
diff --git a/source/images/dashboards/tile-features/climate_hvac_modes.png b/source/images/dashboards/tile-features/climate_hvac_modes.png
new file mode 100644
index 00000000000..ff39098d652
Binary files /dev/null and b/source/images/dashboards/tile-features/climate_hvac_modes.png differ
diff --git a/source/images/dashboards/tile-features/cover_open_close.png b/source/images/dashboards/tile-features/cover_open_close.png
index 16324037376..880776d7bdc 100644
Binary files a/source/images/dashboards/tile-features/cover_open_close.png and b/source/images/dashboards/tile-features/cover_open_close.png differ
diff --git a/source/images/dashboards/tile-features/cover_position.png b/source/images/dashboards/tile-features/cover_position.png
new file mode 100644
index 00000000000..2263cadc976
Binary files /dev/null and b/source/images/dashboards/tile-features/cover_position.png differ
diff --git a/source/images/dashboards/tile-features/cover_tilt.png b/source/images/dashboards/tile-features/cover_tilt.png
index 29284fb8a96..eadce9d05e1 100644
Binary files a/source/images/dashboards/tile-features/cover_tilt.png and b/source/images/dashboards/tile-features/cover_tilt.png differ
diff --git a/source/images/dashboards/tile-features/cover_tilt_position.png b/source/images/dashboards/tile-features/cover_tilt_position.png
new file mode 100644
index 00000000000..6f11ef97e4b
Binary files /dev/null and b/source/images/dashboards/tile-features/cover_tilt_position.png differ
diff --git a/source/images/dashboards/tile-features/lawn_mower_commands.png b/source/images/dashboards/tile-features/lawn_mower_commands.png
new file mode 100644
index 00000000000..48f937d7b2b
Binary files /dev/null and b/source/images/dashboards/tile-features/lawn_mower_commands.png differ
diff --git a/source/images/dashboards/tile-features/light_color_temp.png b/source/images/dashboards/tile-features/light_color_temp.png
new file mode 100644
index 00000000000..ac146ea4d65
Binary files /dev/null and b/source/images/dashboards/tile-features/light_color_temp.png differ
diff --git a/source/images/dashboards/tile-features/target_temperature.png b/source/images/dashboards/tile-features/target_temperature.png
new file mode 100644
index 00000000000..dc6b7138484
Binary files /dev/null and b/source/images/dashboards/tile-features/target_temperature.png differ
diff --git a/source/images/dashboards/tile-features/water_heater_operation_modes.png b/source/images/dashboards/tile-features/water_heater_operation_modes.png
new file mode 100644
index 00000000000..3e9a1a9fc74
Binary files /dev/null and b/source/images/dashboards/tile-features/water_heater_operation_modes.png differ
diff --git a/source/images/dashboards/tile_card.png b/source/images/dashboards/tile_card.png
index 5ae0f1e0db6..3657c2c1686 100644
Binary files a/source/images/dashboards/tile_card.png and b/source/images/dashboards/tile_card.png differ