update
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
@@ -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()
|
||||
|
||||
@@ -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'
|
||||
|
||||
Reference in New Issue
Block a user