From 091312a3698f7067d1c148011d079e9d93111696 Mon Sep 17 00:00:00 2001 From: Julian Haag Date: Thu, 9 Feb 2023 14:50:34 +0100 Subject: [PATCH] Add CMCityMedia --- README.md | 19 ++ .../service/CMCityMedia.py | 259 ++++++++++++++++++ .../source/cmcitymedia_de.py | 56 ++++ .../wizard/cmcitymedia_de.py | 175 ++++++++++++ doc/source/cmcitymedia_de.md | 54 ++++ info.md | 2 +- 6 files changed, 564 insertions(+), 1 deletion(-) create mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py create mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/source/cmcitymedia_de.py create mode 100644 custom_components/waste_collection_schedule/waste_collection_schedule/wizard/cmcitymedia_de.py create mode 100644 doc/source/cmcitymedia_de.md diff --git a/README.md b/README.md index af0629fc..70f9171a 100644 --- a/README.md +++ b/README.md @@ -127,17 +127,30 @@ Waste collection schedules in the following formats and countries are supported. - [Bremener Stadreinigung](/doc/source/c_trace_de.md) / die-bremer-stadtreinigung.de - [Bürgerportal](/doc/source/buergerportal_de.md) / c-trace.de - [C-Trace](/doc/source/c_trace_de.md) / c-trace.de +- [CM City Media - Müllkalender](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Dillingen Saar](/doc/source/dillingen_saar_de.md) / dillingen-saar.de - [Dinslaken](/doc/source/abfallnavi_de.md) / dinslaken.de - [EGN Abfallkalender](/doc/source/egn_abfallkalender_de.md) / egn-abfallkalender.de - [EGW Westmünsterland](/doc/source/abfallnavi_de.md) / egw.de - [Entsorgungsbetriebe Essen](/doc/source/abfall_io.md) / ebe-essen.de +- [Gemeinde Aschheim](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Blankenheim](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Bühlerzell](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Deggenhausertal](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Kalletal](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Kappelrodeck](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Kressbronn am Bodensee](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Gemeinde Lindlar](/doc/source/abfallnavi_de.md) / lindlar.de +- [Gemeinde Mittelbiberach](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Oberstadion](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Gemeinde Roetgen](/doc/source/abfallnavi_de.md) / roetgen.de +- [Gemeinde Schutterwald](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Gemeinde Senden (Westfalen)](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Gemeinde Unterhaching](/doc/source/awido_de.md) / unterhaching.de - [Göttinger Entsorgungsbetriebe](/doc/source/abfall_io.md) / geb-goettingen.de - [Gütersloh](/doc/source/abfallnavi_de.md) / guetersloh.de - [Halver](/doc/source/abfallnavi_de.md) / halver.de +- [Hohenlohekreis](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Jumomind](/doc/source/jumomind_de.md) / jumomind.de - [KAEV Niederlausitz](/doc/source/kaev_niederlausitz.md) / kaev.de - [Kreis Coesfeld](/doc/source/abfallnavi_de.md) / wbc-coesfeld.de @@ -166,6 +179,7 @@ Waste collection schedules in the following formats and countries are supported. - [Landkreis Rotenburg (Wümme)](/doc/source/abfall_io.md) / lk-awr.de - [Landkreis Schweinfurt](/doc/source/awido_de.md) / landkreis-schweinfurt.de - [Landkreis Schwäbisch Hall](/doc/source/lrasha_de.md) / lrasha.de +- [Landkreis Schwäbisch Hall](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Landkreis Sigmaringen](/doc/source/abfall_io.md) / landkreis-sigmaringen.de - [Landkreis Südliche Weinstraße](/doc/source/awido_de.md) / suedliche-weinstrasse.de - [Landkreis Tirschenreuth](/doc/source/awido_de.md) / kreis-tir.de @@ -190,9 +204,14 @@ Waste collection schedules in the following formats and countries are supported. - [Stadt Aachen](/doc/source/abfallnavi_de.md) / aachen.de - [Stadt Cottbus](/doc/source/abfallnavi_de.md) / cottbus.de - [Stadt Dorsten](/doc/source/abfallnavi_de.md) / ebd-dorsten.de +- [Stadt Ehingen](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Stadt Emden](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 +- [Stadt Emmendingen](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Stadt Kaufbeuren](/doc/source/awido_de.md) / kaufbeuren.de +- [Stadt Kraichtal](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Stadt Landshut](/doc/source/abfall_io.md) / landshut.de - [Stadt Memmingen](/doc/source/awido_de.md) / umwelt.memmingen.de +- [Stadt Messstetten](/doc/source/cmcitymedia_de.md) / sslslim.cmcitymedia.de/v1 - [Stadt Norderstedt](/doc/source/abfallnavi_de.md) / betriebsamt-norderstedt.de - [Stadt Regensburg](/doc/source/awido_de.md) / regensburg.de - [Stadt Solingen](/doc/source/abfallnavi_de.md) / solingen.de diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py b/custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py new file mode 100644 index 00000000..1120e0eb --- /dev/null +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py @@ -0,0 +1,259 @@ +#!/usr/bin/env python3 + +SERVICE_MAP = [ + { # Blankenheim, 53945 + "hpid": 415, + "realm": 41500, + "name": "Blankenheim App - Müllkalender", + "region": "Gemeinde Blankenheim", + "icons": { + "158": "mdi:package-variant", # Altpapier + "154": "mdi:leaf", # Biomüll + "159": "mdi:tree", # Grüngut + "157": "mdi:recycle", # Leichtverpackungen + "155": "mdi:trash-can", # Restmüll + "160": "mdi:truck-flatbed", # Sondermüll + "161": "mdi:truck-flatbed", # Sondermüll Rewe-Parkplatz + }, + }, + { + "hpid": 95, + "realm": 9501, + "name": "www.lrasha.de - Müllkalender", + "region": "Landkreis Schwäbisch Hall", + "icons": { + "16": "mdi:trash-can", # Bio- und Restmüllabfuhr (60 l/120 l/240 l/1,1 m³) + "12": "mdi:recycle", # Gelbe Säcke + "14": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 1, + "realm": 100, + "name": "www.buehlerzell.de - Müllkalender", + "region": "Gemeinde Bühlerzell", + "icons": { + "44": "mdi:trash-can", # Bio- und Restmüllabfuhr (60 l/120 l/240 l/1,1 m³) + "42": "mdi:recycle", # Gelbe Säcke + "43": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 107, + "realm": 10701, + "name": "www.kressbronn.de - Müllkalender", + "region": "Gemeinde Kressbronn am Bodensee", + "icons": { + "47": "mdi:trash-can", # Bio- und Restmüllabfuhr + "46": "mdi:recycle", # Gelbe Säcke + "48": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 168, + "realm": 16801, + "name": "www.hohenlohekreis.de - Müllkalender", + "region": "Hohenlohekreis", + "icons": { + "31": "mdi:leaf", # Bioenergietonne + "36": "mdi:pine-tree", # Christbaumsammlung + "30": "mdi:trash-can", # Restmülltonne + "33": "mdi:recycle", # Wertstofftonne Altpapier + "32": "mdi:package-variant", # Wertstofftonne Verpackung + }, + }, + { + "hpid": 225, + "realm": 22500, + "name": "Deggenhausertal App - Müllkalender", + "region": "Gemeinde Deggenhausertal", + "icons": { + "141": "mdi:nail", # Altmetallsammlung Vereine + "138": "mdi:leaf", # Bioabfall 2-wöchentlich + "139": "mdi:pine-tree", # Christbaumsammlung + "143": "mdi:tree", # Gartenabfall + "142": "mdi:recycle", # Gelber Sack + "146": "mdi:package-variant", # Papier 4-wöchentlich + "145": "mdi:package-variant", # Papiercontainer 2-wöchentlich nur nach Anmeldung + "140": "mdi:package-variant", # Papiersammlung Vereine + "144": "mdi:biohazard", # Problemstoffsammlung + "136": "mdi:trash-can", # Restmüll 2-wöchentlich + "137": "mdi:trash-can", # Restmüll 4-wöchentlich + }, + }, + { + "hpid": 233, + "realm": 23301, + "name": "kraichtal.de - Müllkalender 1", + "region": "Stadt Kraichtal", + "icons": { + "19": "mdi:package-variant", # Altpapier + "21": "mdi:trash-can", # Reststoff + "25": "mdi:biohazard", # Schadstoff + "18": "mdi:recycle", # Wertstoff + }, + }, + { + "hpid": 248, + "realm": 24800, + "name": "www.kappelrodeck.de - Müllkalender", + "region": "Gemeinde Kappelrodeck", + "icons": { + "75": "mdi:trash-can", # Bio- und Restmüllabfuhr (60 l/120 l/240 l/1,1 m³) + "73": "mdi:recycle", # Gelbe Säcke + "74": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 331, + "realm": 33100, + "name": "www.schutterwald.de - Müllkalender", + "region": "Gemeinde Schutterwald", + "icons": { + "67": "mdi:trash-can", # Bio- und Restmüllabfuhr (60 l/120 l/240 l/1,1 m³) + "65": "mdi:recycle", # Gelbe Säcke + "66": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 374, + "realm": 37401, + "name": "www.aschheim.de - Müllkalender", + "region": "Gemeinde Aschheim", + "icons": { + "38": "mdi:leaf", # Biomüll + "147": "mdi:vacuum", # Biotonnenreinigung + "37": "mdi:recycle", # Gelber Sack + "41": "mdi:biohazard", # Giftmobil + "45": "mdi:tree", # Häckselaktion + "61": "mdi:package-variant", # Papier Aschheim + "165": "mdi:package-variant", # Papier Dornach + "39": "mdi:trash-can", # Restmüll Nord + "40": "mdi:trash-can", # Restmüll Süd + "68": "mdi:plus", # Sonderleerung + }, + }, + { + "hpid": 390, + "realm": 39000, + "name": "Mittelbiberach App - Müllkalender", + "region": "Gemeinde Mittelbiberach", + "icons": { + "149": "mdi:trash-can", # Bio- und Restmüllabfuhr + "148": "mdi:recycle", # Gelbe Säcke + "150": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 391, + "realm": 39100, + "name": "www.ehingen.de - Müllkalender", + "region": "Stadt Ehingen", + "icons": { + "116": "mdi:leaf", # Biotonne + "121": "mdi:package-variant", # Blaue Tonne + "117": "mdi:pine-tree", # Christbaum + "122": "mdi:tree", # Gartenabraum + "118": "mdi:recycle", # Gelber Sack + "123": "mdi:trash-can", # Hausmüll + "119": "mdi:package-variant", # Vereinssammlung Papier + "120": "mdi:package-variant", # Vereinssammlung Papier und Kartonagen + }, + }, + { + "hpid": 420, + "realm": 42000, + "name": "Senden (Westfalen) App - Müllkalender", + "region": "Gemeinde Senden (Westfalen)", + "icons": { + "97": "mdi:leaf", # Biotonne + "95": "mdi:recycle", # gelbe Tonne/säcke + "102": "mdi:tree", # Häcksler - Auf der Horst + "99": "mdi:tree", # Häcksler - Drachenwiese, Droste-zu-Senden-Str. + "100": "mdi:tree", # Häcksler - Gemeindl. Bauhof + "101": "mdi:tree", # Häcksler - Parkplatz Havixbecker Str. + "98": "mdi:tree", # Häcksler - Spielplatz Siebenstücken + "96": "mdi:package-variant", # Papiertonne + "94": "mdi:trash-can", # Restmülltonne + "103": "mdi:biohazard", # Schadstoffmobil + }, + }, + { + "hpid": 421, + "realm": 42100, + "name": "KEPTN App - Müllkalender", + "region": "Stadt Emden", + "icons": { + "56": "mdi:recycle", # Gelber Sack (Gelbe Tonne) + "57": "mdi:package-variant", # Papier, Pappe, Karton (Blaue Tonne) + "55": "mdi:trash-can", # Restabfall (Graue Tonne) + }, + }, + { + "hpid": 424, + "realm": 42400, + "name": "Emmendingen App - Müllkalender", + "region": "Stadt Emmendingen", + "icons": { + "79": "mdi:trash-can", # Bio- und Restmüllabfuhr (60 l/120 l/240 l/1,1 m³) + "77": "mdi:recycle", # Gelbe Säcke + "78": "mdi:package-variant", # Papiertonne + }, + }, + { + "hpid": 426, + "realm": 42600, + "name": "DORFnet - Müllkalender", + "region": "Gemeinde Kalletal", + "icons": { + "63": "mdi:package-variant", # Blaue Altpapiertonne + "124": "mdi:recycle", # Gelbe Tonne + "64": "mdi:trash-can", # Graue Restmülltonne + "69": "mdi:leaf", # Grüne Biotonne + "70": "mdi:leaf", # Saisonbiotonne + "71": "mdi:biohazard", # Schadstoffsammlung + "72": "mdi:baby", # Windelsack + }, + }, + { + "hpid": 441, + "realm": 44100, + "name": "Messstetten App - Müllkalender", + "region": "Stadt Messstetten", + "icons": { + "113": "mdi:package-variant", # Altpapiersammlung + "107": "mdi:package-variant", # Altpapiertonne + "106": "mdi:leaf", # Biotonne + "115": "mdi:pine-tree", # Christbaumsammlung + "108": "mdi:recycle", # Gelber Sack + "109": "mdi:tree", # Grünabfall-Abfuhr + "110": "mdi:fridge", # Kühlgeräte, Bildschirme und Fernsehgeräte + "104": "mdi:trash-can", # Restmülltonne + "105": "mdi:trash-can", # Restmülltonne 1100 l + "111": "mdi:biohazard", # Schadstoffsammlung Gewerbe in der Kreismülldeponie + "112": "mdi:biohazard", # Schadstoffsammlung im Wertstoffzentrum + "114": "mdi:nail", # Schrottsammlung + }, + }, + { + "hpid": 447, + "realm": 44700, + "name": "Oberstadion App - Müllkalender", + "region": "Gemeinde Oberstadion", + "icons": { + "128": "mdi:tshirt-crew", # Altkleider + "133": "mdi:nail", # Altmetall + "162": "mdi:leaf", # Bioabfalltonne + "129": "mdi:package-variant", # Blaue Tonne + "130": "mdi:pine-tree", # Christbaumabfuhr + "132": "mdi:tree", # Gartenabraum + "127": "mdi:recycle", # Gelber Sack + "126": "mdi:trash-can", # Hausmüll + "131": "mdi:tree", # Holzabfuhr + "164": "mdi:biohazard", # Problemstoffannahme im Entsorgungszentrum + "135": "mdi:biohazard", # Schadstoffmobil + "134": "mdi:trash-can-outline", # Sperrmüll + "163": "mdi:package-variant", # Straßensammlung Papier + }, + }, +] diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/source/cmcitymedia_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/source/cmcitymedia_de.py new file mode 100644 index 00000000..03092c7b --- /dev/null +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/source/cmcitymedia_de.py @@ -0,0 +1,56 @@ +import datetime +import requests +import ssl +from waste_collection_schedule import Collection +from waste_collection_schedule.service.CMCityMedia import SERVICE_MAP + +TITLE = "CM City Media - Müllkalender" +DESCRIPTION = "Source script for cmcitymedia.de" +URL = "https://sslslim.cmcitymedia.de/v1/" +TEST_CASES = { + "Blankenheim - Bezirk F: Lindweiler, Rohr": {"hpid": 415, "district": 1371}, + "Blankenheim": {"hpid": 415, "realmid": 41500}, + "Oberstadion": {"hpid": 447, "district": 1349}, +} +def EXTRA_INFO(): + return [{"title": s["region"], "url": URL} for s in SERVICE_MAP] + +API_URL = "https://sslslim.cmcitymedia.de/v1/{}/waste/{}/dates" +DATE_FORMAT = "%Y-%m-%d" + +class TLSAdapter(requests.adapters.HTTPAdapter): + + def init_poolmanager(self, *args, **kwargs): + ctx = ssl.create_default_context() + ctx.set_ciphers('DEFAULT@SECLEVEL=1') + kwargs['ssl_context'] = ctx + return super(TLSAdapter, self).init_poolmanager(*args, **kwargs) + +class Source: + def __init__(self, hpid, realmid=None, district=None): + self.hpid = hpid + self.service = next((item for item in SERVICE_MAP if item["hpid"] == self.hpid), None) + self.realmid = realmid if realmid else self.service["realm"] + self.district = district + self.session = requests.Session() + self.session.mount('https://', TLSAdapter()) + + def fetch(self): + + entries = [] + + district_param = f"?district={self.district}" if self.district else "" + result = self.session.get(API_URL.format(self.hpid, self.service["realm"]) + district_param) + + result.raise_for_status() + + for item in result.json()["result"][1]["items"]: + entries.append( + Collection( + date=datetime.datetime.strptime(item["date"], DATE_FORMAT).date(), + t=item["name"], + icon=self.service["icons"][item["wastetype"]], + ) + ) + + return entries diff --git a/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/cmcitymedia_de.py b/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/cmcitymedia_de.py new file mode 100644 index 00000000..f69f0427 --- /dev/null +++ b/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/cmcitymedia_de.py @@ -0,0 +1,175 @@ +import requests +import ssl + +class TLSAdapter(requests.adapters.HTTPAdapter): + + def init_poolmanager(self, *args, **kwargs): + ctx = ssl.create_default_context() + ctx.set_ciphers('DEFAULT@SECLEVEL=1') + kwargs['ssl_context'] = ctx + return super(TLSAdapter, self).init_poolmanager(*args, **kwargs) + + +def get_waste_types(hpid, realmid): + session = requests.session() + session.mount('https://', TLSAdapter()) + + r = session.get(f"https://sslslim.cmcitymedia.de/v1/{hpid}/waste/{realmid}/types") + r.raise_for_status() + + r = r.json() + items = r["result"][1]["items"] + + return items + +def get_waste_districts(hpid, realmid): + session = requests.session() + session.mount('https://', TLSAdapter()) + + r = session.get(f"https://sslslim.cmcitymedia.de/v1/{hpid}/waste/{realmid}/districts") + r.raise_for_status() + + r = r.json() + items = r["result"][1]["items"] + + return items + +def get_waste_realms(hpid): + session = requests.session() + session.mount('https://', TLSAdapter()) + + r = session.get(f"https://sslslim.cmcitymedia.de/v1/{hpid}/waste") + r.raise_for_status() + + r = r.json() + realm = r["result"][1]["items"] + + return realm + +def get_all_hpid(): + i_from = 0 + i_to = 1000 # currently max i found is + + founds = [] + + session = requests.session() + session.mount('https://', TLSAdapter()) + + for i in range(i_from, i_to): + r = session.get(f"https://sslslim.cmcitymedia.de/v1/{i}/waste") + if r.status_code == 200: + r = r.json() + items = r["result"][1]["items"] + if len(items) > 0: + print(f"Found hpid: {i} -> {items}") + founds.append((i, items)) + + if len(items) > 1: + print("Found more than one, aborting, look what's going on here, because this is not expected.") + break + + return founds + +def gen_all_icons(): + founds = get_all_hpid() + + text = "" + for hpid, realms in founds: + for realm in realms: + text += gen_icons(hpid, realm) + + return text + +def gen_icons(hpid, realm): + realmid = realm["id"] + types = get_waste_types(hpid, realmid) + text = "{ \n" + text += f'"hpid": {hpid},\n' + text += f'"realm": {realmid},\n' + text += f'"name": "{realm["name"]}",\n' + text += '"icons": {\n' + for t in types: + text += f'"{t["id"]}": "", # {t["name"]}\n' + text += '}, \n' + text += '}, \n' + + return text + + +def main(): + i = input("What do you want to do? (0: wizard, 1: get all hpid, 2: get waste types, 3: get waste districts, 4: generate icons list, 5: generate all icons lists): ") + if i == "1": + print(get_all_hpid()) + elif i == "2": + hpid = input("hpid: ") + realmid = get_waste_realms(hpid)[0]["id"] + types = get_waste_types(hpid, realmid) + for t in types: + print(f"{t['id']}: {t['name']}") + elif i == "3": + hpid = input("hpid: ") + realmid = get_waste_realms(hpid)[0]["id"] + districts = get_waste_districts(hpid, realmid) + for d in districts: + print(f"{d['id']}: {d['name']}") + elif i == "4": + hpid = input("hpid: ") + realm = get_waste_realms(hpid)[0] + text = gen_icons(hpid, realm) + print("Copy this into custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py") + print("") + print(text) + elif i == "5": + print(gen_all_icons()) + elif i == "0": + print("Wizard:") + print("Did you find your hpid? (y/n) (look at custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py)") + i = input() + if i == "y": + print("Great, input your hpid:") + else: + print("Ok, let's try to find it. This can take a while.") + get_all_hpid() + print("Did you know your hpid? (y/n)") + i = input() + if i == "n": + print("Ok, aborting. Then this script does not work for you.") + return + + hpid = input("hpid: ") + realmid = get_waste_realms(hpid)[0]["id"] + districts = get_waste_districts(hpid, realmid) + print("Found districts:") + for i, district in enumerate(districts): + print(f"{i}: {district['name']}") + print("Which one do you want to use? You also can use none, if you want all districts then type n.") + i = input() + if i == "n": + print("Ok, put this in your configuration.yaml:") + print(f""" +waste_collection_schedule: + sources: + - name: cmcitymedia_de + args: + hpid: {hpid} + realmid: {realmid} +""") + else: + district = districts[int(i)] + if district is None: + print("This is not a valid district.") + return + print("Ok, put this in your configuration.yaml:") + print(f""" +waste_collection_schedule: + sources: + - name: cmcitymedia_de + args: + hpid: {hpid} + realmid: {realmid} + district: {district['id']} +""") + else: + print("Unknown command.") + +main() \ No newline at end of file diff --git a/doc/source/cmcitymedia_de.md b/doc/source/cmcitymedia_de.md new file mode 100644 index 00000000..9c19ba34 --- /dev/null +++ b/doc/source/cmcitymedia_de.md @@ -0,0 +1,54 @@ +# CM City Media - Müllkalender + +Support for schedules provided by [CM City Media - Müllkalender](https://sslslim.cmcitymedia.de/v1/). The official homepage is using the URL [cmcitymedia.de](https://www.cmcitymedia.de/de/startseite) instead. + +## Configuration via configuration.yaml + +```yaml +waste_collection_schedule: + sources: + - name: cmcitymedia_de + args: + hpid: 1 + realmid: 1 + district: 1 +``` + +### Configuration Variables + +**hpid** +*(integer) (required)* + +**realmid** +*(integer) (optional) (automatic grab default one)* + +**district** +*(integer) (optional)* + +## Example + +```yaml +waste_collection_schedule: + sources: + - name: cmcitymedia_de + args: + hpid: 415 + district: 1371 +``` + +## How to get the source arguments + +## Simple Variant: Use wizard script + +You can find common hpid values in [https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/custom_components/waste_collection_schedule/waste_collection_schedule/service/CMCityMedia.py) + +There is a script with an interactive command line interface which generates the required source configuration: + +[https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citymedia_de.py](https://github.com/mampfes/hacs_waste_collection_schedule/blob/master/custom_components/waste_collection_schedule/waste_collection_schedule/wizard/citymedia_de.py) + +Run this script from a shell and answer the questions. You start the wizard with option 0. + +### Hardcore Variant: Extract arguments from App + +1. Decompile the App, extract the source code and search in the source code for hpid or get the hpid from somewhere else +2. Use the Wizard to get the other arguments or use something like postman to get the other arguments from the [API](https://sslslim.cmcitymedia.de/v1/) diff --git a/info.md b/info.md index 95561d85..036fe3ba 100644 --- a/info.md +++ b/info.md @@ -20,7 +20,7 @@ Waste collection schedules from service provider web sites are updated daily, de | Austria | Burgenländischer Müllverband, infeo, Stadtservice Korneuburg, Umweltprofis, WSZ Moosburg | | Belgium | Hygea, Recycle! | | Canada | City of Toronto | -| Germany | Abfall Stuttgart, Abfall-Wirtschafts-Verband Nordschwaben, Abfall.IO / AbfallPlus, Abfallbewirtschaftung Ostalbkreis, Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Lahn-Dill-Kreises, Abfallwirtschaft Landkreis Böblingen, Abfallwirtschaft Landkreis Freudenstadt, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Kitzingen, Abfallwirtschaft Landkreis Landsberg am Lech, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Ortenaukreis, Abfallwirtschaft Rems-Murr, Abfallwirtschaft Rendsburg, Abfallwirtschaft Stadt Fürth, Abfallwirtschaft Stadt Nürnberg, Abfallwirtschaft Stadt Schweinfurt, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschaft Zollernalbkreis, Abfallwirtschafts-Zweckverband des Landkreises Hersfeld-Rotenburg, Abfallwirtschaftsbetrieb Bergisch Gladbach, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Landkreis Ahrweiler, Abfallwirtschaftsbetrieb Landkreis Altenkirchen, ALBA Berlin, ART Trier, ASO Abfall-Service Osterholz, AWA Entsorgungs GmbH, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Augsburg, AWB Landkreis Bad Dürkheim, AWB Landkreis Fürstenfeldbruck, AWB Landkreis Göppingen, AWB Oldenburg, AWB Westerwaldkreis, AWG Kreis Warendorf, AWIDO Online, Bergischer Abfallwirtschaftverbund, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bielefeld, Bogenschütz Entsorgung, Bremener Stadreinigung, Bürgerportal, C-Trace, Dillingen Saar, Dinslaken, EGN Abfallkalender, EGW Westmünsterland, Entsorgungsbetriebe Essen, Gemeinde Lindlar, Gemeinde Roetgen, Gemeinde Unterhaching, Göttinger Entsorgungsbetriebe, Gütersloh, Halver, Jumomind, KAEV Niederlausitz, Kreis Coesfeld, Kreis Heinsberg, Kreis Pinneberg, Kreiswirtschaftsbetriebe Goslar, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Ansbach, Landkreis Bayreuth, Landkreis Berchtesgadener Land, Landkreis Calw, Landkreis Coburg, Landkreis Erding, Landkreis Erlangen-Höchstadt, Landkreis Gotha, Landkreis Günzburg, Landkreis Heilbronn, Landkreis Kelheim, Landkreis Kronach, Landkreis Limburg-Weilburg, Landkreis Nordwestmecklenburg, Landkreis Ostallgäu, Landkreis Rhön Grabfeld, Landkreis Rosenheim, Landkreis Rotenburg (Wümme), Landkreis Schweinfurt, Landkreis Schwäbisch Hall, Landkreis Sigmaringen, Landkreis Südliche Weinstraße, Landkreis Tirschenreuth, Landkreis Tübingen, Landkreis Wittmund, Landkreisbetriebe Neuburg-Schrobenhausen, Landratsamt Aichach-Friedberg, Landratsamt Dachau, Landratsamt Traunstein, Landratsamt Unterallgäu, Ludwigshafen am Rhein, MZV Biedenkopf, MüllALARM / Schönmackers, Müllmax, Neunkirchen Siegerland, Neustadt a.d. Waldnaab, Pullach im Isartal, RegioEntsorgung Städteregion Aachen, Rhein-Hunsrück Entsorgung (RHE), Rhein-Neckar-Kreis, Sector 27 - Datteln, Marl, Oer-Erkenschwick, Stadt Aachen, Stadt Cottbus, Stadt Dorsten, Stadt Kaufbeuren, Stadt Landshut, Stadt Memmingen, Stadt Norderstedt, Stadt Regensburg, Stadt Solingen, Stadt Unterschleißheim, Stadt Willich, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, StadtService Brühl, STL Lüdenscheid, Städteservice Raunheim Rüsselsheim, Südbrandenburgischer Abfallzweckverband, WBO Wirtschaftsbetriebe Oberhausen, Wermelskirchen, WGV Recycling GmbH, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg, Zweckverband Abfallwirtschaft Saale-Orla, Zweckverband München-Südost | +| Germany | Abfall Stuttgart, Abfall-Wirtschafts-Verband Nordschwaben, Abfall.IO / AbfallPlus, Abfallbewirtschaftung Ostalbkreis, Abfallkalender Würzburg, AbfallNavi (RegioIT.de), Abfalltermine Forchheim, Abfallwirtschaft Alb-Donau-Kreis, Abfallwirtschaft Lahn-Dill-Kreises, Abfallwirtschaft Landkreis Böblingen, Abfallwirtschaft Landkreis Freudenstadt, Abfallwirtschaft Landkreis Harburg, Abfallwirtschaft Landkreis Kitzingen, Abfallwirtschaft Landkreis Landsberg am Lech, Abfallwirtschaft Landkreis Wolfenbüttel, Abfallwirtschaft Neckar-Odenwald-Kreis, Abfallwirtschaft Nürnberger Land, Abfallwirtschaft Ortenaukreis, Abfallwirtschaft Rems-Murr, Abfallwirtschaft Rendsburg, Abfallwirtschaft Stadt Fürth, Abfallwirtschaft Stadt Nürnberg, Abfallwirtschaft Stadt Schweinfurt, Abfallwirtschaft Südholstein, Abfallwirtschaft Werra-Meißner-Kreis, Abfallwirtschaft Zollernalbkreis, Abfallwirtschafts-Zweckverband des Landkreises Hersfeld-Rotenburg, Abfallwirtschaftsbetrieb Bergisch Gladbach, Abfallwirtschaftsbetrieb Esslingen, Abfallwirtschaftsbetrieb Landkreis Ahrweiler, Abfallwirtschaftsbetrieb Landkreis Altenkirchen, ALBA Berlin, ART Trier, ASO Abfall-Service Osterholz, AWA Entsorgungs GmbH, AWB Bad Kreuznach, AWB Köln, AWB Landkreis Augsburg, AWB Landkreis Bad Dürkheim, AWB Landkreis Fürstenfeldbruck, AWB Landkreis Göppingen, AWB Oldenburg, AWB Westerwaldkreis, AWG Kreis Warendorf, AWIDO Online, Bergischer Abfallwirtschaftverbund, Berlin Recycling, Berliner Stadtreinigungsbetriebe, Bielefeld, Bogenschütz Entsorgung, Bremener Stadreinigung, Bürgerportal, C-Trace, CM City Media - Müllkalender, Dillingen Saar, Dinslaken, EGN Abfallkalender, EGW Westmünsterland, Entsorgungsbetriebe Essen, Gemeinde Aschheim, Gemeinde Blankenheim, Gemeinde Bühlerzell, Gemeinde Deggenhausertal, Gemeinde Kalletal, Gemeinde Kappelrodeck, Gemeinde Kressbronn am Bodensee, Gemeinde Lindlar, Gemeinde Mittelbiberach, Gemeinde Oberstadion, Gemeinde Roetgen, Gemeinde Schutterwald, Gemeinde Senden (Westfalen), Gemeinde Unterhaching, Göttinger Entsorgungsbetriebe, Gütersloh, Halver, Hohenlohekreis, Jumomind, KAEV Niederlausitz, Kreis Coesfeld, Kreis Heinsberg, Kreis Pinneberg, Kreiswirtschaftsbetriebe Goslar, KV Cochem-Zell, KWU Entsorgung Landkreis Oder-Spree, Landkreis Ansbach, Landkreis Bayreuth, Landkreis Berchtesgadener Land, Landkreis Calw, Landkreis Coburg, Landkreis Erding, Landkreis Erlangen-Höchstadt, Landkreis Gotha, Landkreis Günzburg, Landkreis Heilbronn, Landkreis Kelheim, Landkreis Kronach, Landkreis Limburg-Weilburg, Landkreis Nordwestmecklenburg, Landkreis Ostallgäu, Landkreis Rhön Grabfeld, Landkreis Rosenheim, Landkreis Rotenburg (Wümme), Landkreis Schweinfurt, Landkreis Schwäbisch Hall, Landkreis Schwäbisch Hall, Landkreis Sigmaringen, Landkreis Südliche Weinstraße, Landkreis Tirschenreuth, Landkreis Tübingen, Landkreis Wittmund, Landkreisbetriebe Neuburg-Schrobenhausen, Landratsamt Aichach-Friedberg, Landratsamt Dachau, Landratsamt Traunstein, Landratsamt Unterallgäu, Ludwigshafen am Rhein, MZV Biedenkopf, MüllALARM / Schönmackers, Müllmax, Neunkirchen Siegerland, Neustadt a.d. Waldnaab, Pullach im Isartal, RegioEntsorgung Städteregion Aachen, Rhein-Hunsrück Entsorgung (RHE), Rhein-Neckar-Kreis, Sector 27 - Datteln, Marl, Oer-Erkenschwick, Stadt Aachen, Stadt Cottbus, Stadt Dorsten, Stadt Ehingen, Stadt Emden, Stadt Emmendingen, Stadt Kaufbeuren, Stadt Kraichtal, Stadt Landshut, Stadt Memmingen, Stadt Messstetten, Stadt Norderstedt, Stadt Regensburg, Stadt Solingen, Stadt Unterschleißheim, Stadt Willich, Stadtreinigung Dresden, Stadtreinigung Hamburg, Stadtreinigung Leipzig, StadtService Brühl, STL Lüdenscheid, Städteservice Raunheim Rüsselsheim, Südbrandenburgischer Abfallzweckverband, WBO Wirtschaftsbetriebe Oberhausen, Wermelskirchen, WGV Recycling GmbH, Wolfsburger Abfallwirtschaft und Straßenreinigung, WZV Kreis Segeberg, Zweckverband Abfallwirtschaft Saale-Orla, Zweckverband München-Südost | | Lithuania | Kauno švara | | Netherlands | ACV Group, Alpen an den Rijn, Area Afval, Avalex, Avri, Bar Afvalbeheer, Circulus, 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 |