Added groups to config generation
This commit is contained in:
@@ -1,45 +1,48 @@
|
||||
from util import DeviceInfo
|
||||
from util import DeviceInfo, add_to_group
|
||||
from ruamel.yaml import YAML
|
||||
import knx_conf as knx
|
||||
|
||||
|
||||
def create_config():
|
||||
yaml = YAML()
|
||||
|
||||
|
||||
def add_knx_devices(devices, groups):
|
||||
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"),
|
||||
DeviceInfo('Wohnzimmerlampe', 'Wohnzimmer Deckenlampe', 'living_area'),
|
||||
DeviceInfo('EsszimmerlampeWest', 'Esszimmer Deckenlampe West', 'living_area'),
|
||||
DeviceInfo('EsszimmerlampeMitte', 'Esszimmer Deckenlampe Mitte', 'living_area'),
|
||||
DeviceInfo("EsszimmerWandlampe", 'Esszimmer Schrankleuchte', 'living_area'),
|
||||
DeviceInfo("Küchenlampe", "Küche Deckenlampe", 'living_area'),
|
||||
DeviceInfo("AussenleuchteUntenSO", "Aussen Terassenlicht", 'outside'),
|
||||
DeviceInfo("Gang", "Gang Licht", 'hallway'),
|
||||
DeviceInfo("Bad", "Bad Licht", 'bathroom'),
|
||||
DeviceInfo("GangWindfang", "Gang Einganglicht", 'hallway'),
|
||||
DeviceInfo("LichtWaschküche", "Waschküche Licht", 'hallway'),
|
||||
# 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"),
|
||||
DeviceInfo('AussenleuchteHaustüren', 'Haustür Licht', 'outside'),
|
||||
DeviceInfo('AussenleuchteObenNW', 'Haustür Licht NW', 'outside'),
|
||||
DeviceInfo('TreppenhausLicht', "Treppenhaus Licht", 'first_floor'),
|
||||
DeviceInfo('WCLicht', "WC Licht", 'other'),
|
||||
DeviceInfo('LampeVorratsraum', "Vorratsraum Licht", 'other'),
|
||||
]
|
||||
|
||||
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'),
|
||||
DeviceInfo('Wohnzimmer Fenster Rollo', 'Wohnzimmer Fenster Rollo', 'living_area'),
|
||||
DeviceInfo('Terassentür Rollo', 'Wohnzimmer Terrassentür Rollo', 'living_area'),
|
||||
DeviceInfo('Küchenfenster Rollo', 'Küche Fenster Rollo', 'living_area'),
|
||||
DeviceInfo('Esszimmerfenster Rollo', 'Esszimmer Fenster Rollo', 'living_area'),
|
||||
]
|
||||
|
||||
switches = [
|
||||
# Bells
|
||||
DeviceInfo("KlingelOben", "Klingel Oben"),
|
||||
DeviceInfo("Klingel Innen", "Klingel Innentür"),
|
||||
DeviceInfo("Klingel Aussen", "Klingen Außentür"),
|
||||
DeviceInfo("KlingelOben", "Klingel Oben", 'first_floor'),
|
||||
DeviceInfo("Klingel Innen", "Klingel Innentür", 'other'),
|
||||
DeviceInfo("Klingel Aussen", "Klingen Außentür", 'other'),
|
||||
# Bewegungsmelder LEDs
|
||||
DeviceInfo("BewegungsmelderMitte LED", "Bewegungsmelder Mitte LED"),
|
||||
DeviceInfo("BewegungsmelderWest LED", "Bewegungsmelder West LED"),
|
||||
DeviceInfo("BewegungsmelderOst LED", "Bewegungsmelder Ost LED"),
|
||||
DeviceInfo("BewegungsmelderMitte LED", "Bewegungsmelder Mitte LED", 'hallway'),
|
||||
DeviceInfo("BewegungsmelderWest LED", "Bewegungsmelder West LED", 'hallway'),
|
||||
DeviceInfo("BewegungsmelderOst LED", "Bewegungsmelder Ost LED", 'hallway'),
|
||||
]
|
||||
scene_button_names = ['ObenLinks', 'ObenRechts', 'MitteLinks', 'MitteRechts', 'UntenLinks', 'UntenRechts']
|
||||
scene_button_names = [(i, e) for i, e in enumerate(scene_button_names)]
|
||||
@@ -51,36 +54,63 @@ def create_config():
|
||||
|
||||
power_plugs = [
|
||||
# Vorratsraum
|
||||
DeviceInfo("VorratsraumSteckdose1", "Vorratsraum Steckdose"),
|
||||
DeviceInfo("VorratsraumSteckdose2", "Vorratsraum Steckdose"),
|
||||
DeviceInfo("VorratsraumSteckdose3", "Gefrierschrank"),
|
||||
DeviceInfo("VorratsraumSteckdose1", "Vorratsraum Steckdose", 'other'),
|
||||
DeviceInfo("VorratsraumSteckdose2", "Vorratsraum Steckdose", 'other'),
|
||||
DeviceInfo("VorratsraumSteckdose3", "Gefrierschrank", 'other'),
|
||||
# Waschraum
|
||||
DeviceInfo("Trockner", "Trockner"),
|
||||
DeviceInfo("Waschmaschine", "Waschmaschine"),
|
||||
DeviceInfo("Trockner", "Trockner", 'other'),
|
||||
DeviceInfo("Waschmaschine", "Waschmaschine", 'other'),
|
||||
# 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"),
|
||||
DeviceInfo("Spülmaschine", "Spülmaschine", 'living_area'),
|
||||
DeviceInfo("Backofen", "Backofen", 'living_area'),
|
||||
DeviceInfo("HerdP1", "Herd Phase 1", 'living_area'),
|
||||
DeviceInfo("HerdP2", "Herd Phase 2", 'living_area'),
|
||||
DeviceInfo("HerdP3", "Herd Phase 3", 'living_area'),
|
||||
# Rest
|
||||
DeviceInfo("ArbeitszimmerSteckdose", "Arbeitszimmer Steckdose"),
|
||||
DeviceInfo("WohnzimmerSteckdose1", "Wohnzimmer Steckdose 1"),
|
||||
DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2"),
|
||||
DeviceInfo("ArbeitszimmerSteckdose", "Arbeitszimmer Steckdose", 'office_martin'),
|
||||
DeviceInfo("WohnzimmerSteckdose1", "Wohnzimmer Steckdose 1", 'living_area'),
|
||||
DeviceInfo("WohnzimmerSteckdose2", "Wohnzimmer Steckdose 2", 'living_area'),
|
||||
]
|
||||
|
||||
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'))
|
||||
|
||||
for device in lights + shutters + switches + power_plugs:
|
||||
add_to_group(groups, device.groups, device.display_name)
|
||||
|
||||
|
||||
def add_fhem_devices(devices, groups):
|
||||
fhem_yaml = yaml.load(open('fhem.yaml'))
|
||||
for device_type, device_list in fhem_yaml.items():
|
||||
if device_type not in devices:
|
||||
devices[device_type] = []
|
||||
for device in device_list:
|
||||
device['platform'] = 'fhem'
|
||||
if 'groups' in device:
|
||||
add_to_group(groups, device['groups'], device['name'])
|
||||
del device['groups']
|
||||
devices[device_type].append(device)
|
||||
|
||||
|
||||
def main():
|
||||
group_dict = yaml.load(open('groups.yaml'))
|
||||
|
||||
all_devices = {}
|
||||
add_knx_devices(all_devices, group_dict)
|
||||
add_fhem_devices(all_devices, group_dict)
|
||||
|
||||
with open('output/configuration.yaml', 'w') as output:
|
||||
output.write(open('manual_config.yaml', 'r').read())
|
||||
yaml.dump(all_devices, output)
|
||||
yaml.dump(group_dict, open('output/groups.yaml', 'a'))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
create_config()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user