diff --git a/config_creation/fhem.yaml b/config_creation/fhem.yaml index b140ad6..4716457 100644 --- a/config_creation/fhem.yaml +++ b/config_creation/fhem.yaml @@ -1,8 +1,8 @@ -# ---------------------------------- Lights ------------------------------------ + + light: - - name: Schlafzimmer Deckenlampe dimmer: True fhem_ids: @@ -41,11 +41,9 @@ light: fhem_ids: - Steckdose_Dimmer -# ---------------------------------- Covers ------------------------------------ + cover: - - - name: Arbeitszimmer Martin Rollo fhem_ids: - ArbeitszimmerMartin_Rollo @@ -74,7 +72,8 @@ cover: - office_rebecca -# ---------------------------------- Switches ------------------------------------ + + switch: - name: Bad Lüfter @@ -86,7 +85,7 @@ switch: - SteckdosenSchalter -# ------------------------------ Motion Sensors ------------------------------------ + binary_sensor: - name: Arbeitszimmer Martin Bewegungsmelder Batterie diff --git a/config_creation/main.py b/config_creation/main.py index 0e17a39..5659cdb 100644 --- a/config_creation/main.py +++ b/config_creation/main.py @@ -1,6 +1,6 @@ import os import argparse -from util import DeviceInfo, add_to_group +from util import DeviceInfo, add_to_group, name_to_id from ruamel.yaml import YAML import knx_conf as knx @@ -9,6 +9,18 @@ yaml = YAML() yaml.preserve_quotes = True +fritz_box_counter_sensors = [ + 'sensor.fritz_box_7490_bytes_received', + 'sensor.fritz_box_7490_bytes_sent', + #'sensor.fritz_box_7490_kbyte_sec_received', + #'sensor.fritz_box_7490_kbyte_sec_sent', + 'sensor.fritz_box_7490_packets_received', + 'sensor.fritz_box_7490_packets_sec_received', + 'sensor.fritz_box_7490_packets_sec_sent', + 'sensor.fritz_box_7490_packets_sent', +] + + def add_knx_devices(devices, groups): imported_csv = knx.import_ets5_csv_file(os.path.join(script_path, 'knx_data/export_project1.csv')) imported_csv.update(knx.import_ets5_csv_file(os.path.join(script_path, 'knx_data/export_project2.csv'))) @@ -160,6 +172,55 @@ def add_light_groups(groups): groups.update(light_groups) +def make_sensor_exclude_list(all_devices, name_fragments): + exclude_list = [] + + def handle_sensor(s): + name = s['name'] if 'name' in s else s['friendly_name'] + if any(t in name for t in name_fragments): + exclude_list.append(name_to_id(name, 'sensor')) + + for sensor_device in all_devices['sensor']: + if 'platform' in sensor_device and sensor_device['platform'] == 'template': + for nested_sensor_dev in sensor_device['sensors'].values(): + handle_sensor(nested_sensor_dev) + elif 'name' in sensor_device: + handle_sensor(sensor_device) + else: + raise NotImplementedError() + return exclude_list + + +def logbook_config(all_devices): + sensor_excludes = ['Helligkeit', 'Betriebsstunden', 'Verbrauch', 'Bewegungsmelder'] + + exclude_list = [] + exclude_list.extend(fritz_box_counter_sensors) + exclude_list.extend(make_sensor_exclude_list(all_devices, sensor_excludes)) + return { + 'logbook': { + 'exclude': { + 'entities': exclude_list, + 'domains': ['group'] + } + } + } + + +def recorder_config(all_devices): + recorder_excludes = ['Betriebsstunden', 'Verbrauch mA'] + exclude_list = ['sun.sun'] + exclude_list.extend(fritz_box_counter_sensors) + exclude_list.extend(make_sensor_exclude_list(all_devices, recorder_excludes)) + return { + 'recorder': { + 'exclude': { + 'entities': exclude_list, + } + } + } + + def create_config(target_directory, development=False): groups_yaml_path = os.path.join(script_path, 'groups.yaml') manual_config_path = os.path.join(script_path, 'manual_config.yaml') @@ -178,6 +239,9 @@ def create_config(target_directory, development=False): del manual_config_dict[key] yaml.dump(manual_config_dict, output) yaml.dump(all_devices, output) + yaml.dump(logbook_config(all_devices), output) + yaml.dump(recorder_config(all_devices), output) + add_light_groups(group_dict) with open(os.path.join(target_directory, 'groups.yaml'), 'w') as output: diff --git a/config_creation/manual_config.yaml b/config_creation/manual_config.yaml index f6aedbd..025c89c 100644 --- a/config_creation/manual_config.yaml +++ b/config_creation/manual_config.yaml @@ -55,7 +55,6 @@ homekit: - scene -recorder: history: ios: shopping_list: