(%4tEi%i6RuG|
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
U36jH=e^y9dR^?-jv{}f10Xu
Date: Tue, 1 May 2018 22:26:02 +0200
Subject: [PATCH 10/32] MQTT Sensor Device Class Docs (#5252)
* MQTT Sensor Device Class
* Remove formatting
* Other small fix
---
source/_components/sensor.mqtt.markdown | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown
index 5f36c9de1d1..b6e5c4b0d21 100644
--- a/source/_components/sensor.mqtt.markdown
+++ b/source/_components/sensor.mqtt.markdown
@@ -81,9 +81,14 @@ json_attributes:
reqired: false
type: list, string
unique_id:
- description: "An id that uniquely identifies this sensor. If 2 sensors have the same unique id, Home Assistant will raise an exception.**"
+ description: "An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception."
required: false
type: string
+device_class:
+ description: The type/class of the sensor to set the icon in the frontend.
+ required: false
+ type: device_class
+ default: None
{% endconfiguration %}
## {% linkable_title Examples %}
From fd5f1fc725042a4226526821b2531ae9f5cf45a9 Mon Sep 17 00:00:00 2001
From: giangvo
Date: Thu, 3 May 2018 12:39:04 +1000
Subject: [PATCH 11/32] add document for fan template (#5296)
---
source/_components/fan.template.markdown | 96 ++++++++++++++++++++++++
1 file changed, 96 insertions(+)
create mode 100644 source/_components/fan.template.markdown
diff --git a/source/_components/fan.template.markdown b/source/_components/fan.template.markdown
new file mode 100644
index 00000000000..2b7a984508d
--- /dev/null
+++ b/source/_components/fan.template.markdown
@@ -0,0 +1,96 @@
+---
+layout: page
+title: "Template Fan"
+description: "Instructions how to setup the Template fans within Home Assistant."
+date: 2018-05-03 09:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Fan
+ha_release: 0.69
+ha_iot_class: "Local Push"
+logo: home-assistant.png
+---
+
+The `template` platform creates fans that combine components and provides the
+ability to run scripts or invoke services for each of the turn_on, turn_off, set_speed, and
+set_oscillating commands of a fan.
+
+To enable Template Fans in your installation, add the following to your
+`configuration.yaml` file:
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+fan:
+ - platform: template
+ fans:
+ bedroom_fan:
+ friendly_name: "Bedroom fan"
+ value_template: "{{ states('input_boolean.state') }}"
+ speed_template: "{{ states('input_select.speed') }}"
+ oscillating_template: "{{ states('input_select.osc') }}"
+ turn_on:
+ service: script.fan_on
+ turn_off:
+ service: script.fan_off
+ set_speed:
+ service: script.fan_speed
+ data_template:
+ speed: "{{ speed }}"
+ set_oscillating:
+ service: script.fan_oscillating
+ data_template:
+ oscillating: "{{ oscillating }}"
+ speeds:
+ - '1'
+ - '2'
+ - '3'
+```
+{% endraw %}
+
+{% configuration %}
+ fans:
+ description: List of your fans.
+ required: true
+ type: map
+ keys:
+ friendly_name:
+ description: Name to use in the frontend.
+ required: false
+ type: string
+ value_template:
+ description: "Defines a template to get the state of the fan. Valid value: 'on'/'off'
+ required: true
+ type: template
+ speed_template:
+ description: Defines a template to get the speed of the fan.
+ required: false
+ type: template
+ oscillating_template:
+ description: Defines a template to get the osc state of the fan. Valid value: True/False
+ required: false
+ type: template
+ turn_on:
+ description: Defines an action to run when the fan is turned on.
+ required: true
+ type: action
+ turn_off:
+ description: Defines an action to run when the fan is turned off.
+ required: true
+ type: action
+ set_speed:
+ description: Defines an action to run when the fan is given a speed command.
+ required: false
+ type: action
+ set_oscillating:
+ description: Defines an action to run when the fan is given a osc state command.
+ required: false
+ type: action
+ speeds:
+ description: List of speeds the fan is capable of running at.
+ required: false
+ type: string list
+ default: ['low', 'medium', 'high']
+{% endconfiguration %}
From fe352e7dd60558a9292bfd2453da86793b6743ac Mon Sep 17 00:00:00 2001
From: escoand
Date: Thu, 3 May 2018 21:00:17 +0200
Subject: [PATCH 12/32] Add description of discovery (#5286)
* Add description of discovery
* Fix copy&paste
* Update link
---
source/_components/media_player.volumio.markdown | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/source/_components/media_player.volumio.markdown b/source/_components/media_player.volumio.markdown
index f8945adc889..26053822e8a 100644
--- a/source/_components/media_player.volumio.markdown
+++ b/source/_components/media_player.volumio.markdown
@@ -12,12 +12,11 @@ ha_category: Media Player
ha_release: 0.41
---
-The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player
-from Home Assistant.
+The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player from Home Assistant.
+The preferred way to set up the Volumio platform is by enabling the [discovery component](/components/discovery/).
-To add a Volumio player to your installation, add the following to
-your `configuration.yaml` file.
+In case the discovery does not work, or you need specific configuration variables, you can add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
From d7fcb153de9f791bfbfa83db9ee459498120a94b Mon Sep 17 00:00:00 2001
From: Aaron Bach
Date: Thu, 3 May 2018 14:56:01 -0600
Subject: [PATCH 13/32] Adds docs for RainMachine component/hub (#5251)
* Adds docs for RainMachine component/hub
* Removing references to remote API
* Collaborator-requested changes
* Adding new info (per home-assistant/home-assistant#14225)
* Collaborator-requested changes
* Collaborator-requested changes
* Revert "Collaborator-requested changes"
This reverts commit 34f75ffab911dcd9a9ae3163645c7c6e9dbf54ee.
* I think I got it this time...
* Collaborator-requested changes
* Collaborator-requested changes
* Small tweak
---
source/_components/rainmachine.markdown | 71 +++++++++++++++
.../_components/switch.rainmachine.markdown | 88 +++----------------
2 files changed, 85 insertions(+), 74 deletions(-)
create mode 100644 source/_components/rainmachine.markdown
diff --git a/source/_components/rainmachine.markdown b/source/_components/rainmachine.markdown
new file mode 100644
index 00000000000..e416c7f6261
--- /dev/null
+++ b/source/_components/rainmachine.markdown
@@ -0,0 +1,71 @@
+---
+layout: page
+title: "RainMachine"
+description: "Instructions on how to integrate RainMachine units within Home Assistant."
+date: 2018-04-25 20:32
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: rainmachine.png
+ha_category: Hub
+ha_release: 0.69
+ha_iot_class: "Cloud Polling"
+---
+
+The `rainmachine` component is the main component to integrate all platforms
+related to [RainMachine smart Wi-Fi sprinkler controllers](http://www.rainmachine.com/).
+
+## {% linkable_title Base Configuration %}
+
+To connect to your RainMachine device, add the following to your
+`configuration.yaml` file:
+
+```yaml
+rainmachine:
+ ip_address: 192.168.1.100
+ password: YOUR_PASSWORD
+```
+
+To configure switch-related functionality, add configuration options beneath
+a `switches` key within the `rainmachine` sections of `configuration.yaml`
+as below:
+
+```yaml
+rainmachine:
+ ip_address: 192.168.1.100
+ password: YOUR_PASSWORD
+ switches:
+ # switch configuration options...
+```
+
+{% configuration %}
+ip_address:
+ description: the IP address or hostname of your RainMachine unit
+ required: optional
+ type: string
+password:
+ description: your RainMachine password.
+ required: true
+ type: string
+port:
+ description: the TCP port used by your unit for the REST API
+ required: false
+ type: int
+ default: 8080
+ssl:
+ description: whether communication with the local device should occur over HTTPS
+ required: false
+ type: boolean
+ default: true
+switches:
+ description: switch-related configuration options
+ required: false
+ type: map
+ keys:
+ zone_run_time:
+ description: the default number of seconds that a zone should run when turned on
+ required: false
+ type: int
+ default: 600
+{% endconfiguration %}
diff --git a/source/_components/switch.rainmachine.markdown b/source/_components/switch.rainmachine.markdown
index 26b73e0aa8f..f37ce0fbd55 100644
--- a/source/_components/switch.rainmachine.markdown
+++ b/source/_components/switch.rainmachine.markdown
@@ -13,84 +13,24 @@ ha_iot_class: "Cloud Polling"
ha_release: 0.51
---
-The `rainmachine` switch platform allows you to control programs and zones within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).
-
-## {% linkable_title Configuring the Platform %}
-
-The platform allows for either local (i.e., directly across the LAN) or remote (i.e., through RainMachine's cloud API) access; the route you choose will dictate what your configuration should look like.
-
-For local access, specify the IP address/hostname of your RainMachine unit, your RainMachine password, and optionally, the device's HTTP port:
-
-```yaml
-switch:
- platform: rainmachine
- ip_address: 192.168.1.100
- password: YOUR_PASSWORD
-```
-
-For remote access, specify your RainMachine username/email and password:
-
-```yaml
-switch:
- platform: rainmachine
- email: user@host.com
- password: YOUR_PASSWORD
-```
-
-{% configuration %}
-password:
- description: Your RainMachine password.
- required: true
- type: string
-email:
- description: "Your RainMachine username/email. Cannot be used with the `ip_address` parameter."
- required: false
- type: string
-ip_address:
- description: "The IP address of your RainMachine unit; cannot be used with the `email` parameter."
- required: optional
- type: string
-port:
- description: The TCP port used by your unit for the REST API.
- required: false
- type: int
- default: 8080
-ssl:
- description: Whether communication with the local device should occur over HTTPS.
- required: false
- type: boolean
- default: true
-zone_run_time:
- description: The number of seconds that a zone should run when turned on.
- required: false
- type: int
- default: 600
-{% endconfiguration %}
+The `rainmachine` switch platform allows you to control programs and zones
+within a [RainMachine smart Wi-Fi sprinkler controller](http://www.rainmachine.com/).
+
+You must have the [RainMachine component](https://www.home-assistant.io/components/rainmachine/)
+configured to use this switch. After configuring that component, switches will
+automatically appear.
+
## {% linkable_title Controlling Your Device %}
-After Home Assistant loads, you will see new switches for every enabled program and zone. These work as expected:
+After Home Assistant loads, new switches will be added for every enabled
+program and zone. These work as expected:
- Program On/Off: starts/stops a program
-- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to determine how long to run for)
+- Zone On/Off: starts/stops a zone (using the `zone_run_time` parameter to
+determine how long to run for)
-Programs and zones are linked. If a program is running its final zone, you will see both the program and zone switches turned on; turning either one off will turn the other one off (just like in the web app).
-
-## {% linkable_title Weblink %}
-
-If you would like to see and control more detailed information, create an [iFrame](/components/panel_iframe/) that renders the RainMachine web app:
-
-```yaml
-panel_iframe:
- rainmachine:
- title: RainMachine
- url: "https://my.rainmachine.com/s//ui/"
- icon: mdi:water-pump
-```
-
-You can find `` by logging into [https://my.rainmachine.com](https://my.rainmachine.com ) and taking note of the URL.
-
-## {% linkable_title For Awareness %}
-
-The remote RainMachine API currently has two broken operations (i.e., they return error codes): starting a program and stopping a program. Please note that starting/stopping programs with the remote API is disabled until RainMachine can fix the issue.
+Programs and zones are linked. While a program is running, you will see both
+the program and zone switches turned on; turning either one off will turn the
+other one off (just like in the web app).
From 99b142470d51393ed2b6dd8e7ba09ab3ec53ba1c Mon Sep 17 00:00:00 2001
From: cdce8p <30130371+cdce8p@users.noreply.github.com>
Date: Sat, 5 May 2018 15:38:37 +0200
Subject: [PATCH 14/32] Updated sensor device_classes (#5306)
* Updated sensor device_classes
* Removed lux
* Changed device_class name
* Updated homekit doc
---
source/_components/homekit.markdown | 2 +-
source/_components/sensor.markdown | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown
index 631ddf592c3..c50ce9b6be8 100644
--- a/source/_components/homekit.markdown
+++ b/source/_components/homekit.markdown
@@ -206,7 +206,7 @@ The following components are currently supported:
| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` or `humidity` as their `device_class`. |
| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` |
| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` |
-| sensor | LightSensor | All sensors that have `lm`/`lux` as their `unit_of_measurement` or `light` as their `device_class` |
+| sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` |
| switch / remote / input_boolean / script | Switch | All represented as switches. |
diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown
index d973c2442e1..647f0e7ab08 100644
--- a/source/_components/sensor.markdown
+++ b/source/_components/sensor.markdown
@@ -20,6 +20,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **None**: Generic sensor. This is the default and doesn't need to be set.
- **battery**: Percentage of battery that is left.
- **humidity**: Percentage of humidity in the air.
+- **illuminance**: The current light level in lx or lm.
- **temperature**: Temperature in °C or °F.
From 69405f1edc24dfea0342bc10b0c90678acedb6e8 Mon Sep 17 00:00:00 2001
From: Lukas Barth
Date: Sat, 5 May 2018 19:05:15 +0200
Subject: [PATCH 15/32] Add matrix documentation (#5019)
* Add matrix documentation
* Try to use new config tags
* Use new config tag
* :arrow_up: Added ha_version tag
* :arrow_up: ha_release -> 0.68
* update version number
---
source/_components/matrix.markdown | 136 ++++++++++++++++++++++
source/_components/notify.matrix.markdown | 10 +-
2 files changed, 138 insertions(+), 8 deletions(-)
create mode 100644 source/_components/matrix.markdown
diff --git a/source/_components/matrix.markdown b/source/_components/matrix.markdown
new file mode 100644
index 00000000000..1047d540534
--- /dev/null
+++ b/source/_components/matrix.markdown
@@ -0,0 +1,136 @@
+---
+layout: page
+title: "Matrix"
+description: "Matrix chatbot support"
+date: 2018-03-25 18:50
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: matrix.png
+ha_category: Hub
+ha_version: 0.69
+---
+
+This component allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered.
+
+```yaml
+# Example configuration.yaml entry
+matrix:
+ homeserver: https://matrix.org
+ username: "@my_matrix_user:matrix.org"
+ password: supersecurepassword
+ rooms:
+ - "#hasstest:matrix.org"
+ commands:
+ - word: my_command
+ name: my_command
+```
+
+Configuration variables:
+
+{% configuration %}
+username:
+ description: "The matrix username that home assistant should use to log in. *Note*: You must specify a full matrix ID here, including the homeserver domain, e.g. '@my_matrix_bot:matrix.org'. Please note also that the '@' character has a special meaning in YAML, so this must always be given in quotes."
+ required: true
+ type: string
+password:
+ description: The password for your Matrix account.
+ required: true
+ type: string
+homeserver:
+ description: "The full URL for your homeserver. If you use the defauls matrix.org homeserver, this is 'https://matrix.org'."
+ required: true
+ type: string
+verify_ssl:
+ description: Verify the homeservers certificate.
+ required: false
+ type: string
+ default: true
+rooms:
+ description: "The list of rooms that the bot should join and listen for commands (see below) in. While you can limit the list of rooms that a certain command applies to on a per-command basis (see below), you must still list all rooms here that commands should be received in. Rooms can be given either by their internal ID (e.g., '!cURbafjkfsMDVwdRDQ:matrix.org') or any of their aliases (e.g., '#matrix:matrix.org')."
+ required: false
+ type: [string]
+ default: empty
+commands:
+ description: "A list of commands that the bot should listen for. If a command is triggered (via its *word* or *expression*, see below), an event is fired that you can handle using automations. Every command consists of these possible configuration options:"
+ required: false
+ type: map
+ default: empty
+ keys:
+ word:
+ description: "Specifies a word that the bot should listen for. If you specify 'my_command' here, the bot will react to any message starting with '!my_command'."
+ required: false
+ type: string
+ expression:
+ description: "Specifies a regular expression (in python regexp syntax) that the bot should listen to. The bot will react to any message that matches the regular expression."
+ required: false
+ type: string
+ name:
+ description: "The name of the command. This will be an attribute of the event that is fired when this command triggers."
+ required: true
+ type: string
+ rooms:
+ description: "A list of rooms that the bot should listen for this command in. If this is not given, the *rooms* list from the main config is used. Please note that every room in this list must also be in the main *room* config."
+ required: false
+ type: [string]
+ default: empty
+{% endconfiguration %}
+
+### {% linkable_title Event Data %}
+
+If a command is triggered, a `matrix_command` event is fired. The event contains the name of the command in the `name` field. If the command is a word command that has no name set, the `name` field contains the word instead.
+
+If the command is a word command, the `data` field contains a list of the command's arguments, i.e., everything that stood behind the word, split at spaces. If the command is an expression command, the `data` field contains the [group dictionary](https://docs.python.org/3.6/library/re.html?highlight=re#re.match.groupdict) of the regular expression that matched the message.
+
+### {% linkable_title Comprehensive Configuration Example %}
+
+This example also uses the [matrix `notify` platform](/components/notify.matrix/).
+
+```yaml
+# The Matrix component
+matrix:
+ homeserver: https://matrix.org
+ username: "@my_matrix_user:matrix.org"
+ password: supersecurepassword
+ rooms:
+ - "#hasstest:matrix.org"
+ - "#someothertest:matrix.org"
+ commands:
+ - word: testword
+ rooms:
+ - "#someothertest:matrix.org"
+ - expression: "My name is (?P.*)"
+ name: introduction
+
+notify:
+ - name: matrix_notify
+ platform: matrix
+ default_room: "#hasstest:matrix.org"
+
+automation:
+ - alias: 'React to !testword'
+ trigger:
+ platform: event
+ event_type: matrix_command
+ event_data:
+ command: testword
+ action:
+ service: notify.matrix_notify
+ data:
+ message: 'It looks like you wrote !testword'
+ - alias: 'React to an introduction'
+ trigger:
+ platform: event
+ event_type: matrix_command
+ event_data:
+ command: introduction
+ action:
+ service: notify.matrix_notify
+ data_template:
+ message: "Hello {{trigger.event.data.name}}"
+```
+
+This configuration will:
+- Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel.
+- Listen in both rooms for any message matching "My name is " and answer with "Hello " into "#hasstest:matrix.org".
diff --git a/source/_components/notify.matrix.markdown b/source/_components/notify.matrix.markdown
index 2d9aff6a04a..29890d46c8b 100644
--- a/source/_components/notify.matrix.markdown
+++ b/source/_components/notify.matrix.markdown
@@ -17,27 +17,21 @@ The `matrix` platform allows you to deliver notifications from Home Assistant to
## {% linkable_title Configuration %}
-To enable Matrix notifications in your installation, add the following to your `configuration.yaml` file:
+To enable Matrix notifications in your installation, you first need to configure
+the [Matrix component](/components/matrix/). Then, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
notify:
- name: NOTIFIER_NAME
platform: matrix
- homeserver: HOMESERVER
- username: YOUR_USERNAME
- password: YOUR_PASSWORD
default_room: ROOM_ID_OR_ALIAS
```
Configuration variables:
- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`.
-- **homeserver** (*Required*): The base URL of the homeserver, where the notifier account is registered (e.g., `https://matrix.org`).
-- **username** (*Required*): The username of the notifying Matrix account.
-- **password** (*Required*): The password for the given Matrix account.
- **default_room** (*Required*): The room all messages will be sent to, when no other target is given.
-- **verify_ssl** (*Optional*): Verify the homeservers certificate. Defaults to `true`.
The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies.
From ba630fb068bec34736d3a9e8cf4135d1dfa48223 Mon Sep 17 00:00:00 2001
From: cdce8p <30130371+cdce8p@users.noreply.github.com>
Date: Sat, 5 May 2018 19:05:49 +0200
Subject: [PATCH 16/32] Updated Sensor device_class requirement - HomeKit
(#5304)
* HomeKit - sensor device_class requirement
* Limit breaking change to Humidity Sensor
---
source/_components/homekit.markdown | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown
index c50ce9b6be8..bb2b4649f86 100644
--- a/source/_components/homekit.markdown
+++ b/source/_components/homekit.markdown
@@ -202,8 +202,8 @@ The following components are currently supported:
| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) |
| light | Light | Support for `on / off`, `brightness` and `rgb_color`. |
| lock | DoorLock | Support for `lock / unlock`. |
-| sensor | TemperatureSensor | All sensors that have `Celsius` and `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. |
-| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` or `humidity` as their `device_class`. |
+| sensor | TemperatureSensor | All sensors that have `Celsius` or `Fahrenheit` as their `unit_of_measurement` or `temperature` as their `device_class`. |
+| sensor | HumiditySensor | All sensors that have `%` as their `unit_of_measurement` and `humidity` as their `device_class`. |
| sensor | AirQualitySensor | All sensors that have `pm25` as part of their `entity_id` or `pm25` as their `device_class` |
| sensor | CarbonDioxideSensor | All sensors that have `co2` as part of their `entity_id` or `co2` as their `device_class` |
| sensor | LightSensor | All sensors that have `lm` or `lx` as their `unit_of_measurement` or `illuminance` as their `device_class` |
From 8187c4aebe4fc0edc551ed2f508ec15748e89bbc Mon Sep 17 00:00:00 2001
From: Mick Vleeshouwer
Date: Sat, 5 May 2018 19:06:14 +0200
Subject: [PATCH 17/32] Add sensor.postnl documentation (#5231)
* Add sensor.postnl documentation
* Update ha_release
---
source/_components/sensor.postnl.markdown | 47 ++++++++++++++++++++++
source/images/supported_brands/postnl.png | Bin 0 -> 190385 bytes
2 files changed, 47 insertions(+)
create mode 100644 source/_components/sensor.postnl.markdown
create mode 100644 source/images/supported_brands/postnl.png
diff --git a/source/_components/sensor.postnl.markdown b/source/_components/sensor.postnl.markdown
new file mode 100644
index 00000000000..3087ce4b011
--- /dev/null
+++ b/source/_components/sensor.postnl.markdown
@@ -0,0 +1,47 @@
+---
+layout: page
+title: PostNL Sensor
+description: "Instructions on how to set up PostNL sensors within Home Assistant."
+date: 2017-04-22 08:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: postnl.png
+ha_category: Sensor
+ha_release: 0.69
+ha_iot_class: "Cloud Polling"
+---
+
+The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration.
+
+## {% linkable_title Configuration %}
+
+To enable this sensor, add the following lines to your `configuration.yaml`:
+
+```yaml
+sensors:
+ - platform: postnl
+ username: POSTNL_USERNAME
+ password: POSTNL_PASSWORD
+```
+
+{% configuration %}
+name:
+ description: Sensor name
+ required: false
+ default: "postnl"
+ type: string
+username:
+ description: Account username of jouw.postnl.nl
+ required: true
+ type: string
+password:
+ description: Account password of jouw.postnl.nl
+ required: true
+ type: string
+{% endconfiguration %}
+
+
+This component is not affiliated with PostNL and retrieves date from the endpoints of the mobile application. Use at your own risk.
+
diff --git a/source/images/supported_brands/postnl.png b/source/images/supported_brands/postnl.png
new file mode 100644
index 0000000000000000000000000000000000000000..93d54db18c92d5d4513e65a159d7a9074266aeb6
GIT binary patch
literal 190385
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 0%)nbcGHuiY&
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