KNX config file creation script from CSV exports
This commit is contained in:
0
config_creation/__init__.py
Normal file
0
config_creation/__init__.py
Normal file
0
config_creation/input.yaml
Normal file
0
config_creation/input.yaml
Normal file
180
config_creation/knx_conf.py
Normal file
180
config_creation/knx_conf.py
Normal file
@@ -0,0 +1,180 @@
|
||||
from typing import List
|
||||
from util import DeviceInfo
|
||||
|
||||
__all__ = ['extent', 'import_ets5_csv_file', 'create_power_plug', 'create_lights', 'create_shutters', 'create_switches']
|
||||
|
||||
|
||||
def first_lower(s):
|
||||
if len(s) == 0:
|
||||
return s
|
||||
else:
|
||||
return s[0].lower() + s[1:]
|
||||
|
||||
|
||||
def extent(result_dict, input_dict):
|
||||
for k, v in input_dict.items():
|
||||
if k not in result_dict:
|
||||
result_dict[k] = []
|
||||
for entry in v:
|
||||
entry['platform'] = 'knx_data'
|
||||
result_dict[k] += v
|
||||
|
||||
|
||||
def import_ets5_csv_file(csv_file):
|
||||
result = dict()
|
||||
with open(csv_file, encoding='utf-8') as f:
|
||||
for line in f:
|
||||
splitted_line = line.split(",")
|
||||
name = splitted_line[0].replace('"', "")
|
||||
group_address = splitted_line[1].replace('"', "")
|
||||
if '-' not in group_address:
|
||||
result[name.strip()] = splitted_line[1].replace('"', "").strip()
|
||||
return result
|
||||
|
||||
|
||||
def create_power_plug(device_info: List[DeviceInfo],
|
||||
csv_contents,
|
||||
postfix_on_off_write=" Schalten",
|
||||
postfix_on_off_read=" RM Schalten",
|
||||
postfix_counter_value=" BSZ Wert",
|
||||
postfix_consumption=" Verbrauch",
|
||||
postfix_consumption_sum=" VerbrauchSumme",
|
||||
postfix_consumption_reset=" Verbrauch Neustart",
|
||||
postfix_counter_reset=" BSZ Neustart"):
|
||||
result = {'switch': [],
|
||||
'sensor': []}
|
||||
for entry in device_info:
|
||||
try:
|
||||
# Switching
|
||||
on_off_write_addr = csv_contents.get(entry.csv_name + postfix_on_off_write, None)
|
||||
on_off_read_addr = csv_contents.get(entry.csv_name + postfix_on_off_read, None)
|
||||
if on_off_write_addr:
|
||||
device_entry = {
|
||||
'name': entry.display_name,
|
||||
'address': on_off_write_addr,
|
||||
}
|
||||
if on_off_read_addr:
|
||||
device_entry['state_address'] = on_off_read_addr
|
||||
result['switch'].append(device_entry)
|
||||
|
||||
# Counter for time (in hours) how long device was switched on
|
||||
counter_value = csv_contents.get(entry.csv_name + postfix_counter_value, None)
|
||||
if counter_value:
|
||||
result['sensor'].append({
|
||||
'name': entry.display_name + " Betriebsstunden",
|
||||
'address': counter_value,
|
||||
'type': '2byte_unsigned',
|
||||
})
|
||||
counter_reset = csv_contents.get(entry.csv_name + postfix_counter_reset, None)
|
||||
if counter_reset:
|
||||
result['switch'].append({
|
||||
'name': entry.display_name + " Betriebsstunden Reset",
|
||||
'address': counter_reset
|
||||
})
|
||||
|
||||
# Consumption
|
||||
consumption = csv_contents.get(entry.csv_name + postfix_consumption, None)
|
||||
if consumption:
|
||||
result['sensor'].append({
|
||||
'name': entry.display_name + " Verbrauch",
|
||||
'address': consumption,
|
||||
'type': 'current',
|
||||
})
|
||||
consumption_sum = csv_contents.get(entry.csv_name + postfix_consumption_sum, None)
|
||||
if consumption_sum:
|
||||
result['sensor'].append({
|
||||
'name': entry.display_name + " Verbrauch Summe",
|
||||
'address': consumption_sum,
|
||||
'type': '4byte_unsigned',
|
||||
})
|
||||
consumption_reset = csv_contents.get(entry.csv_name + postfix_consumption_reset, None)
|
||||
if consumption_reset:
|
||||
result['switch'].append({
|
||||
'name': entry.display_name + " Verbrauch Reset",
|
||||
'address': consumption_reset
|
||||
})
|
||||
|
||||
except KeyError as e:
|
||||
raise ValueError(f"Skipping light {entry.csv_name} - Could not find CSV File entry: {e}")
|
||||
return result
|
||||
|
||||
|
||||
def create_lights(device_info: List[DeviceInfo],
|
||||
csv_contents,
|
||||
postfix_on_off_write=" Schalten",
|
||||
postfix_on_off_read=" RM Schalten",
|
||||
postfix_brightness_write=" Helligkeit",
|
||||
postfix_brightness_read=" RM Helligkeit"):
|
||||
result = []
|
||||
for entry in device_info:
|
||||
try:
|
||||
on_off_write_addr = csv_contents[entry.csv_name + postfix_on_off_write]
|
||||
on_off_read_addr = csv_contents.get(entry.csv_name + postfix_on_off_read, None)
|
||||
brightness_write_addr = csv_contents.get(entry.csv_name + postfix_brightness_write, None)
|
||||
brightness_read_addr = csv_contents.get(entry.csv_name + postfix_brightness_read, None)
|
||||
|
||||
entry = {
|
||||
'name': entry.display_name,
|
||||
'address': on_off_write_addr,
|
||||
}
|
||||
if on_off_read_addr:
|
||||
entry['state_address'] = on_off_read_addr
|
||||
if brightness_write_addr:
|
||||
entry['brightness_address'] = brightness_write_addr
|
||||
if brightness_read_addr:
|
||||
entry['brightness_state_address'] = brightness_read_addr
|
||||
result.append(entry)
|
||||
except KeyError as e:
|
||||
raise ValueError(f"Skipping light {entry.csv_name} - Could not find CSV File entry: {e}")
|
||||
|
||||
return {'light': result}
|
||||
|
||||
|
||||
def create_switches(device_info: List[DeviceInfo], csv_contents,
|
||||
postfix_on_off_write=" Schalten",
|
||||
postfix_on_off_read=" RM Schalten"):
|
||||
result = []
|
||||
for entry in device_info:
|
||||
try:
|
||||
on_off_write_addr = csv_contents.get(entry.csv_name + postfix_on_off_write, None)
|
||||
if on_off_write_addr is None:
|
||||
on_off_write_addr = csv_contents[entry.csv_name]
|
||||
on_off_read_addr = csv_contents.get(entry.csv_name + postfix_on_off_read, None)
|
||||
|
||||
entry = {
|
||||
'name': entry.display_name,
|
||||
'address': on_off_write_addr,
|
||||
}
|
||||
if on_off_read_addr:
|
||||
entry['state_address'] = on_off_read_addr
|
||||
result.append(entry)
|
||||
except KeyError as e:
|
||||
raise ValueError(f"Skipping switch {entry.csv_name} - Could not find CSV File entry: {e}")
|
||||
|
||||
return {'switch': result}
|
||||
|
||||
|
||||
def create_shutters(device_info: List[DeviceInfo],
|
||||
csv_contents,
|
||||
postfix_long_addr=" Lang", postfix_short_addr=" Kurz", postfix_read_position=" RM Position",
|
||||
postfix_set_position=" Position"):
|
||||
result = []
|
||||
|
||||
for entry in device_info:
|
||||
try:
|
||||
long_addr = csv_contents[entry.csv_name + postfix_long_addr]
|
||||
short_addr = csv_contents[entry.csv_name + postfix_short_addr]
|
||||
read_pos_addr = csv_contents[entry.csv_name + postfix_read_position]
|
||||
set_pos_addr = csv_contents[entry.csv_name + postfix_set_position]
|
||||
|
||||
result.append({
|
||||
'name': entry.display_name,
|
||||
'move_long_address': long_addr,
|
||||
'move_short_address': short_addr,
|
||||
'position_address': set_pos_addr,
|
||||
'position_state_address': read_pos_addr,
|
||||
})
|
||||
except KeyError as e:
|
||||
raise ValueError(f"Skipping shutter {entry.csv_name} - Could not find CSV File entry: {e}")
|
||||
|
||||
return {'cover': result}
|
||||
BIN
config_creation/knx_data/Nemsdorf_2019_06.knxproj
Normal file
BIN
config_creation/knx_data/Nemsdorf_2019_06.knxproj
Normal file
Binary file not shown.
BIN
config_creation/knx_data/Nemsdorf_2019_07.knxproj
Normal file
BIN
config_creation/knx_data/Nemsdorf_2019_07.knxproj
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
293
config_creation/knx_data/export_project1.csv
Normal file
293
config_creation/knx_data/export_project1.csv
Normal file
@@ -0,0 +1,293 @@
|
||||
"Gruppenadressen","0/-/-","","","",""
|
||||
"SammlungUnterputzAktoren","0/0/-","","","",""
|
||||
"AussenleuchteHaustüren Schalten","0/0/1","","","",""
|
||||
"AussenleuchteHaustüren RM Schalten","0/0/2","","","",""
|
||||
"AussenleuchteObenNW Schalten","0/0/3","","","",""
|
||||
"AussenleuchteObenNW RM Schalten","0/0/4","","","",""
|
||||
"TreppenhausObenTemperatur","0/0/5","","","","DPST-9-1"
|
||||
"TemperaturEsszimmer","0/0/6","","","",""
|
||||
"AlarmLEDLinksNormal","0/0/7","","","",""
|
||||
"SzeneEsszimmerUntenLinks","0/0/8","","","",""
|
||||
"SzeneEsszimmerMitteLinks","0/0/9","","","",""
|
||||
"SzeneEsszimmerMitteRechts","0/0/10","","","",""
|
||||
"SzeneEsszimmerObenLinks","0/0/11","","","",""
|
||||
"SzeneEsszimmerObenRechts","0/0/12","","","",""
|
||||
"AlarmLEDLinksUeberlagert","0/0/13","","","",""
|
||||
"AlarmLEDRechtsNormal","0/0/14","","","",""
|
||||
"KlingelOben Schalten","0/0/15","","","",""
|
||||
"AlarmLEDRechtsUeberlagert","0/0/16","","","",""
|
||||
"SzeneTerrassentuerMitteLinks","0/0/17","","","",""
|
||||
"SzeneTerrassentuerMitteRechts","0/0/18","","","",""
|
||||
"SzeneEsszimmerUntenRechts","0/0/19","","","",""
|
||||
"SzeneEingangMitteLinks","0/0/20","","","",""
|
||||
"SzeneEingangMitteRechts","0/0/21","","","",""
|
||||
"SzeneEingangUntenLinks","0/0/22","","","",""
|
||||
"SzeneEingangUntenRechts","0/0/23","","","",""
|
||||
"TemperaturGang","0/0/24","","","",""
|
||||
"TemperaturWohnzimmerGangTuer","0/0/25","","","",""
|
||||
"TemperaturWohnzimmerAussenTuer","0/0/26","","","",""
|
||||
"SzeneWohnzimmerObenLinks","0/0/27","","","",""
|
||||
"SzeneWohnzimmerObenRechts","0/0/28","","","",""
|
||||
"SzeneWohnzimmerMitteLinks","0/0/29","","","",""
|
||||
"SzeneWohnzimmerMitteRechts","0/0/30","","","",""
|
||||
"SzeneWohnzimmerUntenLinks","0/0/31","","","",""
|
||||
"SzeneWohnzimmerUntenRechts","0/0/32","","","",""
|
||||
"D1","0/1/-","","","",""
|
||||
"Wohnzimmerlampe Schalten","0/1/3","","","",""
|
||||
"Wohnzimmerlampe Dimmen","0/1/6","","","",""
|
||||
"Wohnzimmerlampe Helligkeit","0/1/7","","","",""
|
||||
"Wohnzimmerlampe RM Schalten","0/1/8","","","",""
|
||||
"Wohnzimmerlampe RM Helligkeit","0/1/9","","","",""
|
||||
"Wohnzimmerlampe Kurzschluss","0/1/14","","","",""
|
||||
"Wohnzimmerlampe Lastausfall","0/1/15","","","",""
|
||||
"Wohnzimmerlampe BSZ Neustart","0/1/17","","","",""
|
||||
"Wohnzimmerlampe BSZ Wert","0/1/18","","","",""
|
||||
"Wohnzimmerlampe BSZ Ablauf","0/1/19","","","",""
|
||||
"Wohnzimmerlampe Lastart","0/1/20","","","",""
|
||||
"EsszimmerlampeWest Schalten","0/1/21","","","",""
|
||||
"EsszimmerlampeWest Dimmen","0/1/24","","","",""
|
||||
"EsszimmerlampeWest Helligkeit","0/1/25","","","",""
|
||||
"EsszimmerlampeWest RM Schalten","0/1/26","","","",""
|
||||
"EsszimmerlampeWest RM Helligkeit","0/1/27","","","",""
|
||||
"EsszimmerlampeWest Kurzschluss","0/1/32","","","",""
|
||||
"EsszimmerlampeWest Lastausfall","0/1/33","","","",""
|
||||
"EsszimmerlampeWest BSZ Neustart","0/1/35","","","",""
|
||||
"EsszimmerlampeWest BSZ Wert","0/1/36","","","",""
|
||||
"EsszimmerlampeWest BSZ Ablauf","0/1/37","","","",""
|
||||
"EsszimmerlampeWest Lastart","0/1/38","","","",""
|
||||
"EsszimmerlampeMitte Schalten","0/1/39","","","",""
|
||||
"EsszimmerlampeMitte Dimmen","0/1/42","","","",""
|
||||
"EsszimmerlampeMitte Helligkeit","0/1/43","","","",""
|
||||
"EsszimmerlampeMitte RM Schalten","0/1/44","","","",""
|
||||
"EsszimmerlampeMitte RM Helligkeit","0/1/45","","","",""
|
||||
"EsszimmerlampeMitte Kurzschluss","0/1/50","","","",""
|
||||
"EsszimmerlampeMitte Lastausfall","0/1/51","","","",""
|
||||
"EsszimmerlampeMitte BSZ Neustart","0/1/53","","","",""
|
||||
"EsszimmerlampeMitte BSZ Wert","0/1/54","","","",""
|
||||
"EsszimmerlampeMitte BSZ Ablauf","0/1/55","","","",""
|
||||
"EsszimmerlampeMitte Lastart","0/1/56","","","",""
|
||||
"Küchenlampe Schalten","0/1/57","","","",""
|
||||
"Küchenlampe Dimmen","0/1/60","","","",""
|
||||
"Küchenlampe Helligkeit","0/1/61","","","",""
|
||||
"Küchenlampe RM Schalten","0/1/62","","","",""
|
||||
"Küchenlampe RM Helligkeit","0/1/63","","","",""
|
||||
"Küchenlampe Kurzschluss","0/1/68","","","",""
|
||||
"Küchenlampe Lastausfall","0/1/69","","","",""
|
||||
"Küchenlampe BSZ Neustart","0/1/71","","","",""
|
||||
"Küchenlampe BSZ Wert","0/1/72","","","",""
|
||||
"Küchenlampe BSZ Ablauf","0/1/73","","","",""
|
||||
"Küchenlampe Lastart","0/1/74","","","",""
|
||||
"D2","0/2/-","","","",""
|
||||
"AussenleuchteUntenSO Schalten","0/2/21","","","",""
|
||||
"AussenleuchteUntenSO Dimmen","0/2/24","","","",""
|
||||
"AussenleuchteUntenSO Helligkeit","0/2/25","","","",""
|
||||
"AussenleuchteUntenSO RM Schalten","0/2/26","","","",""
|
||||
"AussenleuchteUntenSO RM Helligkeit","0/2/27","","","",""
|
||||
"AussenleuchteUntenSO Kurzschluss","0/2/32","","","",""
|
||||
"AussenleuchteUntenSO Lastausfall","0/2/33","","","",""
|
||||
"AussenleuchteUntenSO BSZ Neustart","0/2/35","","","",""
|
||||
"AussenleuchteUntenSO BSZ Wert","0/2/36","","","",""
|
||||
"AussenleuchteUntenSO BSZ Ablauf","0/2/37","","","",""
|
||||
"AussenleuchteUntenSO Lastart","0/2/38","","","",""
|
||||
"EsszimmerWandlampe Schalten","0/2/39","","","",""
|
||||
"EsszimmerWandlampe Dimmen","0/2/42","","","",""
|
||||
"EsszimmerWandlampe Helligkeit","0/2/43","","","",""
|
||||
"EsszimmerWandlampe RM Schalten","0/2/44","","","",""
|
||||
"EsszimmerWandlampe RM Helligkeit","0/2/45","","","",""
|
||||
"EsszimmerWandlampe Kurzschluss","0/2/50","","","",""
|
||||
"EsszimmerWandlampe Lastausfall","0/2/51","","","",""
|
||||
"EsszimmerWandlampe BSZ Neustart","0/2/53","","","",""
|
||||
"EsszimmerWandlampe BSZ Wert","0/2/54","","","",""
|
||||
"EsszimmerWandlampe BSZ Ablauf","0/2/55","","","",""
|
||||
"EsszimmerWandlampe Lastart","0/2/56","","","",""
|
||||
"D3","0/3/-","","","",""
|
||||
"Gang Schalten","0/3/3","","","",""
|
||||
"Gang Dimmen","0/3/6","","","","DPT-3"
|
||||
"Gang Helligkeit","0/3/7","","","","DPST-5-4"
|
||||
"Gang RM Schalten","0/3/8","","","",""
|
||||
"Gang RM Helligkeit","0/3/9","","","",""
|
||||
"Gang Kurzschluss","0/3/14","","","",""
|
||||
"Gang Lastausfall","0/3/15","","","",""
|
||||
"Gang BSZ Neustart","0/3/17","","","",""
|
||||
"Gang BSZ Wert","0/3/18","","","",""
|
||||
"Gang BSZ Ablauf","0/3/19","","","",""
|
||||
"Gang Lastart","0/3/20","","","",""
|
||||
"Bad Schalten","0/3/21","","","",""
|
||||
"Bad Dimmen","0/3/24","","","",""
|
||||
"Bad Helligkeit","0/3/25","","","",""
|
||||
"Bad RM Schalten","0/3/26","","","",""
|
||||
"Bad RM Helligkeit","0/3/27","","","",""
|
||||
"Bad Kurzschluss","0/3/32","","","",""
|
||||
"Bad Lastausfall","0/3/33","","","",""
|
||||
"Bad BSZ Neustart","0/3/35","","","",""
|
||||
"Bad BSZ Wert","0/3/36","","","",""
|
||||
"Bad BSZ Ablauf","0/3/37","","","",""
|
||||
"Bad Lastart","0/3/38","","","",""
|
||||
"GangWindfang Schalten","0/3/39","","","",""
|
||||
"GangWindfang Dimmen","0/3/42","","","",""
|
||||
"GangWindfang Helligkeit","0/3/43","","","",""
|
||||
"GangWindfang RM Schalten","0/3/44","","","",""
|
||||
"GangWindfang RM Helligkeit","0/3/45","","","",""
|
||||
"GangWindfang Kurzschluss","0/3/50","","","",""
|
||||
"GangWindfang Lastausfall","0/3/51","","","",""
|
||||
"GangWindfang BSZ Neustart","0/3/53","","","",""
|
||||
"GangWindfang BSZ Wert","0/3/54","","","",""
|
||||
"GangWindfang BSZ Ablauf","0/3/55","","","",""
|
||||
"GangWindfang Lastart","0/3/56","","","",""
|
||||
"LichtWaschküche Schalten","0/3/57","","","",""
|
||||
"LichtWaschküche Dimmen","0/3/60","","","",""
|
||||
"LichtWaschküche Helligkeit","0/3/61","","","",""
|
||||
"LichtWaschküche RM Schalten","0/3/62","","","",""
|
||||
"LichtWaschküche RM Helligkeit","0/3/63","","","",""
|
||||
"LichtWaschküche Kurzschluss","0/3/68","","","",""
|
||||
"LichtWaschküche Lastausfall","0/3/69","","","",""
|
||||
"LichtWaschküche BSZ Neustart","0/3/71","","","",""
|
||||
"LichtWaschküche BSZ Wert","0/3/72","","","",""
|
||||
"LichtWaschküche BSZ Ablauf","0/3/73","","","",""
|
||||
"LichtWaschküche Lastart","0/3/74","","","",""
|
||||
"S1","0/4/-","","","",""
|
||||
"Spülmaschine Schalten","0/4/0","","","","DPST-1-1"
|
||||
"Spülmaschine RM Schalten","0/4/5","","","",""
|
||||
"Spülmaschine BSZ Wert","0/4/8","","","",""
|
||||
"Spülmaschine BSZ Neustart","0/4/9","","","","DPST-1-1"
|
||||
"Spülmaschine Verbrauch","0/4/11","","","","DPST-9-21"
|
||||
"Spühlmaschine VerbrauchSumme","0/4/16","","","",""
|
||||
"Backofen Schalten","0/4/18","","","","DPST-1-1"
|
||||
"Backofen RM Schalten","0/4/23","","","",""
|
||||
"Backofen BSZ Wert","0/4/26","","","",""
|
||||
"Backofen BSZ Neustart","0/4/27","","","","DPST-1-1"
|
||||
"Backofen Verbrauch","0/4/29","","","","DPST-9-21"
|
||||
"Backofen VerbrauchSumme","0/4/34","","","",""
|
||||
"HerdP1 Schalten","0/4/36","","","","DPST-1-1"
|
||||
"HerdP1 RM Schalten","0/4/41","","","",""
|
||||
"HerdP1 BSZ Wert","0/4/44","","","",""
|
||||
"HerdP1 BSZ Neustart","0/4/45","","","","DPST-1-1"
|
||||
"HerdP1 Verbrauch","0/4/47","","","","DPST-9-21"
|
||||
"HerdP1 VerbrauchSumme","0/4/52","","","",""
|
||||
"HerdP2 Schalten","0/4/54","","","","DPST-1-1"
|
||||
"HerdP2 RM Schalten","0/4/59","","","",""
|
||||
"HerdP2 BSZ Wert","0/4/62","","","",""
|
||||
"HerdP2 BSZ Neustart","0/4/63","","","","DPST-1-1"
|
||||
"HerdP2 Verbrauch","0/4/65","","","","DPST-9-21"
|
||||
"HerdP2 VerbrauchSumme","0/4/70","","","",""
|
||||
"HerdP3 Schalten","0/4/72","","","","DPST-1-1"
|
||||
"HerdP3 RM Schalten","0/4/77","","","",""
|
||||
"HerdP3 BSZ Wert","0/4/80","","","",""
|
||||
"HerdP3 BSZ Neustart","0/4/81","","","","DPST-1-1"
|
||||
"HerdP3 Verbrauch","0/4/83","","","","DPST-9-21"
|
||||
"HerdP3 VerbrauchSumme","0/4/88","","","",""
|
||||
"KücheSteckdose1 Schalten","0/4/90","","","","DPST-1-1"
|
||||
"KücheSteckdose1 RM Schalten","0/4/95","","","",""
|
||||
"KücheSteckdose1 BSZ Wert","0/4/98","","","",""
|
||||
"KücheSteckdose1 BSZ Neustart","0/4/99","","","","DPST-1-1"
|
||||
"KücheSteckdose1 Verbrauch","0/4/101","","","","DPST-9-21"
|
||||
"KücheSteckdose1 VerbrauchSumme","0/4/106","","","",""
|
||||
"KücheSteckdose2 Schalten","0/4/108","","","","DPST-1-1"
|
||||
"KücheSteckdose2 RM Schalten","0/4/113","","","",""
|
||||
"KücheSteckdose2 BSZ Wert","0/4/116","","","",""
|
||||
"KücheSteckdose2 BSZ Neustart","0/4/117","","","","DPST-1-1"
|
||||
"KücheSteckdose2 Verbrauch","0/4/119","","","","DPST-9-21"
|
||||
"KücheSteckdose2 VerbrauchSumme","0/4/124","","","",""
|
||||
"ArbeitszimmerSteckdose Schalten","0/4/126","","","","DPST-1-1"
|
||||
"ArbeitszimmerSteckdose RM Schalten","0/4/131","","","",""
|
||||
"ArbeitszimmerSteckdose BSZ Wert","0/4/134","","","",""
|
||||
"ArbeitszimmerSteckdose BSZ Neustart","0/4/135","","","","DPST-1-1"
|
||||
"ArbeitszimmerSteckdose Verbrauch","0/4/137","","","","DPST-9-21"
|
||||
"ArbeitszimmerSteckdose VerbrauchSumme","0/4/142","","","",""
|
||||
"WohnzimmerSteckdose1 Schalten","0/4/144","","","","DPST-1-1"
|
||||
"WohnzimmerSteckdose1 RM Schalten","0/4/149","","","",""
|
||||
"WohnzimmerSteckdose1 BSZ Wert","0/4/152","","","",""
|
||||
"WohnzimmerSteckdose1 BSZ Neustart","0/4/153","","","","DPST-1-1"
|
||||
"WohnzimmerSteckdose1 Verbrauch","0/4/155","","","","DPST-9-21"
|
||||
"WohnzimmerSteckdose1 VerbrauchSumme","0/4/160","","","",""
|
||||
"WohnzimmerSteckdose2 Schalten","0/4/162","","","","DPST-1-1"
|
||||
"WohnzimmerSteckdose2 RM Schalten","0/4/167","","","",""
|
||||
"WohnzimmerSteckdose2 BSZ Wert","0/4/170","","","",""
|
||||
"WohnzimmerSteckdose2 BSZ Neustart","0/4/171","","","","DPST-1-1"
|
||||
"WohnzimmerSteckdose2 Verbrauch","0/4/173","","","","DPST-9-21"
|
||||
"WohnzimmerSteckdose2 VerbrauchSumme","0/4/178","","","",""
|
||||
"S2","0/5/-","","","",""
|
||||
"Waschmaschine Schalten","0/5/0","","","","DPST-1-1"
|
||||
"Waschmaschine RM Schalten","0/5/5","","","",""
|
||||
"Waschmaschine BSZ Wert","0/5/8","","","",""
|
||||
"Waschmaschine BSZ Neustart","0/5/9","","","","DPST-1-1"
|
||||
"Waschmaschine Verbrauch","0/5/11","","","","DPST-9-21,DPT-9"
|
||||
"Waschmaschine VerbrauchSumme","0/5/16","","","",""
|
||||
"Trockner Schalten","0/5/18","","","","DPST-1-1"
|
||||
"Trockner RM Schalten","0/5/23","","","",""
|
||||
"Trockner BSZ Wert","0/5/26","","","",""
|
||||
"Trockner BSZ Neustart","0/5/27","","","","DPST-1-1"
|
||||
"Trockner Verbrauch","0/5/29","","","","DPST-9-21"
|
||||
"Trockner VerbrauchSumme","0/5/34","","","",""
|
||||
"LampeVorratsraum Schalten","0/5/36","","","","DPST-1-1"
|
||||
"LampeVorratsraum RM Schalten","0/5/41","","","",""
|
||||
"LampeVorratsraum BSZ Wert","0/5/44","","","",""
|
||||
"LampeVorratsraum BSZ Neustart","0/5/45","","","","DPST-1-1"
|
||||
"LampeVorratsraum Verbrauch","0/5/47","","","","DPST-9-21"
|
||||
"LampeVorratsraum VerbrauchSumme","0/5/52","","","",""
|
||||
"VorratsraumSteckdose1 Schalten","0/5/54","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose1 RM Schalten","0/5/59","","","",""
|
||||
"VorratsraumSteckdose1 BSZ Wert","0/5/62","","","",""
|
||||
"VorratsraumSteckdose1 BSZ Neustart","0/5/63","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose1 Verbrauch","0/5/65","","","","DPST-9-21"
|
||||
"VorratsraumSteckdose1 VerbrauchSumme","0/5/70","","","",""
|
||||
"VorratsraumSteckdose2 Schalten","0/5/72","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose2 RM Schalten","0/5/77","","","",""
|
||||
"VorratsraumSteckdose2 BSZ Wert","0/5/80","","","",""
|
||||
"VorratsraumSteckdose2 BSZ Neustart","0/5/81","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose2 Verbrauch","0/5/83","","","","DPST-9-21"
|
||||
"VorratsraumSteckdose2 VerbrauchSumme","0/5/88","","","",""
|
||||
"VorratsraumSteckdose3 Schalten","0/5/90","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose3 RM Schalten","0/5/95","","","",""
|
||||
"VorratsraumSteckdose3 BSZ Wert","0/5/98","","","",""
|
||||
"VorratsraumSteckdose3 BSZ Neustart","0/5/99","","","","DPST-1-1"
|
||||
"VorratsraumSteckdose3 Verbrauch","0/5/101","","","","DPST-9-21"
|
||||
"VorratsraumSteckdose3 VerbrauchSumme","0/5/106","","","",""
|
||||
"Klingel Innen Schalten","0/5/108","","","","DPST-1-1"
|
||||
"Klingel Innen RM Schalten","0/5/113","","","",""
|
||||
"Klingel Innen BSZ Wert","0/5/116","","","",""
|
||||
"Klingel Innen BSZ Neustart","0/5/117","","","","DPST-1-1"
|
||||
"Klingel Innen Verbrauch","0/5/119","","","","DPST-9-21"
|
||||
"KlingelInnen VerbrauchSumme","0/5/124","","","",""
|
||||
"Klingel Aussen Schalten","0/5/126","","","","DPST-1-1"
|
||||
"Klingel Aussen RM Schalten","0/5/131","","","",""
|
||||
"Klingel Aussen BSZ Wert","0/5/134","","","",""
|
||||
"Klingel Aussen BSZ Neustart","0/5/135","","","","DPST-1-1"
|
||||
"Klingel Aussen Verbrauch","0/5/137","","","","DPST-9-21"
|
||||
"KlingelAussen VerbrauchSumme","0/5/142","","","",""
|
||||
"TreppenhausLicht Schalten","0/5/180","","","","DPST-1-1"
|
||||
"TreppenhausLicht RM Schalten","0/5/185","","","",""
|
||||
"TreppenhausLicht BSZ Wert","0/5/188","","","",""
|
||||
"TreppenhausLicht BSZ Neustart","0/5/189","","","","DPST-1-1"
|
||||
"TreppenhausLicht Verbrauch","0/5/191","","","","DPST-9-21"
|
||||
"TreppenhausLicht VerbrauchSumme","0/5/196","","","",""
|
||||
"WCLicht Schalten","0/5/198","","","","DPST-1-1"
|
||||
"WCLicht RM Schalten","0/5/203","","","",""
|
||||
"WCLicht BSZ Wert","0/5/206","","","",""
|
||||
"WCLicht BSZ Neustart","0/5/207","","","","DPST-1-1"
|
||||
"WCLicht Verbrauch","0/5/209","","","","DPST-9-21"
|
||||
"WCLicht VerbrauchSumme","0/5/214","","","",""
|
||||
"Gruppen","0/6/-","","","",""
|
||||
"KuecheEsszimmerSchalten","0/6/0","","","",""
|
||||
"KuecheEsszimmerDimmen","0/6/1","","","",""
|
||||
"R1","0/7/-","","","",""
|
||||
"Wohnzimmer Fenster Rollo Lang","0/7/10","","","",""
|
||||
"Wohnzimmer Fenster Rollo Kurz","0/7/11","","","",""
|
||||
"Wohnzimmer Fenster Rollo RM Position","0/7/24","","","",""
|
||||
"Wohnzimmer Fenster Rollo RM invalid","0/7/26","","","",""
|
||||
"Wohnzimmer Fenster Rollo Position","0/7/28","","","","DPST-6-1"
|
||||
"Terassentür Rollo Lang","0/7/36","","","",""
|
||||
"Terassentür Rollo Kurz","0/7/37","","","",""
|
||||
"Terassentür Rollo RM Position","0/7/50","","","",""
|
||||
"Terassentür Rollo RM invalid","0/7/52","","","",""
|
||||
"Terassentür Rollo Position","0/7/54","","","",""
|
||||
"Küchenfenster Rollo Lang","0/7/62","","","","DPST-1-4"
|
||||
"Küchenfenster Rollo Kurz","0/7/63","","","",""
|
||||
"Küchenfenster Rollo RM Position","0/7/76","","","",""
|
||||
"Küchenfenster Rollo RM invalid","0/7/78","","","",""
|
||||
"Küchenfenster Rollo Position","0/7/80","","","",""
|
||||
"Esszimmerfenster Rollo Lang","0/7/88","","","",""
|
||||
"Esszimmerfenster Rollo Kurz","0/7/89","","","",""
|
||||
"Esszimmerfenster Rollo RM Position","0/7/102","","","",""
|
||||
"Esszimmerfenster Rollo RM invalid","0/7/104","","","",""
|
||||
"Esszimmerfenster Rollo Position","0/7/106","","","",""
|
||||
|
11
config_creation/knx_data/export_project2.csv
Normal file
11
config_creation/knx_data/export_project2.csv
Normal file
@@ -0,0 +1,11 @@
|
||||
"Middle","0/0/-","","","",""
|
||||
"BewegungsmelderWest Motion Links","0/0/40","","","",""
|
||||
"BewegungsmelderWest Motion Rechts","0/0/41","","","",""
|
||||
"BewegungsmelderWest Helligkeit","0/0/42","","","",""
|
||||
"BewegungsmelderWest LED","0/0/43","","","",""
|
||||
"BewegungsmelderMitte Motion","0/0/44","","","",""
|
||||
"BewegungsmelderMitte Helligkeit","0/0/45","","","",""
|
||||
"BewegungsmelderMitte LED","0/0/46","","","",""
|
||||
"BewegungsmelderOst Motion","0/0/47","","","",""
|
||||
"BewegungsmelderOst Helligkeit","0/0/48","","","",""
|
||||
"BewegungsmelderOst LED","0/0/49","","","",""
|
||||
|
86
config_creation/main.py
Normal file
86
config_creation/main.py
Normal file
@@ -0,0 +1,86 @@
|
||||
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()
|
||||
3
config_creation/util.py
Normal file
3
config_creation/util.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from collections import namedtuple
|
||||
|
||||
DeviceInfo = namedtuple("DeviceInfo", ['csv_name', 'display_name'])
|
||||
Reference in New Issue
Block a user