This commit is contained in:
Martin Bauer
2022-08-28 22:33:35 +02:00
parent 91fc9c38ff
commit f261b582b0
44 changed files with 71746 additions and 59774 deletions

View File

@@ -1,263 +0,0 @@
attr global userattr cmdIcon devStateIcon devStateStyle icon sortby webCmd widgetOverride
attr global autoload_undefined_devices 1
attr global logfile -
attr global modpath .
attr global motd Error messages while initializing FHEM:\
attr global statefile ./log/fhem.save
attr global updateInBackground 1
attr global verbose 3
attr global genericDeviceType:switch,light,blind,thermostat
define telnetPort telnet 7072 global
#define WEB FHEMWEB 8083 global
#define WEBphone FHEMWEB 8084 global
#attr WEBphone stylesheetPrefix smallscreen
#define WEBtablet FHEMWEB 8085 global
#attr WEBtablet stylesheetPrefix touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
#define Logfile FileLog ./log/fhem-%Y-%m.log fakelog
define autocreate autocreate
attr autocreate autosave 1
#attr autocreate filelog ./log/%NAME-%Y.log
#define eventTypes eventTypes ./log/eventTypes.txt
# Disable this to avoid looking for new USB devices on startup
#define initialUsbCheck notify global:INITIALIZED usb create
define CUL_0 CUL __device_placeholder__@9600 1034
attr CUL_0 hmId 62a77d
attr CUL_0 rfmode HomeMatic
define Arbeitszimmer_Rollo CUL_HM 339336
attr Arbeitszimmer_Rollo IODev CUL_0
attr Arbeitszimmer_Rollo autoReadReg 4_reqStatus
attr Arbeitszimmer_Rollo expert 2_full
attr Arbeitszimmer_Rollo firmware 2.3
attr Arbeitszimmer_Rollo model HM-LC-Bl1PBU-FM
attr Arbeitszimmer_Rollo room CUL_HM
attr Arbeitszimmer_Rollo serialNr LEQ1440417
attr Arbeitszimmer_Rollo subType blindActuator
attr Arbeitszimmer_Rollo webCmd statusRequest:toggleDir:on:off:up:down:stop
attr Arbeitszimmer_Rollo room Homekit
define Arbeitszimmer_Deckenlampe CUL_HM 1AA382
attr Arbeitszimmer_Deckenlampe IODev CUL_0
attr Arbeitszimmer_Deckenlampe autoReadReg 4_reqStatus
attr Arbeitszimmer_Deckenlampe expert 2_full
attr Arbeitszimmer_Deckenlampe firmware 2.2
attr Arbeitszimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
attr Arbeitszimmer_Deckenlampe room CUL_HM
attr Arbeitszimmer_Deckenlampe serialNr JEQ0201891
attr Arbeitszimmer_Deckenlampe subType dimmer
attr Arbeitszimmer_Deckenlampe webCmd getConfig:clear msgEvents
define Arbeitszimmer_Deckenlampe_Sw CUL_HM 1AA38201
attr Arbeitszimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
attr Arbeitszimmer_Deckenlampe_Sw peerIDs
attr Arbeitszimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
define Arbeitszimmer_Deckenlampe_Sw1_V_01 CUL_HM 1AA38202
attr Arbeitszimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
attr Arbeitszimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
define Arbeitszimmer_Deckenlampe_Sw1_V_02 CUL_HM 1AA38203
attr Arbeitszimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
attr Arbeitszimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
attr Arbeitszimmer_Deckenlampe room Homekit
define Schlafzimmer_Deckenlampe CUL_HM 1AA1C7
attr Schlafzimmer_Deckenlampe IODev CUL_0
attr Schlafzimmer_Deckenlampe autoReadReg 4_reqStatus
attr Schlafzimmer_Deckenlampe expert 2_full
attr Schlafzimmer_Deckenlampe firmware 2.2
attr Schlafzimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
attr Schlafzimmer_Deckenlampe room CUL_HM
attr Schlafzimmer_Deckenlampe serialNr JEQ0201456
attr Schlafzimmer_Deckenlampe subType dimmer
attr Schlafzimmer_Deckenlampe webCmd getConfig:clear msgEvents
define Schlafzimmer_Deckenlampe_Sw CUL_HM 1AA1C701
attr Schlafzimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
attr Schlafzimmer_Deckenlampe_Sw peerIDs
attr Schlafzimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
define Schlafzimmer_Deckenlampe_Sw1_V_01 CUL_HM 1AA1C702
attr Schlafzimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
attr Schlafzimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
define Schlafzimmer_Deckenlampe_Sw1_V_02 CUL_HM 1AA1C703
attr Schlafzimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
attr Schlafzimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
attr Schlafzimmer_Deckenlampe room Homekit
define Schlafzimmer_RolloKlein CUL_HM 338C2A
attr Schlafzimmer_RolloKlein IODev CUL_0
attr Schlafzimmer_RolloKlein autoReadReg 4_reqStatus
attr Schlafzimmer_RolloKlein expert 2_full
attr Schlafzimmer_RolloKlein firmware 2.3
attr Schlafzimmer_RolloKlein model HM-LC-Bl1PBU-FM
attr Schlafzimmer_RolloKlein room CUL_HM
attr Schlafzimmer_RolloKlein serialNr LEQ1439693
attr Schlafzimmer_RolloKlein subType blindActuator
attr Schlafzimmer_RolloKlein webCmd statusRequest:toggleDir:on:off:up:down:stop
attr Schlafzimmer_RolloKlein room Homekit
define Schlafzimmer_RolloGross CUL_HM 338C33
attr Schlafzimmer_RolloGross IODev CUL_0
attr Schlafzimmer_RolloGross autoReadReg 4_reqStatus
attr Schlafzimmer_RolloGross expert 2_full
attr Schlafzimmer_RolloGross firmware 2.3
attr Schlafzimmer_RolloGross model HM-LC-Bl1PBU-FM
attr Schlafzimmer_RolloGross room CUL_HM
attr Schlafzimmer_RolloGross serialNr LEQ1439702
attr Schlafzimmer_RolloGross subType blindActuator
attr Schlafzimmer_RolloGross webCmd statusRequest:toggleDir:on:off:up:down:stop
attr Schlafzimmer_RolloGross room Homekit
define Kinderzimmer_Deckenlampe CUL_HM 1B5305
attr Kinderzimmer_Deckenlampe IODev CUL_0
attr Kinderzimmer_Deckenlampe autoReadReg 4_reqStatus
attr Kinderzimmer_Deckenlampe expert 2_full
attr Kinderzimmer_Deckenlampe firmware 2.2
attr Kinderzimmer_Deckenlampe model HM-LC-Dim1TPBU-FM
attr Kinderzimmer_Deckenlampe room CUL_HM
attr Kinderzimmer_Deckenlampe serialNr JEQ0199674
attr Kinderzimmer_Deckenlampe subType dimmer
attr Kinderzimmer_Deckenlampe webCmd getConfig:clear msgEvents
define Kinderzimmer_Deckenlampe_Sw CUL_HM 1B530501
attr Kinderzimmer_Deckenlampe_Sw model HM-LC-Dim1TPBU-FM
attr Kinderzimmer_Deckenlampe_Sw peerIDs
attr Kinderzimmer_Deckenlampe_Sw webCmd statusRequest:toggle:on:off:up:down
define Kinderzimmer_Deckenlampe_Sw1_V_01 CUL_HM 1B530502
attr Kinderzimmer_Deckenlampe_Sw1_V_01 model HM-LC-Dim1TPBU-FM
attr Kinderzimmer_Deckenlampe_Sw1_V_01 webCmd statusRequest:toggle:on:off:up:down
define Kinderzimmer_Deckenlampe_Sw1_V_02 CUL_HM 1B530503
attr Kinderzimmer_Deckenlampe_Sw1_V_02 model HM-LC-Dim1TPBU-FM
attr Kinderzimmer_Deckenlampe_Sw1_V_02 webCmd statusRequest:toggle:on:off:up:down
attr Kinderzimmer_Deckenlampe room Homekit
define Kinderzimmer_Rollo CUL_HM 1AF5DD
attr Kinderzimmer_Rollo IODev CUL_0
attr Kinderzimmer_Rollo autoReadReg 4_reqStatus
attr Kinderzimmer_Rollo expert 2_full
attr Kinderzimmer_Rollo firmware 2.1
attr Kinderzimmer_Rollo model HM-LC-Bl1PBU-FM
attr Kinderzimmer_Rollo room CUL_HM
attr Kinderzimmer_Rollo serialNr JEQ0109195
attr Kinderzimmer_Rollo subType blindActuator
attr Kinderzimmer_Rollo webCmd statusRequest:toggleDir:on:off:up:down:stop
attr Kinderzimmer_Rollo room Homekit
define Steckdose_Dimmer CUL_HM 20E8F1
attr Steckdose_Dimmer IODev CUL_0
attr Steckdose_Dimmer autoReadReg 4_reqStatus
attr Steckdose_Dimmer expert 2_full
attr Steckdose_Dimmer firmware 2.3
attr Steckdose_Dimmer model HM-LC-Dim1T-Pl-2
attr Steckdose_Dimmer room CUL_HM
attr Steckdose_Dimmer serialNr KEQ0124588
attr Steckdose_Dimmer subType dimmer
attr Steckdose_Dimmer webCmd statusRequest:toggle:on:off:up:down
attr Steckdose_Dimmer room Homekit
define Bad_Luefter CUL_HM 1B7501
attr Bad_Luefter IODev CUL_0
attr Bad_Luefter autoReadReg 4_reqStatus
attr Bad_Luefter expert 2_full
attr Bad_Luefter firmware 2.1
attr Bad_Luefter model HM-LC-Sw1PBU-FM
attr Bad_Luefter room CUL_HM
attr Bad_Luefter serialNr JEQ0099033
attr Bad_Luefter subType switch
attr Bad_Luefter webCmd statusRequest:toggle:on:off
attr Bad_Luefter room Homekit
define Arbeitszimmer_Bewegungsmelder CUL_HM 2F2A4B
attr Arbeitszimmer_Bewegungsmelder IODev CUL_0
attr Arbeitszimmer_Bewegungsmelder actCycle 000:20
attr Arbeitszimmer_Bewegungsmelder actStatus alive
attr Arbeitszimmer_Bewegungsmelder autoReadReg 4_reqStatus
attr Arbeitszimmer_Bewegungsmelder expert 2_full
attr Arbeitszimmer_Bewegungsmelder firmware 1.6
attr Arbeitszimmer_Bewegungsmelder model HM-SEC-MDIR-2
attr Arbeitszimmer_Bewegungsmelder room CUL_HM
attr Arbeitszimmer_Bewegungsmelder serialNr LEQ0797237
attr Arbeitszimmer_Bewegungsmelder subType motionDetector
attr Arbeitszimmer_Bewegungsmelder room Homekit
define ActionDetector CUL_HM 000000
attr ActionDetector event-on-change-reading .*
attr ActionDetector model ActionDetector
define MobileSteckdoseSchalter1 CUL_HM 453335
attr MobileSteckdoseSchalter1 IODev CUL_0
attr MobileSteckdoseSchalter1 actCycle 000:10
attr MobileSteckdoseSchalter1 actStatus dead
attr MobileSteckdoseSchalter1 autoReadReg 4_reqStatus
attr MobileSteckdoseSchalter1 expert 2_full
attr MobileSteckdoseSchalter1 firmware 1.6
attr MobileSteckdoseSchalter1 model HM-ES-PMSw1-Pl
attr MobileSteckdoseSchalter1 room CUL_HM
attr MobileSteckdoseSchalter1 serialNr NEQ0153825
attr MobileSteckdoseSchalter1 subType powerMeter
attr MobileSteckdoseSchalter1 webCmd getConfig:clear msgEvents
define MobileSteckdoseSchalter1_Sw CUL_HM 45333501
attr MobileSteckdoseSchalter1_Sw model HM-ES-PMSw1-Pl
attr MobileSteckdoseSchalter1_Sw peerIDs
define MobileSteckdoseSchalter1_Pwr CUL_HM 45333502
attr MobileSteckdoseSchalter1_Pwr model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter1_SenPwr CUL_HM 45333503
attr MobileSteckdoseSchalter1_SenPwr model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter1_SenI CUL_HM 45333504
attr MobileSteckdoseSchalter1_SenI model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter1_SenU CUL_HM 45333505
attr MobileSteckdoseSchalter1_SenU model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter1_SenF CUL_HM 45333506
attr MobileSteckdoseSchalter1_SenF model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter2 CUL_HM 338E72
attr MobileSteckdoseSchalter2 IODev CUL_0
attr MobileSteckdoseSchalter2 actCycle 000:10
attr MobileSteckdoseSchalter2 actStatus dead
attr MobileSteckdoseSchalter2 autoReadReg 4_reqStatus
attr MobileSteckdoseSchalter2 expert 2_full
attr MobileSteckdoseSchalter2 firmware 1.6
attr MobileSteckdoseSchalter2 model HM-ES-PMSw1-Pl
attr MobileSteckdoseSchalter2 room CUL_HM
attr MobileSteckdoseSchalter2 serialNr LEQ1345055
attr MobileSteckdoseSchalter2 subType powerMeter
attr MobileSteckdoseSchalter2 webCmd getConfig:clear msgEvents
define MobileSteckdoseSchalter2_Sw CUL_HM 338E7201
attr MobileSteckdoseSchalter2_Sw model HM-ES-PMSw1-Pl
attr MobileSteckdoseSchalter2_Sw peerIDs
define MobileSteckdoseSchalter2_Pwr CUL_HM 338E7202
attr MobileSteckdoseSchalter2_Pwr model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter2_SenPwr CUL_HM 338E7203
attr MobileSteckdoseSchalter2_SenPwr model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter2_SenI CUL_HM 338E7204
attr MobileSteckdoseSchalter2_SenI model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter2_SenU CUL_HM 338E7205
attr MobileSteckdoseSchalter2_SenU model HM-ES-PMSw1-Pl
define MobileSteckdoseSchalter2_SenF CUL_HM 338E7206
attr MobileSteckdoseSchalter2_SenF model HM-ES-PMSw1-Pl

View File

@@ -1,9 +1,5 @@
# Add only entities here that are auto-discovered (not KNX devices)
#default_view:
# view: true
# icon: mdi:home
living_area:
name: Wohnbereich
entities:

View File

@@ -1,337 +0,0 @@
import re
import os
from ruamel.yaml import YAML
yaml = YAML()
# -------------------------------------- put the config here -----------------------------------------------------------
def get_config():
return {
'bedroom': {
'ir_host': 'bedroompi.fritz.box',
'media_player': 'media_player.bedroompi',
'group': 'group.bedroom',
'mapping': {
'btn_1': '[playlist] Good Morning',
'btn_2': '[playlist] Good Night Long',
'btn_3': '[playlist] Good Night',
'btn_4': '[playlist] Bar Classics',
'btn_5': '[playlist] Sentimental Moods',
'btn_6': '[playlist] Pop',
'btn_7': '[radio] B 5 aktuell',
'btn_8': '[radio] BR-Klassik',
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio
'key_numeric_star': [
*repeat_one_crossfade('media_player.bedroompi'),
service('media_player.play_media', 'media_player.bedroompi',
media_content_id='Foen', media_content_type='music'),
service('media_player.volume_set', 'media_player.bedroompi', volume_level=60),
],
'btn_0': '[radio] Bayern 3',
'key_numeric_pound': '[radio] Bayern 2',
'key_red': '[scene] schlafzimmer_stillen',
'key_green': '[scene] schlafzimmer_orange',
'key_yellow': '[scene] schlafzimmer_ganz_hell',
'key_blue': '[scene] nachtswennallelieberschlafen',
'key_tv': [service('script.turn_on', 'script.timed_sleep',
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
'light_off_secs': 15 * 60,
'music_off_secs': 45 * 60,
'shuffle': 1,
})],
'key_video': [service('script.turn_on', 'script.timed_sleep',
variables={'media_content_id': 'Good Night',
'light_off_secs': 15 * 60,
'music_off_secs': 45 * 60,
'shuffle': 0,
})],
'key_music': [service('script.turn_on', 'script.timed_sleep',
variables={'media_content_id': 'spotify:playlist:37i9dQZF1DXbcPC6Vvqudd', # Regen
'light_off_secs': 5 * 60,
'music_off_secs': 20 * 60,
'shuffle': 1,
})],
'key_pictures': [service('script.turn_on', 'script.timed_sleep',
variables={'media_content_id': 'Good Night',
'light_off_secs': 5 * 60,
'music_off_secs': 20 * 60,
'shuffle': 0,
})],
'key_power': [ # Music & Lights off
service('media_player.media_pause', 'media_player.bedroompi'),
service('light.turn_off', 'group.bedroom'),
],
'key_ok': [ # Grosser Rollo zu, kleiner halb zu
service('cover.close_cover', 'cover.schlafzimmer_rollo_gross'),
service('cover_half.set_half', 'cover.schlafzimmer_rollo_klein'),
],
'key_mute': [service('light.turn_off', 'group.all_downstairs_but_bedroom_and_outside')],
'key_channel': [service('light.turn_off', 'group.all_downstairs_but_bedroom')],
}
},
'living_area': {
'ir_host': 'kitchenpi.fritz.box',
'media_player': 'media_player.kitchenpi',
'group': 'group.living_area',
'mapping': {
'btn_4': '[playlist] Bar Classics',
'btn_5': '[playlist] Sentimental Moods',
'btn_6': '[playlist] Pop',
'btn_7': '[radio] B 5 aktuell',
'btn_8': '[radio] BR-Klassik',
'btn_9': '[playlist] http://opml.radiotime.com/Tune.ashx?id=s25028&formats=aac,ogg,mp3', # Klassik Radio
'key_numeric_star': '[radio] Antenne Bayern',
'btn_0': '[radio] Bayern 3',
'key_numeric_pound': '[radio] Bayern 2',
'key_red': '[scene] wohnbereich_orange',
'key_green': '[scene] wohnbereich_grun',
'key_yellow': '[scene] wohnbereich_hell',
'key_blue': '[scene] wohnbereich_blau_grun',
}
},
'first_floor_dining_room': {
'ir_host': 'esszimmerradio.fritz.box',
'media_player': 'media_player.esszimmer',
'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',
}
},
'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',
}
},
}
# ----------------------------------------------------------------------------------------------------------------------
description_regex = re.compile(r'\[\s*(.*)\s*\](.*)')
def split_description(d):
res = description_regex.match(d)
return res.group(1).strip(), res.group(2).strip()
def default_music_settings(media_player):
return [
service('media_player.shuffle_set', media_player, shuffle=False),
service('media_player.squeezebox_call_method', media_player, command='playlist repeat 0'),
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 0"),
]
def repeat_one_crossfade(media_player):
return [
service('media_player.repeat_set', media_player, repeat='one'),
service('media_player.squeezebox_call_method', media_player, command="playerpref transitionType 1"),
]
def automation_from_config(ir_description):
ir_host = ir_description['ir_host']
result = []
for key, description in ir_description['mapping'].items():
automation = {'alias': f'IR {ir_host} {key}',
'trigger': ir_trigger(ir_host, key)}
if isinstance(description, list):
action = description
elif isinstance(description, str):
function, value = split_description(description)
if function == 'playlist':
media_player = ir_description['media_player']
action = [*default_music_settings(media_player),
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)
else:
raise ValueError("Invalid type for entry " + key)
automation['action'] = action
result.append(automation)
return result
def ir_trigger(ir_host, button_name):
return {
'platform': 'event',
'event_type': 'ir_command_received',
'event_data': {
'button_name': button_name,
'repeat_counter': 0,
'host': ir_host,
}
}
def service(service_name, entity_id, **kwargs):
kwargs['entity_id'] = entity_id
return {
'service': service_name,
'data': kwargs
}
def default_shutter_controls(device_group, ir_host):
"""Default rules for Hauppauge IR for Shutter control with up, down, left, right buttons"""
return [
{
'alias': f'IR {ir_host} Rollo auf',
'trigger': ir_trigger(ir_host, 'key_up'),
'action': service('cover.open_cover', device_group),
},
{
'alias': f'IR {ir_host} Rollo zu',
'trigger': ir_trigger(ir_host, 'key_down'),
'action': service('cover.close_cover', device_group),
},
{
'alias': f'IR {ir_host} Rollo halb',
'trigger': [ir_trigger(ir_host, 'key_left'), ir_trigger(ir_host, 'key_right')],
'action': service('cover_half.set_half', device_group),
},
]
def default_light_controls(device_group, ir_host):
"""Default light rules for Hauppauge IR for light dimming with channel up/down and light off with stop button"""
return [
{
'alias': f'IR {ir_host} Licht heller',
'trigger': ir_trigger(ir_host, 'key_channelup'),
'action': service('dimmer.dim', device_group, offset=30),
},
{
'alias': f'IR {ir_host} Licht dunkler',
'trigger': ir_trigger(ir_host, 'key_channeldown'),
'action': service('dimmer.dim', device_group, offset=-30),
},
{
'alias': f'IR {ir_host} Licht viel heller',
'trigger': ir_trigger(ir_host, 'key_menu'),
'action': service('dimmer.dim', device_group, offset=130),
},
{
'alias': f'IR {ir_host} Licht viel dunkler',
'trigger': ir_trigger(ir_host, 'key_stop'),
'action': service('dimmer.dim', device_group, offset=-130),
},
{
'alias': f'IR {ir_host} Licht aus',
'trigger': ir_trigger(ir_host, 'key_goto'),
'action': service('light.turn_off', device_group),
},
]
def default_music_controls(device_group, ir_host):
"""Default music control (play, pause, next) for Hauppauge IR"""
return [
{
'alias': f'IR {ir_host} Musik Play',
'trigger': ir_trigger(ir_host, 'key_play'),
'action': service('media_player.media_play_pause', device_group),
},
{
'alias': f'IR {ir_host} Musik Pause',
'trigger': ir_trigger(ir_host, 'key_pause'),
'action': service('media_player.turn_off', device_group),
},
{
'alias': f'IR {ir_host} Musik Next',
'trigger': [ir_trigger(ir_host, 'key_forward'), ir_trigger(ir_host, 'key_fastforward')],
'action': service('media_player.media_next_track', device_group),
},
{
'alias': f'IR {ir_host} Musik Prev',
'trigger': [ir_trigger(ir_host, 'key_previous'), ir_trigger(ir_host, 'key_rewind')],
'action': service('media_player.media_next_track', device_group),
},
{
'alias': f'IR {ir_host} Vol Up',
'trigger': ir_trigger(ir_host, 'key_volumeup'),
'action': service('media_player.volume_up', device_group),
},
{
'alias': f'IR {ir_host} Vol Down',
'trigger': ir_trigger(ir_host, 'key_volumedown'),
'action': service('media_player.volume_down', device_group),
},
{
'alias': f'IR {ir_host} Shuffle On',
'trigger': ir_trigger(ir_host, 'key_menu'),
'action': service('media_player.shuffle_set', device_group, shuffle=True),
},
{
'alias': f'IR {ir_host} Shuffle Off',
'trigger': ir_trigger(ir_host, 'key_exit'),
'action': service('media_player.shuffle_set', device_group, shuffle=False),
},
]
def create_rules(folder):
for name, data in get_config().items():
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")
yaml.dump(rules, f)

View File

@@ -3,7 +3,6 @@ import argparse
from util import DeviceInfo, add_to_group, name_to_id
from ruamel.yaml import YAML
import knx_conf as knx
from ir_automations import create_rules as create_automation_rules
script_path = os.path.dirname(os.path.realpath(__file__))
yaml = YAML()
@@ -13,8 +12,8 @@ yaml.preserve_quotes = True
sensor_exclude_list = [
'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_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',
@@ -162,8 +161,7 @@ def add_knx_devices(devices, groups):
for device_type, devices in [('light', lights), ('cover', shutters), ('switch', switches)]:
for device in devices:
add_to_group(groups, device.groups, device.display_name, device_type)
return template_sensors
return template_sensors
def add_meta_groups(groups):
@@ -256,14 +254,13 @@ def create_config(target_directory, development=False):
manual_config_dict = yaml.load(open(manual_config_path, encoding="utf-8"))
knx_conf = {
'rate_limit': 20,
'tunneling': {
'host': '192.168.178.65',
'port': 3671
}
#'tunneling': {
# 'host': '192.168.178.65',
# 'port': 3671
#}
}
template_sensors = add_knx_devices(knx_conf, group_dict)
all_devices = {}
all_devices.update(template_sensors)
@@ -298,8 +295,6 @@ def create_config(target_directory, development=False):
additional_file = 'secrets_development.yaml' if development else 'secrets_deploy.yaml'
output.write(open(os.path.join(script_path, additional_file), 'r').read())
#create_automation_rules(os.path.join(target_directory, 'automations'))
if __name__ == '__main__':
parser = argparse.ArgumentParser()

View File

@@ -8,7 +8,6 @@ mobile_app:
person:
sun:
system_health:
updater:
#logbook:
input_boolean:
@@ -155,94 +154,94 @@ switch:
name: esszimmer_oben_radio_steckdose
host: esszimmerradio.fritz.box
num_power_plugs: 4
- platform: mqtt
name: PoolPumpeSteckdose
state_topic: "stat/poolpumpesteckdose/POWER"
command_topic: "cmnd/poolpumpesteckdose/POWER"
availability_topic: "tele/poolpumpesteckdose/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota01
state_topic: "stat/tasmota01/POWER"
command_topic: "cmnd/tasmota01/POWER"
availability_topic: "tele/tasmota01/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota02
state_topic: "stat/tasmota02/POWER"
command_topic: "cmnd/tasmota02/POWER"
availability_topic: "tele/tasmota02/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota03
state_topic: "stat/tasmota03/POWER"
command_topic: "cmnd/tasmota03/POWER"
availability_topic: "tele/tasmota03/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota04
state_topic: "stat/tasmota04/POWER"
command_topic: "cmnd/tasmota04/POWER"
availability_topic: "tele/tasmota04/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota05
state_topic: "stat/tasmota05/POWER"
command_topic: "cmnd/tasmota05/POWER"
availability_topic: "tele/tasmota05/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota06
state_topic: "stat/tasmota06/POWER"
command_topic: "cmnd/tasmota06/POWER"
availability_topic: "tele/tasmota06/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
- platform: mqtt
name: Tasmota07
state_topic: "stat/tasmota07/POWER"
command_topic: "cmnd/tasmota07/POWER"
availability_topic: "tele/tasmota07/LWT"
qos: 1
payload_on: "ON"
payload_off: "OFF"
payload_available: "Online"
payload_not_available: "Offline"
retain: false
# - platform: mqtt
# name: PoolPumpeSteckdose
# state_topic: "stat/poolpumpesteckdose/POWER"
# command_topic: "cmnd/poolpumpesteckdose/POWER"
# availability_topic: "tele/poolpumpesteckdose/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota01
# state_topic: "stat/tasmota01/POWER"
# command_topic: "cmnd/tasmota01/POWER"
# availability_topic: "tele/tasmota01/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota02
# state_topic: "stat/tasmota02/POWER"
# command_topic: "cmnd/tasmota02/POWER"
# availability_topic: "tele/tasmota02/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota03
# state_topic: "stat/tasmota03/POWER"
# command_topic: "cmnd/tasmota03/POWER"
# availability_topic: "tele/tasmota03/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota04
# state_topic: "stat/tasmota04/POWER"
# command_topic: "cmnd/tasmota04/POWER"
# availability_topic: "tele/tasmota04/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota05
# state_topic: "stat/tasmota05/POWER"
# command_topic: "cmnd/tasmota05/POWER"
# availability_topic: "tele/tasmota05/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota06
# state_topic: "stat/tasmota06/POWER"
# command_topic: "cmnd/tasmota06/POWER"
# availability_topic: "tele/tasmota06/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
# - platform: mqtt
# name: Tasmota07
# state_topic: "stat/tasmota07/POWER"
# command_topic: "cmnd/tasmota07/POWER"
# availability_topic: "tele/tasmota07/LWT"
# qos: 1
# payload_on: "ON"
# payload_off: "OFF"
# payload_available: "Online"
# payload_not_available: "Offline"
# retain: false
long_click:
duration: 0.6
@@ -479,9 +478,9 @@ homematic:
username: homeassistant
password: !secret homematic_pw
zwave:
usb_path: /dev/serial/by-id/usb-0658_0200-if00
network_key: "0xE0, 0x64, 0x50, 0x55, 0x20, 0x63, 0xC7, 0x05, 0x62, 0xD3, 0xEA, 0x91, 0x87, 0xE0, 0x1E, 0x74"
#zwave:
# usb_path: /dev/serial/by-id/usb-0658_0200-if00
# network_key: "0xE0, 0x64, 0x50, 0x55, 0x20, 0x63, 0xC7, 0x05, 0x62, 0xD3, 0xEA, 0x91, 0x87, 0xE0, 0x1E, 0x74"
sysdweb:
@@ -549,13 +548,6 @@ media_player:
- platform: squeezebox_telnet
host: musikserverWohnzimmerOben.fritz.box
# set up via frontend :(
#vacuum:
# - platform: xiaomi_miio
# host: vacuum.fritz.box
# token: !secret vacuum_token
sensor:
- platform: mqtt
state_topic: 'monitor/kitchen/martin_handy'