diff --git a/Gemfile.lock b/Gemfile.lock
index 4eaf7d640cd..974514244f6 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -70,7 +70,7 @@ GEM
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
- mini_portile2 (2.5.0)
+ mini_portile2 (2.5.1)
multi_json (1.15.0)
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
diff --git a/Rakefile b/Rakefile
index d442846e0e9..d5d3a4fa4d4 100644
--- a/Rakefile
+++ b/Rakefile
@@ -185,10 +185,9 @@ task :analytics_data do
uri = URI('https://analytics.home-assistant.io/data.json')
remote_data = JSON.parse(Net::HTTP.get(uri))
- last_entry=remote_data.keys().sort().reverse()[0]
File.open("#{source_dir}/_data/analytics_data.json", "w") do |file|
- file.write(JSON.generate(remote_data[last_entry]))
+ file.write(JSON.generate(remote_data['current']))
end
end
diff --git a/plugins/my.rb b/plugins/my.rb
index b785fb737f1..89941e4e762 100644
--- a/plugins/my.rb
+++ b/plugins/my.rb
@@ -33,6 +33,7 @@ module Jekyll
query += [["addon", options[:addon]]] if options.include? :addon
query += [["blueprint_url", options[:blueprint_url]]] if options.include? :blueprint_url
query += [["domain", options[:domain]]] if options.include? :domain
+ query += [["repository_url", options[:repository_url]]] if options.include? :repository_url
query += [["service", options[:service]]] if options.include? :service
unless query.empty?
uri.query = URI.encode_www_form(query)
diff --git a/source/_includes/installation/core.md b/source/_includes/installation/core.md
index 281dda606b0..bbe1690f1ca 100644
--- a/source/_includes/installation/core.md
+++ b/source/_includes/installation/core.md
@@ -1,5 +1,13 @@
## Install Home Assistant Core
+{% if page.installation_type == 'windows' %}
+### Install WSL
+
+To install Home Assistant Core on Windows, you will need to use the Windows Subsystem for Linux (WSL). Follow the [WSL installation instructions](https://docs.microsoft.com/windows/wsl/install-win10) and install Ubuntu from the Windows Store.
+
+As an alternative, Home Assistant OS can be installed in a Linux guest VM. Running Home Assistant Core directly on Windows is not supported.
+{% endif %}
+
Prerequisites
diff --git a/source/_includes/integrations/config_flow.md b/source/_includes/integrations/config_flow.md
index d6852ceda79..6ff2598cfbf 100644
--- a/source/_includes/integrations/config_flow.md
+++ b/source/_includes/integrations/config_flow.md
@@ -18,7 +18,7 @@ away.
If there wasn't any discovered automatically, don't worry! You can set up a
manual integration entry:
{% else %}
-If the above My button doesn't work, you can also preform the following steps
+If the above My button doesn't work, you can also perform the following steps
manually:
{% endif %}
diff --git a/source/_integrations/analytics.markdown b/source/_integrations/analytics.markdown
index fc5d87a92de..9d6b11bd68b 100644
--- a/source/_integrations/analytics.markdown
+++ b/source/_integrations/analytics.markdown
@@ -70,7 +70,8 @@ _Requires basic analytics to be enabled._
This includes:
-- The names of all your integrations
+- The names of all your core integrations
+- The names and versions of all your custom integrations if you have any
If your system includes the Supervisor, this will also contain:
diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown
index 3cf4c6f3915..c97aa7ef5f8 100644
--- a/source/_integrations/cast.markdown
+++ b/source/_integrations/cast.markdown
@@ -27,7 +27,7 @@ Allowed UUIDs:
description: A comma-separated list of UUIDs of Cast devices to add to Home Assistant. **Use only if you don't want to add all available devices.** The device won't be added until discovered through either mDNS or if it's included in the list of known hosts. In order to find the UUID for your device use a mDNS browser or advanced users can use the following Python command (adjust friendly names as required) - `python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=['Living Room TV', 'Bedroom TV', 'Office Chromecast']))`. This option is only visible if advanced mode is enabled in your user profile.
Ignore CEC:
description: A comma-separated list of Chromecasts that should ignore CEC data for determining the
- active input. [See the upstream documentation for more information.](https://github.com/balloob/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile.
+ active input. [See the upstream documentation for more information](https://github.com/home-assistant-libs/pychromecast#ignoring-cec-data). This option is only visible if advanced mode is enabled in your user profile.
{% endconfiguration_basic %}
## Home Assistant Cast
@@ -50,78 +50,11 @@ Home Assistant Cast requires your Home Assistant installation to be accessible v
-## Casting other apps
+## Playing media
-### YouTube
+### Using the built in media player app (Default Media Receiver)
-- `app_name`: `youtube`
-- `media_id`: YouTube video ID
-
-Optional:
-- `enqueue`: Enqueue only
-- `playlist_id`: Play video with `media_id` from this playlist
-
-```yaml
-'cast_youtube_to_my_chromecast':
- alias: "Cast YouTube to My Chromecast"
- sequence:
- - target:
- entity_id: media_player.my_chromecast
- data:
- media_content_type: cast
- media_content_id: '
- {
- "app_name": "youtube",
- "media_id": "dQw4w9WgXcQ"
- }'
- service: media_player.play_media
-```
-
-### [Supla](https://www.supla.fi/)
-
-Example values to cast the item at https://www.supla.fi/audio/3601824
-
-- `app_name`: `supla`
-- `media_id`: Supla item ID
-
-Optional:
-- `is_live`: Item is a livestream
-
-```yaml
-'cast_supla_to_my_chromecast':
- alias: "Cast supla to My Chromecast"
- sequence:
- - target:
- entity_id: media_player.my_chromecast
- data:
- media_content_type: cast
- media_content_id: '
- {
- "app_name": "supla",
- "media_id": "3601824"
- }'
- service: media_player.play_media
-```
-
-### Plex
-
-To cast media directly from a configured Plex server, set the fields [as documented in the Plex integration](/integrations/plex/#service-play_media) and prepend the `media_content_id` with `plex://`:
-
-```yaml
-'cast_plex_to_chromecast':
- alias: "Cast Plex to Chromecast"
- sequence:
- - service: media_player.play_media
- target:
- entity_id: media_player.chromecast
- data:
- media_content_type: movie
- media_content_id: 'plex://{"library_name": "Movies", "title": "Groundhog Day"}'
-```
-
-### Play (almost) any kind of media
-
-Chromecasts can play many kinds of modern [media (image/audio/video) formats](https://developers.google.com/cast/docs/media). As a rule of thumb, if a Chrome browser can play a media file a Chromecast will be able to handle that too.
+Chromecasts can play many kinds of modern [media (image/audio/video) formats](https://developers.google.com/cast/docs/media) using the built in app Default Media Receiver. As a rule of thumb, if a Chrome browser can play a media file a Chromecast will be able to handle that too.
The media needs to be accessible via HTTP(S). Chromecast devices do not support other protocols like DLNA or playback from an SMB file share.
@@ -184,6 +117,122 @@ data:
- url: "https://tilos.hu/images/kockalogo.png"
```
+### Casting with other apps
+
+It's possible to play with other apps than the default media receiver.
+To do so, `media_content_type` should be set to `cast`, and `media_content_id` should be a JSON dict with parameters for the app, including the app name.
+
+### BubbleUPNP
+
+The BubbleUPNP app has similar functionality to the built in Default Media Receiver app, and can be used as a backup if the default app fails to play the media.
+
+#### Media parameters
+
+Mandatory:
+
+- `app_name`: `bubbleupnp`
+- `media_id`: The URL to play
+
+Optional:
+
+- `media_type`: Media type, e.g. `video/mp4`, `audio/mp3`, `image/jpeg`, defaults to `video/mp4`.
+
+#### Example:
+
+```yaml
+'cast_bubbleupnp_to_my_chromecast':
+ alias: "Cast a video to My Chromecast using BubbleUPNP"
+ sequence:
+ - target:
+ entity_id: media_player.my_chromecast
+ data:
+ media_content_type: cast
+ media_content_id: '
+ {
+ "app_name": "bubbleupnp",
+ "media_id": "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
+ "media_type": "video/mp4"
+ }'
+ service: media_player.play_media
+```
+
+### YouTube
+
+#### Media parameters
+
+Mandatory:
+
+- `app_name`: `youtube`
+- `media_id`: YouTube video ID
+
+Optional:
+
+- `enqueue`: Enqueue only
+- `playlist_id`: Play video with `media_id` from this playlist
+
+#### Example:
+
+```yaml
+'cast_youtube_to_my_chromecast':
+ alias: "Cast YouTube to My Chromecast"
+ sequence:
+ - target:
+ entity_id: media_player.my_chromecast
+ data:
+ media_content_type: cast
+ media_content_id: '
+ {
+ "app_name": "youtube",
+ "media_id": "dQw4w9WgXcQ"
+ }'
+ service: media_player.play_media
+```
+
+### [Supla](https://www.supla.fi/)
+
+Example values to cast the item at
+
+- `app_name`: `supla`
+- `media_id`: Supla item ID
+
+
+Optional:
+- `is_live`: Item is a livestream
+
+#### Example:
+
+```yaml
+'cast_supla_to_my_chromecast':
+ alias: "Cast supla to My Chromecast"
+ sequence:
+ - target:
+ entity_id: media_player.my_chromecast
+ data:
+ media_content_type: cast
+ media_content_id: '
+ {
+ "app_name": "supla",
+ "media_id": "3601824"
+ }'
+ service: media_player.play_media
+```
+
+### Plex
+
+To cast media directly from a configured Plex server, set the fields [as documented in the Plex integration](/integrations/plex/#service-play_media) and prepend the `media_content_id` with `plex://`:
+
+```yaml
+'cast_plex_to_chromecast':
+ alias: "Cast Plex to Chromecast"
+ sequence:
+ - service: media_player.play_media
+ target:
+ entity_id: media_player.chromecast
+ data:
+ media_content_type: movie
+ media_content_id: 'plex://{"library_name": "Movies", "title": "Groundhog Day"}'
+```
+
## Troubleshooting automatic discovery
mDNS relies on UDP multicast, which may fail for various reasons. If none of the tips in this section helps, the recommended solution is to ensure all cast devices have static IPs assigned to them and configure a list of known hosts.
diff --git a/source/_integrations/goalzero.markdown b/source/_integrations/goalzero.markdown
index db3fcbbacbb..928abe9e8d1 100644
--- a/source/_integrations/goalzero.markdown
+++ b/source/_integrations/goalzero.markdown
@@ -14,7 +14,7 @@ ha_codeowners:
- '@tkdrob'
---
-This `goalzero` integration pulls data from a Wifi enabled Goal Zero Yeti.
+This Goal Zero Yeti integration pulls data from a Wifi-enabled [Goal Zero Yeti](https://www.goalzero.com).
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown
index 51cd64c08c7..1ccdbacd717 100644
--- a/source/_integrations/google_assistant.markdown
+++ b/source/_integrations/google_assistant.markdown
@@ -92,14 +92,15 @@ If you want to support active reporting of state to Google's server (configurati
1. Service Account
1. In the Google Cloud Platform Console, go to the [Create Service account key](https://console.cloud.google.com/apis/credentials/serviceaccountkey) page.
2. At the top left of the page next to "Google Cloud Platform" logo, select your project created in the Actions on Google console. Confirm this by reviewing the project ID and it ensure it matches.
- 3. From the Service account list, select New service account.
+ 3. From the Service account list, select `CREATE SERVICE ACCOUNT`.
4. In the Service account name field, enter a name.
5. In the Service account ID field, enter an ID.
6. From the Role list, select `Service Accounts` > `Service Account Token Creator`.
- 7. For the Key type, select the JSON option.
- 8. Click `Create`. A JSON file that contains your key downloads to your computer.
- 9. Use the information in this file or the file directly to add to the `service_account` key in the configuration.
- 10. Click `close`.
+ 7. Click `CONTINUE` and then `DONE`. You are returned to the service account list, and your new account is shown.
+ 8. Click the the three dots menu under `Actions` next to your new account, and click `Manage keys`. You are taken to a `Keys` page.
+ 9. Click `ADD KEY` then `Create new key`. Leave the `key type` as `JSON` and click `CREATE`. A JSON file that contains your key downloads to your computer.
+ 10. Use the information in this file or the file directly to add to the `service_account` key in the configuration.
+ 11. Click `Close`.
2. HomeGraph API
1. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview).
2. At the top left of the page next to "Google Cloud Platform" logo, select your project created in the Actions on Google console. Confirm this by reviewing the project ID and it ensure it matches.
diff --git a/source/_integrations/humidifier.markdown b/source/_integrations/humidifier.markdown
index 8d42a107178..be93c81c2e1 100644
--- a/source/_integrations/humidifier.markdown
+++ b/source/_integrations/humidifier.markdown
@@ -39,14 +39,14 @@ Set mode for the humidifier device. This service is only available if the device
```yaml
automation:
trigger:
- platform: time
- at: "07:15:00"
+ - platform: time
+ at: "07:15:00"
action:
- service: humidifier.set_mode
target:
entity_id: humidifier.bedroom
data:
- preset_mode: "eco"
+ mode: "eco"
```
### Service `humidifier.set_humidity`
@@ -63,8 +63,8 @@ Set target humidity of the humidifier device
```yaml
automation:
trigger:
- platform: time
- at: "07:15:00"
+ - platform: time
+ at: "07:15:00"
action:
- service: humidifier.set_humidity
target:
diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown
index dcdd99c8ebc..84b250981a0 100644
--- a/source/_integrations/light.markdown
+++ b/source/_integrations/light.markdown
@@ -43,8 +43,9 @@ Most lights do not support all attributes. You can check the integration documen
| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color, brightness and a transition value (if no transition is desired, set to 0 or leave out the column entirely). If a profile is given, and a brightness is set, then the profile brightness will be overwritten.
| `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100.
| `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma-separated floats that represent the color in XY. You can find a great chart here: [Hue Color Chart](https://developers.meethue.com/documentation/core-concepts#color_gets_more_complicated).
-| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets. Note that the specified RGB value will not change the light brightness, only the color.
-| `white_value` | yes | Integer between 0 and 255 for how bright a dedicated white LED should be.
+| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets.
+| `rgbw_color` | yes | A list containing four integers between 0 and 255 representing the RGBW color you want the light to be. Four comma-separated integers that represent the color in RGBW (red, green, blue, white), within square brackets. This attribute will be ignored by lights which do not support RGBW colors.
+| `rgbww_color` | yes | A list containing five integers between 0 and 255 representing the RGBWW color you want the light to be. Five comma-separated integers that represent the color in RGBWW (red, green, blue, cold white, warm white), within square brackets. This attribute will be ignored by lights which do not support RGBWW colors.
| `color_temp` | yes | An integer in mireds representing the color temperature you want the light to be.
| `kelvin` | yes | Alternatively, you can specify the color temperature in Kelvin.
| `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported.
diff --git a/source/_integrations/mjpeg.markdown b/source/_integrations/mjpeg.markdown
index 6d70c276f73..7e24084f240 100644
--- a/source/_integrations/mjpeg.markdown
+++ b/source/_integrations/mjpeg.markdown
@@ -82,7 +82,7 @@ camera:
authentication: basic
```
-Example of using a DCS-930L Wireless N Network Camera from D-Link:
+Example of using a DCS-933L Wireless N Network Camera from D-Link:
```yaml
camera:
diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown
index 05ebbd5ceee..69ffcf33ed8 100644
--- a/source/_integrations/modbus.markdown
+++ b/source/_integrations/modbus.markdown
@@ -171,9 +171,9 @@ binary_sensors:
required: false
type: string
input_type:
- description: type of adddress (holding/discrete/coil)
+ description: type of adddress (discrete/coil)
required: false
- default: holding
+ default: coil
type: string
name:
description: Name for this binary_sensor. Must be unique.
diff --git a/source/_integrations/qrcode.markdown b/source/_integrations/qrcode.markdown
index b9778e1ff7c..ec33bc70eaf 100644
--- a/source/_integrations/qrcode.markdown
+++ b/source/_integrations/qrcode.markdown
@@ -39,3 +39,22 @@ source:
required: false
type: string
{% endconfiguration %}
+
+## Basic example
+
+An automation using this integration could look like this:
+
+```yaml
+automation:
+ - alias: "Catch QR code and arm the alarm system"
+ trigger:
+ - platform: state
+ entity_id: image_processing.qr_front_door
+ to: ARM_QR_CODE_VALUE
+ action:
+ - service: alarm_control_panel.alarm_arm_away
+ target:
+ entity_id: alarm_control_panel.home_alarm
+ data:
+ code: MY_ALARM_CODE
+```
diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown
index 3236d2f4251..730dd15c3a4 100644
--- a/source/_integrations/sensor.markdown
+++ b/source/_integrations/sensor.markdown
@@ -30,7 +30,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **timestamp**: Datetime object or timestamp string (ISO 8601).
- **voltage**: Voltage in V.
- **carbon_monoxide**: Carbon Monoxide in CO (Gas CNG/LPG)
-- **carbon_dioxine**: Carbon Dioxine in CO2 (Smoke)
+- **carbon_dioxide**: Carbon Dioxide in CO2 (Smoke)
diff --git a/source/_integrations/tasmota.markdown b/source/_integrations/tasmota.markdown
index 61371b74b8d..98a967879f0 100644
--- a/source/_integrations/tasmota.markdown
+++ b/source/_integrations/tasmota.markdown
@@ -31,6 +31,7 @@ This integration allows you to control [Tasmota](https://tasmota.github.io/docs/
- Tasmota devices' MQTT setting configured to communicate with the MQTT broker.
- Tasmota devices flashed with version 9.2, or later.
- Tasmota devices configured for native discovery (`SetOption19 0`)
+- Although the Tasmota integration supports custom fulltopic it is strongly suggested to leave fulltopic at its default, Tasmota does not prevent setting an invalid or non-unique fulltopic, for example a fulltopic without the %prefix% or %topic% tokens.
## Supported Features
diff --git a/source/_posts/2021-04-30-community-highlights.markdown b/source/_posts/2021-04-30-community-highlights.markdown
new file mode 100644
index 00000000000..19658c37df1
--- /dev/null
+++ b/source/_posts/2021-04-30-community-highlights.markdown
@@ -0,0 +1,130 @@
+---
+title: "Community Highlights: 19th edition"
+description: "Schedule your vacuum cleaning robot with a blueprint, show the robot status with a card and get started with open source Text To Speech systems"
+date: 2021-04-30 00:00:00
+date_formatted: "April 30, 2021"
+author: Klaas Schoute
+author_twitter: klaasnicolaas
+categories: Community
+og_image: /images/blog/2021-04-30-community-highlights/social.png
+---
+
+The 19th edition of the Home Assistant Community Highlights! Some interesting
+things popped up around our community, we thought was worth sharing.
+
+Amazing to see how many reactions there have been after sharing the
+[internship progress][internship], we have seen many cool things and if you have
+any input you can still share this of course! ❤️
+
+Do you want to share something for the next edition?
+Information on [how to share](#got-a-tip-for-the-next-edition).
+
+./Klaas
+
+## Blueprint of the week
+------
+
+
+
+This week's blueprint is that of [delphiki](https://community.home-assistant.io/u/delphiki),
+with which you can plan on which days of the week your vacuum cleaner should start
+cleaning and at what time. Try it out! Read more about it on the [community forum][week_blueprint]
+or install this automation in your instance with a click on the My button!
+
+{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/vacuum-schedule/256590" %}
+
+## Lovelace Dashboard
+------
+
+Also this week we have a new Lovelace dashboard for the necessary portion
+of inspiration 💡 This time it has become that of [Make_Itt_Work](https://www.reddit.com/user/Make_Itt_Work/),
+where he also processed the telemetry data from his car in the dashboard.
+Now we are of course very curious how that works? 😄
+
+
+
+Take also a look at the [original post][dashboard] on Reddit. Would you
+like your dashboard to be in the community highlight? Drop it on
+[Reddit][reddit] and maybe I'll pick it out for the next edition.
+
+## Vacuum Card
+------
+
+
+
+Besides being able to automate when your vacuum cleaning robot gets started,
+you probably also want to show the status of your robot in Lovelace. Then try
+the [vacuum card](https://github.com/denysdovhan/vacuum-card) from [denysdovhan](https://github.com/denysdovhan),
+with which you can show that in a beautiful way and there is support for the
+well-known models that are now available on the market.
+
+
+
+## OpenTTS 2.0
+------
+
+{% my supervisor_add_addon_repository badge repository_url="https://github.com/synesthesiam/hassio-addons" %}
+
+Maybe the name still sounds fairly unknown to you, but [OpenTTS](https://github.com/synesthesiam/hassio-addons)
+is an add-on, which gives you the possibility to use multiple open source
+Text to Speech systems. So that you can eventually have text spoken on: for
+example, a Google Home speaker. [synesthesiam](https://github.com/synesthesiam)
+recently released a new version of OpenTTS and you can install it as an
+add-on in Home Assistant.
+
+
+
+Give it a try!
+
+## Got a tip for the next edition?
+------
+
+Have you seen (or made) something awesome, interesting, unique, amazing,
+inspirational, unusual or funny, using Home Assistant?
+
+[Click here to send us your Community Highlight suggestion](/suggest-community-highlight).
+
+Also, don't forget to share your creations with us via Social Media:
+
+- Tweet it! Be sure to mention [@home_assistant][twitter]
+- Share it on our [Facebook group][facebook-group]
+- Post it to our [subreddit][reddit]
+- Tag [@homeasssistant][instagram] on Instagram
+- Or via chat, drop us a line in the [#lounge at Discord][chat]
+
+See you next edition!
+
+[chat]: https://www.home-assistant.io/join-chat
+[facebook-group]: https://www.facebook.com/groups/HomeAssistant
+[instagram]: https://www.instagram.com/homeassistant
+[reddit]: https://www.reddit.com/r/homeassistant
+[twitter]: https://www.twitter.com/home_assistant
+[blueprints]: https://community.home-assistant.io/c/blueprints-exchange
+[community]: https://community.home-assistant.io
+[dashboard]: https://www.reddit.com/r/homeassistant/comments/n1ci34/latest_dashboard_check_out_my_car_telemetry_card/
+[internship]: https://www.home-assistant.io/blog/2021/04/23/community-highlights/#home-assistant-energy
+[week_blueprint]: https://community.home-assistant.io/t/vacuum-schedule/256590
\ No newline at end of file
diff --git a/source/images/blog/2021-04-30-community-highlights/blueprint.png b/source/images/blog/2021-04-30-community-highlights/blueprint.png
new file mode 100644
index 00000000000..10bfc082c17
Binary files /dev/null and b/source/images/blog/2021-04-30-community-highlights/blueprint.png differ
diff --git a/source/images/blog/2021-04-30-community-highlights/dashboard.jpg b/source/images/blog/2021-04-30-community-highlights/dashboard.jpg
new file mode 100644
index 00000000000..027ad8f3728
Binary files /dev/null and b/source/images/blog/2021-04-30-community-highlights/dashboard.jpg differ
diff --git a/source/images/blog/2021-04-30-community-highlights/social.png b/source/images/blog/2021-04-30-community-highlights/social.png
new file mode 100644
index 00000000000..f564d053c83
Binary files /dev/null and b/source/images/blog/2021-04-30-community-highlights/social.png differ
diff --git a/source/images/blog/2021-04-30-community-highlights/vacuum.png b/source/images/blog/2021-04-30-community-highlights/vacuum.png
new file mode 100644
index 00000000000..0b883c00138
Binary files /dev/null and b/source/images/blog/2021-04-30-community-highlights/vacuum.png differ