This commit is contained in:
Martin Bauer
2020-05-03 14:41:27 +00:00
parent feb05f63df
commit d3c7e18d38
11 changed files with 1093 additions and 54 deletions

View File

@@ -9,7 +9,7 @@ yaml = YAML()
def get_config():
return {
'bedroom': {
'ir_host': 'bedroompi',
'ir_host': 'bedroompi.fritz.box',
'media_player': 'media_player.bedroompi',
'group': 'group.bedroom',
@@ -73,7 +73,7 @@ def get_config():
}
},
'living_area': {
'ir_host': 'kitchenpi',
'ir_host': 'kitchenpi.fritz.box',
'media_player': 'media_player.kitchenpi',
'group': 'group.living_area',
@@ -97,9 +97,8 @@ def get_config():
}
},
'first_floor_dining_room': {
'ir_host': 'esszimmerradio',
'ir_host': 'esszimmerradio.fritz.box',
'media_player': 'media_player.esszimmer',
'group': 'first_floor',
'mapping': {
'btn_1': '[radio] Bayern 1',
'btn_2': '[radio] Bayern 2',
@@ -114,7 +113,25 @@ def get_config():
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
'key_numeric_pound': '[playlist] SammlungGeorg',
}
}
},
'first_floor_living_room': {
'ir_host': 'musikserverwohnzimmeroben.fritz.box',
'media_player': 'media_player.wohnzimmer',
'mapping': {
'btn_1': '[radio] Bayern 1',
'btn_2': '[radio] Bayern 2',
'btn_3': '[radio] BR Heimat',
'btn_4': '[radio] Bayern+',
'btn_5': '[radio] B 5 Aktuell',
'btn_6': '[radio] BR-Klassik',
'btn_7': '[playlist] Gesammelte Weihnachtslieder',
'btn_8': '[playlist] Harmonic Brass Christmas',
'btn_9': '[playlist] German Brass Christmas',
'key_numeric_star': '[playlist] Weihnachten mit den Wiener Sängerknaben',
'btn_0': '[playlist] Weihnachten mit den Wiener Sängerknaben',
'key_numeric_pound': '[playlist] SammlungGeorg',
}
},
}
@@ -131,8 +148,6 @@ def split_description(d):
def automation_from_config(ir_description):
ir_host = ir_description['ir_host']
media_player = ir_description['media_player']
group = ir_description['group']
result = []
for key, description in ir_description['mapping'].items():
@@ -143,14 +158,17 @@ def automation_from_config(ir_description):
elif isinstance(description, str):
function, value = split_description(description)
if function == 'playlist':
media_player = ir_description['media_player']
action = service('media_player.play_media', media_player,
media_content_id=value, media_content_type='music')
elif function == 'radio':
media_player = ir_description['media_player']
action = service('media_player.play_media', media_player,
media_content_id=value, media_content_type='channel')
elif function == 'scene':
action = service('scene.turn_on', 'scene.' + value)
elif function == 'timed_light_off':
group = ir_description['group']
action = service('light.turn_off', group, transition=str(60 * int(value)))
else:
raise ValueError("Invalid prefix " + function)
@@ -277,10 +295,15 @@ def default_music_controls(device_group, ir_host):
def create_rules(folder):
for name, data in get_config().items():
rules = automation_from_config(data)
rules += default_light_controls(data['group'], data['ir_host'])
rules += default_music_controls(data['media_player'], data['ir_host'])
rules += default_shutter_controls(data['group'], data['ir_host'])
rules = []
rules += automation_from_config(data)
if 'group' in data:
rules += default_shutter_controls(data['group'], data['ir_host'])
rules += default_light_controls(data['group'], data['ir_host'])
if 'media_player' in data:
rules += default_music_controls(data['media_player'], data['ir_host'])
file_name = os.path.join(folder, "ir_" + name + '.yaml')
with open(file_name, 'w') as f:
f.write("# Dont' edit manually! this is generated!\n\n")