from util import DeviceInfo from ruamel.yaml import YAML import knx_conf as knx def create_config(): lights = [ # Dimmers DeviceInfo('Wohnzimmerlampe', 'Wohnzimmer Deckenlampe'), DeviceInfo('EsszimmerlampeWest', 'Esszimmer Deckenlampe West'), DeviceInfo('EsszimmerlampeMitte', 'Esszimmer Deckenlampe Mitte'), DeviceInfo("EsszimmerWandlampe", 'Esszimmer Schrankleuchte'), DeviceInfo("Küchenlampe", "Küche Deckenlampe"), DeviceInfo("AussenleuchteUntenSO", "Aussen Terassenlicht"), DeviceInfo("Gang", "Gang Licht"), DeviceInfo("Bad", "Bad Licht"), DeviceInfo("GangWindfang", "Gang Einganglicht"), DeviceInfo("LichtWaschküche", "Waschküche Licht"), # Normal lights DeviceInfo('AussenleuchteHaustüren', 'Haustür Licht'), DeviceInfo('AussenleuchteObenNW', 'Haustür Licht NW'), DeviceInfo('TreppenhausLicht', "Treppenhaus Licht"), DeviceInfo('WCLicht', "WC Licht"), DeviceInfo('LampeVorratsraum', "Vorratsraum Licht"), ] shutters = [ DeviceInfo('Wohnzimmer Fenster Rollo', 'Wohnzimmer Fenster Rollo'), DeviceInfo('Terassentür Rollo', 'Wohnzimmer Terrassentür Rollo'), DeviceInfo('Küchenfenster Rollo', 'Küche Fenster Rollo'), DeviceInfo('Esszimmerfenster Rollo', 'Esszimmer Fenster Rollo'), ] switches = [ # Bells DeviceInfo("KlingelOben", "Klingel Oben"), DeviceInfo("Klingel Innen", "Klingel Innentür"), DeviceInfo("Klingel Aussen", "Klingen Außentür"), # Bewegungsmelder LEDs DeviceInfo("BewegungsmelderMitte LED", "Bewegungsmelder Mitte LED"), DeviceInfo("BewegungsmelderWest LED", "Bewegungsmelder West LED"), DeviceInfo("BewegungsmelderOst LED", "Bewegungsmelder Ost LED"), ] scene_button_names = ['ObenLinks', 'ObenRechts', 'MitteLinks', 'MitteRechts', 'UntenLinks', 'UntenRechts'] scene_button_names = [(i, e) for i, e in enumerate(scene_button_names)] switches += [DeviceInfo(f"SzeneEsszimmer{n}", "Esszimmer Szene {i}") for i, n in scene_button_names] switches += [DeviceInfo(f"SzeneWohnzimmer{n}", "Wohnzimmer Szene {i}") for i, n in scene_button_names] switches += [DeviceInfo(f"SzeneEingang{n}", "Eingang Szene {i}") for i, n in scene_button_names[2:]] switches += [DeviceInfo(f"SzeneTerrassentuer{n}", "Wohnzimmer Terrassentür Szene {i}") for i, n in scene_button_names[2: 4]] power_plugs = [ # Vorratsraum DeviceInfo("VorratsraumSteckdose1", "Vorratsraum Steckdose"), DeviceInfo("VorratsraumSteckdose2", "Vorratsraum Steckdose"), DeviceInfo("VorratsraumSteckdose3", "Gefrierschrank"), # Waschraum DeviceInfo("Trockner", "Trockner"), DeviceInfo("Waschmaschine", "Waschmaschine"), # Küche DeviceInfo("KücheSteckdose1", "Küche Steckdose 1"), DeviceInfo("KücheSteckdose2", "Küche Steckdose 2"), DeviceInfo("Spülmaschine", "Spülmaschine"), DeviceInfo("Backofen", "Backofen"), DeviceInfo("HerdP1", "Herd Phase 1"), DeviceInfo("HerdP2", "Herd Phase 2"), DeviceInfo("HerdP3", "Herd Phase 3"), # Rest DeviceInfo("ArbeitszimmerSteckdose", "Arbeitszimmer Steckdose"), DeviceInfo("WohnzimmerSteckdose1", "Wohnzimmer Steckdose 1"), DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2"), ] imported_csv = knx.import_ets5_csv_file('knx_data/export_project1.csv') imported_csv.update(knx.import_ets5_csv_file('knx_data/export_project2.csv')) devices = {} knx.extent(devices, knx.create_lights(lights, imported_csv)) knx.extent(devices, knx.create_shutters(shutters, imported_csv)) knx.extent(devices, knx.create_switches(switches, imported_csv)) knx.extent(devices, knx.create_power_plug(power_plugs, imported_csv)) YAML().dump(devices, open('knx_devices.yaml', 'w')) if __name__ == '__main__': create_config()