+```
+
+For example, if you were adding a new provider called abc.com, you could do
+
+```bash
+git branch adding_abc_com
+```
+
+For more info on forking/cloning a repository, see GitHub's [fork-a-repo](https://docs.github.com/en/get-started/quickstart/fork-a-repo) document.
+
+### Files Required For A New Service Provider
+
+The following files need to be provided to support a new service provider:
+
+- A python `source script` that retrieves the collection schedule information, formats it appropriately, and has test cases that can be used to confirm functionality.
+- A `source markdown (.md)` file that describes how to configure the new source and sensor, with examples.
+- An updated `README.md` file containing details of the new service provider.
+- An updated `info.md` file containing details of the new service provider.
+
+The framework contains a [test script](#test-the-new-source-file) that can be used to confirm source scripts are retrieving and returning correctly formatted waste collection schedules.
+
+### Python Source Script
+
+Create a new file in the `custom_components/waste_collection_schedule/waste_collection_schedule/source` folder. The file name should be the url of your service provider in lower case, for example `abc_com.py` for `https://www.abc.com`.
+
+The script should have the following general structure
+
+```py
+import datetime
+from waste_collection_schedule import Collection
+
+TITLE = "My Council" # Title will show up in README.md and info.md
+DESCRIPTION = "Source script for abc.com" # Describe your source
+URL = "https://abc.com" # Insert url to service homepage. URL will show up in README.md and info.md
+TEST_CASES = { # Insert arguments for test cases to be used by test_sources.py script
+ "TestName1": {"arg1": 100, "arg2": "street"},
+ "TestName2": {"arg1": 200, "arg2": "road"},
+ "TestName3": {"arg1": 300, "arg2": "lane"}
+}
+
+API_URL = "https://abc.com/search/"
+ICON_MAP = { # Optional: Dict of waste types and suitable mdi icons
+ "DOMESTIC": "mdi:trash-can",
+ "RECYCLE": "mdi:recycle",
+ "ORGANIC": "mdi:leaf",
+}
+
+
+class Source:
+ def __init__(self, arg1, arg2): # argX correspond to the args dict in the source configuration
+ self._arg1 = arg1
+ self._arg2 = arg2
+
+ def fetch(self):
+
+ # replace this comment with
+ # api calls or web scraping required
+ # to capture waste collection schedules
+ # and extract date and waste type details
+
+ entries = [] # List that holds collection schedule
+
+ entries.append(
+ Collection(
+ date = datetime.datetime(2020, 4, 11), # Collection date
+ t = "Waste Type", # Collection type
+ icon = ICON_MAP.get("Waste Type"), # Collection icon
+ )
+ )
+
+ return entries
+```
+
+Filtering of data for waste types or time periods is a functionality of the framework and should not be done by the source script. Therefore:
+
+- A source script should return all data for all available waste types.
+- A source script should **not** provide options to limit the returned waste types.
+- A source script should return all data for the entire time period available (including past dates if they are returned).
+- A source script should **not** provide a configuration option to limit the requested time frame.
+
+### Service Provider Markdown File
+
+Create a new markdown file in the `custom_components/waste_collection_schedule/doc/source` folder. The file name should be the url of your service provider in lower case, for example `abc_com.md` for `https://www.abc.com`.
+
+The markdown file should have the following general structure:
+
+1. A description of how the source should be configured.
+2. A description of the arguments required, the type, and whether they are optional/mandatory.
+3. A working example (usually one of the test cases from the `.py` file)
+
+For example:
+
+**Configuration via configuration.yaml**
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: abc_com
+ args:
+ uprn: UNIQUE_PROPERTY_REFERENCE_NUMBER
+```
+
+**Configuration Variables**
+
+**uprn** _(string) (required)_ : The unique 12-digit identifier for your property
+
+Example:
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: abc_com
+ args:
+ uprn: "e3850cac2d5b"
+```
+
+Note: Your uprn can be found on invoices from your service provider
+
+### Update Links in README.md and info.md
+
+The `README.md` file in the top level folder contains a list of supported service providers.
+
+The `info.md` is rendered in the HACS user interface within Home Assistant and gives potential users a summary of what the component does, and the service providers supported.
+
+The links in both files can be updated automatically using the script `update_docu_links.py` in the top-level directory:
+
+```bash
+./update_docu_links.py
+```
+
+The script iterates through all source files and extracts some meta information like title and url. It is therefore important to set the attributes in the source file correctly. By default, the country classification is derived from the file name. If this doesn't match, the country code can be overwritten with the attribute `COUNTRY`.
+
+| Attribute | Type | Description |
+|-|-|-|
+| TITLE | String | Title of the source. Used as link title in README.md and info.md. |
+| URL | String | Service provider homepage URL. The idea is to help users to identify their service provider if they search for an URL instead of a service provider name. The abbreviated domain name is therefore displayed next to the source title in README.md. |
+| COUNTRY | String | [Optional] Overwrite default country code which is derived from source file name. |
+| EXTRA_INFO | List of Dicts or Callable | [Optional] Used to add extra links in README.md and info.md if the source supports multiple service providers at the same time. The following keys can be added to the dict: `title`, `url`, `country`. In case a key is missing, the corresponding value from the attributes above will be used instead. |
+
+Examples:
+
+```python
+# Standard case: Source supports one service provider
+TITLE = "ART Trier"
+URL = "https://www.art-trier.de"
+
+# Special case: Overwrite country code
+TITLE = "RecycleSmart"
+URL = "https://www.recyclesmart.com/"
+COUNTRY = "au"
+
+# Special case: Source supports multiple service provider which should be added to README.md and info.md
+TITLE = "FCC Environment"
+URL = "https://fccenvironment.co.uk"
+EXTRA_INFO = [
+ {
+ "title": "Harborough District Council",
+ "url": "https://harborough.gov.uk"
+ },
+ {
+ "title": "South Hams District Council",
+ "url": "https://southhams.gov.uk/"
+ },
+]
+
+# Special case: Same as before, but EXTRA_INFO created by a function from existing data
+TITLE = "Bürgerportal"
+URL = "https://www.c-trace.de"
+def EXTRA_INFO():
+ return [ { "title": s["title"], "url": s["url"] } for s in SERVICE_MAP ]
+```
+
+### Test The New Source File
+
+Debugging a source script within Home Assistant is not recommended. Home Assistant's start-up process is too slow for fast debugging cycles. To help with debugging/troubleshooting, the Waste Collection Schedule framework contains a command line script that can be used to test source scripts. The script iterates through the `test cases` defined in the source script passing each set of arguments to the source script and prints the results.
+
+The script supports the following options:
+
+| Option | Argument | Description |
+|--------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
+| `-s` | SOURCE | [Source name](https://github.com/mampfes/hacs_waste_collection_schedule#source-configuration-variables) (source file name without ending `.py`) |
+| `-l` | - | List all found dates. |
+| `-i` | - | Add icon name to output. Only effective together with `-l`. |
+| `-t` | - | Show extended exception info and stack trace. |
+
+For debugging purposes of a single source, it is recommended to use the `-s SOURCE` option. If used without any arguments provided, the script tests every script in the `custom_components/waste_collection_schedule/waste_collection_schedule/source` folder and prints the number of found entries for every test case.
+
+To use it:
+
+1. Navigate to the `custom_components/waste_collection_schedule/waste_collection_schedule/test/` directory
+2. Confirm the `test_sources.py` script is present
+3. Execute the test script. For example, testing the abfall_io.py source script would be:
+
+ ```bash
+ test_sources.py -s abfall_io
+ ```
+
+4. Confirm the results returned match expectation. For example, testing abfall_io returns:
+
+ ```text
+ Testing source abfall_io ...
+ found 285 entries for Waldenbuch
+ found 58 entries for Landshut
+ found 109 entries for Schoenmackers
+ found 3 entries for Freudenstadt
+ found 211 entries for Ludwigshafen am Rhein
+ found 119 entries for Traunstein
+ found 287 entries for Thalheim
+ ```
+
+5. To view individual date entries and assigned icons, use the `-i -l` arguments, for example:
+
+ ```bash
+ test_sources.py -s richmondshire_gov_uk -i -l
+ Testing source richmondshire_gov_uk ...
+ found 53 entries for test 1
+ 2023-01-02: 240L GREY RUBBISH BIN [mdi:trash-can]
+ 2023-01-07: 55L RECYCLING BOX [mdi:recycle]
+ 2023-01-13: 240L GREY RUBBISH BIN [mdi:trash-can]
+ 2023-01-20: 55L RECYCLING BOX [mdi:recycle]
+ 2023-01-27: 240L GREY RUBBISH BIN [mdi:trash-can]
+ ...
+ 2023-12-01: 240L GREY RUBBISH BIN [mdi:trash-can]
+ 2023-12-08: 55L RECYCLING BOX [mdi:recycle]
+ 2023-12-15: 240L GREY RUBBISH BIN [mdi:trash-can]
+ ```
+
+### Sync Branch and Create A Pull Request
+
+Having completed your changes, sync your local branch to your GitHub repo, and then create a pull request. When creating a pull request, please provide a meaningful description of what the pull request covers. Ideally it should cite the service provider, confirm the .py, .md, README and info.md files have all been updated, and the output of the test_sources.py script demonstrating functionality. Once submitted a number of automated tests are run against the updated files to confirm they can be merged into the master branch. Note: Pull requests from first time contributors also undergo a manual code review before a merge confirmation in indicated.
+
+Once a pull request has been merged into the master branch, you'll receive a confirmation message. At that point you can delete your branch if you wish.
+
+## Update Or Improve The Documentation
+
+Non-code contributions are welcome. If you find typos, spelling mistakes, or think there are other ways to improve the documentation please submit a pull request with updated text. Sometimes a picture paints a thousand words, so if a screenshots would better explain something, those are also welcome.
+
+## Help Answer/Fix Issues Raised
+
+
+
+Open-source projects are always a work in progress, and [issues](https://github.com/mampfes/hacs_waste_collection_schedule/issues) arise from time-to-time. If you come across a new issue, please raise it. If you have a solution to an open issue, please raise a pull request with your solution.
+
+## Join The Home Assistant Community Discussion
+
+
+
+The main discussion thread on Home Assistant's Community forum can be found [here](https://community.home-assistant.io/t/waste-collection-schedule-framework/186492).
diff --git a/doc/faq.md b/doc/faq.md
new file mode 100644
index 00000000..134bcf6a
--- /dev/null
+++ b/doc/faq.md
@@ -0,0 +1,287 @@
+
+
+
+
+# Frequently Asked Questions, or "How Do I ...?"
+
+
+How do I format dates?
+
+
+Use [strftime](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) in `value_template` or `date_template`:
+
+```yaml
+# returns "20.03.2020"
+value_template: '{{value.date.strftime("%d.%m.%Y")}}'
+date_template: '{{value.date.strftime("%d.%m.%Y")}}'
+
+# returns "03/20/2020"
+value_template: '{{value.date.strftime("%m/%d/%Y")}}'
+date_template: '{{value.date.strftime("%m/%d/%Y")}}'
+
+# returns "Fri, 03/20/2020"
+value_template: '{{value.date.strftime("%a, %m/%d/%Y")}}'
+date_template: '{{value.date.strftime("%a, %m/%d/%Y")}}'
+```
+
+
+
+
+How do I show the number of days to the next collection?
+
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: 'in {{value.daysTo}} days'
+```
+
+
+
+
+How do I show Today / Tomorrow instead of in 0 / 1 days?
+
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+# returns "Today" if value.daysTo == 0
+# returns "Tomorrow" if value.daysTo == 1
+# returns "in X days" if value.daysTo > 1
+value_template: '{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}'
+```
+
+
+
+
+
+How do I join waste types in a value_template?
+
+
+Use the `join` filter:
+
+```yaml
+# returns "Garbage, Recycle"
+value_template: '{{value.types|join(", ")}}'
+
+# returns "Garbage+Recycle"
+value_template: '{{value.types|join("+")}}'
+```
+
+Note: If you don't specify a `value_template`, waste types will be joined using the `separator` configuration variable.
+
+
+
+
+How do I setup a sensor which shows only the days to the next collection?
+
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.daysTo}}'
+```
+
+
+
+
+
+How do I setup a sensor which shows only the date of the next collection?
+
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.date.strftime("%m/%d/%Y")}}'
+```
+
+
+
+
+
+How do I configure a sensor which shows only the waste type of the next collection?
+
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.types|join(", ")}}'
+```
+
+
+
+
+
+How do I configure a sensor to show only collections of a specific waste type?
+
+
+
+Set `types` within the sensor configuration:
+
+```yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: next_garbage_collection
+ types:
+ - Garbage
+
+ - platform: waste_collection_schedule
+ name: next_recycle_collection
+ types:
+ - Recycle
+```
+
+Note: If you have set an alias for a waste type, you must use the alias name.
+
+
+
+
+How can I rename an waste type?
+
+
+Set `alias` in the customize section of a source:
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: NAME
+ customize:
+ - type: Very long garbage name
+ alias: Garbage
+ - type: Very long recycle name
+ alias: Recycle
+```
+
+
+
+
+
+How can I hide a waste type I don't want to see?
+
+
+Set `show` configuration variable to *false* in the customize section of a source:
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: NAME
+ customize:
+ - type: Unwanted Waste Type
+ show: false
+```
+
+
+
+
+
+How do I show a coloured Lovelace card depending on the due date?
+
+
+You can use [Button Card](https://github.com/custom-cards/button-card) to create a coloured Lovelace cards:
+
+
+
+```yaml
+# configuration.yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: MyButtonCardSensor
+ value_template: '{{value.types|join(", ")}}|{{value.daysTo}}|{{value.date.strftime("%d.%m.%Y")}}|{{value.date.strftime("%a")}}'
+```
+
+```yaml
+# button-card configuration
+type: 'custom:button-card'
+entity: sensor.mybuttoncardsensor
+layout: icon_name_state2nd
+show_label: true
+label: |
+ [[[
+ var days_to = entity.state.split("|")[1]
+ if (days_to == 0)
+ { return "Today" }
+ else if (days_to == 1)
+ { return "Tomorrow" }
+ else
+ { return "in " + days_to + " days" }
+ ]]]
+show_name: true
+name: |
+ [[[
+ return entity.state.split("|")[0]
+ ]]]
+state:
+ - color: red
+ operator: template
+ value: '[[[ return entity.state.split("|")[1] == 0 ]]]'
+ - color: orange
+ operator: template
+ value: '[[[ return entity.state.split("|")[1] == 1 ]]]'
+ - value: default
+```
+
+
+
+
+
+Can I also use the Garbage Collection Card instead?
+
+
+Yes, the [Garbage Collection Card](https://github.com/amaximus/garbage-collection-card) can also be used with *Waste Collection Schedule*:
+
+```yaml
+# configuration.yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: garbage_days
+ details_format: appointment_types
+ value_template: "{{ value.daysTo }}"
+ types:
+ - Garbage
+
+ - platform: template
+ sensors:
+ garbage:
+ value_template: >
+ {% if states('sensor.garbage_days')|int > 2 %}
+ 2
+ {% else %}
+ {{ states('sensor.garbage_days')|int }}
+ {% endif %}
+ attribute_templates:
+ next_date: "{{ state_attr('sensor.garbage_days', 'Garbage') }}"
+ days: "{{ states('sensor.garbage_days')|int }}"
+```
+
+```yaml
+# garbage-collection-card configuration
+entity: sensor.garbage
+type: 'custom:garbage-collection-card'
+```
+
+
+
+
+
+How can I sort waste type specific entities?
+
+
+Prerequisites: You already have dedicated sensors per waste type and want to show the sensor with the next collection in a Lovelace card.
+
+Add `add_days_to: True` to the configuration of all sensors you want to sort. This will add the attribute `daysTo` which can be used by e.g. [auto-entities](https://github.com/thomasloven/lovelace-auto-entities) to sort entities by day of next collection.
+
+
diff --git a/doc/installation.md b/doc/installation.md
new file mode 100644
index 00000000..0e35427e
--- /dev/null
+++ b/doc/installation.md
@@ -0,0 +1,154 @@
+
+
+# Installation
+
+## Automated Installation Using HACS
+
+
+
+
+The `Waste Collection Schedule` component can be installed via [HACS](https://hacs.xyz/). This allows you to be notified of any updates or new releases of the component.
+
+After installing HACS:
+
+1. Visit the HACS `Integrations` panel in Home Assistant.
+2. Click `Explore & Download Repositories`.
+3. Search for `Waste Collection Schedule`.
+4. Click on the `Waste Collection Schedule` entry.
+5. Click on `Download` to copy the relevant files to your `config/custom_components/` directory.
+6. [Configure your waste collection source(s)](#configuring-waste-collection-schedules).
+7. [Configure your waste collection sensor(s)](#configuring-waste-collection-schedules).
+8. Restart Home Assistant.
+
+## Manual Installation
+
+1. Navigate to the [waste_collection_schedule](https://github.com/mampfes/hacs_waste_collection_schedule/tree/master/custom_components) directory.
+2. Copy the `waste_collection_schedule` folder (including all files and subdirectories) to your Home Assistant `config/custom_components/` directory.
+3. [Configure your waste collection source(s)](#configuring-waste-collection-schedules).
+4. [Configure your waste collection sensor(s)](#configuring-waste-collection-schedules).
+5. Restart Home Assistant.
+
+# Configuring Waste Collection Schedules
+
+To use Waste Collection Schedules, additional entries need to be made in your `configuration.yaml` file. The required entries are:
+
+1. Configuring source(s)
+
+ For each service provider, a source has to be added to the configuration. The source takes care of the arguments required to get the correct information from the service provider's web page, e.g. district, city, street, house number, etc.
+
+ If you have to fetch data from multiple service providers, you have to add multiple sources. You can also add the same service provider multiple times. This only makes sense if you use it with different arguments, e.g. you are looking to display waste collection schedules for multiple districts served by the same provider.
+
+2. Configuring sensor(s)
+
+ Sensors are used to visualize the retrieved information, e.g. waste type, next collection date, or number of days to next collection. The sensor state (which can be shown in a Lovelace/Mushroom cards) can be customized using templates. For example, you can display the collection type only, or the next collection date, or a combination of all available information.
+
+ You can also add multiple sensors per source if you are going to display the information in separate entities. For example, if you want each waste type to have its own entity, you can add one sensor per collection type.
+
+## Configuring Source(s)
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: SOURCE
+ args:
+ arg1: ARG1
+ arg2: ARG2
+ arg3: ARG3
+ customize:
+ - type: TYPE
+ alias: ALIAS
+ show: SHOW
+ icon: ICON
+ picture: PICTURE
+ use_dedicated_calendar: USE_DEDICATED_CALENDAR
+ dedicated_calendar_title: DEDICATED_CALENDAR_TITLE
+ calendar_title: CALENDAR_TITLE
+ fetch_time: FETCH_TIME
+ random_fetch_time_offset: RANDOM_FETCH_TIME_OFFSET
+ day_switch_time: DAY_SWITCH_TIME
+ separator: SEPARATOR
+```
+
+| Parameter | Type | Requirement | Description |
+|-----|-----|-----|-----|
+| sources: | | required | Contains information for the service provider being used |
+| name: | string | required | name of the service provider source to use. Should be the same as the source filename, but without the `.py` extension. See the [README](/README.md#supported-service-providers) for supported service providers |
+| args: | various | required | source-specific arguments provided to service provider to unambiguously identify the collection schedule to return. Depending on the service provider, some arguments may be mandatory, and some may be optional. See individual sources for more details |
+| customize: | | optional | Can be used to customise data retrieved from a source |
+| type: | string | required | The identity of the waste type as returned from the source |
+| alias: | string | optional | A more readable, or user-friendly, name for the type of waste being collected. Default is `None` |
+| show: | boolean | optional | Show (`True`) or hide (`False`) collections of this specific waste type. Default is `True` |
+| icon: | string | optional | Icon to use for this specific waste type. Icons from the Home Assistant mdi icon set can be used. Default is `None`. |
+| picture: | string | optional | string representation of the path to a picture used to represent this specific waste type. Default is `None` |
+| use_dedicated_calendar: | boolean | optional | Creates a calendar dedicated to this specific waste type. Default is `False` |
+| dedicated_calendar_title: | string | optional | A more readable, or user-friendly, name for this specific waste calendar object. If nothing is provided, the name returned by the source will be used |
+| fetch_time: | time | optional | representation of the time of day in "HH:MM" that Home Assistant polls service provider for latest collection schedule. If no time is provided, the default of "01:00" is used |
+| random_fetch_time_offset: | int | optional | randomly offsets the `fetch_time` by up to _int_ minutes. Can be used to distribute Home Assistant fetch commands over a longer time frame to avoid peak loads at service providers |
+| day_switch_time: | time | optional | time of the day in "HH:MM" that Home Assistant dismisses the current entry and moves to the next entry. If no time if provided, the default of "10:00" is used. |
+| separator: | string | optional | Used to join entries if the multiple values for a single day are returned by the source. If no value is entered, the default of ", " is used |
+
+## Configuring source sensor(s)
+
+Add the following lines to your `configuration.yaml` file:
+
+```yaml
+sensor:
+ - platform: waste_collection_schedule
+ source_index: SOURCE_INDEX
+ name: NAME
+ details_format: DETAILS_FORMAT
+ count: COUNT
+ leadtime: LEADTIME
+ value_template: VALUE_TEMPLATE
+ date_template: DATE_TEMPLATE
+ add_days_to: ADD_DAYS_TO
+ types:
+ - Waste Type 1
+ - Waste Type 2
+```
+
+| Parameter | Type | Requirement | Description |
+|--|--|--|--|
+| platform | | required | waste_collection_schedule |
+| source_index | int | optional | Used to assign a sensor to a specific source. Only needed if multiple sources are defined. The first source defined is source_index 0, the second source_index 1, etc. If no value is supplied, the default of 0 is used |
+| name | string | required | The name Home Assistant used for this sensor |
+| details_format | string | optional | Specifies the format used to display info in Home Assistant's _more info_ pop-up. Valid values are: `"upcoming"`, `"appointment_types"` and `"generic"`. If no value is supplied, the default of "upcoming" is used. See [options for details_format](#options-for-details_format-parameter) for more details |
+| count | int | optional | Limits Home Assistant's _more info_ popup to displaying the next _int_ collections |
+| leadtime | int | optional | Limits Home Assistant's _more info_ popup to only displaying collections happening within the next _leadtime_ days|
+| value_template | string | optional | Uses Home Assistant templating to format the state information of an entity. See [template variables](#template-variables-for-value_template-and-date_template-parameters) for further details |
+| date_template | string | optional | Uses Home Assistant templating to format the dates appearing within the _more info_ popup information of an entity. See [template variables](#template-variables-for-value_template-and-date_template-parameters) for further details |
+| add_days_to | boolean | optional | Adds a `daysTo` attribute to the source entity state containing the number of days to the next collection |
+| types | list of strings | optional | Used to filter waste types. The sensor will only display collections matching these waste types |
+
+## Options for _details_format_ parameter
+
+Possible choices:
+
+| upcoming | appointment_types | generic |
+|--|--|--|
+| shows a list of upcoming collections |shows a list of waste types and their next collection date | provides all attributes as generic Python data types. |
+|  |  |  |
+
+## Template variables for _value_template_ and _date_template_ parameters
+
+The following variables can be used within `value_template` and `date_template`:
+
+| Variable | Description | Type |Comments |
+|--|--|--|--|
+| `value.date` | Collection date | [datetime.date](https://docs.python.org/3/library/datetime.html#datetime.date) | Use [strftime](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) to format the output |
+| `value.daysTo` | Days to collection | int | 0 = today, 1 = tomorrow, etc |
+| `value.types` | Waste types | list of strings | Use `join` filter to join types |
+
+## HomeAssistant Service to manually trigger update
+
+If you want to trigger a manual update of the sources, you can call the service:
+
+`waste_collection_schedule.fetch_data`
+
+Normally the configuration option 'fetch_time' is used to do this periodically.
+
+## Further Help
+
+For a full example, see [custom_components/waste_collection_schedule/waste_collection_schedule/source/example.py](/custom_components/waste_collection_schedule/waste_collection_schedule/source/example.py).
+
+For other examples on how to configure source(s) and sensor(s), see the [FAQ](/doc/faq.md).
diff --git a/doc/licence.md b/doc/licence.md
new file mode 100644
index 00000000..5e5cb598
--- /dev/null
+++ b/doc/licence.md
@@ -0,0 +1,23 @@
+
+
+# MIT License
+
+Copyright (c) 2020 Steffen Zimmermann
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/doc/online.md b/doc/online.md
new file mode 100644
index 00000000..beed334a
--- /dev/null
+++ b/doc/online.md
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+# Waste Collection Schedule Online
+
+
+## Community Forum
+
+
+
+The main discussion thread on Home Assistant's Community forum can be found [here](https://community.home-assistant.io/t/waste-collection-schedule-framework/186492).
+
+## YouTube
+
+There are some videos on YouTube:
+
+- [Bunte Mülltonnenerinnerung mit Home Assistant](https://youtu.be/MzQgARDvRww) (German language)
+- [Abfall Kalender in Home Assistant mit Erinnerung in Home Assistant](https://youtu.be/aCKLKGYiA7w) (German language)
+
+Note: These videos were **not** created by the developer of this component and therefore may be outdated. If you have questions about this component, please create an issue here on GitHub. Do not ask your question in the YouTube comments because any answers may not be correct.
diff --git a/doc/page_template.md b/doc/page_template.md
new file mode 100644
index 00000000..2965be78
--- /dev/null
+++ b/doc/page_template.md
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+# PAGE TITLE GOES HERE
+
+
+Asperiores et ratione similique sapiente impedit fuga. Ullam nihil cupiditate ut aliquam non dolorem qui. Rerum ipsa esse amet ipsam omnis et aut laboriosam. Quo dolorem veniam eius doloribus sint aut. Minus placeat quis corporis. Ipsam soluta quidem reprehenderit aspernatur sit sed.
+
+## SOME SUB-TITLE
+
+Repudiandae sequi sint tenetur quia perferendis quod amet nulla. Eum sed id quam nobis modi aut nulla libero. Veniam accusantium quia asperiores expedita.
+
+### A SUB-SUB-TITLE
+
+Officiis iure et et et. Recusandae quia hic est in in exercitationem est praesentium. Alias dolores adipisci eum.
+
+### ANOTHER SUB-SUB-TITLE
+
+Velit unde voluptatem quo nisi voluptatum doloribus beatae. Perferendis voluptatem eos ut et quidem culpa. Accusantium consequatur necessitatibus non.
+
+## AND ANOTHER SUB-TITLE
+
+Vitae animi tempora voluptatem doloribus est voluptate qui. Nihil quia numquam voluptates. Aut saepe quia doloribus. Quidem ea non nihil sit cum. Voluptates aperiam quod molestiae non et velit dolorem eos.
diff --git a/doc/source/a_region_ch.md b/doc/source/a_region_ch.md
index 73d9d3fa..1f0ce6d5 100644
--- a/doc/source/a_region_ch.md
+++ b/doc/source/a_region_ch.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**municipality**
+**municipality**
*(string) (required)*
-**district**
+**district**
*(string) (optional)*
Some municipalities (like Rorschach) are separated into districts for several waste types (e.g. `Hauskehricht` and `Papier, Karton`).
diff --git a/doc/source/abfall_io.md b/doc/source/abfall_io.md
index 019c647d..cb89caf2 100644
--- a/doc/source/abfall_io.md
+++ b/doc/source/abfall_io.md
@@ -22,22 +22,22 @@ waste_collection_schedule:
### Configuration Variables
-**key**
+**key**
*(hash) (required)*
-**f_id_kommune**
+**f_id_kommune**
*(integer) (required)*
-**f_id_bezirk**
+**f_id_bezirk**
*(integer) (optional)*
-**f_id_strasse**
+**f_id_strasse**
*(integer) (required)*
-**f_id_strasse_hnr**
+**f_id_strasse_hnr**
*(string) (optional)*
-**f_abfallarten**
+**f_abfallarten**
*(list of integer) (optional)*
## Example
diff --git a/doc/source/abfall_neunkirchen_siegerland_de.md b/doc/source/abfall_neunkirchen_siegerland_de.md
index 9c60b2cb..aaca8eac 100644
--- a/doc/source/abfall_neunkirchen_siegerland_de.md
+++ b/doc/source/abfall_neunkirchen_siegerland_de.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**strasse**
+**strasse**
*(string) (required)*
## Example
diff --git a/doc/source/abfall_zollernalbkreis_de.md b/doc/source/abfall_zollernalbkreis_de.md
index c9536fff..4b95eba7 100644
--- a/doc/source/abfall_zollernalbkreis_de.md
+++ b/doc/source/abfall_zollernalbkreis_de.md
@@ -26,13 +26,13 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(integer) (optional)*
-**types**
+**types**
*(list of string) (required)*
## Example
@@ -67,6 +67,6 @@ Another way get the source arguments is to extract the arguments from the websit
2. Enter your data, but don't click on "ICS Download" so far!
3. Open the Developer Tools (Ctrl + Shift + I) and open the `Network` tab.
4. Now click the "ICS Download" button.
-5. You should see (amongst other's) one POST entry to Host https://www.abfallkalender-zak.de/ labeled `/` in the network recording.
+5. You should see (amongst other's) one POST entry to Host `https://www.abfallkalender-zak.de/` labeled `/` in the network recording.
6. Select `/` on the left hand side and click on Request on the right hand side.
7. At the `Form Data` you can find the values for `city` and `street` etc..
diff --git a/doc/source/abfallnavi_de.md b/doc/source/abfallnavi_de.md
index ddda77da..960cd109 100644
--- a/doc/source/abfallnavi_de.md
+++ b/doc/source/abfallnavi_de.md
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**service**
+**service**
*(string) (required)*
-**ort**
+**ort**
*(string) (required)*
-**strasse**
+**strasse**
*(string) (required)*
-**hausnummer**
+**hausnummer**
*(string) (optional)*
## Example
diff --git a/doc/source/abfalltermine_forchheim_de.md b/doc/source/abfalltermine_forchheim_de.md
index 71eb3e76..7bab897b 100644
--- a/doc/source/abfalltermine_forchheim_de.md
+++ b/doc/source/abfalltermine_forchheim_de.md
@@ -15,16 +15,15 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**area**
+**area**
*(string) (required)*
### How to get the source arguments
The arguments can be found on [abfalltermine-forchheim.de](https://www.abfalltermine-forchheim.de/).
Search for your area. Use the part in front of the dash as `city` argument and the part behind it as `area` argument. Do not insert additional spaces.
-
**Examples**
Forchheim - Bamberger Straße (nördlich der Adenauerallee)
@@ -33,10 +32,10 @@ Forchheim - Bamberger Straße (nördlich der Adenauerallee)
city: Forchheim
area: Bamberger Straße (nördlich der Adenauerallee)
```
-
+
Dormitz - Dormitz
```yaml
city: Dormitz
area: Dormitz
-```
\ No newline at end of file
+```
diff --git a/doc/source/alw_wf_de.md b/doc/source/alw_wf_de.md
index ef71cb3d..eea1ce21 100644
--- a/doc/source/alw_wf_de.md
+++ b/doc/source/alw_wf_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**ort**
+**ort**
*(string) (required)*
-**strasse**
+**strasse**
*(string) (required)*
## Example
@@ -34,7 +34,7 @@ waste_collection_schedule:
## How to get the source arguments
-1. Go to the calendar at https://www.alw-wf.de/index.php/abfallkalender.
+1. Go to the [calendar](https://www.alw-wf.de/index.php/abfallkalender).
2. Select your location in the drop down menus.
- Notice: The page reloads after selecting `Ort`, so wait for that before selecting `Straße`.
3. Copy the **exact** values from the 2 drop down menus as `ort` and `strasse` in the source configuration.
diff --git a/doc/source/art_trier_de.md b/doc/source/art_trier_de.md
index e32706cf..c31274c9 100644
--- a/doc/source/art_trier_de.md
+++ b/doc/source/art_trier_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**district**
+**district**
_(string) (required)_
-**zip_code**
+**zip_code**
_(string) (required)_
## Example
@@ -26,7 +26,7 @@ _(string) (required)_
```yaml
waste_collection_schedule:
sources:
- - name: cochem_zell_online_de
+ - name: art_trier_de
args:
district: "Wittlich, Marktplatz"
zip_code: "54516"
diff --git a/doc/source/ashfield_gov_uk.md b/doc/source/ashfield_gov_uk.md
new file mode 100644
index 00000000..4852e217
--- /dev/null
+++ b/doc/source/ashfield_gov_uk.md
@@ -0,0 +1,63 @@
+# Ashfield District Council
+
+Support for schedules provided by [Ashfield District Council](https://www.ashfield.gov.uk/), serving Ashfield district in Nottinghshire, UK.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: ashfield_gov_uk
+ args:
+ uprn: UNIQUE_PROPERTY_REFERENCE_NUMBER
+ post_code: POST_CODE
+ name: HOUSE_NAME
+ number: HOUSE_NUMBER
+```
+
+### Configuration Variables
+
+### Configuration Variables
+
+**uprn**
+*(string) (optional)*
+
+This is required if you do not supply any other options. (Using this removes the need to do an address look up web request)
+
+**name**
+*(string) (optional)*
+
+This is required if you supply a Postcode and do not have a house number.
+
+**number**
+*(string) (optional)*
+
+This is required if you supply a Postcode and have a house number.
+
+**post_code**
+*(string) (optional)*
+
+This is required if you do not supply a UPRN. Single space between 1st and 2nd part of postcode is optional.
+
+#### How to find your `UPRN`
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+Otherwise you can inspect the web requests the Ashfield District Council website makes when entering in your postcode and then selecting your address.
+
+## Example using UPRN
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: ashfield_gov_uk
+ args:
+ uprn: 100032105121
+```
+
+## Example using Address lookup
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: ashfield_gov_uk
+ args:
+ post_code: "NG17 8DA"
+ name: "Ashfield District Council"
+```
\ No newline at end of file
diff --git a/doc/source/aucklandcouncil_govt_nz.md b/doc/source/aucklandcouncil_govt_nz.md
index b5836373..a71cde8f 100644
--- a/doc/source/aucklandcouncil_govt_nz.md
+++ b/doc/source/aucklandcouncil_govt_nz.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**area_number**
+**area_number**
*(string) (required)*
## Example
@@ -31,6 +31,6 @@ waste_collection_schedule:
The source argument is the area number from Auckland Council site:
-- Open your collection days page by entering your address [on the Auckland Council collection day finder](https://www.aucklandcouncil.govt.nz/rubbish-recycling/rubbish-recycling-collections/Pages/rubbish-recycling-collection-days.aspx)
-- Look for 'an' parameter in your browser URL, e.g. https://www.aucklandcouncil.govt.nz/rubbish-recycling/rubbish-recycling-collections/Pages/collection-day-detail.aspx?an=12342306525
+- Open your collection days page by entering your address [on the Auckland Council collection day finder](https://www.aucklandcouncil.govt.nz/rubbish-recycling/rubbish-recycling-collections/Pages/rubbish-recycling-collection-days.aspx)
+- Look for 'an' parameter in your browser URL, e.g. `https://www.aucklandcouncil.govt.nz/rubbish-recycling/rubbish-recycling-collections/Pages/collection-day-detail.aspx?an=12342306525`
- In this example the area number is `12342306525`.
diff --git a/doc/source/avl_ludwigsburg_de.md b/doc/source/avl_ludwigsburg_de.md
deleted file mode 100644
index bbd7a2fc..00000000
--- a/doc/source/avl_ludwigsburg_de.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# AVL Ludwigsburg
-
-Support for schedules provided by [avl-ludwigsburg.de](https://www.avl-ludwigsburg.de) located in Baden Württemberg, Germany.
-
-## Configuration via configuration.yaml
-
-```yaml
-waste_collection_schedule:
- sources:
- - name: avl_ludwigsburg_de
- args:
- city: Ludwigsburg
- street: Bahnhofstraße
-```
-
-### Configuration Variables
-
-**city**
-*(string) (required)*
-
-**street**
-*(string) (optional - depending on city)*
-
-## How to get the source arguments
-
-Check [avl-ludwigsburg.de Abfallkalender](https://www.avl-ludwigsburg.de/privatkunden/termine/abfallkalender/) if you only need the city e.g. Möglingen or if you need an additional street name e.g. in Ludwigsburg.
\ No newline at end of file
diff --git a/doc/source/aw_harburg_de.md b/doc/source/aw_harburg_de.md
index 42b4c654..8f656507 100644
--- a/doc/source/aw_harburg_de.md
+++ b/doc/source/aw_harburg_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**level_1**
+**level_1**
*(string) (required)*
-**level_2**
+**level_2**
*(string) (required)*
-**level_3**
+**level_3**
*(string) (optional - depending on level_2)*
## Example
@@ -36,7 +36,6 @@ waste_collection_schedule:
level_2: "Evendorf"
```
-
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/awb_bad_kreuznach_de.md b/doc/source/awb_bad_kreuznach_de.md
index 71d6c44c..538ad3f9 100644
--- a/doc/source/awb_bad_kreuznach_de.md
+++ b/doc/source/awb_bad_kreuznach_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**ort**
+**ort**
*(string) (required)*
-**strasse**
+**strasse**
*(string) (required)*
-**nummer**
+**nummer**
*(integer) (required)*
## Example
diff --git a/doc/source/awb_es_de.md b/doc/source/awb_es_de.md
index cb8b7d70..afd95786 100644
--- a/doc/source/awb_es_de.md
+++ b/doc/source/awb_es_de.md
@@ -15,12 +15,12 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## How to get the source arguments
-Visit (Abfuhrtermine)[`https://www.awb-es.de/abfuhr/abfuhrtermine/__Abfuhrtermine.html`] and search for your address. The `city` and `street` argument should exactly match the autocomplete result.
+Visit [Abfuhrtermine](`https://www.awb-es.de/abfuhr/abfuhrtermine/__Abfuhrtermine.html`) and search for your address. The `city` and `street` argument should exactly match the autocomplete result.
diff --git a/doc/source/awb_oldenburg_de.md b/doc/source/awb_oldenburg_de.md
index 05759f81..dfc07e34 100644
--- a/doc/source/awb_oldenburg_de.md
+++ b/doc/source/awb_oldenburg_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
## Example
diff --git a/doc/source/awbkoeln_de.md b/doc/source/awbkoeln_de.md
index 7c0ed621..e04a0caf 100644
--- a/doc/source/awbkoeln_de.md
+++ b/doc/source/awbkoeln_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street_code**
+**street_code**
*(string) (required)*
-**building_number**
+**building_number**
*(string) (required)*
## Example
diff --git a/doc/source/awido_de.md b/doc/source/awido_de.md
index 5501c077..24db4d3e 100644
--- a/doc/source/awido_de.md
+++ b/doc/source/awido_de.md
@@ -1,6 +1,6 @@
# AWIDO based services
-Cubefour AWIDO is a platform for waste schedules, which has several German cities and districts as customers. The homepage of the company is https://www.awido-online.de/.
+Cubefour AWIDO is a platform for waste schedules, which has several German cities and districts as customers. The homepage of the company is [https://www.awido-online.de/](https://www.awido-online.de/).
## Configuration via configuration.yaml
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**customer**
+**customer**
*(string) (required)*
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(integer) (optional, depends on customer)*
-**housenumber**
+**housenumber**
*(integer) (optional, depends on customer)*
## Example
diff --git a/doc/source/awn_de.md b/doc/source/awn_de.md
index c4b295a0..475c89ac 100644
--- a/doc/source/awn_de.md
+++ b/doc/source/awn_de.md
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(integer) (required)*
-**address_suffix**
+**address_suffix**
*(string) (optional) (default: "")*
## Example
@@ -45,4 +45,4 @@ waste_collection_schedule:
## How to get the source arguments
These values are the location you want to query for. Make sure, the writing is exactly as it is on [https://www.awn-online.de/abfuhrtermine](https://www.awn-online.de/abfuhrtermine). Typos will result in an parsing error which is printed in the log. As `house_number` expects a numeric input, address suffixes have to be provided via the `address_suffix` argument.
-`address_suffix` could be for example a alpha-numeric character "A" or a additional house number like "/1".
\ No newline at end of file
+`address_suffix` could be for example a alpha-numeric character "A" or a additional house number like "/1".
diff --git a/doc/source/awr_de.md b/doc/source/awr_de.md
index 4fbeaf19..397633a0 100644
--- a/doc/source/awr_de.md
+++ b/doc/source/awr_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## Example
diff --git a/doc/source/awsh_de.md b/doc/source/awsh_de.md
index 10ff6651..48ec014c 100644
--- a/doc/source/awsh_de.md
+++ b/doc/source/awsh_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## Example
diff --git a/doc/source/banyule_vic_gov_au.md b/doc/source/banyule_vic_gov_au.md
index 310ebdb7..b3a39435 100644
--- a/doc/source/banyule_vic_gov_au.md
+++ b/doc/source/banyule_vic_gov_au.md
@@ -1,5 +1,8 @@
# Banyule City Council
+**NOTE: Source is not working any more due to anti-scraping features:
+**
+
Support for schedules provided by [Banyule City Council](https://www.banyule.vic.gov.au/binday). This implementation is heavily based upon the Stonnington City Council parser, as both interfaces appear to use the same back-end.
## Configuration via configuration.yaml
@@ -14,10 +17,10 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (optional)*
-**geolocation_id**
+**geolocation_id**
*(string) (optional)*
At least one argument must be provided.
diff --git a/doc/source/belmont_wa_gov_au.md b/doc/source/belmont_wa_gov_au.md
index e3fa379e..1f807c08 100644
--- a/doc/source/belmont_wa_gov_au.md
+++ b/doc/source/belmont_wa_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**address**
+**address**
*(string) (required)*
## Example
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to get the source arguments
-Visit the [Belmont City Council Waste and Recycling](https://www.belmont.wa.gov.au/live/at-your-place/bins,-waste-and-recycling) page and search for your address. The arguments should exactly match the results of the property.
\ No newline at end of file
+Visit the [Belmont City Council Waste and Recycling](https://www.belmont.wa.gov.au/live/at-your-place/bins,-waste-and-recycling) page and search for your address. The arguments should exactly match the results of the property.
diff --git a/doc/source/berlin_recycling_de.md b/doc/source/berlin_recycling_de.md
index 9ab0ae29..d785160b 100644
--- a/doc/source/berlin_recycling_de.md
+++ b/doc/source/berlin_recycling_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**username**
+**username**
*(string) (required)*
-**password**
+**password**
*(string) (required)*
## Example
@@ -26,7 +26,7 @@ waste_collection_schedule:
```yaml
waste_collection_schedule:
sources:
- - name: bsr_de
+ - name: berlin_recycling_de
args:
username: My User Name
password: My Password
diff --git a/doc/source/bielefeld_de.md b/doc/source/bielefeld_de.md
index 9c0b0ef0..16854356 100644
--- a/doc/source/bielefeld_de.md
+++ b/doc/source/bielefeld_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(integer) (required)*
-**address_suffix**
+**address_suffix**
*(string) (optional) (default: "")*
## Example
@@ -38,5 +38,5 @@ waste_collection_schedule:
## How to get the source arguments
-These values are the location you want to query for. Make sure, the writing is exactly as it is on [https://anwendungen.bielefeld.de/WasteManagementBielefeld/WasteManagementServlet?SubmitAction=wasteDisposalServices](https://anwendungen.bielefeld.de/WasteManagementBielefeld/WasteManagementServlet?SubmitAction=wasteDisposalServices). Typos will result in an parsing error which is printed in the log. As `house_number` expects a numeric input, address suffixes have to be provided via the `address_suffix` argument.
-`address_suffix` could be for example a alpha-numeric character "A" or a additional house number like "/1".
\ No newline at end of file
+These values are the location you want to query for. Make sure, the writing is exactly as it is on `https://anwendungen.bielefeld.de/WasteManagementBielefeld/WasteManagementServlet?SubmitAction=wasteDisposalServices]`. Typos will result in an parsing error which is printed in the log. As `house_number` expects a numeric input, address suffixes have to be provided via the `address_suffix` argument.
+`address_suffix` could be for example a alpha-numeric character "A" or a additional house number like "/1".
diff --git a/doc/source/bmv_at.md b/doc/source/bmv_at.md
index 3e5343cb..025156fa 100644
--- a/doc/source/bmv_at.md
+++ b/doc/source/bmv_at.md
@@ -20,17 +20,14 @@ Copy the values for `Ort`, `Straße` and `Hausnummer` into the configuration. Do
### Configuration Variables
-**ORT**
-*(string) (required)*
-City
+**ORT**
+*(string) (required)*
-**STRASSE**
-*(string) (required)*
-Street
+**STRASSE**
+*(string) (required)*
-**HAUSNUMMER**
-*(string) (required)*
-Housenumber
+**HAUSNUMMER**
+*(string) (required)*
## Examples
diff --git a/doc/source/bracknell_forest_gov_uk.md b/doc/source/bracknell_forest_gov_uk.md
index 49ab4142..aa41c9fe 100644
--- a/doc/source/bracknell_forest_gov_uk.md
+++ b/doc/source/bracknell_forest_gov_uk.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**post_code**
+**post_code**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
## Example
diff --git a/doc/source/bradford_gov_uk.md b/doc/source/bradford_gov_uk.md
index 10a2a003..a5a29a0c 100644
--- a/doc/source/bradford_gov_uk.md
+++ b/doc/source/bradford_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
diff --git a/doc/source/braintree_gov_uk.md b/doc/source/braintree_gov_uk.md
index 7854e6de..6560384e 100644
--- a/doc/source/braintree_gov_uk.md
+++ b/doc/source/braintree_gov_uk.md
@@ -1,4 +1,4 @@
-# Bracknell Forest Council
+# Braintree District Council
Support for schedules provided by [Braintree District Council](https://www.braintree.gov.uk/xfp/form/554), serving Braintree, UK.
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**post_code**
+**post_code**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
## Example
diff --git a/doc/source/breckland_gov_uk.md b/doc/source/breckland_gov_uk.md
new file mode 100644
index 00000000..95c8b2c5
--- /dev/null
+++ b/doc/source/breckland_gov_uk.md
@@ -0,0 +1,54 @@
+# Breckland Council
+
+Support for schedules provided by [Breckland Council](https://www.breckland.gov.uk/mybreckland)
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: breckland_gov_uk
+ args:
+ postcode: POSTCODE
+ address: ADDRESS
+ prn: UPRN
+```
+
+### Configuration Variables
+
+**POSTCODE**
+*(string) (optional)*
+
+**ADDRESS**
+*(string) (optional)*
+
+**UPRN**
+*(string) (optional)*
+
+## Examples
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: breckland_gov_uk
+ args:
+ postcode: "IP22 2LJ"
+ address: "glen travis"
+```
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: breckland_gov_uk
+ args:
+ uprn: "10011977093"
+```
+
+If uprn is provided, only uprn is used. Otherwise postcode and address are required.
+
+You can find all relevant information at [Breckland Council](https://www.breckland.gov.uk/mybreckland) homepage. Use the POSTCODE -> click find address.
+Choose your address. Please only use the first part of your address. If you got an error, use less characters from address.
+
+## How to find your UPRN
+
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to [Find My Address](https://www.findmyaddress.co.uk/) and providng your address details.
diff --git a/doc/source/brisbane_qld_gov_au.md b/doc/source/brisbane_qld_gov_au.md
index 84b0f29c..a6958f2e 100644
--- a/doc/source/brisbane_qld_gov_au.md
+++ b/doc/source/brisbane_qld_gov_au.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
diff --git a/doc/source/bsr_de.md b/doc/source/bsr_de.md
index 71ab7e97..9c8ac66c 100644
--- a/doc/source/bsr_de.md
+++ b/doc/source/bsr_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**abf_strasse**
+**abf_strasse**
*(string) (required)*
-**abf_hausnr**
+**abf_hausnr**
*(string) (required)*
## Example
diff --git a/doc/source/buergerportal_de.md b/doc/source/buergerportal_de.md
new file mode 100644
index 00000000..340a0fd6
--- /dev/null
+++ b/doc/source/buergerportal_de.md
@@ -0,0 +1,75 @@
+# Bürgerportal
+
+Source for waste collection in multiple service areas.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: buergerportal_de
+ args:
+ operator: OPERATOR
+ district: DISTRICT
+ subdistrict: SUBDISTRICT
+ street: STREET_NAME
+ number: HOUSE_NUMBER
+ show_volume: SHOW_VOLUME
+```
+
+## Supported Operators
+
+- `alb_donau`:
+- `biedenkopf`:
+- `cochem_zell`:
+
+### Configuration Variables
+
+**operator**\
+_(string) (required)_
+
+**district**\
+_(string) (required)_
+
+**street**\
+_(string) (required)_
+
+**number**\
+_(string|int) (required)_
+
+**subdistrict**\
+_(string) (optional) (default: null)_
+
+**show_volume**\
+_(boolean) (optional) (default: false)_
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: buergerportal_de
+ args:
+ operator: cochem_zell
+ district: Bullay
+ subdistrict: Bullay
+ street: Layenweg
+ number: 3
+```
+
+## How to get the source arguments
+
+1. Open the URL of your operator and click on the menu option `Abfuhrkalender` in the left sidebar.
+2. Select your `district` (Ort). _Note_: If your district contains two values separated by a comma, you also have to specify the `subdistrict` (Ortsteil): Enter the first part into the field `district` and the second part into the field `subdistrict`. This is necessary even if your `district` and `subdistrict` have the same value (e.g., `Bullay, Bullay`). Subdistrict may only be left empty if there is no comma in the field value.
+3. Select your `street` (Straße).
+4. Select your `number` (Hausnummer).
+
+All parameters are _case-sensitive_.
+
+## Notes on Container Volumes
+
+By default, this sources does not differentiate between different container sizes.
+If your operator collects large containers (1000 l) on different dates than smaller ones (e.g., 120 l or 240 l), you may set `show_volume: true` in your configuration.
+If you do, the volume will be added to the waste type.
+For example, the collection `Bio` with a volume of 120 l would then be shown as `Bio (120 l)`.
+With this additional information, you can adjust all waste collections to your needs by making use of a source's [`customize` option](../installation.md#configuring-sources).
diff --git a/doc/source/c_trace_de.md b/doc/source/c_trace_de.md
index 39d23bc3..20c66d44 100644
--- a/doc/source/c_trace_de.md
+++ b/doc/source/c_trace_de.md
@@ -50,4 +50,17 @@ This source requires the name of a `service` which is specific to your municipal
|Municipality|service|
|-|-|
|Bremen|`bremenabfallkalender`|
-|AWB Landkreis Augsburg|`augsburglandkreis`|
\ No newline at end of file
+|AWB Landkreis Augsburg|`augsburglandkreis`|
+|WZV Kreis Segeberg|`segebergwzv-abfallkalender`|
+
+## Tip
+
+If your waste-service has an online-tool where you can get an ical or CSV-File, you can extract the needed `service` from the URL of the files.
+
+
+
+Link for above image: https://web.c-trace.de/segebergwzv-abfallkalender/(S(ebi2zcbvfeqp0za3ofnepvct))/abfallkalender/cal/2023?Ort=Bad%20Segeberg&Strasse=Am%20Wasserwerk&Hausnr=2&abfall=0|1|2|3|4|5|6|7|
+
+From this Link you can extract the following parameters:
+
+web.c-trace.de/`service`/some-id/abfallkalender/cal/year?Ort=`ort`&Strasse=`strasse`&Hausnr=`hausnummer`...
diff --git a/doc/source/cambridge_gov_uk.md b/doc/source/cambridge_gov_uk.md
index 3fe67289..9c9fa50c 100644
--- a/doc/source/cambridge_gov_uk.md
+++ b/doc/source/cambridge_gov_uk.md
@@ -16,13 +16,12 @@ waste_collection_schedule:
### Configuration Variables
-**POST_CODE**
+**POST_CODE**
*(string) (required)*
-**NUMBER**
+**NUMBER**
*(string) (required)*
-
## Example
```yaml
diff --git a/doc/source/campbelltown_nsw_gov_au.md b/doc/source/campbelltown_nsw_gov_au.md
index e9ce6941..c66d42ec 100644
--- a/doc/source/campbelltown_nsw_gov_au.md
+++ b/doc/source/campbelltown_nsw_gov_au.md
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**post_code**
+**post_code**
*(string) (required)*
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
diff --git a/doc/source/canadabay_nsw_gov_au.md b/doc/source/canadabay_nsw_gov_au.md
index 036bb409..57db14e1 100644
--- a/doc/source/canadabay_nsw_gov_au.md
+++ b/doc/source/canadabay_nsw_gov_au.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
diff --git a/doc/source/canterbury_gov_uk.md b/doc/source/canterbury_gov_uk.md
index 8bae0d02..09e07912 100644
--- a/doc/source/canterbury_gov_uk.md
+++ b/doc/source/canterbury_gov_uk.md
@@ -16,13 +16,12 @@ waste_collection_schedule:
### Configuration Variables
-**POST_CODE**
+**POST_CODE**
*(string) (required)*
-**NUMBER**
+**NUMBER**
*(string) (required)*
-
## Examples
```yaml
@@ -33,7 +32,7 @@ waste_collection_schedule:
post_code: "ct68ru"
number: "63"
```
-
+
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/ccc_govt_nz.md b/doc/source/ccc_govt_nz.md
index 324e0f6d..1e53a9e0 100644
--- a/doc/source/ccc_govt_nz.md
+++ b/doc/source/ccc_govt_nz.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**address**
+**address**
*(string) (required)*
## Bin Names example - Garbage, Recycle & Organic
diff --git a/doc/source/cheshire_east_gov_uk.md b/doc/source/cheshire_east_gov_uk.md
index 3f2c899c..dbf80b65 100644
--- a/doc/source/cheshire_east_gov_uk.md
+++ b/doc/source/cheshire_east_gov_uk.md
@@ -23,15 +23,15 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
--- or ---
-**postcode**
+**postcode**
*(string) (required)*
-**name_number**
+**name_number**
*(string) (required)*
## Examples
diff --git a/doc/source/chesterfield_gov_uk.md b/doc/source/chesterfield_gov_uk.md
index eb5e4e30..2f62038e 100644
--- a/doc/source/chesterfield_gov_uk.md
+++ b/doc/source/chesterfield_gov_uk.md
@@ -14,12 +14,13 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
This is required to unambiguously identify the property.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -30,4 +31,4 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
diff --git a/doc/source/cochem_zell_online_de.md b/doc/source/cochem_zell_online_de.md
deleted file mode 100644
index 8b2ee087..00000000
--- a/doc/source/cochem_zell_online_de.md
+++ /dev/null
@@ -1,34 +0,0 @@
-# Cochem-Zell
-
-Support for schedules provided by .
-
-## Configuration via configuration.yaml
-
-```yaml
-waste_collection_schedule:
- sources:
- - name: cochem_zell_online_de
- args:
- district: DISTRICT
-```
-
-### Configuration Variables
-
-**district**
-_(string) (required)_
-
-## Example
-
-```yaml
-waste_collection_schedule:
- sources:
- - name: cochem_zell_online_de
- args:
- district: "Zell-Stadt"
-```
-
-## How to get the source arguments
-
-1. Open .
-2. Click on the selection field named `Ortsteil`.
-3. Enter the name _with correct capitalization_ in the argument `district`.
diff --git a/doc/source/colchester_gov_uk.md b/doc/source/colchester_gov_uk.md
index 4e10beb7..ca5682b2 100644
--- a/doc/source/colchester_gov_uk.md
+++ b/doc/source/colchester_gov_uk.md
@@ -14,10 +14,11 @@ waste_collection_schedule:
### Configuration Variables
-**llpgid**
+**llpgid**
*(string) (required)*
#### How to find your `llpgid` code
+
The LLPDID code can be found in the URL after entering your postcode and selecting your address on the [Colchester Your recycling calendar page](https://www.colchester.gov.uk/your-recycling-calendar/). The URL in your browser URL bar should look like `https://www.colchester.gov.uk/your-recycling-calendar/?start=true&step=1&llpgid=1197e725-3c27-e711-80fa-5065f38b5681`.
## Example
@@ -28,4 +29,4 @@ waste_collection_schedule:
- name: colchester_gov_uk
args:
llpgid: "1197e725-3c27-e711-80fa-5065f38b5681"
-```
\ No newline at end of file
+```
diff --git a/doc/source/cornwall_gov_uk.md b/doc/source/cornwall_gov_uk.md
index 9350dbb4..b1799e4f 100644
--- a/doc/source/cornwall_gov_uk.md
+++ b/doc/source/cornwall_gov_uk.md
@@ -17,13 +17,13 @@ waste_collection_schedule:
### Configuration Variables
-**postcode**
+**postcode**
*(string) (optional)*
-**hournameornumber**
+**hournameornumber**
*(string) (optional)*
-**uprn**
+**uprn**
*(string) (optional)*
Either the postcode and housenameornumber or the UPRN should be supplied in the arguments
@@ -42,4 +42,4 @@ waste_collection_schedule:
## How to find your UPRN
-An easy way to discover your Unique Property Reference Number (UPRN) is by going to [Find My Address](https://www.findmyaddress.co.uk/) and providng your address details.
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to [Find My Address](https://www.findmyaddress.co.uk/) and providng your address details.
diff --git a/doc/source/data_umweltprofis_at.md b/doc/source/data_umweltprofis_at.md
index 15bd4143..3d7f78b3 100644
--- a/doc/source/data_umweltprofis_at.md
+++ b/doc/source/data_umweltprofis_at.md
@@ -4,8 +4,7 @@ Support for schedules provided by [Umweltprofis.at](https://www.umweltprofis.at)
## Configuration via configuration.yaml
-You need to generate your personal XML link before you can start using this source. Go to [https://data.umweltprofis.at/opendata/AppointmentService/index.aspx](https://data.umweltprofis.at/opendata/AppointmentService/index.aspx) and fill out the form. At the end
-at step 6 you get a link to a XML file. Copy this link and paste it to configuration.yaml as seen below.
+You need to generate your personal XML link before you can start using this source. Go to [https://data.umweltprofis.at/opendata/AppointmentService/index.aspx](https://data.umweltprofis.at/opendata/AppointmentService/index.aspx) and fill out the form. At the end at step 6 you get a link to a XML file. Copy this link and paste it to configuration.yaml as seen below.
```yaml
waste_collection_schedule:
@@ -17,7 +16,7 @@ waste_collection_schedule:
### Configuration Variables
-**xmlurl**
+**xmlurl**
*(URL) (required)*
## Example
@@ -28,4 +27,4 @@ waste_collection_schedule:
- name: data_umweltprofis_at
args:
xmlurl: https://data.umweltprofis.at/opendata/AppointmentService/AppointmentService.asmx/GetTermineForLocationSecured?Key=TEMPKeyabvvMKVCic0cMcmsTEMPKey&StreetNr=124972&HouseNr=Alle&intervall=Alle
-```
\ No newline at end of file
+```
diff --git a/doc/source/derby_gov_uk.md b/doc/source/derby_gov_uk.md
index ed502ff2..69cd8763 100644
--- a/doc/source/derby_gov_uk.md
+++ b/doc/source/derby_gov_uk.md
@@ -6,6 +6,7 @@ city of Derby, UK.
## Configuration via configuration.yaml
(recommended)
+
```yaml
waste_collection_schedule:
sources:
@@ -27,13 +28,13 @@ waste_collection_schedule:
### Configuration Variables
-**premises_id**
+**premises_id**
*(int) (required if post_code not provided)*
-**post_code**
+**post_code**
*(string) (required if premises_id not provided)*
-**house_number**
+**house_number**
*(int) (required if premises_id not provided)*
## Example
diff --git a/doc/source/egn_abfallkalender_de.md b/doc/source/egn_abfallkalender_de.md
index 304ed574..85c13ca8 100644
--- a/doc/source/egn_abfallkalender_de.md
+++ b/doc/source/egn_abfallkalender_de.md
@@ -19,19 +19,19 @@ The arguments can be found above the calendar after generating one [here](https:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
City, extracted from the displayed address.
-**district**
+**district**
*(string) (required)*
District, extracted from the displayed address.
-**street**
+**street**
*(string) (required)*
Street, extracted from the displayed address.
-**housenumber**
+**housenumber**
*(string) (required)*
Housenumber, extracted from the displayed address.
diff --git a/doc/source/elmbridge_gov_uk.md b/doc/source/elmbridge_gov_uk.md
index d714e020..845cc547 100644
--- a/doc/source/elmbridge_gov_uk.md
+++ b/doc/source/elmbridge_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
This is required to unambiguously identify the property.
@@ -72,7 +72,7 @@ Trying to convert all this into a schedule of dates for each specific waste col
* It assumes the week-commencing dates are for the current year.
* This'll cause problems in December as upcoming January collections will have been assigned dates in the past.
* Some clunky logic can deal with this:
- * If a date in less than 1 month in the past, it doesn't matter as the collection will have recently occured.
+ * If a date in less than 1 month in the past, it doesn't matter as the collection will have recently occurred.
* If a date is more than 1 month in the past, assume it's an incorrectly assigned date and increments the year by 1.
* Once that's been done, offset the week-commencing dates to match day of the week indicated for each waste collection type.
diff --git a/doc/source/environmentfirst_co_uk.md b/doc/source/environmentfirst_co_uk.md
index b6ef2154..35d32f5e 100644
--- a/doc/source/environmentfirst_co_uk.md
+++ b/doc/source/environmentfirst_co_uk.md
@@ -17,27 +17,28 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (optional) (preferred method)*
This is required if you do not supply any other options. Using a UPRN removes the need to do an address look up using web requests.
-**post_code**
+**post_code**
*(string) (optional)*
This is required if you do not supply a UPRN. Single space between 1st and 2nd part of postcode is optional.
-**number**
+**number**
*(string) (optional)*
This is required if you supply a Postcode and have a house number.
-**name**
+**name**
*(string) (optional)*
This is required if you supply a Postcode and you have a house name rather than a house number.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -47,6 +48,7 @@ waste_collection_schedule:
```
## Example using Address lookup (Postcode and house number)
+
```yaml
waste_collection_schedule:
sources:
@@ -57,6 +59,7 @@ waste_collection_schedule:
```
## Example using Address lookup (Postcode and house name)
+
```yaml
waste_collection_schedule:
sources:
@@ -68,6 +71,6 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
-Otherwise you can inspect the web requests on the [Environment First](https://www.environmentfirst.co.uk/) having searched using your address details. Your UPRN is the collection of digits at the end of the URL, for example: *https://www.environmentfirst.co.uk/house.php?uprn=`100060091178`*
+Otherwise you can inspect the web requests on the [Environment First](https://www.environmentfirst.co.uk/) having searched using your address details. Your UPRN is the collection of digits at the end of the URL, for example: `https://www.environmentfirst.co.uk/house.php?uprn=100060091178`
diff --git a/doc/source/erlangen_hoechstadt_de.md b/doc/source/erlangen_hoechstadt_de.md
index 49d21c04..909a20f9 100644
--- a/doc/source/erlangen_hoechstadt_de.md
+++ b/doc/source/erlangen_hoechstadt_de.md
@@ -1,5 +1,6 @@
# Erlangen-Höchstadt
-Support for Landkreis [Erlangen-Höchstadt]() located in Bavaria, Germany.
+
+Support for Landkreis Erlangen-Höchstadt located in Bavaria, Germany.
## Configuration via configuration.yaml
@@ -14,12 +15,12 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
### How to get the source arguments
-Visit [erlangen-hoechstadt.de](https://www.erlangen-hoechstadt.de/aktuelles/abfallkalender/) and search for your area. Use the value from the "Ort" dropdown as `city` argument and the one from "Ortsteil/Straße" as `street`. `street` is case sensitive!
\ No newline at end of file
+Visit [erlangen-hoechstadt.de](https://www.erlangen-hoechstadt.de/aktuelles/abfallkalender/) and search for your area. Use the value from the "Ort" dropdown as `city` argument and the one from "Ortsteil/Straße" as `street`. `street` is case sensitive!
diff --git a/doc/source/fccenvironment_co_uk.md b/doc/source/fccenvironment_co_uk.md
index 99aedccc..04d67c9c 100644
--- a/doc/source/fccenvironment_co_uk.md
+++ b/doc/source/fccenvironment_co_uk.md
@@ -1,6 +1,9 @@
# FCC Environment
-Consolidated support for schedules provided by ~60 local authorities. Currently supports [Harborough District Council](www.harborough.gov.uk)
+Consolidated support for schedules provided by ~60 local authorities. Currently supports:
+ - [Harborough District Council](https://www.harborough.gov.uk/)
+ - [South Hams](https://southhams.gov.uk/)
+ - [West Devon](https://www.westdevon.gov.uk/)
## Configuration via configuration.yaml
@@ -10,16 +13,27 @@ waste_collection_schedule:
- name: fccenvironment_co_uk
args:
uprn: UNIQUE_PROPERTY_REFERENCE_NUMBER
+ region: REGION_NAME
```
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
This is required to unambiguously identify the property.
+**region**
+*(string) (optional)*
+
+Defaults to `harborough`, should be one of:
+ - `harborough`
+ - `westdevon`
+ - `southhams`
+
+
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -28,6 +42,17 @@ waste_collection_schedule:
uprn: 100030493289
```
+## Example using UPRN and Region
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: fccenvironment_co_uk
+ args:
+ uprn: 10001326041
+ region: westdevon
+```
+
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
diff --git a/doc/source/geoport_nwm_de.md b/doc/source/geoport_nwm_de.md
new file mode 100644
index 00000000..80d012e3
--- /dev/null
+++ b/doc/source/geoport_nwm_de.md
@@ -0,0 +1,22 @@
+# Landkreis Nordwestmecklenburg
+
+Support for Landkreis Nordwestmecklenburg in Mecklenburg-Vorpommern, Germany.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: geoport_nwm_de
+ args:
+ district: DISTRICT
+```
+
+### Configuration Variables
+
+**district**
+*(string) (required)*
+
+### How to get the source arguments
+
+Visit [geoport-nwm.de](https://www.geoport-nwm.de/de/abfuhrtermine-geoportal.html) and search for your area. Copy the value from the text input field and use it for the `district` argument. It is case sensitive.
\ No newline at end of file
diff --git a/doc/source/goldcoast_qld_gov_au.md b/doc/source/goldcoast_qld_gov_au.md
new file mode 100644
index 00000000..d4a8f24b
--- /dev/null
+++ b/doc/source/goldcoast_qld_gov_au.md
@@ -0,0 +1,32 @@
+# Gold Coast City Council
+
+Support for schedules provided by [Gold Coast City Council](https://www.goldcoast.qld.gov.au/Services/Waste-recycling/Find-my-bin-day).
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: goldcoast_qld_gov_au
+ args:
+ street_address: STREET_ADDRESS
+```
+
+### Configuration Variables
+
+**street_address**
+*(string) (required)*
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: goldcoast_qld_gov_au
+ args:
+ street_address: 6/8 Henchman Ave Miami
+```
+
+## How to get the source arguments
+
+The Gold Coast API allows for a fuzzy search, so no need to get overly complicated with the address. However, you can visit the [Gold Coast City Council](https://www.goldcoast.qld.gov.au/Services/Waste-recycling/Find-my-bin-day) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
diff --git a/doc/source/grafikai_svara_lt.md b/doc/source/grafikai_svara_lt.md
index 3b256b08..40973bae 100644
--- a/doc/source/grafikai_svara_lt.md
+++ b/doc/source/grafikai_svara_lt.md
@@ -19,19 +19,19 @@ waste_collection_schedule:
### Configuration Variables
-**region**
+**region**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
-**district**
+**district**
*(string) (optional)*
-**waste_object_ids**
+**waste_object_ids**
*(list) (optional)*
## Example
diff --git a/doc/source/guildford_gov_uk.md b/doc/source/guildford_gov_uk.md
index 74b4b39b..83cf428a 100644
--- a/doc/source/guildford_gov_uk.md
+++ b/doc/source/guildford_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
@@ -28,4 +28,5 @@ waste_collection_schedule:
```
## How to get the source argument
-# Find the UPRN of your address using https://www.findmyaddress.co.uk/search
+
+Find the UPRN of your address using [https://www.findmyaddress.co.uk/search](https://www.findmyaddress.co.uk/search).
diff --git a/doc/source/horowhenua_govt_nz.md b/doc/source/horowhenua_govt_nz.md
index 275a24d1..db7baec8 100644
--- a/doc/source/horowhenua_govt_nz.md
+++ b/doc/source/horowhenua_govt_nz.md
@@ -17,21 +17,20 @@ waste_collection_schedule:
### Configuration Variables
-**post_code**
+**post_code**
*(string) (required)*
-**town**
+**town**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
-
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/huntingdonshire_gov_uk.md b/doc/source/huntingdonshire_gov_uk.md
index 924520de..4dcfdc01 100644
--- a/doc/source/huntingdonshire_gov_uk.md
+++ b/doc/source/huntingdonshire_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
diff --git a/doc/source/hvcgroep_nl.md b/doc/source/hvcgroep_nl.md
index 4419e30b..5d55dae8 100644
--- a/doc/source/hvcgroep_nl.md
+++ b/doc/source/hvcgroep_nl.md
@@ -1,6 +1,6 @@
# HVCGroep
-Support for schedules provided by [hvcgroep.nl](https://www.hvcgroep.nl/).
+Support for schedules provided by [hvcgroep.nl](https://www.hvcgroep.nl/) and other Dutch municipalities.
## Configuration via configuration.yaml
@@ -11,23 +11,66 @@ waste_collection_schedule:
args:
postal_code: POSTAL_CODE
house_number: HOUSE_NUMBER
+ service: SERVICE
```
### Configuration Variables
-**postal_code**
+**postal_code**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
+**service**
+*(string) (optional, default="hvcgroep")*
+
+Use one of the following codes as service code:
+
+- alphenaandenrijn
+- cranendonck
+- cyclusnv
+- dar
+- denhaag
+- gad
+- gemeenteberkelland
+- hvcgroep
+- lingewaard
+- middelburgvlissingen
+- mijnblink
+- peelenmaas
+- prezero
+- purmerend
+- rmn
+- schouwen-duiveland
+- spaarnelanden
+- stadswerk072
+- sudwestfryslan
+- venray
+- voorschoten
+- waalre
+- zrd
+
## Example
```yaml
+# hvgroep
waste_collection_schedule:
sources:
- name: hvcgroep_nl
args:
postal_code: 1713VM
house_number: 1
+ service: hvxgroep
+```
+
+```yaml
+# cyclusnv
+waste_collection_schedule:
+ sources:
+ - name: hvcgroep_nl
+ args:
+ postal_code: 2841ML
+ house_number: 1090
+ service: cyclusnv
```
diff --git a/doc/source/hygea_be.md b/doc/source/hygea_be.md
index 13d89b3f..14e74cfb 100644
--- a/doc/source/hygea_be.md
+++ b/doc/source/hygea_be.md
@@ -17,11 +17,11 @@ The arguments can be found in the URL after visiting the [the calendar](https://
### Configuration Variables
-**streetIndex**
+**streetIndex**
*(int)*
Street index, extracted from URL.
-**cp**
+**cp**
*(int)*
Postal code, extracted from URL.
diff --git a/doc/source/ics.md b/doc/source/ics.md
index 51c08d6c..987b3537 100644
--- a/doc/source/ics.md
+++ b/doc/source/ics.md
@@ -6,7 +6,7 @@ This source has been successfully tested with the following service providers:
### Belgium
-- [Limburg.net](https://www.limburg.net/afvalkalender) ([Example](#limburg-net))
+- [Limburg.net](https://www.limburg.net/afvalkalender) ([Example](#limburgnet))
### Germany
@@ -29,8 +29,8 @@ This source has been successfully tested with the following service providers:
#### Brandenburg
- - [Entsorgungsbetrieb Märkisch-Oderland](https://www.entsorgungsbetrieb-mol.de/de/tourenplaene.html) ([Example](#entsorgungsbetrieb-märkisch-oderland))
-
+- [Entsorgungsbetrieb Märkisch-Oderland](https://www.entsorgungsbetrieb-mol.de/de/tourenplaene.html) ([Example](#entsorgungsbetrieb-märkisch-oderland))
+
#### Hessen
- [Erlensee](https://sperrmuell.erlensee.de/?type=reminder) ([Example](#erlensee))
@@ -47,7 +47,7 @@ This source has been successfully tested with the following service providers:
#### Rheinland-Pfalz
- [Zweckverband Abfallwirtschaft A.R.T. Trier](https://www.art-trier.de)
- - Landkreis Vulkaneifel
+- Landkreis Vulkaneifel
#### Sachsen
@@ -96,7 +96,7 @@ waste_collection_schedule:
### Configuration Variables
-**url**
+**url**
*(string) (optional)*
URL to ICS / iCal file. File will be downloaded using a HTTP GET request.
@@ -105,26 +105,42 @@ If the original url contains the current year (4 digits including century), this
You have to specify either `url` or `file`!
-**file**
+**file**
*(string) (optional)*
Local ICS / iCal file name. Can be used instead of `url` for local files.
You have to specify either `url` or `file`!
-**offset**
+Notes:
+
+- Some users have reported that on their installation, only local files below the folder `config/www` are accessible by the system. Therefore place the ics file there.
+- If you are using relative paths (like in the example below), the path depends on which working directory your Home Assistant instance is running on. And this might depend on the installation method (core vs supervisor vs OS vs ...). Therefore check the log output, it tells you the current working directory.
+
+ This example should work for HAOS based installations:
+
+ ```yaml
+ # file location: config/www/calendar.ics
+ waste_collection_schedule:
+ sources:
+ - name: ics
+ args:
+ file: "www/calendar.ics"
+ ```
+
+**offset**
*(int) (optional, default: `0`)*
Offset in days which will be added to every start time. Can be used if the start time of the events in the ICS file are ahead of the actual date.
-**method**
+**method**
*(string) (optional, default: `GET`)*
Method to send the URL `params`.
Need to be `GET` or `POST`.
-**params**
+**params**
*(dict) (optional, default: None)*
Dictionary, list of tuples or bytes to send in the query string for the HTTP request.
@@ -136,24 +152,24 @@ This gets
Only used if `url` is specified, not used for `file`.
-**year_field**
+**year_field**
*(string) (optional, default: None)*
Field in params dictionary to be replaced with current year (4 digits including century).
-**regex**
+**regex**
*(string) (optional, default: None)*
Regular expression used to remove needless text from collection types.
See also example below.
-**split_at**
+**split_at**
*(string) (optional, default: None)*
Delimiter to split event summary into individual collection types. If your service puts multiple collections types which occur at the same day into a single event, this option can be used to separate the collection types again.
-**version**
+**version**
*(integer) (optional, default: 2)*
Selects the underlying ICS file parser:
@@ -161,7 +177,7 @@ Selects the underlying ICS file parser:
- version: 1 uses `recurring_ical_events`
- version: 2 uses `icalevents`
-**verify_ssl**
+**verify_ssl**
*(boolean) (optional, default: True)*
Allows do disable SSL certificate checks in case the HTTPS server of your service provider is misconfigured and therefore doesn't send intermediate certificates. Unlike browsers, python doesn't support automatic fetching of missing intermediates.
@@ -190,8 +206,7 @@ waste_collection_schedule:
#### Landkreis Vulkaneifel
-Go to the website:
-[service provider website](https://www.art-trier.de/eo/cms?_bereich=artikel&_aktion=suche_rubrik&idrubrik=1003&_sortierung=info3_asc_info4_asc&info1=54578&info2=)
+Go to the website: [art-trier.de](https://www.art-trier.de/eo/cms?_bereich=artikel&_aktion=suche_rubrik&idrubrik=1003&_sortierung=info3_asc_info4_asc&info1=54578&info2=)
select your Postal code.
@@ -421,12 +436,15 @@ waste_collection_schedule:
### EAW Rheingau Taunus
+1. Find your ICS link via the web page
+2. Remove the cHash attribute
+
```yaml
waste_collection_schedule:
sources:
- name: ics
args:
- url: "https://www.eaw-rheingau-taunus.de/abfallkalender/calendar.ics?streetid=1429"
+ url: "https://www.eaw-rheingau-taunus.de/abfallsammlung/abfuhrtermine/feed.ics?tx_vierwdeaw_garbagecalendarics%5Baction%5D=ics&tx_vierwdeaw_garbagecalendarics%5Bcontroller%5D=GarbageCalendar&tx_vierwdeaw_garbagecalendarics%5Bstreet%5D=38"
split_at: ","
```
@@ -622,14 +640,20 @@ waste_collection_schedule:
```
You can also compose the URL yourself. You need the following elements for this:
-1. the nis-code of your municipality: query the api with the name of your municipality;
example: https://limburg.net/api-proxy/public/afval-kalender/gemeenten/search?query=Peer
-```json
-[{"nisCode":"72030","naam":"Peer"}]
-```
-2. the number of your street: query the api with the nis-code of your municipality and the name of your street;
example: https://limburg.net/api-proxy/public/afval-kalender/gemeente/72030/straten/search?query=Zuidervest
-```json
-[{"nummer":"66536","naam":"Zuidervest"}]
-```
+
+1. the nis-code of your municipality: query the api with the name of your municipality; example:
+
+ ```json
+ [{"nisCode":"72030","naam":"Peer"}]
+ ```
+
+2. the number of your street: query the api with the nis-code of your municipality and the name of your street
+example:
+
+ ```json
+ [{"nummer":"66536","naam":"Zuidervest"}]
+ ```
+
3. your housenumber
```yaml
@@ -691,14 +715,14 @@ To use this you need to idenfify your Unique Property Reference Number (UPRN). T
1. The easiest way to discover your UPRN is by using https://www.findmyaddress.co.uk/ and entering in your address details.
-Or
+ Or
2. By looking at the URLs generated by the South Cambs web site:
- * 2.1. Go to [South Cambs Bin Collections](https://www.scambs.gov.uk/recycling-and-bins/find-your-household-bin-collection-day/)
- * 2.2 Enter your post code, then select your address from the dropdown. The results page will show your collection schedule.
- * 2.3. Your UPRN is the collection of digits at the end of the URL, for example: *scambs.gov.uk/recycling-and-bins/find-your-household-bin-collection-day/#id=`10008079869`*
- * 2.4. The iCal collection schedule can then be obtained using: *refusecalendarapi.azurewebsites.net/calendar/ical/`10008079869`*
+ 1. Go to [South Cambs Bin Collections](https://www.scambs.gov.uk/recycling-and-bins/find-your-household-bin-collection-day/)
+ 2. Enter your post code, then select your address from the dropdown. The results page will show your collection schedule.
+ 3. Your UPRN is the collection of digits at the end of the URL, for example: *scambs.gov.uk/recycling-and-bins/find-your-household-bin-collection-day/#id=`10008079869`*
+ 4. The iCal collection schedule can then be obtained using: *refusecalendarapi.azurewebsites.net/calendar/ical/`10008079869`*
```yaml
waste_collection_schedule:
@@ -722,15 +746,16 @@ sensor:
The Bromley council has a simple way to generate an iCal. All you need is the URL
- * Go to [Bromley Bin Collection](https://recyclingservices.bromley.gov.uk/waste)
- * Enter your post code, then select your address from the dropdown. The results page will show your collection schedule.
- * Your unique code can be found in the URL, eg: *recyclingservices.bromley.gov.uk/waste/`6261994`*
- * You can either use the following link and replace your ID, or copy the link address on the "Add to you calendar" link: *https://recyclingservices.bromley.gov.uk/waste/6261994/calendar.ics*
+- Go to [Bromley Bin Collection](https://recyclingservices.bromley.gov.uk/waste)
+- Enter your post code, then select your address from the dropdown. The results page will show your collection schedule.
+- Your unique code can be found in the URL, eg: *recyclingservices.bromley.gov.uk/waste/`6261994`*
+- You can either use the following link and replace your ID, or copy the link address on the "Add to you calendar" link:
Note:
- * This has been designed to break each bin collection into different sensors.
- * This was created at a property that has a garden waste subscription. You may need to amit that from the code
- * This display number of days until collection. Replace `value_template` with `date_template: '{{value.date.strftime("%A %d %B %Y")}}'` to display date of collection
+
+- This has been designed to break each bin collection into different sensors.
+- This was created at a property that has a garden waste subscription. You may need to amit that from the code
+- This display number of days until collection. Replace `value_template` with `date_template: '{{value.date.strftime("%A %d %B %Y")}}'` to display date of collection
```yaml
#Waste Collection - London Borough of Bromley
@@ -752,54 +777,7 @@ waste_collection_schedule:
args:
url: YOUR_URL
version: 2
-
-sensor:
- #Food Waste
- - platform: waste_collection_schedule
- source_index: 0
- name: Bins - Food Waste Collection # Change this to whatever you want the UI to display, sensor name will be similar
- types:
- - Food Waste
- details_format: appointment_types
- value_template: "{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}"
-
- #Garden Waste
- - platform: waste_collection_schedule
- source_index: 0
- name: Bins - Garden Waste Collection # Change this to whatever you want the UI to display, sensor name will be similar
- types:
- - Garden Waste
- details_format: appointment_types
- value_template: "{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}"
-
- #Mixed Recycling
- - platform: waste_collection_schedule
- source_index: 0
- name: Bins - Mixed Recycling Collection # Change this to whatever you want the UI to display
- types:
- - Mixed Recycling
- details_format: appointment_types
- value_template: "{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}"
-
- #General Waste
- - platform: waste_collection_schedule
- source_index: 0
- name: Bins - General Waste Collection # Change this to whatever you want the UI to display
- types:
- - General Waste
- details_format: appointment_types
- value_template: "{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}"
-
- #Paper & Cardboard
- - platform: waste_collection_schedule
- source_index: 0
- name: Bins - Cardboard Collection # Change this to whatever you want the UI to display
- types:
- - Cardboard
- details_format: appointment_types
- value_template: "{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}"
-
-```
+ ```
***
@@ -827,7 +805,7 @@ waste_collection_schedule:
args:
url: https://www.fes-frankfurt.de/abfallkalender/.ics
split_at: " \/ "
- regex: "(.*)\s+\|"
+ regex: "(.*)\\s+\\|"
```
-***
\ No newline at end of file
+***
diff --git a/doc/source/infeo_at.md b/doc/source/infeo_at.md
index 5a169f2a..b39f8577 100644
--- a/doc/source/infeo_at.md
+++ b/doc/source/infeo_at.md
@@ -1,6 +1,6 @@
-# INFEO based services
+# INFEO based services
-INFEO is a platform for waste schedules, which has several German, Austrian and Swiss cities and districts as customers. The homepage of the company is https://www.infeo.at/.
+INFEO is a platform for waste schedules, which has several German, Austrian and Swiss cities and districts as customers. The homepage of the company is [https://www.infeo.at/](https://www.infeo.at/).
## Configuration via configuration.yaml
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**customer**
+**customer**
*(string) (required)*
-**zone**
+**zone**
*(string) (required)*
## Example
@@ -45,33 +45,39 @@ If your provider is also using infeo.at you can just try to use the name of your
### zone
#### Bogenschuetz-Entsorgung.de
-- Go to your calendar at `https://www.bogenschuetz-entsorgung.de/images/wastecal/index-zone.html`.
+
+- Go to your [calendar](https://www.bogenschuetz-entsorgung.de/images/wastecal/index-zone.html).
- Browse through all the available years and check the naming of your desired zone and try to find what makes it unique.
- Put this unique string into `zone` of your configuration.
- It will just be checked if the calendar contains an entry that contains your keyword `zone`.
##### Example 1: Dettenhausen
+
- For 2022 it is: `Dettenhausen, Tübingen (Bebenhausen; Lustnau)`
- For 2023 it is: `Dettenhausen`
- Use `Dettenhausen` as zone
##### Example 2: Ofterdingen
+
- For 2022 it is: `Dußlingen, Ofterdingen`
- For 2023 it is: `Ofterdingen`
- Use `Ofterdingen` as zone
##### Example 3: Felldorf
+
- For 2022 it is: `Rottenburg (Bad Niedernau; Bieringen; Eckenweiler; Frommenhausen; Obernau; Schwalldorf), Starzach (Bierlingen; Börstingen; Felldorf; Sulzau; Wachendorf)`
- For 2023 it is: `Starzach (Bierlingen; Börstingen; Felldorf; Sulzau; Wachendorf)`
- Use `Felldorf` as zone
##### Example 4: Tübingen Innenstadt
+
- For 2022 it is: `Tübingen (Bezirk 4 - Innenstadt)`
- For 2023 it is: `Tübingen (Bezirk 4 - Innenstadt)`
- Use `Innenstadt` as zone
- Do NOT use `Tübingen` as it is used multiple times!
##### Example 5: Pfäffingen
+
- For 2022 it is: `Tübingen (Bühl; Hirschau; Kilchberg; Unterjesingen; Weilheim), Rottenburg (Kiebingen; Wurmlingen), Ammerbuch (Pfäffingen)`
- For 2023 it is: `Ammerbuch (Pfäffingen)`
- Use `Pfäffingen` as zone
diff --git a/doc/source/innerwest_nsw_gov_au.md b/doc/source/innerwest_nsw_gov_au.md
index c44e13b4..6a5a7bac 100644
--- a/doc/source/innerwest_nsw_gov_au.md
+++ b/doc/source/innerwest_nsw_gov_au.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
diff --git a/doc/source/ipswich_qld_gov_au.md b/doc/source/ipswich_qld_gov_au.md
index 198740bc..952ec443 100644
--- a/doc/source/ipswich_qld_gov_au.md
+++ b/doc/source/ipswich_qld_gov_au.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**suburb**
+**suburb**
*(string) (required)*
## Example
diff --git a/doc/source/jumomind_de.md b/doc/source/jumomind_de.md
index bff40164..f21bd7ff 100644
--- a/doc/source/jumomind_de.md
+++ b/doc/source/jumomind_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**service_id**
+**service_id**
*(string) (required)*
-**city_id**
+**city_id**
*(string) (required)*
-**area_id**
+**area_id**
*(string) (required)*
## Example
diff --git a/doc/source/kaev_niederlausitz_de.md b/doc/source/kaev_niederlausitz_de.md
index e28604b3..7c35ac3c 100644
--- a/doc/source/kaev_niederlausitz_de.md
+++ b/doc/source/kaev_niederlausitz_de.md
@@ -14,10 +14,9 @@ waste_collection_schedule:
### Configuration Variables
-**abf_suche**
+**abf_suche**
*(string) (required)*
-
## Example
```yaml
@@ -44,7 +43,6 @@ waste_collection_schedule:
abf_suche: "Staakow"
```
-
## How to get the source arguments
1. Go to your calendar at 1. Go to your calendar at [https://www.kaev.de/Info-und-Service/Tourenplan/Tourenplan-Abfalltermine.html](https://www.kaev.de/Info-und-Service/Tourenplan/Tourenplan-Abfalltermine.html).
diff --git a/doc/source/kingston_gov_uk.md b/doc/source/kingston_gov_uk.md
index ca607f34..c659c73a 100644
--- a/doc/source/kingston_gov_uk.md
+++ b/doc/source/kingston_gov_uk.md
@@ -1,4 +1,4 @@
-# Thr Royal Borough of Kingston Council
+# The Royal Borough of Kingston Council
Support for schedules provided by [The Royal Borough of Kingston Council](https://kingston-self.achieveservice.com/service/in_my_area?displaymode=collections).
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example using UPRN
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to get the source argument
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
diff --git a/doc/source/korneuburg_stadtservice_at.md b/doc/source/korneuburg_stadtservice_at.md
index 7c550765..1f23d171 100644
--- a/doc/source/korneuburg_stadtservice_at.md
+++ b/doc/source/korneuburg_stadtservice_at.md
@@ -16,27 +16,28 @@ waste_collection_schedule:
### Configuration Variables
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
-**teilgebiet**
+**teilgebiet**
*(string) (optional)*
### How to get the source arguments
+
The arguments can be found on [Stadtservice Korneuburg](https://www.korneuburg.gv.at/Rathaus/Buergerservice/Muellabfuhr).
Check if your address details are available on the official site. If not use something that is close by or the same region.
You can enter your region number (`teilgebiet`) directly to skip the step that determines your region based on your address.
Still some values need to be set for `street_name` and `street_number` which are then not used.
-
## Example
**First Entry**
+
```yaml
waste_collection_schedule:
sources:
@@ -45,7 +46,9 @@ waste_collection_schedule:
street_name: "Albrecht Dürer-Gasse"
street_number: 2
```
+
**Rathaus**
+
```yaml
waste_collection_schedule:
sources:
@@ -54,7 +57,9 @@ waste_collection_schedule:
street_name: Hauptplatz
street_number: 39
```
+
**Rathaus using Teilgebiet**
+
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/kuringgai_nsw_gov_au.md b/doc/source/kuringgai_nsw_gov_au.md
index 86aec35e..6416a108 100644
--- a/doc/source/kuringgai_nsw_gov_au.md
+++ b/doc/source/kuringgai_nsw_gov_au.md
@@ -17,21 +17,20 @@ waste_collection_schedule:
### Configuration Variables
-**post_code**
+**post_code**
*(string) (required)*
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
-
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/kwu_de.md b/doc/source/kwu_de.md
index a736045a..3fe69599 100644
--- a/doc/source/kwu_de.md
+++ b/doc/source/kwu_de.md
@@ -16,15 +16,15 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**number**
+**number**
*(string) (required)*
## How to get the source arguments
-Visit (Entsorgungskalender)[`https://www.kwu-entsorgung.de/?page_id=337`] and search for your address. The `city`, `street` and `number` argument should exactly match the autocomplete result.
+Visit [Entsorgungskalender](https://www.kwu-entsorgung.de/?page_id=337`) and search for your address. The `city`, `street` and `number` argument should exactly match the autocomplete result.
diff --git a/doc/source/landkreis_rhoen_grabfeld.md b/doc/source/landkreis_rhoen_grabfeld.md
index 90f7225b..d0ed4c80 100644
--- a/doc/source/landkreis_rhoen_grabfeld.md
+++ b/doc/source/landkreis_rhoen_grabfeld.md
@@ -22,12 +22,12 @@ waste_collection_schedule:
### Configuration Variables
-**district** and **city** can be used independently, they can also be omitted to get the calender for the whole rural district.
+**district** and **city** can be used independently, they can also be omitted to get the calendar for the whole rural district.
-**district**
+**district**
*(string)*
-**street**
+**street**
*(string)*
## Example
diff --git a/doc/source/landkreis_wittmund_de.md b/doc/source/landkreis_wittmund_de.md
index 22e1537e..766fa504 100644
--- a/doc/source/landkreis_wittmund_de.md
+++ b/doc/source/landkreis_wittmund_de.md
@@ -16,10 +16,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (optional)*
## Example
diff --git a/doc/source/lerum_se.md b/doc/source/lerum_se.md
index a75974bc..859e8e47 100644
--- a/doc/source/lerum_se.md
+++ b/doc/source/lerum_se.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/lewisham_gov_uk.md b/doc/source/lewisham_gov_uk.md
index 8f65871a..a7a0b377 100644
--- a/doc/source/lewisham_gov_uk.md
+++ b/doc/source/lewisham_gov_uk.md
@@ -17,31 +17,33 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (optional)*
This is required if you do not supply any other options. (Using this removes the need to do an address look up web request)
-**name**
+**name**
*(string) (optional)*
This is required if you supply a Postcode and do not have a house number.
-**number**
+**number**
*(string) (optional)*
This is required if you supply a Postcode and have a house number.
-**post_code**
+**post_code**
*(string) (optional)*
This is required if you do not supply a UPRN. Single space between 1st and 2nd part of postcode is optional.
#### How to find your `UPRN`
-An easy way to discover your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
Otherwise you can inspect the web requests the Peterborough Council website makes when entering in your postcode and then selecting your address.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -51,6 +53,7 @@ waste_collection_schedule:
```
## Example using Address lookup
+
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/lindau_ch.md b/doc/source/lindau_ch.md
index c36f5b68..98a6d370 100644
--- a/doc/source/lindau_ch.md
+++ b/doc/source/lindau_ch.md
@@ -15,7 +15,7 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
Choose one of the following list:
diff --git a/doc/source/lrasha_de.md b/doc/source/lrasha_de.md
index fdd418de..feb62a77 100644
--- a/doc/source/lrasha_de.md
+++ b/doc/source/lrasha_de.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**location**
+**location**
*(string) (required)*
## How to get the source arguments
diff --git a/doc/source/manchester_uk.md b/doc/source/manchester_uk.md
index 0fdf99b6..840331ac 100644
--- a/doc/source/manchester_uk.md
+++ b/doc/source/manchester_uk.md
@@ -16,7 +16,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
@@ -33,6 +33,4 @@ waste_collection_schedule:
The UPRN code can be found in the page by entering your postcode on the
[Manchester City Council Bin Collections page
-](https://www.manchester.gov.uk/bincollections/). When on the address list,
-View the source code for the page, and look for your address, the uprn will be
-shown as the value.
+](https://www.manchester.gov.uk/bincollections/). When on the address list, view the source code for the page, and look for your address, the uprn will be shown as the value.
diff --git a/doc/source/maroondah_vic_gov_au.md b/doc/source/maroondah_vic_gov_au.md
index 2c5d8522..15f33795 100644
--- a/doc/source/maroondah_vic_gov_au.md
+++ b/doc/source/maroondah_vic_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**address**
+**address**
*(string) (required)*
## Example
diff --git a/doc/source/meinawb_de.md b/doc/source/meinawb_de.md
new file mode 100644
index 00000000..12501305
--- /dev/null
+++ b/doc/source/meinawb_de.md
@@ -0,0 +1,46 @@
+# Abfallwirtschaftsbetrieb Landkreis Ahrweiler (AWB)
+
+Support for schedules provided by [Abfallwirtschaftsbetrieb Landkreis Ahrweiler](https://www.meinawb.de/) located in Rhineland Palatinate, Germany.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: meinawb_de
+ args:
+ city: CITY
+ street: STREET
+ house_number: HNR
+ address_suffix: HNR_SUFFIX
+```
+
+### Configuration Variables
+
+**city**
+*(string) (required)*
+
+**street**
+*(string) (required)*
+
+**house_number**
+*(integer) (required)*
+
+**address_suffix**
+*(string) (optional) (default: "")*
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: meinawb_de
+ args:
+ city: Oberzissen
+ street: Ackerstrasse
+ address_suffix: 1
+```
+
+## How to get the source arguments
+
+The arguments are your address. The input validation is a bit petty, so make sure you write it exactly like in the [web form](https://www.meinawb.de/abfuhrtermine). For troubleshooting, have a look in the home assistant logs.
diff --git a/doc/source/melton_vic_gov_au.md b/doc/source/melton_vic_gov_au.md
index a7b22fca..bfa51fbd 100644
--- a/doc/source/melton_vic_gov_au.md
+++ b/doc/source/melton_vic_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to get the source arguments
-Visit the [Melton City Council waste and recycling](https://www.melton.vic.gov.au/My-Area) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
\ No newline at end of file
+Visit the [Melton City Council waste and recycling](https://www.melton.vic.gov.au/My-Area) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
diff --git a/doc/source/middlesbrough_gov_uk.md b/doc/source/middlesbrough_gov_uk.md
index bd7cd23b..6298097a 100644
--- a/doc/source/middlesbrough_gov_uk.md
+++ b/doc/source/middlesbrough_gov_uk.md
@@ -1,4 +1,4 @@
-# Middlesbrough Council
+# Middlesbrough Council
Support for schedules provided by [Middlesbrough Council](https://www.middlesbrough.gov.uk/bin-collection-dates).
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example using UPRN
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to get the source argument
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
diff --git a/doc/source/miljoteknik_se.md b/doc/source/miljoteknik_se.md
index 964d439e..60458945 100644
--- a/doc/source/miljoteknik_se.md
+++ b/doc/source/miljoteknik_se.md
@@ -16,7 +16,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
@@ -40,4 +40,3 @@ The following waste types will be returned:
* "Mat, Brännbart, färgat glas, tidningar."
* "Plast, pappersförpackningar, ofärgat glas, metall."
-
diff --git a/doc/source/mrsc_vic_gov_au.md b/doc/source/mrsc_vic_gov_au.md
index b01afde5..69bcbc35 100644
--- a/doc/source/mrsc_vic_gov_au.md
+++ b/doc/source/mrsc_vic_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/muellmax_de.md b/doc/source/muellmax_de.md
index 5cfb9b8d..9622250e 100644
--- a/doc/source/muellmax_de.md
+++ b/doc/source/muellmax_de.md
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**service**
+**service**
*(string) (required)*
-**mm_frm_ort_sel**
+**mm_frm_ort_sel**
*(string) (optional)*
-**mm_frm_str_sel**
+**mm_frm_str_sel**
*(string) (optional)*
-**mm_frm_hnr_sel**
+**mm_frm_hnr_sel**
*(string) (optional)*
## Example
diff --git a/doc/source/muenchenstein_ch.md b/doc/source/muenchenstein_ch.md
deleted file mode 100644
index 6ecc64f2..00000000
--- a/doc/source/muenchenstein_ch.md
+++ /dev/null
@@ -1,38 +0,0 @@
-# Abfallsammlung Münchenstein, BL, Switzerland
-
-Support for schedules provided by [https://www.muenchenstein.ch/abfallsammlung](https://www.muenchenstein.ch/abfallsammlung).
-
-This source is just a slight modification of [@atrox06](https://github.com/atrox06)'s work for lindau_ch. So kudos to him.
-
-## Configuration via configuration.yaml
-
-```yaml
-waste_collection_schedule:
- sources:
- - name: muenchenstein_ch
- args:
- waste_district: DISTRICT
-
-```
-
-### Configuration Variables
-
-**waste_district**
-*(string) (required)*
-
-Valid options for waste_district:
-- Abfuhrkreis Ost
-- Abfuhrkreis West
-
-or use one the following IDs: 491 for "Ost", 492 for "West"
-
-## Example
-
-```yaml
-waste_collection_schedule:
- sources:
- - name: muenchenstein_ch
- args:
- waste_district: Abfuhrkreis West
-
-```
diff --git a/doc/source/nawma_sa_gov_au.md b/doc/source/nawma_sa_gov_au.md
index 3e97c82f..d684e119 100644
--- a/doc/source/nawma_sa_gov_au.md
+++ b/doc/source/nawma_sa_gov_au.md
@@ -17,13 +17,13 @@ waste_collection_schedule:
### Configuration Variables
-**suburb**
+**suburb**
*(string) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (optional)*
Only required if the street crosses multiple collection areas with different days.
diff --git a/doc/source/newcastle_gov_uk.md b/doc/source/newcastle_gov_uk.md
index 0e19477f..67eb2245 100644
--- a/doc/source/newcastle_gov_uk.md
+++ b/doc/source/newcastle_gov_uk.md
@@ -16,12 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
This is required to unambiguously identify the property.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -32,4 +33,4 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
diff --git a/doc/source/nillumbik_vic_gov_au.md b/doc/source/nillumbik_vic_gov_au.md
new file mode 100644
index 00000000..56876989
--- /dev/null
+++ b/doc/source/nillumbik_vic_gov_au.md
@@ -0,0 +1,32 @@
+# Nillumbik Shire Council
+
+Support for schedules provided by [Nillumbik Shire Council](https://www.nillumbik.vic.gov.au).
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: nillumbik_vic_gov_au
+ args:
+ street_address: STREET_ADDRESS
+```
+
+### Configuration Variables
+
+**street_address**
+*(string) (required)*
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: nillumbik_vic_gov_au
+ args:
+ street_address: 30 Crest Road, RESEARCH, 3095
+```
+
+## How to get the source arguments
+
+Visit the [Nillumbik Shire Council waste and recycling](https://www.nillumbik.vic.gov.au/Residents/Waste-and-recycling/Bin-collection/Check-my-bin-day) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
\ No newline at end of file
diff --git a/doc/source/nottingham_city_gov_uk.md b/doc/source/nottingham_city_gov_uk.md
index ccfd814b..5e7a637a 100644
--- a/doc/source/nottingham_city_gov_uk.md
+++ b/doc/source/nottingham_city_gov_uk.md
@@ -16,7 +16,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
diff --git a/doc/source/nsomerset_gov_uk.md b/doc/source/nsomerset_gov_uk.md
index 64d5a940..cb13df37 100644
--- a/doc/source/nsomerset_gov_uk.md
+++ b/doc/source/nsomerset_gov_uk.md
@@ -17,10 +17,10 @@ waste_collection_schedule:
### Configuration Variables
-**postcode**
+**postcode**
*(string) (required)*
-**uprn**
+**uprn**
*(string) (required)*
## Examples
diff --git a/doc/source/nuernberger_land_de.md b/doc/source/nuernberger_land_de.md
new file mode 100644
index 00000000..7179f30f
--- /dev/null
+++ b/doc/source/nuernberger_land_de.md
@@ -0,0 +1,35 @@
+# Abfuhrkalender Nürnberger Land
+
+Support for schedules provided by .
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: nuernberger_land_de
+ args:
+ id: ID
+```
+
+### Configuration Variables
+
+**id**
+_(integer) (required)_ : The unique 8-digit identifier of your street section
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: nuernberger_land_de
+ args:
+ id: 14579001
+```
+
+## How to get the source arguments
+
+1. Open .
+2. Fill out the filter fields on the page.
+3. Right click the button "Termine in den Kalender importieren" and select "Copy link address". You should get something like this `https://abfuhrkalender.nuernberger-land.de/waste_calendar/ical?id=14579001`
+4. Copy the id number at the end of the link to your configuration file.
diff --git a/doc/source/peterborough_gov_uk.md b/doc/source/peterborough_gov_uk.md
index 69c0fd06..a5827b18 100644
--- a/doc/source/peterborough_gov_uk.md
+++ b/doc/source/peterborough_gov_uk.md
@@ -17,31 +17,33 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (optional)*
This is required if you do not supply any other options. (Using this removes the need to do an address look up web request)
-**name**
+**name**
*(string) (optional)*
This is required if you supply a Postcode and do not have a house number.
-**number**
+**number**
*(string) (optional)*
This is required if you supply a Postcode and have a house number.
-**post_code**
+**post_code**
*(string) (optional)*
This is required if you do not supply a UPRN. Single space between 1st and 2nd part of postcode is optional.
#### How to find your `UPRN`
-An easy way to discover your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
Otherwise you can inspect the web requests the Peterborough Council website makes when entering in your postcode and then selecting your address.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -51,6 +53,7 @@ waste_collection_schedule:
```
## Example using Address lookup
+
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/pgh_st.md b/doc/source/pgh_st.md
index cd84b904..a78fb362 100644
--- a/doc/source/pgh_st.md
+++ b/doc/source/pgh_st.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**house_number**
+**house_number**
*(integer) (required)*
-**street_name**
+**street_name**
*(string) (required)*
-**zipcode**
+**zipcode**
*(integer) (required)*
## Example
diff --git a/doc/source/recycleapp_be.md b/doc/source/recycleapp_be.md
index 3d7155ba..419a649d 100644
--- a/doc/source/recycleapp_be.md
+++ b/doc/source/recycleapp_be.md
@@ -19,19 +19,19 @@ The source arguments are simply the values of the form elements on the homepage.
### Configuration Variables
-**postcode**
+**postcode**
*(int)*
Postal Code.
-**street**
+**street**
*(string)*
Street name.
-**house_number**
+**house_number**
*(int)*
House number
-**add_events**
+**add_events**
*(boolean)*
Add events (e.g. Repair Cafe) in addition to waste collections.
diff --git a/doc/source/recyclesmart_com.md b/doc/source/recyclesmart_com.md
index 5141928d..b5ec3ce9 100644
--- a/doc/source/recyclesmart_com.md
+++ b/doc/source/recyclesmart_com.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**email**
+**email**
*(string) (required)*
-**password**
+**password**
*(string) (required)*
## Example
diff --git a/doc/source/regioentsorgung_de.md b/doc/source/regioentsorgung_de.md
index 3feb0496..cfb5af59 100644
--- a/doc/source/regioentsorgung_de.md
+++ b/doc/source/regioentsorgung_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(string | number) (required)*
## Example
diff --git a/doc/source/republicservices_com.md b/doc/source/republicservices_com.md
index 5feca1c2..7653f06b 100644
--- a/doc/source/republicservices_com.md
+++ b/doc/source/republicservices_com.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to check the street address
-The street address can be tested [here](https://republicservices.com).
\ No newline at end of file
+The street address can be tested [here](https://republicservices.com).
diff --git a/doc/source/rh_entsorgung_de.md b/doc/source/rh_entsorgung_de.md
index 7242e9b0..f7433805 100644
--- a/doc/source/rh_entsorgung_de.md
+++ b/doc/source/rh_entsorgung_de.md
@@ -17,16 +17,16 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(integer) (required)*
-**address_suffix**
+**address_suffix**
*(string) (optional) (default: "")*
## Example
diff --git a/doc/source/richmondshire_gov_uk.md b/doc/source/richmondshire_gov_uk.md
index d1424739..f0425ad8 100644
--- a/doc/source/richmondshire_gov_uk.md
+++ b/doc/source/richmondshire_gov_uk.md
@@ -15,7 +15,7 @@ waste_collection_schedule:
### Configuration Variables
-**UPRN**
+**UPRN**
*(integer) (required)*
## Example
@@ -30,4 +30,4 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details. Or you can visit the Richmondshire page and use the address search. Right-click your entry in the house dropdown, choose Inspect, and copy the UPRN from the value
\ No newline at end of file
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details. Or you can visit the Richmondshire page and use the address search. Right-click your entry in the house dropdown, choose Inspect, and copy the UPRN from the value.
diff --git a/doc/source/rushmoor_gov_uk.md b/doc/source/rushmoor_gov_uk.md
index b223aabe..95a8142d 100644
--- a/doc/source/rushmoor_gov_uk.md
+++ b/doc/source/rushmoor_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
@@ -28,4 +28,5 @@ waste_collection_schedule:
```
## How to get the source argument
-# Find the UPRN of your address using https://www.findmyaddress.co.uk/search
+
+Find the UPRN of your address using [https://www.findmyaddress.co.uk/search](https://www.findmyaddress.co.uk/search).
diff --git a/doc/source/salford_gov_uk.md b/doc/source/salford_gov_uk.md
new file mode 100644
index 00000000..046bb370
--- /dev/null
+++ b/doc/source/salford_gov_uk.md
@@ -0,0 +1,36 @@
+# Salford City Council
+
+Support for schedules provided by [Salford City
+Council](https://www.salford.gov.uk/bins-and-recycling/bin-collection-days/), serving the
+city of Salford, UK.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: salford_gov_uk
+ args:
+ uprn: UPRN_CODE
+```
+
+### Configuration Variables
+
+**uprn**
+*(string) (required)*
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: salford_gov_uk
+ args:
+ uprn: "100011404886"
+```
+
+## How to get the source argument
+
+The UPRN code can be found by entering your postcode on the
+[Salford City Council bin collections days page
+](https://www.salford.gov.uk/bins-and-recycling/bin-collection-days/). After selecting your address from the list and waiting for the new page to load, the uprn will be shown in the address bar.
diff --git a/doc/source/sbazv_de.md b/doc/source/sbazv_de.md
index d959be9d..0e73a456 100644
--- a/doc/source/sbazv_de.md
+++ b/doc/source/sbazv_de.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**district**
+**district**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## Example
diff --git a/doc/source/scambs_gov_uk.md b/doc/source/scambs_gov_uk.md
index 4c009038..7e991acc 100644
--- a/doc/source/scambs_gov_uk.md
+++ b/doc/source/scambs_gov_uk.md
@@ -17,10 +17,10 @@ waste_collection_schedule:
### Configuration Variables
-**POST_CODE**
+**POST_CODE**
*(string) (required)*
-**NUMBER**
+**NUMBER**
*(string) (required)*
## Example
diff --git a/doc/source/seattle_gov.md b/doc/source/seattle_gov.md
index 17169349..4ee26744 100644
--- a/doc/source/seattle_gov.md
+++ b/doc/source/seattle_gov.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
-**prem_code**
+**prem_code**
*(string) (optional)*
## Example
diff --git a/doc/source/sector27_de.md b/doc/source/sector27_de.md
index e8831298..aeac17bf 100644
--- a/doc/source/sector27_de.md
+++ b/doc/source/sector27_de.md
@@ -19,10 +19,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## Example
diff --git a/doc/source/sheffield_gov_uk.md b/doc/source/sheffield_gov_uk.md
index 82aa8800..9bf39af3 100644
--- a/doc/source/sheffield_gov_uk.md
+++ b/doc/source/sheffield_gov_uk.md
@@ -14,12 +14,13 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (optional) (preferred method)*
This is required if you do not supply any other options. Using a UPRN removes the need to do an address look up using web requests.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -30,6 +31,6 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
-Otherwise you can inspect the URL on [Sheffield City Council's Waste Services](https://wasteservices.sheffield.gov.uk/) site having searched for and selected your address details. Your UPRN is the collection of digits at the end of the URL (before /calendar), for example: *https://wasteservices.sheffield.gov.uk/property/`100050938234`* or *https://wasteservices.sheffield.gov.uk/property/`100050938234`/calendar*
\ No newline at end of file
+Otherwise you can inspect the URL on [Sheffield City Council's Waste Services](https://wasteservices.sheffield.gov.uk/) site having searched for and selected your address details. Your UPRN is the collection of digits at the end of the URL (before /calendar), for example: `https://wasteservices.sheffield.gov.uk/property/100050938234` or `https://wasteservices.sheffield.gov.uk/property/100050938234/calendar`
diff --git a/doc/source/srvatervinning_se.md b/doc/source/srvatervinning_se.md
new file mode 100644
index 00000000..05c5c476
--- /dev/null
+++ b/doc/source/srvatervinning_se.md
@@ -0,0 +1,35 @@
+# SRV Återvinning
+
+Support for schedules provided by [SRV återvinning AB](https://www.srvatervinning.se/), Sweden.
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: srvatervinning_se
+ args:
+ address: address
+```
+
+### Configuration Variables
+
+**address**
+*(string) (required)*
+
+## Example
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: srvatervinning_se
+ args:
+ address: "Skansvägen"
+
+```
+
+## How to get the source arguments
+
+1. Go to your calendar at [SRV återvinning AB](https://www.srvatervinning.se/sophamtning/privat/hamtinformation-och-driftstorningar)
+2. Enter your address.
+3. Copy the exact values from the textboxes in the source configuration.
diff --git a/doc/source/ssam_se.md b/doc/source/ssam_se.md
index a3f1e88f..448031fb 100644
--- a/doc/source/ssam_se.md
+++ b/doc/source/ssam_se.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/stadt_willich_de.md b/doc/source/stadt_willich_de.md
index ac2ff7c8..6aaf3e8e 100644
--- a/doc/source/stadt_willich_de.md
+++ b/doc/source/stadt_willich_de.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
## How to get the source arguments
diff --git a/doc/source/stadtreinigung_dresden_de.md b/doc/source/stadtreinigung_dresden_de.md
index a0e8f7f7..70276151 100644
--- a/doc/source/stadtreinigung_dresden_de.md
+++ b/doc/source/stadtreinigung_dresden_de.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**standort**
+**standort**
*(string) (required)*
## Example
diff --git a/doc/source/stadtreinigung_hamburg.md b/doc/source/stadtreinigung_hamburg.md
index 2f1b83a3..7614fd5c 100644
--- a/doc/source/stadtreinigung_hamburg.md
+++ b/doc/source/stadtreinigung_hamburg.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**hnId**
+**hnId**
*(string) (required)*
## Example
diff --git a/doc/source/stadtreinigung_leipzig_de.md b/doc/source/stadtreinigung_leipzig_de.md
index d5bac15a..92b40c61 100644
--- a/doc/source/stadtreinigung_leipzig_de.md
+++ b/doc/source/stadtreinigung_leipzig_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
## Example
diff --git a/doc/source/stadtservice_bruehl_de.md b/doc/source/stadtservice_bruehl_de.md
index c3abeece..a17c7b17 100644
--- a/doc/source/stadtservice_bruehl_de.md
+++ b/doc/source/stadtservice_bruehl_de.md
@@ -15,9 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**strasse**
+**strasse**
*(string) (required)*
-**hnr**
+
+**hnr**
*(string) (required)*
## Example
diff --git a/doc/source/staedteservice_de.md b/doc/source/staedteservice_de.md
index 33f00cd1..1f943bf3 100644
--- a/doc/source/staedteservice_de.md
+++ b/doc/source/staedteservice_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street_number**
+**street_number**
*(string) (required)*
## Example
diff --git a/doc/source/static.md b/doc/source/static.md
index 61fc38f9..557f4bb2 100644
--- a/doc/source/static.md
+++ b/doc/source/static.md
@@ -20,40 +20,40 @@ waste_collection_schedule:
### Configuration Variables
-**TYPE**
+**TYPE**
*(string) (required)*
The type of this source.
-**DATES**
+**DATES**
*(list) (optional)*
A list of dates in format "YYYY-MM-DD" which should be added to the source.
Dates defined in this list will be added in addition to calculated dates from the recurrence and will not be affected by the exclude-list.
-**FREQUENCY**
+**FREQUENCY**
*(string) (optional)*
Defines the frequency of the recurrence. Must be one of "DAILY", "WEEKLY", "MONTHLY" or "YEARLY".
-**INTERVAL**
+**INTERVAL**
*(int) (optional, default: ```1```)*
Defines the interval of the recurrence.
-**START**
+**START**
*(string) (optional)*
Defines the start of the recurrence in the format "YYYY-MM-DD".
Required if *FREQUENCY* is set.
-**UNTIL**
+**UNTIL**
*(string) (optional)*
Defines the end of the recurrence in the format "YYYY-MM-DD".
Required if *FREQUENCY* is set.
-**EXCLUDES**
+**EXCLUDES**
*(list) (optional)*
A list of dates in format "YYYY-MM-DD" which should be excluded from the recurrence.
@@ -80,4 +80,4 @@ waste_collection_schedule:
dates: # Manually define dates that are not part of the recurrence
- '2022-07-28'
- '2022-09-22'
-```
\ No newline at end of file
+```
diff --git a/doc/source/stevenage_gov_uk.md b/doc/source/stevenage_gov_uk.md
index 2bfccac3..106b94fa 100644
--- a/doc/source/stevenage_gov_uk.md
+++ b/doc/source/stevenage_gov_uk.md
@@ -1,4 +1,4 @@
-# Stevenage Borough Council
+# Stevenage Borough Council
Support for schedules provided by [Stevenage Borough Council](https://www.stevenage.gov.uk/waste-and-recycling/your-bin-collections).
@@ -15,17 +15,18 @@ waste_collection_schedule:
### Configuration Variables
-**postcode**
+**postcode**
*(string) (required)*
Postcode of property. This is required. Stevenage Borough Council API does not support UKPRN. Single space between 1st and 2nd part of postcode is optional.
-**road**
+**road**
*(string) (required)*
Name of road property is in. This is required.
## Example
+
```yaml
waste_collection_schedule:
sources:
diff --git a/doc/source/stonnington_vic_gov_au.md b/doc/source/stonnington_vic_gov_au.md
index 8b80441d..1e9f1be5 100644
--- a/doc/source/stonnington_vic_gov_au.md
+++ b/doc/source/stonnington_vic_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/stuttgart_de.md b/doc/source/stuttgart_de.md
index 5e55194a..ad34b8fc 100644
--- a/doc/source/stuttgart_de.md
+++ b/doc/source/stuttgart_de.md
@@ -15,10 +15,10 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**streetnr**
+**streetnr**
*(string) (required)*
## Example
diff --git a/doc/source/sysav_se.md b/doc/source/sysav_se.md
index 4a00ae8b..65258a27 100644
--- a/doc/source/sysav_se.md
+++ b/doc/source/sysav_se.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/tewkesbury_gov_uk.md b/doc/source/tewkesbury_gov_uk.md
index cccea756..71ae38c1 100644
--- a/doc/source/tewkesbury_gov_uk.md
+++ b/doc/source/tewkesbury_gov_uk.md
@@ -14,10 +14,9 @@ waste_collection_schedule:
### Configuration Variables
-**POSTCODE**
+**POSTCODE**
*(string) (required)*
-
## Example
```yaml
diff --git a/doc/source/thehills_nsw_gov_au.md b/doc/source/thehills_nsw_gov_au.md
index 35e517fe..59252d09 100644
--- a/doc/source/thehills_nsw_gov_au.md
+++ b/doc/source/thehills_nsw_gov_au.md
@@ -16,13 +16,13 @@ waste_collection_schedule:
### Configuration Variables
-**suburb**
+**suburb**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
-**houseNo**
+**houseNo**
*(string) (required)*
## Example
diff --git a/doc/source/toronto_ca.md b/doc/source/toronto_ca.md
index 97f57f4e..7e4321b5 100644
--- a/doc/source/toronto_ca.md
+++ b/doc/source/toronto_ca.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/vasyd_se.md b/doc/source/vasyd_se.md
index 751f44a9..b6bd3d45 100644
--- a/doc/source/vasyd_se.md
+++ b/doc/source/vasyd_se.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
diff --git a/doc/source/waipa_nz.md b/doc/source/waipa_nz.md
index c8fa6583..487e65b6 100644
--- a/doc/source/waipa_nz.md
+++ b/doc/source/waipa_nz.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**address**
+**address**
*(string) (required)*
## Example
diff --git a/doc/source/walsall_gov_uk.md b/doc/source/walsall_gov_uk.md
index 698cf4fa..64dfe128 100644
--- a/doc/source/walsall_gov_uk.md
+++ b/doc/source/walsall_gov_uk.md
@@ -14,12 +14,13 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (optional) (preferred method)*
This is required if you do not supply any other options. Using a UPRN removes the need to do an address look up using web requests.
## Example using UPRN
+
```yaml
waste_collection_schedule:
sources:
@@ -30,6 +31,6 @@ waste_collection_schedule:
## How to find your `UPRN`
-An easy way to find your Unique Property Reference Number (UPRN) is by going to https://www.findmyaddress.co.uk/ and entering in your address details.
+An easy way to find your Unique Property Reference Number (UPRN) is by going to and entering in your address details.
-Otherwise you can inspect the web requests on [Walsall Council](https://www.environmentfirst.co.uk/) having searched for and selected your address details. Your UPRN is the collection of digits at the end of the URL, for example: *https://cag.walsall.gov.uk/BinCollections/GetBins?uprn=`100071103746`*
+Otherwise you can inspect the web requests on [Walsall Council](https://www.environmentfirst.co.uk/) having searched for and selected your address details. Your UPRN is the collection of digits at the end of the URL, for example: `https://cag.walsall.gov.uk/BinCollections/GetBins?uprn=100071103746`
diff --git a/doc/source/warszawa19115_pl.md b/doc/source/warszawa19115_pl.md
index 94d5a435..8f0d079c 100644
--- a/doc/source/warszawa19115_pl.md
+++ b/doc/source/warszawa19115_pl.md
@@ -14,10 +14,10 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (optional)*
-**geolocation_id**
+**geolocation_id**
*(string) (optional)*
At least one argument must be provided.
diff --git a/doc/source/was_wolfsburg_de.md b/doc/source/was_wolfsburg_de.md
index 6269f31d..38c7abf5 100644
--- a/doc/source/was_wolfsburg_de.md
+++ b/doc/source/was_wolfsburg_de.md
@@ -17,10 +17,10 @@ waste_collection_schedule:
### Configuration Variables
-**city**
+**city**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
## Example
diff --git a/doc/source/wastenet_org_nz.md b/doc/source/wastenet_org_nz.md
index 1cc01052..018c15b7 100644
--- a/doc/source/wastenet_org_nz.md
+++ b/doc/source/wastenet_org_nz.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**address**
+**address**
*(string) (required)*
## Example
diff --git a/doc/source/wellington_govt_nz.md b/doc/source/wellington_govt_nz.md
index b26ebe62..2d4b50d3 100644
--- a/doc/source/wellington_govt_nz.md
+++ b/doc/source/wellington_govt_nz.md
@@ -15,11 +15,11 @@ waste_collection_schedule:
### Configuration Variables
-**streetName**
-*(string)*
+**streetName**
+*(string)*
-**streetId**
-*(string)*
+**streetId**
+*(string)*
*One of the above is required*
diff --git a/doc/source/wermelskirchen_de.md b/doc/source/wermelskirchen_de.md
index a6aab9f6..dd28229c 100644
--- a/doc/source/wermelskirchen_de.md
+++ b/doc/source/wermelskirchen_de.md
@@ -29,10 +29,10 @@ waste_collection_schedule:
### Configuration Variables
-**street**
+**street**
*(string) (required)*
-**house_number**
+**house_number**
*(string) (required)*
## How to get the source arguments
diff --git a/doc/source/westberks_gov_uk.md b/doc/source/westberks_gov_uk.md
index 3e39be4c..c38cac29 100644
--- a/doc/source/westberks_gov_uk.md
+++ b/doc/source/westberks_gov_uk.md
@@ -17,13 +17,13 @@ waste_collection_schedule:
### Configuration Variables
-**postcode**
+**postcode**
_(string) (optional)_
-**hournameornumber**
+**hournameornumber**
_(string) (optional)_
-**uprn**
+**uprn**
_(string) (optional)_
Either the postcode _and_ housenameornumber or the UPRN should be supplied in the arguments
diff --git a/doc/source/wiltshire_gov_uk.md b/doc/source/wiltshire_gov_uk.md
index c0fffdd8..7222fc9c 100644
--- a/doc/source/wiltshire_gov_uk.md
+++ b/doc/source/wiltshire_gov_uk.md
@@ -17,10 +17,10 @@ waste_collection_schedule:
### Configuration Variables
-**postcode**
+**postcode**
*(string) (required)*
-**uprn**
+**uprn**
*(string) (required)*
Both the postcode and the UPRN should be supplied in the arguments.
@@ -38,4 +38,4 @@ waste_collection_schedule:
## How to find your UPRN
-An easy way to discover your Unique Property Reference Number (UPRN) is by going to [Find My Address](https://www.findmyaddress.co.uk/) and providng your address details.
\ No newline at end of file
+An easy way to discover your Unique Property Reference Number (UPRN) is by going to [Find My Address](https://www.findmyaddress.co.uk/) and providng your address details.
diff --git a/doc/source/wsz_moosburg_at.md b/doc/source/wsz_moosburg_at.md
index a76e4302..da8200f8 100644
--- a/doc/source/wsz_moosburg_at.md
+++ b/doc/source/wsz_moosburg_at.md
@@ -2,11 +2,11 @@
Support for schedules provided by [wsz-moosburg.at](https://wsz-moosburg.at).
-## Configuration via configuration.yaml
+## Configuration Variables
There are two options to configure this source.
-### Using the Address ID
+### 1. Using the Address ID
```yaml
waste_collection_schedule:
@@ -16,12 +16,10 @@ waste_collection_schedule:
address_id: ID
```
-#### Configuration Variables
-
-**address_id**
+**address_id**
*(integer) (required)* See the next section on how to obtain it.
-#### How to get the Address ID
+### How to get the Address ID
For this you will have to use a (desktop) browser with developer tools, e.g. Google Chrome:
@@ -33,7 +31,7 @@ For this you will have to use a (desktop) browser with developer tools, e.g. Goo
6. Select the last entry in the `Network` tab's list, it should be a number followed by `?include-public-holidays`, e.g. `69980?include-public-holidays`.
7. This number (e.g. `69980`) is what needs to be used as `address_id` in the configuration.
-### Using the full Address
+### 2. Using the full Address
```yaml
waste_collection_schedule:
@@ -45,17 +43,15 @@ waste_collection_schedule:
street: Straße
```
-#### Configuration Variables
-
Please note that exact spelling and casing matters.
-**municipal**
+**municipal**
*(string) (required)*
-**address**
+**address**
*(string) (required)*
-**street**
+**street**
*(string) (required)*
#### How to get the correct Address
@@ -65,6 +61,6 @@ In any web browser:
1. Open [https://wsz-moosburg.at/calendar](https://wsz-moosburg.at/calendar).
2. Select your `Gemeinde` from the list. This is the value for `municipal`.
3. Select your `Addresse` from the list. This is the value for `address`.
-4. There might be another step to select your `Straße`, but this depends on the address.
+4. There might be another step to select your `Straße`, but this depends on the address.
- If it's prompted to you, select that as well. This is the value for `street`.
- If it is not prompted, use the same value for `address` also for `street`.
diff --git a/doc/source/wuerzburg_de.md b/doc/source/wuerzburg_de.md
index 5a212007..d07e853d 100644
--- a/doc/source/wuerzburg_de.md
+++ b/doc/source/wuerzburg_de.md
@@ -17,10 +17,10 @@ waste_collection_schedule:
**district** and **street** can be used independently, only **one** is required. If set, priority will be given to **street**.
-**district**
+**district**
*(string) (required)* - if *street* is empty
-**street**
+**street**
*(string) (required)* - if *district* is empty
## Example
diff --git a/doc/source/wyndham_vic_gov_au.md b/doc/source/wyndham_vic_gov_au.md
index 578f80ec..5f920229 100644
--- a/doc/source/wyndham_vic_gov_au.md
+++ b/doc/source/wyndham_vic_gov_au.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**street_address**
+**street_address**
*(string) (required)*
## Example
@@ -29,4 +29,4 @@ waste_collection_schedule:
## How to get the source arguments
-Visit the [Wyndham City Council waste and recycling](https://digital.wyndham.vic.gov.au/myWyndham/) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
\ No newline at end of file
+Visit the [Wyndham City Council waste and recycling](https://digital.wyndham.vic.gov.au/myWyndham/) page and search for your address. The arguments should exactly match the street address shown in the autocomplete result.
diff --git a/doc/source/ximmio_nl.md b/doc/source/ximmio_nl.md
index 4de6bf18..960068f8 100644
--- a/doc/source/ximmio_nl.md
+++ b/doc/source/ximmio_nl.md
@@ -16,7 +16,7 @@ waste_collection_schedule:
### Configuration Variables
-**company**
+**company**
*(string) (required)*
Use one of the following codes as company code:
@@ -24,6 +24,7 @@ Use one of the following codes as company code:
- acv
- almere
- areareiniging
+- avalex
- avri
- bar
- hellendoorn
@@ -33,12 +34,13 @@ Use one of the following codes as company code:
- reinis
- twentemilieu
- waardlanden
+- westland
- ximmio
-**post_code**
+**post_code**
*(string) (required)*
-**house_number**
+**house_number**
*(integer) (required)*
## Example
diff --git a/doc/source/york_gov_uk.md b/doc/source/york_gov_uk.md
index 16042cd8..f644dcd0 100644
--- a/doc/source/york_gov_uk.md
+++ b/doc/source/york_gov_uk.md
@@ -14,7 +14,7 @@ waste_collection_schedule:
### Configuration Variables
-**uprn**
+**uprn**
*(string) (required)*
## Example
diff --git a/doc/source/zva_wmk_de.md b/doc/source/zva_wmk_de.md
new file mode 100644
index 00000000..1429c4e2
--- /dev/null
+++ b/doc/source/zva_wmk_de.md
@@ -0,0 +1,26 @@
+# Zweckverband Abfallwirtschaft Werra-Meißner-Kreis
+
+Support für Werra-Meißner-Kreis located in Hesse, Germany
+
+## Configuration via configuration.yaml
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: zva_wmk_de
+ args:
+ city: CITY
+ street: STREET
+```
+
+### Configuration Variables
+
+**city**
+*(string) (required)*
+
+**street**
+*(street) (required)*
+
+### How to get the source arguments
+
+Visit [zva-wmk.de](https://www.zva-wmk.de/termine/schnellsuche-2023) and search for your locality. Use the value from the "Ort" dropdown as `city` argument and the one from "Ortsteil/Straße" as `street` as shown.
diff --git a/doc/button-cards.png b/images/button-cards.png
similarity index 100%
rename from doc/button-cards.png
rename to images/button-cards.png
diff --git a/doc/calendar.png b/images/calendar.png
similarity index 100%
rename from doc/calendar.png
rename to images/calendar.png
diff --git a/doc/date-of-next-collections.png b/images/date-of-next-collections.png
similarity index 100%
rename from doc/date-of-next-collections.png
rename to images/date-of-next-collections.png
diff --git a/doc/days-to-next-collections.png b/images/days-to-next-collections.png
similarity index 100%
rename from doc/days-to-next-collections.png
rename to images/days-to-next-collections.png
diff --git a/doc/default-entity.png b/images/default-entity.png
similarity index 100%
rename from doc/default-entity.png
rename to images/default-entity.png
diff --git a/doc/more-info-appointment-types.png b/images/more-info-appointment-types.png
similarity index 100%
rename from doc/more-info-appointment-types.png
rename to images/more-info-appointment-types.png
diff --git a/doc/more-info-generic.png b/images/more-info-generic.png
similarity index 100%
rename from doc/more-info-generic.png
rename to images/more-info-generic.png
diff --git a/doc/more-info-upcoming.png b/images/more-info-upcoming.png
similarity index 100%
rename from doc/more-info-upcoming.png
rename to images/more-info-upcoming.png
diff --git a/doc/next-collection-type.png b/images/next-collection-type.png
similarity index 100%
rename from doc/next-collection-type.png
rename to images/next-collection-type.png
diff --git a/doc/next-collections-date-and-days.png b/images/next-collections-date-and-days.png
similarity index 100%
rename from doc/next-collections-date-and-days.png
rename to images/next-collections-date-and-days.png
diff --git a/doc/upcoming_details.png b/images/upcoming_details.png
similarity index 100%
rename from doc/upcoming_details.png
rename to images/upcoming_details.png
diff --git a/images/wcs_animated.gif b/images/wcs_animated.gif
new file mode 100644
index 00000000..21aa2080
Binary files /dev/null and b/images/wcs_animated.gif differ
diff --git a/images/wcs_code_btn.png b/images/wcs_code_btn.png
new file mode 100644
index 00000000..07afbddb
Binary files /dev/null and b/images/wcs_code_btn.png differ
diff --git a/images/wcs_fork_btn.png b/images/wcs_fork_btn.png
new file mode 100644
index 00000000..dc10a2fd
Binary files /dev/null and b/images/wcs_fork_btn.png differ
diff --git a/info.md b/info.md
index 14bd1295..cebebd15 100644
--- a/info.md
+++ b/info.md
@@ -1,212 +1,35 @@
+
+
# Waste Collection Schedule
-Waste Collection Schedule provides schedules from waste collection service providers to Home Assistant. Additionally, it supports schedules from generic ICS files which can be stored locally or fetched from a web site. There is a high flexibility in providing the information to be displayed.
+  [](https://community.home-assistant.io/t/waste-collection-schedule-framework/186492)
-## Examples
+**A custom component for Home Assistant that retrieves waste collection schedules from a wide range of service providers.**
-Per default (without further configuration), the time to the next collection will be shown in an [entity card](https://www.home-assistant.io/lovelace/entity/):
+
-
-
-You can also setup dedicated entities per waste type and show the schedule in various formats:
-
-
-
-
-
-The information in the more-info popup can be displayed in different formats:
-
-1. List of upcoming collections:
-
- 
-
-2. List of waste types and collection date:
-
- 
-
-[Button Card](https://github.com/custom-cards/button-card) can be used to create individual Lovelace cards:
-
-
-
-## Documentation
-
-- [Full Documentation](https://github.com/mampfes/hacs_waste_collection_schedule)
+Waste collection schedules from service provider web sites are updated daily, derived from local ICS/iCal files, or generated from user-specified dates or regularly repeating date patterns. The Home Assistant built-in Calendar is automatically populated with schedules, and there is a high degree of flexibility in how information can be format and displayed in entity cards or pop-ups. The framework can easily be extended to support additional waste collection service providers, or other services which provide schedules.
## Supported Service Providers
-Currently the following service providers are supported:
+| Country | Service Providers |
+|--|--|
+| Generic | ICS / iCal files |
+| Static | User-defined dates or repeating date patterns |
+| Australia | Banyule City Council, Belmont City Council, Brisbane City Council, Campbelltown City Council, City of Canada Bay Council, Gold Coast City Council, Inner West Council (NSW), Ipswich City Council, Ku-ring-gai Council, Macedon Ranges Shire Council, Maroondah City Council, Melton City Council, Nillumbik Shire Council, North Adelaide Waste Management Authority, RecycleSmart, Stonnington City Council, The Hills Shire Council, Sydney, Wyndham City Council, Melbourne |
+| Austria | Burgenländischer Müllverband, infeo, Stadtservice Korneuburg, Umweltprofis, WSZ Moosburg |
+| Belgium | Hygea, Recycle! |
+| Canada | City of Toronto |
+| Germany | Abfall Stuttgart, Abfall.IO / AbfallPlus, Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Rendsburg, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschaft Zollernalbkreis, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Landkreis Ahrweiler, ART Trier, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Augsburg, AWB Oldenburg, AWIDO Online, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bielefeld, Bogenschütz Entsorgung, Bremener Stadreinigung, Bürgerportal, C-Trace, EGN Abfallkalender, Jumomind, KAEV Niederlausitz, Kreiswirtschaftsbetriebe Goslar, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Erlangen-Höchstadt, Landkreis Nordwestmecklenburg, Landkreis Rhön Grabfeld, Landkreis Schwäbisch Hall, Landkreis Wittmund, MZV Bidenkopf, Müllmax, Neunkirchen Siegerland, RegioEntsorgung Städteregion Aachen, Rhein-Hunsrück Entsorgung (RHE), Sector 27 - Datteln, Marl, Oer-Erkenschwick, Stadt Willich, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, StadtService Brühl, Städteservice Raunheim Rüsselsheim, Südbrandenburgischer Abfallzweckverband, Wermelskirchen, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg |
+| Lithuania | Kauno švara |
+| Netherlands | ACV Group, Alpen an den Rijn, Area Afval, Avalex, Avri, Bar Afvalbeheer, Cyclus NV, Dar, Den Haag, GAD, Gemeente Almere, Gemeente Berkelland, Gemeente Cranendonck, Gemeente Hellendoorn, Gemeente Lingewaard, Gemeente Meppel, Gemeente Middelburg + Vlissingen, Gemeente Peel en Maas, Gemeente Schouwen-Duiveland, Gemeente Sudwest-Fryslan, Gemeente Venray, Gemeente Voorschoten, Gemeente Wallre, Gemeente Westland, HVC Groep, Meerlanden, Mijn Blink, PreZero, Purmerend, RAD BV, Reinigingsbedrijf Midden Nederland, Reinis, Spaarne Landen, Stadswerk 072, Twente Milieu, Waardlanden, Ximmio, ZRD |
+| New Zealand | Auckland Council, Christchurch City Council, Gore, Invercargill & Southland, Horowhenua District Council, Waipa District Council, Wellington City Council |
+| Norway | Min Renovasjon, Oslo Kommune |
+| Poland | Ecoharmonogram, Warsaw |
+| Sweden | Lerum Vatten och Avlopp, Ronneby Miljöteknik, SRV Återvinning, SSAM, Sysav Sophämntning, VA Syd Sophämntning |
+| Switzerland | A-Region, Andwil, Appenzell, Berg, Bühler, Eggersriet, Gais, Gaiserwald, Goldach, Grub, Heiden, Herisau, Horn, Hundwil, Häggenschwil, Lindau, Lutzenberg, Muolen, Mörschwil, Rehetobel, Rorschach, Rorschacherberg, Schwellbrunn, Schönengrund, Speicher, Stein, Steinach, Teufen, Thal, Trogen, Tübach, Untereggen, Urnäsch, Wald, Waldkirch, Waldstatt, Wittenbach, Wolfhalden |
+| United Kingdom | Ashfield District Council, Bracknell Forest Council, Bradford Metropolitan District Council, Braintree District Council, Breckland Council, Cambridge City Council, Canterbury City Council, Cheshire East Council, Chesterfield Borough Council, City of York Council, Colchester Borough Council, Cornwall Council, Derby City Council, Eastbourne Borough Council, Elmbridge Borough Council, Environment First, FCC Environment, Guildford Borough Council, Harborough District Council, Huntingdonshire District Council, Lewes District Council, London Borough of Lewisham, Manchester City Council, Middlesbrough Council, Newcastle City Council, North Somerset Council, Nottingham City Council, Peterborough City Council, Richmondshire District Council, Rushmoor Borough Council, Salford City Council, Sheffield City Council, South Cambridgeshire District Council, South Hams District Council, South Norfolk and Broadland Council, Stevenage Borough Council, Tewkesbury Borough Council, The Royal Borough of Kingston Council, Walsall Council, West Berkshire Council, West Devon Borough Council, Wiltshire Council |
+| United States of America | City of Pittsburgh, Republic Services, Seattle Public Utilities |
+
-- [Generic ICS / iCal File](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ics.md)
-- [Static source](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/static.md)
-
-### Australia
-
-- [Banyule City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/banyule_vic_gov_au.md)
-- [Belmont City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/belmont_wa_gov_au.md)
-- [Brisbane City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/brisbane_qld_gov_au.md)
-- [Campbelltown City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/campbelltown_nsw_gov_au.md)
-- [City of Canada Bay Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/canadabay_nsw_gov_au.md)
-- [Inner West Council (NSW)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/innerwest_nsw_gov_au.md)
-- [Ku-ring-gai Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kuringgai_nsw_gov_au.md)
-- [Macedon Ranges Shire Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/mrsc_vic_gov_au.md)
-- [Maroondah City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/maroondah_vic_gov_au.md)
-- [Melton City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/melton_vic_gov_au.md)
-- [North Adelaide Waste Management Authority, South Australia](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nawma_sa_gov_au.md)
-- [RecycleSmart](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/recyclesmart.md)
-- [Stonnington City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stonnington_vic_gov_au.md)
-- [The Hills Council, Sydney](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/thehills_nsw_gov_au.md)
-- [Wyndham City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/sourcewyndham_vic_gov_au.md)
-
-### Austria
-
-- [BMV.at](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/bmv_at.md)
-- [Data.Umweltprofis](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/data_umweltprofis_at.md)
-- [Korneuburg Stadtservice](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/korneuburg_stadtservice_at.md)
-- [WSZ-Moosburg.at](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/wsz_moosburg_at.md)
-
-### Belgium
-
-- [Hygea](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/hygea_be.md)
-- [Recycle! / RecycleApp.be](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/recycleapp_be.md)
-
-### Canada
-- [City of Toronto](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/toronto_ca.md)
-
-### Germany
-
-- [Abfall.IO / AbfallPlus.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_io.md)
-- [AbfallNavi.de (RegioIT.de)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfallnavi_de.md)
-- [Abfallkalender Würzburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wuerzburg_de.md)
-- [Abfalltermine Forchheim](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfalltermine_forchheim_de.md)
-- [Abfallwirtschaft Bremen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/c_trace_de.md)
-- [Abfallwirtschaft Landkreis Harburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aw_harburg_de.md)
-- [Abfallwirtschaft Landkreis Wolfenbüttel](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/alw_wf_de.md)
-- [Abfallwirtschaft Neckar-Odenwald-Kreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awn_de.md)
-- [Abfallwirtschaft Rendsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awr_de.md)
-- [Abfallwirtschaft Stuttgart](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stuttgart_de.md)
-- [Abfallwirtschaft Südholstein](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awsh_de.md)
-- [Abfallwirtschaft Zollernalbkreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_zollernalbkreis_de.md)
-- [ART Trier](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/art_trier_de.md)
-- [AVL Ludwigsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/avl_ludwigsburg_de.md)
-- [AWB Bad Kreuznach](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_bad_kreuznach_de.md)
-- [AWB Esslingen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_es_de.md)
-- [AWB Limburg-Weilburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_lm_de.md)
-- [AWB Oldenburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_oldenburg_de.md)
-- [AWBKoeln.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awbkoeln_de.md)
-- [AWIDO-online.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awido_de.md)
-- [Berlin-Recycling.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/berlin_recycling_de.md)
-- [Bogenschuetz-Entsorgung.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/infeo_at.md)
-- [BSR.de / Berliner Stadtreinigungsbetriebe](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bsr_de.md)
-- [C-Trace.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/c_trace_de.md)
-- [Cochem-Zell](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cochem_zell_online_de.md)
-- [EGN-Abfallkalender.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/egn_abfallkalender_de.md)
-- [Erlangen-Höchstadt](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/erlangen_hoechstadt_de.md)
-- [Jumomind.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/jumomind_de.md)
-- [KWB-Goslar.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kwb_goslar_de.md)
-- [KWU-Entsorgung.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kwu_de.md)
-- [KAEV Niederlausitz](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kaev_niederlausitz_de.md)
-- [Landkreis-Wittmund.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/landkreis_wittmund_de.md)
-- [Landkreis Rhön Grabfeld](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/landkreis_rhoen_grabfeld.md)
-- [Landkreis Schwäbisch Hall](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lrasha_de.md)
-- [Muellmax.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/muellmax_de.md)
-- [MyMuell App](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/jumomind_de.md)
-- [Neunkirchen Siegerland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_neunkirchen_siegerland_de.md)
-- [RegioEntsorgung](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/regioentsorgung_de.md)
-- [Rhein-Hunsrück Entsorgung (RHE)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/rh_entsorgung_de.md)
-- [Sector27.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sector27_de.md)
-- [Stadtreinigung Dresden](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_dresden_de.md)
-- [Stadtreinigung.Hamburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_hamburg.md)
-- [Stadtreinigung-Leipzig.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_leipzig_de.md)
-- [Stadt-Willich.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadt_willich_de.md)
-- [Stadtservice Brühl](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtservice_bruehl_de.md)
-- [Städteservice Raunheim Rüsselsheim](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/staedteservice_de.md)
-- [Südbrandenburgischer Abfallzweckverband](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sbazv_de.md)
-- [Umweltbetrieb Stadt Bielefeld](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bielefeld_de.md)
-- [WAS Wolfsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/was_wolfsburg_de.md)
-- [Wermelskirchen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wermelskirchen_de.md)
-
-### Lithuania
-
-- [Kauno švara](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/grafikai_svara_lt.md)
-
-### Netherlands
-
-- [Ximmio](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ximmio_nl.md)
-- [HVCGroep](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/hvcgroep_nl.md)
-
-### New Zealand
-
-- [Auckland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aucklandcouncil_govt_nz.md)
-- [Christchurch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ccc_govt_nz.md)
-- [Gore, Invercargill & Southland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wastenet_org_nz.md)
-- [Horowhenua District](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/horowhenua_govt_nz.md)
-- [Waipa District](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/waipa_nz.md)
-- [Wellington](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wellington_govt_nz.md)
-
-### Norway
-
-- [Min Renovasjon](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/minrenovasjon_no.md)
-- [Oslo Kommune](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/oslokommune_no.md)
-
-### Poland
-
-- [Warsaw](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/warszawa19115_pl.md)
-- [Multiple communities - ecoharmonogram](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ecoharmonogram_pl.md)
-
-### Sweden
-
-- [Lerum.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lerum_se.md)
-- [Ronneby Miljöteknik](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/miljoteknik_se.md)
-- [SSAM.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ssam_se.md)
-- [Sysav.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sysav_se.md)
-- [Vasyd.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/vasyd_se.md)
-
-### Switzerland
-
-- [A-Region.ch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/a_region_ch.md)
-- [Lindau.ch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lindau_ch.md)
-- [Münchenstein](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/muenchenstein_ch.md)
-
-### United States of America
-
-- [PGH.ST](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/pgh_st.md)
-- [Republic Services](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/republicservices_com.md)
-- [Seattle Public Utilities](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/seattle_gov.md)
-
-### United Kingdom
-
-- [Bracknell Forest Council - bracknell-forest.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bracknell_forest_gov_uk.md)
-- [Bradford Metropolitan District Council - bradford.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bradford_gov_uk.md)
-- [Braintree District Council - bracknell-forest.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/braintree_gov_uk.md)
-- [Cambridge City Council - cambridge.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cambridge_gov_uk.md)
-- [Canterbury City Council - canterbury.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/canterbury_gov_uk.md)
-- [Cheshire East Council - cheshireeast.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cheshire_east_gov_uk.md)
-- [Chesterfield Borough Council - chesterfield.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/chesterfield_gov_uk.md)
-- [Colchester Borough Council - colchester.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/colchester_gov_uk.md)
-- [Cornwall Council - cornwall.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cornwall_gov_uk.md)
-- [Derby City Council - derby.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/derby_gov_uk.md)
-- [Eastbourne Borough Council - lewes-eastbourne.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/environmentfirst_co_uk.md)
-- [Elmbridge Borough Council - elmbridge.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/elmbridge_gov_uk.md)
-- [Guildford Borough Council - guildford.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/guildford_gov_uk.md)
-- [Harborough District Council - www.harborough.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/fccenvironment_co_uk.md)
-- [Huntingdonshire District Council - huntingdonshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/huntingdonshire_gov_uk.md)
-- [The Royal Borough of Kingston Council - kingston.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kingston_gov_uk.md)
-- [Lewes District Council - lewes-eastbourne.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/environmentfirst_co_uk.md)
-- [London Borough of Lewisham - lewisham.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lewisham_gov_uk.md)
-- [Manchester City Council - manchester.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/manchester_uk.md)
-- [Middlesbrough Council - middlesbrough.gov.uk](https://www.middlesbrough.gov.uk/bin-collection-dates)
-- [Newcastle City Council - newcastle.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/newcastle_gov_uk.md)
-- [North Somerset Council - n-somerset.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nsomerset_gov_uk.md)
-- [Nottingham City Council - nottinghamcity.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nottingham_city_gov_uk.md)
-- [Peterborough City Council - peterborough.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/peterborough_gov_uk.md)
-- [Richmondshire District Council - richmondshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/richmondshire_gov_uk.md)
-- [Rushmoor Borough Council - rushmoor.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/rushmoor_gov_uk.md)
-- [Sheffield City Council - Sheffield.gov.uk]((https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sheffield_gov_uk.md)
-- [South Cambridgeshire District Council - scambs.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/scambs_gov_uk.md)
-- [South Norfolk and Broadland Council - southnorfolkandbroadland.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/south_norfolk_and_broadland_gov_uk.md)
-- [Stevenage Borough Council - stevenage.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stevenage_gov_uk.md)
-- [Tewkesbury Borough Council](./doc/source/tewkesbury_gov_uk.md)
-- [City of York Council - york.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/york_gov_uk.md)
-- [Walsall Council - walsall.gov.uk](./doc/source/walsall_gov_uk.md)
-- [West Berkshire Council - westberks.gov.uk](./doc/source/westberks_gov_uk.md)
-- [Wiltshire Council - wiltshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wiltshire_gov_uk.md)
+For full details on supported service providers, and more project details, visit us on [GitHub](https://github.com/mampfes/hacs_waste_collection_schedule).
diff --git a/LICENSE b/md_archive/LICENSE
similarity index 100%
rename from LICENSE
rename to md_archive/LICENSE
diff --git a/md_archive/README.md b/md_archive/README.md
new file mode 100644
index 00000000..f8215148
--- /dev/null
+++ b/md_archive/README.md
@@ -0,0 +1,834 @@
+# Waste Collection Schedule
+
+Waste Collection Schedule provides schedules from waste collection service providers to Home Assistant. Additionally, it supports schedules from generic ICS files which can be stored locally or fetched from a web site. There is a high flexibility in providing the information to be displayed.
+
+*For developers:* This framework can be easily enhanced to support further waste collection service providers or other services which provide schedules.
+
+If you like this component, please give it a star on [github](https://github.com/mampfes/hacs_waste_collection_schedule).
+
+## Table of Contents
+
+- [Examples](#examples)
+- [Supported Service Providers](#supported-service-providers)
+- [Installation](#installation)
+- [Configuration](#configuration)
+- [FAQ](#faq)
+- *For developers*: [How to add new sources](#how-to-add-new-sources)
+
+## Examples
+
+A complete example can be found [here](./doc/configuration.yaml).
+
+Per default (without further configuration), the time to the next collection will be shown in an [entity card](https://www.home-assistant.io/lovelace/entity/):
+
+
+
+You can also setup dedicated entities per waste type and show the schedule in various formats:
+
+
+
+
+
+The information in the more-info popup can be displayed in different formats:
+
+1. List of upcoming collections:
+
+ 
+
+2. List of waste types and collection date:
+
+ 
+
+[Button Card](https://github.com/custom-cards/button-card) can be used to create individual Lovelace cards:
+
+
+
+The collection schedule will be automatically integrated into the Home Assistant calendar:
+
+
+## Supported Service Providers
+
+Currently the following service providers are supported:
+
+- [Generic ICS / iCal File](./doc/source/ics.md)
+- [Static source](./doc/source/static.md)
+
+### Australia
+
+- [Banyule City Council](./doc/source/banyule_vic_gov_au.md)
+- [Belmont City Council](./doc/source/belmont_wa_gov_au.md)
+- [Brisbane City Council](./doc/source/brisbane_qld_gov_au.md)
+- [Campbelltown City Council](./doc/source/campbelltown_nsw_gov_au.md)
+- [City of Canada Bay Council](./doc/source/canadabay_nsw_gov_au.md)
+- [Inner West Council (NSW)](./doc/source/innerwest_nsw_gov_au.md)
+- [Ku-ring-gai Council](./doc/source/kuringgai_nsw_gov_au.md)
+- [Macedon Ranges Shire Council, Melbourne](./doc/source/mrsc_vic_gov_au.md)
+- [Maroondah City Council](./doc/source/maroondah_vic_gov_au.md)
+- [Melton City Council, Melbourne](./doc/source/melton_vic_gov_au.md)
+- [Nillumbik Shire Council](./doc/source/nillumbik_vic_gov_au.md)
+- [North Adelaide Waste Management Authority, South Australia](./doc/source/nawma_sa_gov_au.md)
+- [RecycleSmart](./doc/source/recyclesmart_com.md)
+- [Stonnington City Council, Melbourne](./doc/source/stonnington_vic_gov_au.md)
+- [The Hills Council, Sydney](./doc/source/thehills_nsw_gov_au.md)
+- [Wyndham City Council, Melbourne](./doc/source/wyndham_vic_gov_au.md)
+
+### Austria
+
+- [BMV.at](./doc/source/bmv_at.md)
+- [Data.Umweltprofis](./doc/source/data_umweltprofis_at.md)
+- [Korneuburg Stadtservice](./doc/source/korneuburg_stadtservice_at.md)
+- [WSZ-Moosburg.at](./doc/source/wsz_moosburg_at.md)
+
+### Belgium
+
+- [Hygea.be](./doc/source/hygea_be.md)
+- [Recycle! / RecycleApp.be](./doc/source/recycleapp_be.md)
+
+### Canada
+- [City of Toronto](./doc/source/toronto_ca.md)
+
+### Germany
+
+- [Abfall.IO / AbfallPlus.de](./doc/source/abfall_io.md)
+- [AbfallNavi.de (RegioIT.de)](./doc/source/abfallnavi_de.md)
+- [Abfallkalender Würzburg](./doc/source/wuerzburg_de.md)
+- [Abfalltermine Forchheim](./doc/source/abfalltermine_forchheim_de.md)
+- [Abfallwirtschaft Bremen](./doc/source/c_trace_de.md)
+- [Abfallwirtschaft Landkreis Harburg](./doc/source/aw_harburg_de.md)
+- [Abfallwirtschaft Landkreis Wolfenbüttel](./doc/source/alw_wf_de.md)
+- [Abfallwirtschaft Neckar-Odenwald-Kreis](./doc/source/awn_de.md)
+- [Abfallwirtschaft Rendsburg](./doc/source/awr_de.md)
+- [Abfallwirtschaft Stuttgart](./doc/source/stuttgart_de.md)
+- [Abfallwirtschaft Südholstein](./doc/source/awsh_de.md)
+- [Abfallwirtschaft Zollernalbkreis](./doc/source/abfall_zollernalbkreis_de.md)
+- [Alb-Donau-Kreis](./doc/source/buergerportal_de.md)
+- [ART Trier](./doc/source/art_trier_de.md)
+- [AWB Bad Kreuznach](./doc/source/awb_bad_kreuznach_de.md)
+- [AWB Esslingen](./doc/source/awb_es_de.md)
+- [AWB Landkreis Augsburg](./doc/source/c_trace_de.md)
+- [AWB Limburg-Weilburg](./doc/source/awb_lm_de.md)
+- [AWB Oldenburg](./doc/source/awb_oldenburg_de.md)
+- [AWBKoeln.de](./doc/source/awbkoeln_de.md)
+- [AWIDO-online.de](./doc/source/awido_de.md)
+- [Berlin-Recycling.de](./doc/source/berlin_recycling_de.md)
+- [Bogenschuetz-Entsorgung.de](./doc/source/infeo_at.md)
+- [Biedenkopf MZF](./doc/source/buergerportal_de.md)
+- [BSR.de / Berliner Stadtreinigungsbetriebe](./doc/source/bsr_de.md)
+- [C-Trace.de](./doc/source/c_trace_de.md)
+- [Cochem-Zell](./doc/source/buergerportal_de.md)
+- [EGN-Abfallkalender.de](./doc/source/egn_abfallkalender_de.md)
+- [Erlangen-Höchstadt](./doc/source/erlangen_hoechstadt_de.md)
+- [Jumomind.de](./doc/source/jumomind_de.md)
+- [KAEV Niederlausitz](./doc/source/kaev_niederlausitz_de.md)
+- [KWB-Goslar.de](./doc/source/kwb_goslar_de.md)
+- [KWU-Entsorgung](./doc/source/kwu_de.md)
+- [Landkreis-Wittmund.de](./doc/source/landkreis_wittmund_de.md)
+- [Landkreis Rhön Grabfeld](./doc/source/landkreis_rhoen_grabfeld.md)
+- [Landkreis Schwäbisch Hall](./doc/source/lrasha_de.md)
+- [Muellmax.de](./doc/source/muellmax_de.md)
+- [MyMuell App](./doc/source/jumomind_de.md)
+- [Neunkirchen Siegerland](./doc/source/abfall_neunkirchen_siegerland_de.md)
+- [RegioEntsorgung](./doc/source/regioentsorgung_de.md)
+- [Rhein-Hunsrück Entsorgung (RHE)](./doc/source/rh_entsorgung_de.md)
+- [Sector27.de](./doc/source/sector27_de.md)
+- [Stadtreinigung Dresden](./doc/source/stadtreinigung_dresden_de.md)
+- [Stadtreinigung.Hamburg](./doc/source/stadtreinigung_hamburg.md)
+- [Stadtreinigung-Leipzig.de](./doc/source/stadtreinigung_leipzig_de.md)
+- [Stadt-Willich.de](.doc/source/stadt_willich_de.md)
+- [StadtService Brühl](.doc/source/stadtservice_bruehl_de.md)
+- [Städteservice Raunheim Rüsselsheim](./doc/source/staedteservice_de.md)
+- [Südbrandenburgischer Abfallzweckverband](./doc/source/sbazv_de.md)
+- [Umweltbetrieb Stadt Bielefeld](./doc/source/bielefeld_de.md)
+- [WAS Wolfsburg](./doc/source/was_wolfsburg_de.md)
+- [Wermelskirchen](./doc/source/wermelskirchen_de.md)
+- [Zweckverband Abfallwirtschaft Werra-Meißner-Kreis](./doc/source/zva_wmk_de.md)
+
+### Lithuania
+
+- [Kauno švara](./doc/source/grafikai_svara_lt.md)
+
+### Netherlands
+
+- [HVCGroep and others](./doc/source/hvcgroep_nl.md)
+- [Ximmio](./doc/source/ximmio_nl.md)
+
+### New Zealand
+
+- [Auckland](./doc/source/aucklandcouncil_govt_nz.md)
+- [Christchurch](./doc/source/ccc_govt_nz.md)
+- [Gore, Invercargill & Southland](./doc/source/wastenet_org_nz.md)
+- [Horowhenua District](./doc/source/horowhenua_govt_nz.md)
+- [Waipa District](./doc/source/waipa_nz.md)
+- [Wellington](./doc/source/wellington_govt_nz.md)
+
+### Norway
+
+- [Min Renovasjon](./doc/source/minrenovasjon_no.md)
+- [Oslo Kommune](./doc/source/oslokommune_no.md)
+
+### Poland
+
+- [Warsaw](./doc/source/warszawa19115_pl.md)
+- [Multiple communities - ecoharmonogram](./doc/source/ecoharmonogram_pl.md)
+
+### Sweden
+
+- [Lerum.se](./doc/source/lerum_se.md)
+- [Ronneby Miljöteknik](./doc/source/miljoteknik_se.md)
+- [SSAM.se](./doc/source/ssam_se.md)
+- [srvatervinning.se](./doc/source/srvatervinning_se.md)
+- [Sysav.se](./doc/source/sysav_se.md)
+- [Vasyd.se](./doc/source/vasyd_se.md)
+
+### Switzerland
+
+- [A-Region.ch](./doc/source/a_region_ch.md)
+- [Lindau.ch](./doc/source/lindau_ch.md)
+
+### United States of America
+
+- [PGH.ST](./doc/source/pgh_st.md)
+- [Republic Services](./doc/source/republicservices_com.md)
+- [Seattle Public Utilities](./doc/source/seattle_gov.md)
+
+### United Kingdom
+
+- [Bracknell Forest Council - bracknell-forest.gov.uk](./doc/source/bracknell_forest_gov_uk.md)
+- [Bradford Metropolitan District Council - bradford.gov.uk](./doc/source/bradford_gov_uk.md)
+- [Braintree District Council - bracknell-forest.gov.uk](./doc/source/braintree_gov_uk.md)
+- [Cambridge City Council - cambridge.gov.uk](./doc/source/cambridge_gov_uk.md)
+- [Canterbury City Council - canterbury.gov.uk](./doc/source/canterbury_gov_uk.md)
+- [Cheshire East Council - cheshireeast.gov.uk](./doc/source/cheshire_east_gov_uk.md)
+- [Chesterfield Borough Council - chesterfield.gov.uk](./doc/source/chesterfield_gov_uk.md)
+- [Colchester Borough Council - colchester.gov.uk](./doc/source/colchester_gov_uk.md)
+- [Cornwall Council - cornwall.gov.uk](./doc/source/cornwall_gov_uk.md)
+- [Derby City Council](./doc/source/derby_gov_uk.md)
+- [Eastbourne Borough Council - lewes-eastbourne.gov.uk](./doc/source/environmentfirst_co_uk.md)
+- [Elmbridge Borough Council - elmbridge_gov_uk](./doc/source/elmbridge_gov_uk.md)
+- [Guildford Borough Council - guildford.gov.uk](./doc/source/guildford_gov_uk.md)
+- [Harborough District Council - www.harborough.gov.uk](./doc/source/fccenvironment_co_uk.md)
+- [Huntingdonshire District Council - huntingdonshire.gov.uk](./doc/source/huntingdonshire_gov_uk.md)
+- [The Royal Borough of Kingston - kingston.gov.uk](./doc/source/kingston_gov_uk.md)
+- [Lewes District Council - lewes-eastbourne.gov.uk](./doc/source/environmentfirst_co_uk.md)
+- [London Borough of Lewisham - lewisham.gov.uk](.doc/source/lewisham_gov_uk.md)
+- [Manchester City Council - manchester.gov.uk](./doc/source/manchester_uk.md)
+- [Middlesbrough Countil - middlesbrough.gov.uk](./doc/source/middlesbrough_gov_uk.md)
+- [Newcastle City Council - newcastle.gov.uk](./doc/source/newcastle_gov_uk.md)
+- [North Somerset Council - n-somerset.gov.uk](./doc/source/nsomerset_gov_uk.md)
+- [Nottingham City Council - nottinghamcity.gov.uk](./doc/source/nottingham_city_gov_uk.md)
+- [Peterborough City Council - peterborough.gov.uk](./doc/source/peterborough_gov_uk.md)
+- [Richmondshire District Council - richmondshire.gov.uk](./doc/source/richmondshire_gov_uk.md)
+- [Rushmoor Borough Council - rushmoor.gov.uk](./doc/source/rushmoor_gov_uk.md)
+- [Sheffield City Council - sheffield.gov.uk](./doc/source/sheffield_gov_uk.md)
+- [South Cambridgeshire District Council - scambs.gov.uk](./doc/source/scambs_gov_uk.md)
+- [South Norfolk and Broadland Council - southnorfolkandbroadland.gov.uk](./doc/source/south_norfolk_and_broadland_gov_uk.md)
+- [Stevenage Borough Council - stevenage.gov.uk](./doc/source/stevenage_gov_uk.md)
+- [Tewkesbury Borough Council](./doc/source/tewkesbury_gov_uk.md)
+- [City of York Council - york.gov.uk](./doc/source/york_gov_uk.md)
+- [Walsall Council - walsall.gov.uk](./doc/source/walsall_gov_uk.md)
+- [West Berkshire Council - westberks.gov.uk](./doc/source/westberks_gov_uk.md)
+- [Wiltshire Council - wiltshire.gov.uk](./doc/source/wiltshire_gov_uk.md)
+
+## Installation
+
+1. Ensure that [HACS](https://github.com/hacs/integration) is installed.
+2. Install the "Waste Collection Schedule" integration.
+3. [Configure the integration](#configuration).
+4. Restart Home Assistant.
+
+In case you would like to install manually:
+
+1. Copy the folder `waste_collection_schedule` to `custom_components` in your Home Assistant `config` folder.
+2. [Configure the integration](#configuration).
+3. Restart Home Assistant.
+
+## Configuration
+
+The configuration consists of two entries in the file `configuration.yaml`:
+
+1. Source configuration
+
+ For each service provider, a source has to be added to the configuration. The source takes care of the arguments which are required to get the correct information from the service provider's web page, e.g. district, city, street, house number, etc.
+
+ If you have to fetch data from multiple service providers, you have to add multiple sources. You can also add the same service provider multiple times (which only makes sense if you use this with different arguments), e.g. if you are looking for displaying the waste collection schedules for multiple districts.
+
+2. Sensor configuration
+
+ A sensor is used to visualize the retrieved information, e.g. waste type, next collection date or number of days to next collection. The sensor state (which is shown in a Lovelace card) can be customized using templates. As an example, you may display the collection type only or the next collection date or a combination of all available information.
+
+ You can also add multiple sensors per source if you are going to display the information in separate entities like the available collection types or the next collection date.
+
+ If you are looking for displaying one entity per collection type, you just have to add one sensor per collection type.
+
+## 1. Configure the source(s)
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: SOURCE
+ args:
+ SOURCE_SPECIFIC_ARGUMENTS
+ customize:
+ - type: TYPE
+ alias: ALIAS
+ show: SHOW
+ icon: ICON
+ picture: PICTURE
+ use_dedicated_calendar: USE_DEDICATED_CALENDAR
+ dedicated_calendar_title: DEDICATED_CALENDAR_TITLE
+ calendar_title: CALENDAR_TITLE
+ fetch_time: FETCH_TIME
+ random_fetch_time_offset: RANDOM_FETCH_TIME_OFFSET
+ day_switch_time: DAY_SWITCH_TIME
+ separator: SEPARATOR
+```
+
+### Configuration Variables
+
+**sources**
+
+*(list) (required)*
+
+List of service providers (waste collectors). See [Source Configuration Variables](#source-configuration-variables) for a list of available configuration variables.
+
+**fetch_time**
+
+*(time) (optional, default: ```"01:00"```)*
+
+Time of day when to fetch new data from the source. Data will be fetched once per day.
+
+**random_fetch_time_offset**
+
+*(int) (optional, default: ```60```)*
+
+Random offset to the `fetch_time` in minutes. Used to distribute the fetch commands of all Home Assistant instances over a larger period of time to avoid peak loads at the service providers.
+
+**day_switch_time**
+
+*(time) (optional, default: ```"10:00"```)*
+
+Time of day when today's collection is going to expire and hence will not be displayed anymore.
+
+How it works: If you set the ```day_switch_time``` to 10:00 the sensor will display today's collections until 10:00. After 10:00, today's collections will not be displayed anymore.
+
+**separator**
+
+*(string) (optional, default: ```", "```)*
+
+Used to join entries if there are multiple entries for one day (n/a if value_templates are used).
+
+### Source Configuration Variables
+
+**name**
+
+*(string) (required)*
+
+Name of the source (service provider). Equates to the file name (without ```.py```) of the source. See [Supported Service Providers](#supported-service-providers) for a list of available sources.
+
+**args**
+
+*(dict) (optional)*
+
+Source (service provider) specific arguments, e.g. district, city, street, waste type, etc. See [Supported Service Providers](#supported-service-providers) for details.
+
+**customize**
+
+*(dict) (optional)*
+
+Used to customize the retrieved data from a source (service provider). See [Customize Source](#customize-source) for a list of available configuration variables.
+
+**calendar_title**
+
+*(string) (optional)*
+
+Alternative title for source in Home Assistant calendar.
+
+### Customize Source
+
+Used to customize the retrieved data from a source (service provider).
+
+**type**
+
+*(dict) (required)*
+
+Type of waste as it has been retrieved by the source (service provider).
+
+**alias**
+
+*(string) (optional, default: ```None```)*
+
+Optional, usually better readable name for type of waste to be collected.
+
+**show**
+
+*(boolean) (optional, default: ```True```)*
+
+Show or hide collections with the given waste type.
+
+**icon**
+
+*(string) (optional, default: ```None```)*
+
+Alternative icon for waste type.
+
+**picture**
+
+*(string) (optional, default: ```None```)*
+
+Optional picture for waste type.
+
+**use_dedicated_calendar**
+
+*(boolean) (optional, default: ```False```)*
+
+Create a dedicated calendar for this type.
+
+**dedicated_calendar_title**
+
+*(string) (optional, default: ```None```)*
+
+Optional title of the dedicated calendar. If not set, the waste type will be used.
+
+## 2. Add sensor(s) to a source
+
+Add the following lines to your `configuration.yaml` file:
+
+```yaml
+sensor:
+ - platform: waste_collection_schedule
+ source_index: SOURCE_INDEX
+ name: NAME
+ details_format: DETAILS_FORMAT
+ count: COUNT
+ leadtime: LEADTIME
+ value_template: VALUE_TEMPLATE
+ date_template: DATE_TEMPLATE
+ add_days_to: ADD_DAYS_TO
+ types:
+ - Waste Type 1
+ - Waste Type 2
+```
+
+### Configuration Variables
+
+**source_index**
+
+*(integer or list of integers) (optional, default: ```0```)*
+
+Reference to source (service provider). Used to assign a sensor to a specific source. Only required if you defined more than one source. The first defined source in `configuration.yaml` has the source_index 0, the second source 1, ...
+If you want to have a sensor which combines the data from multiple sources, just add a list of sources here.
+Example:
+```yaml
+ source_index: [0, 1]
+#or
+ source_index:
+ - 0
+ - 1
+```
+
+**name**
+
+*(string) (required)*
+
+Name of the sensor.
+
+**details_format**
+
+*(string) (optional, default: ```"upcoming"```)*
+
+Used to specify the format of the information displayed in the more-info popup of a Lovelace card.
+
+Possible choices:
+
+- ```upcoming``` shows a list of upcoming collections.
+
+ 
+
+- ```appointment_types``` shows a list of waste types and their next collection date.
+
+ 
+
+- ```generic``` provides all attributes as generic Python data types. This can be used by a specialized Lovelace card (which doesn't exist so far).
+
+ 
+
+**count**
+
+*(integer) (optional, default = infinite)*
+
+Used to limit the number of collections displayed in the more-info popup of a Lovelace card by ```count```.
+
+**leadtime**
+
+*(integer) (optional, default = infinite)*
+
+Used to limit the number of collections displayed in the more-info popup of a Lovelace card. Only collections within the next ```leadtime``` days will be displayed.
+
+**value_template**
+
+*(string) (optional)*
+
+Template string used to format the state of an entity.
+
+See [Template Variables](#template-variables) for a list of available variables.
+
+**date_template**
+
+*(string) (optional)*
+
+Template string used to format collection dates within the more-info popup.
+
+See [Template Variables](#template-variables) for a list of available variables.
+
+**add_days_to**
+
+*(boolean) (optional, default: ```False```)*
+
+Adds an attribute with the label `daysTo` and the number of days to the next collection to the entity state of the source.
+
+**types**
+
+*(list of strings) (optional)*
+
+Used to filter waste types. The sensor will only display collections with these type(s).
+
+## Template Variables
+
+The following variables can be used within `value_template` and `date_template`:
+
+| Variable | Description | Type | Comments |
+|--------------------|--------------------|--------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------|
+| ```value.date``` | Collection date | [datetime.date](https://docs.python.org/3/library/datetime.html#datetime.date) | Use [strftime](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) to format the output. |
+| ```value.daysTo``` | Days to collection | int | 0 = today, 1 = tomorrow, ... |
+| ```value.types``` | Waste types | list of strings | Use `join` filter to join types. |
+
+## FAQ
+
+### 1. My Service Provider isn't supported. What can I do?
+
+1. A lot of service providers provide ICS/iCal data as downloads or persistent links. This can be used together with the generic [iCS/iCal](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ics.md) source.
+
+2. In case your schedule follows a static schema, you can use the [static](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/static.md) source.
+
+3. Implement a new [source](https://github.com/mampfes/hacs_waste_collection_schedule#how-to-add-new-sources) and create a PR.
+
+4. Raise an [issue](https://github.com/mampfes/hacs_waste_collection_schedule/issues).
+
+### 2. How do I format dates?
+
+Use [strftime](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) in `value_template` or `date_template`:
+
+```yaml
+# returns "20.03.2020"
+value_template: '{{value.date.strftime("%d.%m.%Y")}}'
+date_template: '{{value.date.strftime("%d.%m.%Y")}}'
+
+# returns "03/20/2020"
+value_template: '{{value.date.strftime("%m/%d/%Y")}}'
+date_template: '{{value.date.strftime("%m/%d/%Y")}}'
+
+# returns "Fri, 03/20/2020"
+value_template: '{{value.date.strftime("%a, %m/%d/%Y")}}'
+date_template: '{{value.date.strftime("%a, %m/%d/%Y")}}'
+```
+
+### 3. How do I show the number of days to the next collection?
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: 'in {{value.daysTo}} days'
+```
+
+### 4. How do I show *Today* / *Tomorrow* instead of *in 0/1 days*?
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+# returns "Today" if value.daysTo == 0
+# returns "Tomorrow" if value.daysTo == 1
+# returns "in X days" if value.daysTo > 1
+value_template: '{% if value.daysTo == 0 %}Today{% elif value.daysTo == 1 %}Tomorrow{% else %}in {{value.daysTo}} days{% endif %}'
+```
+
+### 5. How do I join waste types in a `value_template`?
+
+Use the `join` filter:
+
+```yaml
+# returns "Garbage, Recycle"
+value_template: '{{value.types|join(", ")}}'
+
+# returns "Garbage+Recycle"
+value_template: '{{value.types|join("+")}}'
+```
+
+Note: If you don't specify a `value_template`, waste types will be joined using the `separator` configuration variable.
+
+### 6. How do I setup a sensor which shows only the days to the next collection?
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.daysTo}}'
+```
+
+### 7. How do I setup a sensor which shows only the date of the next collection?
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.date.strftime("%m/%d/%Y")}}'
+```
+
+### 8. How do I configure a sensor which shows only the waste type of the next collection?
+
+Set `value_template` within the sensor configuration:
+
+```yaml
+value_template: '{{value.types|join(", ")}}'
+```
+
+### 9. How do I configure a sensor to show only collections of a specific waste type?
+
+Set `types` within the sensor configuration:
+
+```yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: next_garbage_collection
+ types:
+ - Garbage
+
+ - platform: waste_collection_schedule
+ name: next_recycle_collection
+ types:
+ - Recycle
+```
+
+Note: If you have set an alias for a waste type, you must use the alias name.
+
+### 10. How can I rename an waste type?
+
+Set `alias` in the customize section of a source:
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: NAME
+ customize:
+ - type: Very long garbage name
+ alias: Garbage
+ - type: Very long recycle name
+ alias: Recycle
+```
+
+### 11. How can I hide inappropriate waste types?
+
+Set `show` configuration variable to *false* in the customize section of a source:
+
+```yaml
+waste_collection_schedule:
+ sources:
+ - name: NAME
+ customize:
+ - type: Inappropriate Waste Type
+ show: false
+```
+
+### 12. How do I show a colored Lovelace card depending on the due date?
+
+You can use [Button Card](https://github.com/custom-cards/button-card) to create a colored Lovelace cards:
+
+
+
+```yaml
+# configuration.yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: MyButtonCardSensor
+ value_template: '{{value.types|join(", ")}}|{{value.daysTo}}|{{value.date.strftime("%d.%m.%Y")}}|{{value.date.strftime("%a")}}'
+```
+
+```yaml
+# button-card configuration
+type: 'custom:button-card'
+entity: sensor.mybuttoncardsensor
+layout: icon_name_state2nd
+show_label: true
+label: |
+ [[[
+ var days_to = entity.state.split("|")[1]
+ if (days_to == 0)
+ { return "Today" }
+ else if (days_to == 1)
+ { return "Tomorrow" }
+ else
+ { return "in " + days_to + " days" }
+ ]]]
+show_name: true
+name: |
+ [[[
+ return entity.state.split("|")[0]
+ ]]]
+state:
+ - color: red
+ operator: template
+ value: '[[[ return entity.state.split("|")[1] == 0 ]]]'
+ - color: orange
+ operator: template
+ value: '[[[ return entity.state.split("|")[1] == 1 ]]]'
+ - value: default
+```
+
+### 13. Can I also use the **Garbage Collection Card** instead?
+
+Yes, the [Garbage Collection Card](https://github.com/amaximus/garbage-collection-card) can also be used with *Waste Collection Schedule*:
+
+```yaml
+# configuration.yaml
+sensor:
+ - platform: waste_collection_schedule
+ name: garbage_days
+ details_format: appointment_types
+ value_template: "{{ value.daysTo }}"
+ types:
+ - Garbage
+
+ - platform: template
+ sensors:
+ garbage:
+ value_template: >
+ {% if states('sensor.garbage_days')|int > 2 %}
+ 2
+ {% else %}
+ {{ states('sensor.garbage_days')|int }}
+ {% endif %}
+ attribute_templates:
+ next_date: "{{ state_attr('sensor.garbage_days', 'Garbage') }}"
+ days: "{{ states('sensor.garbage_days')|int }}"
+```
+
+```yaml
+# garbage-collection-card configuration
+entity: sensor.garbage
+type: 'custom:garbage-collection-card'
+```
+
+### 14. How can I sort waste type specific entities?
+
+Prerequisites: You already have dedicated sensors per waste type and want to show the sensor with the next collection in a Lovelace card.
+
+Add `add_days_to: True` to the configuration of all sensors you want to sort. This will add the attribute `daysTo` which can be used by e.g. [auto-entities](https://github.com/thomasloven/lovelace-auto-entities) to sort entities by day of next collection.
+
+### 15. How can I disable the calendar?
+
+If you don't like the calendar provided by Waste Collection Schedule or you have configured some dedicated calendars per waste type and therefore don't need the global calendar any more, you can disable it so that it doesn't show up in the Calendar Dashboard any more:
+
+Go to `Settings` --> `Entities` and select the calendar entity provided by Waste Collection Schedule. Now disable it using the menu items.
+
+[](https://my.home-assistant.io/redirect/entities/)
+
+### 16. I have configured multiple sources, but the sensors show only *UNAVAILABLE*
+
+You probably missed to add `source_index` to the sensor configuration.
+
+## How to add new sources
+
+1. Create a new source in folder `custom_components/waste_collection_schedule/waste_collection_schedule/source` with the lower case url of your service provider (e.g. `abc_com.py` for `http://www.abc.com`).
+2. Don't forget to add test cases (= sample data to query the service api).
+3. Run `test_sources.py` script to ensure that your source works.
+4. Add documentation in folder `docs/source` and add a link to your new source on `README.md` and `info.md`.
+
+### Guidelines
+
+- A source shall return data for all available waste types. A source shall **not** provide a configuration option to limit the returned waste types.
+- A source shall return data for the entire available period (including past). A source shall **not** provide a configuration option to limit the requested period.
+
+Filtering of data for waste types or time periods is a functionality of the framework and shall not be done by a source.
+
+### Source Code Example
+
+Example for `abc_com.py`:
+
+```py
+import datetime
+from waste_collection_schedule import Collection
+
+
+DESCRIPTION = "Example source for abc.com" # Describe your source
+URL = "abc.com" # Insert url to service homepage
+TEST_CASES = { # Insert arguments for test cases using test_sources.py script
+ "TestName": {"arg1": 100, "arg2": "street"}
+}
+
+
+class Source:
+ def __init__(self, arg1, arg2): # argX correspond to the args dict in the source configuration
+ self._arg1 = arg1
+ self._arg2 = arg2
+
+ def fetch(self):
+ entries = []
+
+ entries.append(
+ Collection(
+ datetime.datetime(2020, 4, 11),
+ "Waste Type",
+ )
+ )
+
+ return entries
+```
+
+See also: [custom_components/waste_collection_schedule/waste_collection_schedule/source/example.py](./custom_components/waste_collection_schedule/waste_collection_schedule/source/example.py)
+
+### Debugging
+
+Debugging a source within Home Assistant is not recommended because startup of HA is far too slow for fast debugging cycles.
+
+Instead, there is a test fixture which allows to run a source from the command line. The fixture is a Python script which is located here:
+
+`custom_components/waste_collection_schedule/waste_collection_schedule/test/test_sources.py`.
+
+The script uses the test cases defined in the source file and runs the source with the arguments of every test case.
+
+By default (without additional arguments), the script tests every source file in the `source` folder and prints the number of found entries for every test case.
+
+Example output for `abfall_io`:
+
+```text
+Testing source abfall_io ...
+ found 269 entries for Waldenbuch
+ found 55 entries for Landshut
+ found 101 entries for Schoenmackers
+ found 139 entries for Freudenstadt
+ found 190 entries for Ludwigshafen am Rhein
+```
+
+The script supports the following options:
+
+| Option | Argument | Description |
+|--------|----------|-------------------------------------------------------------------------------------------------------------------------------------------------|
+| `-s` | SOURCE | [Source name](https://github.com/mampfes/hacs_waste_collection_schedule#source-configuration-variables) (source file name without ending `.py`) |
+| `-l` | - | List all found dates |
+| `-i` | - | Add icon name to output. Only effective together with `-l`. |
+
+For debugging purposes of a single source, it is recommended to use the `-s SOURCE` option.
+
+Example for `abc_com.py`:
+
+```bash
+test_sources.py -s abc_com -l -i
+```
+
+## Videos
+
+There are some videos on YouTube:
+
+### German
+
+- [Bunte Mülltonnenerinnerung mit Home Assistant](https://youtu.be/MzQgARDvRww)
+- [Abfall Kalender in Home Assistant mit Erinnerung in Home Assistant](https://youtu.be/aCKLKGYiA7w)
+
+Please note that all these videos are **not** created by the developer of this component and therefore may be outdated, point in the wrong direction or contain errors. If you have questions, please create an issue here on GitHub. Do not ask your question in the YouTube comments because you may get wrong answers there.
diff --git a/md_archive/info.md b/md_archive/info.md
new file mode 100644
index 00000000..49f6817f
--- /dev/null
+++ b/md_archive/info.md
@@ -0,0 +1,215 @@
+# Waste Collection Schedule
+
+Waste Collection Schedule provides schedules from waste collection service providers to Home Assistant. Additionally, it supports schedules from generic ICS files which can be stored locally or fetched from a web site. There is a high flexibility in providing the information to be displayed.
+
+## Examples
+
+Per default (without further configuration), the time to the next collection will be shown in an [entity card](https://www.home-assistant.io/lovelace/entity/):
+
+
+
+You can also setup dedicated entities per waste type and show the schedule in various formats:
+
+
+
+
+
+The information in the more-info popup can be displayed in different formats:
+
+1. List of upcoming collections:
+
+ 
+
+2. List of waste types and collection date:
+
+ 
+
+[Button Card](https://github.com/custom-cards/button-card) can be used to create individual Lovelace cards:
+
+
+
+## Documentation
+
+- [Full Documentation](https://github.com/mampfes/hacs_waste_collection_schedule)
+
+## Supported Service Providers
+
+Currently the following service providers are supported:
+
+- [Generic ICS / iCal File](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ics.md)
+- [Static source](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/static.md)
+
+### Australia
+
+- [Banyule City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/banyule_vic_gov_au.md)
+- [Belmont City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/belmont_wa_gov_au.md)
+- [Brisbane City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/brisbane_qld_gov_au.md)
+- [Campbelltown City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/campbelltown_nsw_gov_au.md)
+- [City of Canada Bay Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/canadabay_nsw_gov_au.md)
+- [Inner West Council (NSW)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/innerwest_nsw_gov_au.md)
+- [Ku-ring-gai Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kuringgai_nsw_gov_au.md)
+- [Macedon Ranges Shire Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/mrsc_vic_gov_au.md)
+- [Maroondah City Council](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/maroondah_vic_gov_au.md)
+- [Melton City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/melton_vic_gov_au.md)
+- [Nillumbik Shire Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nillumbik_vic_gov_au.md)
+- [North Adelaide Waste Management Authority, South Australia](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nawma_sa_gov_au.md)
+- [RecycleSmart](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/recyclesmart.md)
+- [Stonnington City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stonnington_vic_gov_au.md)
+- [The Hills Council, Sydney](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/thehills_nsw_gov_au.md)
+- [Wyndham City Council, Melbourne](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/sourcewyndham_vic_gov_au.md)
+
+### Austria
+
+- [BMV.at](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/bmv_at.md)
+- [Data.Umweltprofis](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/data_umweltprofis_at.md)
+- [Korneuburg Stadtservice](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/korneuburg_stadtservice_at.md)
+- [WSZ-Moosburg.at](https://github.com/mampfes/hacs_waste_collection_schedule/doc/source/wsz_moosburg_at.md)
+
+### Belgium
+
+- [Hygea](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/hygea_be.md)
+- [Recycle! / RecycleApp.be](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/recycleapp_be.md)
+
+### Canada
+- [City of Toronto](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/toronto_ca.md)
+
+### Germany
+
+- [Abfall.IO / AbfallPlus.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_io.md)
+- [AbfallNavi.de (RegioIT.de)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfallnavi_de.md)
+- [Abfallkalender Würzburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wuerzburg_de.md)
+- [Abfalltermine Forchheim](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfalltermine_forchheim_de.md)
+- [Abfallwirtschaft Bremen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/c_trace_de.md)
+- [Abfallwirtschaft Landkreis Harburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aw_harburg_de.md)
+- [Abfallwirtschaft Landkreis Wolfenbüttel](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/alw_wf_de.md)
+- [Abfallwirtschaft Neckar-Odenwald-Kreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awn_de.md)
+- [Abfallwirtschaft Rendsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awr_de.md)
+- [Abfallwirtschaft Stuttgart](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stuttgart_de.md)
+- [Abfallwirtschaft Südholstein](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awsh_de.md)
+- [Abfallwirtschaft Zollernalbkreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_zollernalbkreis_de.md)
+- [Alb-Donau-Kreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/buergerportal_de.md)
+- [ART Trier](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/art_trier_de.md)
+- [AWB Bad Kreuznach](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_bad_kreuznach_de.md)
+- [AWB Esslingen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_es_de.md)
+- [AWB Limburg-Weilburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_lm_de.md)
+- [AWB Oldenburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awb_oldenburg_de.md)
+- [AWBKoeln.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awbkoeln_de.md)
+- [AWIDO-online.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/awido_de.md)
+- [Berlin-Recycling.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/berlin_recycling_de.md)
+- [Biedenkopf MZV](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/buergerportal_de.md)
+- [Bogenschuetz-Entsorgung.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/infeo_at.md)
+- [BSR.de / Berliner Stadtreinigungsbetriebe](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bsr_de.md)
+- [C-Trace.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/c_trace_de.md)
+- [Cochem-Zell](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/buergerportal_de.md)
+- [EGN-Abfallkalender.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/egn_abfallkalender_de.md)
+- [Erlangen-Höchstadt](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/erlangen_hoechstadt_de.md)
+- [Jumomind.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/jumomind_de.md)
+- [KWB-Goslar.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kwb_goslar_de.md)
+- [KWU-Entsorgung.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kwu_de.md)
+- [KAEV Niederlausitz](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kaev_niederlausitz_de.md)
+- [Landkreis-Wittmund.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/landkreis_wittmund_de.md)
+- [Landkreis Rhön Grabfeld](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/landkreis_rhoen_grabfeld.md)
+- [Landkreis Schwäbisch Hall](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lrasha_de.md)
+- [Muellmax.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/muellmax_de.md)
+- [MyMuell App](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/jumomind_de.md)
+- [Neunkirchen Siegerland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/abfall_neunkirchen_siegerland_de.md)
+- [RegioEntsorgung](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/regioentsorgung_de.md)
+- [Rhein-Hunsrück Entsorgung (RHE)](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/rh_entsorgung_de.md)
+- [Sector27.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sector27_de.md)
+- [Stadtreinigung Dresden](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_dresden_de.md)
+- [Stadtreinigung.Hamburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_hamburg.md)
+- [Stadtreinigung-Leipzig.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtreinigung_leipzig_de.md)
+- [Stadt-Willich.de](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadt_willich_de.md)
+- [Stadtservice Brühl](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stadtservice_bruehl_de.md)
+- [Städteservice Raunheim Rüsselsheim](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/staedteservice_de.md)
+- [Südbrandenburgischer Abfallzweckverband](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sbazv_de.md)
+- [Umweltbetrieb Stadt Bielefeld](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bielefeld_de.md)
+- [WAS Wolfsburg](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/was_wolfsburg_de.md)
+- [Wermelskirchen](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wermelskirchen_de.md)
+- [Zweckverband Abfallwirtschaft Werra-Meißner-Kreis](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/zva_wmk_de.md)
+
+### Lithuania
+
+- [Kauno švara](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/grafikai_svara_lt.md)
+
+### Netherlands
+
+- [HVCGroep and others](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/hvcgroep_nl.md)
+- [Ximmio](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ximmio_nl.md)
+
+### New Zealand
+
+- [Auckland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/aucklandcouncil_govt_nz.md)
+- [Christchurch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ccc_govt_nz.md)
+- [Gore, Invercargill & Southland](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wastenet_org_nz.md)
+- [Horowhenua District](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/horowhenua_govt_nz.md)
+- [Waipa District](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/waipa_nz.md)
+- [Wellington](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wellington_govt_nz.md)
+
+### Norway
+
+- [Min Renovasjon](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/minrenovasjon_no.md)
+- [Oslo Kommune](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/oslokommune_no.md)
+
+### Poland
+
+- [Warsaw](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/warszawa19115_pl.md)
+- [Multiple communities - ecoharmonogram](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ecoharmonogram_pl.md)
+
+### Sweden
+
+- [Lerum.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lerum_se.md)
+- [Ronneby Miljöteknik](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/miljoteknik_se.md)
+- [srvatervinning.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/srvatervinning_se.md)
+- [SSAM.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/ssam_se.md)
+- [Sysav.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sysav_se.md)
+- [Vasyd.se](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/vasyd_se.md)
+
+### Switzerland
+
+- [A-Region.ch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/a_region_ch.md)
+- [Lindau.ch](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lindau_ch.md)
+
+### United States of America
+
+- [PGH.ST](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/pgh_st.md)
+- [Republic Services](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/republicservices_com.md)
+- [Seattle Public Utilities](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/seattle_gov.md)
+
+### United Kingdom
+
+- [Bracknell Forest Council - bracknell-forest.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bracknell_forest_gov_uk.md)
+- [Bradford Metropolitan District Council - bradford.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/bradford_gov_uk.md)
+- [Braintree District Council - bracknell-forest.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/braintree_gov_uk.md)
+- [Cambridge City Council - cambridge.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cambridge_gov_uk.md)
+- [Canterbury City Council - canterbury.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/canterbury_gov_uk.md)
+- [Cheshire East Council - cheshireeast.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cheshire_east_gov_uk.md)
+- [Chesterfield Borough Council - chesterfield.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/chesterfield_gov_uk.md)
+- [Colchester Borough Council - colchester.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/colchester_gov_uk.md)
+- [Cornwall Council - cornwall.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/cornwall_gov_uk.md)
+- [Derby City Council - derby.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/derby_gov_uk.md)
+- [Eastbourne Borough Council - lewes-eastbourne.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/environmentfirst_co_uk.md)
+- [Elmbridge Borough Council - elmbridge.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/elmbridge_gov_uk.md)
+- [Guildford Borough Council - guildford.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/guildford_gov_uk.md)
+- [Harborough District Council - www.harborough.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/fccenvironment_co_uk.md)
+- [Huntingdonshire District Council - huntingdonshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/huntingdonshire_gov_uk.md)
+- [The Royal Borough of Kingston Council - kingston.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/kingston_gov_uk.md)
+- [Lewes District Council - lewes-eastbourne.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/environmentfirst_co_uk.md)
+- [London Borough of Lewisham - lewisham.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/lewisham_gov_uk.md)
+- [Manchester City Council - manchester.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/manchester_uk.md)
+- [Middlesbrough Council - middlesbrough.gov.uk](https://www.middlesbrough.gov.uk/bin-collection-dates)
+- [Newcastle City Council - newcastle.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/newcastle_gov_uk.md)
+- [North Somerset Council - n-somerset.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nsomerset_gov_uk.md)
+- [Nottingham City Council - nottinghamcity.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/nottingham_city_gov_uk.md)
+- [Peterborough City Council - peterborough.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/peterborough_gov_uk.md)
+- [Richmondshire District Council - richmondshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/richmondshire_gov_uk.md)
+- [Rushmoor Borough Council - rushmoor.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/rushmoor_gov_uk.md)
+- [Sheffield City Council - Sheffield.gov.uk]((https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/sheffield_gov_uk.md)
+- [South Cambridgeshire District Council - scambs.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/scambs_gov_uk.md)
+- [South Norfolk and Broadland Council - southnorfolkandbroadland.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/south_norfolk_and_broadland_gov_uk.md)
+- [Stevenage Borough Council - stevenage.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/stevenage_gov_uk.md)
+- [Tewkesbury Borough Council](./doc/source/tewkesbury_gov_uk.md)
+- [City of York Council - york.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/york_gov_uk.md)
+- [Walsall Council - walsall.gov.uk](./doc/source/walsall_gov_uk.md)
+- [West Berkshire Council - westberks.gov.uk](./doc/source/westberks_gov_uk.md)
+- [Wiltshire Council - wiltshire.gov.uk](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/doc/source/wiltshire_gov_uk.md)
diff --git a/update_docu_links.py b/update_docu_links.py
new file mode 100755
index 00000000..551083c4
--- /dev/null
+++ b/update_docu_links.py
@@ -0,0 +1,264 @@
+#!/usr/bin/env python3
+
+import argparse
+import importlib
+import re
+import site
+from pathlib import Path
+
+import yaml
+
+SECRET_FILENAME = "secrets.yaml"
+SECRET_REGEX = re.compile(r"!secret\s(\w+)")
+
+BLACK_LIST = {"ics", "static", "example"}
+
+START_COUNTRY_SECTION = ""
+END_COUNTRY_SECTION = ""
+
+
+def main():
+ parser = argparse.ArgumentParser(description="Test sources.")
+ args = parser.parse_args()
+
+ # read secrets.yaml
+ secrets = {}
+ try:
+ with open(SECRET_FILENAME) as stream:
+ try:
+ secrets = yaml.safe_load(stream)
+ except yaml.YAMLError as exc:
+ print(exc)
+ except FileNotFoundError:
+ # ignore missing secrets.yaml
+ pass
+
+ package_dir = (
+ Path(__file__).resolve().parents[0]
+ / "custom_components"
+ / "waste_collection_schedule"
+ )
+ source_dir = package_dir / "waste_collection_schedule" / "source"
+ print(source_dir)
+
+ # add module directory to path
+ site.addsitedir(str(package_dir))
+
+ files = filter(
+ lambda x: x != "__init__",
+ map(lambda x: x.stem, source_dir.glob("*.py")),
+ )
+
+ sources = []
+
+ # retrieve all data from sources
+ for f in files:
+ # iterate through all *.py files in waste_collection_schedule/source
+ module = importlib.import_module(f"waste_collection_schedule.source.{f}")
+
+ title = module.TITLE
+ url = module.URL
+ country = getattr(module, "COUNTRY", f.split("_")[-1])
+
+ if title is not None:
+ sources.append(
+ SourceInfo(filename=f, title=title, url=url, country=country)
+ )
+
+ extra_info = getattr(module, "EXTRA_INFO", [])
+ if callable(extra_info):
+ extra_info = extra_info()
+ for e in extra_info:
+ sources.append(
+ SourceInfo(
+ filename=f,
+ title=e.get("title", title),
+ url=e.get("url", url),
+ country=e.get("country", country),
+ )
+ )
+
+ # sort into countries
+ country_code_map = make_country_code_map()
+ countries = {}
+ zombies = []
+ for s in sources:
+ if s.filename in BLACK_LIST:
+ continue # skip
+
+ # extract country code
+ code = s.country
+ if code in country_code_map:
+ countries.setdefault(country_code_map[code]["name"], []).append(s)
+ else:
+ zombies.append(s)
+
+ update_readme_md(countries)
+ update_info_md(countries)
+
+ print("Zombies =========================")
+ for z in zombies:
+ print(z)
+
+
+def beautify_url(url):
+ url = url.removesuffix("/")
+ url = url.removeprefix("http://")
+ url = url.removeprefix("https://")
+ url = url.removeprefix("www.")
+ return url
+
+
+def update_readme_md(countries):
+ # generate country list
+ str = ""
+ for country in sorted(countries):
+ str += "\n"
+ str += f"{country}
\n"
+ str += "\n"
+
+ for e in sorted(countries[country], key=lambda e: e.title.lower()):
+ # print(f" {e.title} - {beautify_url(e.url)}")
+ str += (
+ f"- [{e.title}](/doc/source/{e.filename}.md) / {beautify_url(e.url)}\n"
+ )
+
+ str += " \n"
+ str += "\n"
+
+ # read entire file
+ with open("README.md") as f:
+ md = f.read()
+
+ # find beginning and end of country section
+ start_pos = md.index(START_COUNTRY_SECTION) + len(START_COUNTRY_SECTION) + 1
+ end_pos = md.index(END_COUNTRY_SECTION)
+
+ md = md[:start_pos] + str + md[end_pos:]
+
+ # write entire file
+ with open("README.md", "w") as f:
+ f.write(md)
+
+
+def update_info_md(countries):
+ # generate country list
+ str = ""
+ for country in sorted(countries):
+ str += f"| {country} | "
+ str += ", ".join(
+ [e.title for e in sorted(countries[country], key=lambda e: e.title.lower())]
+ )
+ str += " |\n"
+
+ # read entire file
+ with open("info.md") as f:
+ md = f.read()
+
+ # find beginning and end of country section
+ start_pos = md.index(START_COUNTRY_SECTION) + len(START_COUNTRY_SECTION) + 1
+ end_pos = md.index(END_COUNTRY_SECTION)
+
+ md = md[:start_pos] + str + md[end_pos:]
+
+ # write entire file
+ with open("info.md", "w") as f:
+ f.write(md)
+
+
+class SourceInfo:
+ def __init__(self, filename, title, url, country):
+ self._filename = filename
+ self._title = title
+ self._url = url
+ self._country = country
+
+ def __repr__(self):
+ return f"filename:{self._filename}, title:{self._title}, url:{self._url}, country:{self._country}"
+
+ @property
+ def filename(self):
+ return self._filename
+
+ @property
+ def title(self):
+ return self._title
+
+ @property
+ def url(self):
+ return self._url
+
+ @property
+ def country(self):
+ return self._country
+
+
+def make_country_code_map():
+ return {x["code"]: x for x in COUNTRYCODES}
+
+
+COUNTRYCODES = [
+ {
+ "code": "au",
+ "name": "Australia",
+ },
+ {
+ "code": "at",
+ "name": "Austria",
+ },
+ {
+ "code": "be",
+ "name": "Belgium",
+ },
+ {
+ "code": "ca",
+ "name": "Canada",
+ },
+ {
+ "code": "de",
+ "name": "Germany",
+ },
+ {
+ "code": "hamburg",
+ "name": "Germany",
+ },
+ {
+ "code": "lt",
+ "name": "Lithuania",
+ },
+ {
+ "code": "nl",
+ "name": "Netherlands",
+ },
+ {
+ "code": "nz",
+ "name": "New Zealand",
+ },
+ {
+ "code": "no",
+ "name": "Norway",
+ },
+ {
+ "code": "pl",
+ "name": "Poland",
+ },
+ {
+ "code": "se",
+ "name": "Sweden",
+ },
+ {
+ "code": "ch",
+ "name": "Switzerland",
+ },
+ {
+ "code": "us",
+ "name": "United States of America",
+ },
+ {
+ "code": "uk",
+ "name": "United Kingdom",
+ },
+]
+
+if __name__ == "__main__":
+ main()