device_types.py 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189
  1. # -*- coding: utf-8 -*-
  2. """
  3. Homematic Geraetetyp-Klassifizierung.
  4. Ordnet alle bekannten HM-, HmIP-, HMW- und HmIPW-Geraetetypen
  5. funktionalen Kategorien zu. Jeder Eintrag enthaelt neben der Kategorie
  6. auch die relevanten Datenpunkte fuer Steuerung und Status.
  7. Ermoeglicht praezise Filterung z.B.
  8. "alle Lichtschalter im Wohnzimmer" ohne Steckdosen mitzuschalten.
  9. Namenskonventionen:
  10. HM-LC-Sw = Light Control Switch
  11. HM-LC-Dim = Light Control Dimmer
  12. HM-LC-Bl = Light Control Blind (Rollladen)
  13. HM-LC-Ja = Light Control Jalousie
  14. HM-ES-PM = Energy Sensor Power Meter
  15. HM-Sec- = Security (Kontakte, Melder, Schloss)
  16. HM-Sen- = Sensor
  17. HM-RC- = Remote Control
  18. HM-PB- = Push Button
  19. HM-CC- = Climate Control
  20. HM-TC- = Temperature Control
  21. HM-WDS- = Weather Data Sensor
  22. HM-OU- = Output Unit (Display, Sirene)
  23. HmIP- = Homematic IP (Funk)
  24. HMW- = Homematic Wired (RS485)
  25. HmIPW- = Homematic IP Wired
  26. Quellen:
  27. - pyhomematic (github.com/danielperna84/pyhomematic)
  28. - aiohomematic (github.com/SukramJ/aiohomematic)
  29. - FHEM HMCCUConf.pm
  30. - Homematic IP Firmware-Archiv (openccu.github.io/HMDeviceFirmware)
  31. - TinyMatic App (github.com/ulikoenig/TinyMatic)
  32. """
  33. from __future__ import annotations
  34. from dataclasses import dataclass, field
  35. from enum import Enum
  36. class DeviceCategory(Enum):
  37. """Funktionale Kategorie eines Homematic-Geraets."""
  38. # === Aktoren: Licht ===
  39. LIGHT_SWITCH = "light_switch"
  40. DIMMER = "dimmer"
  41. DIMMER_COLOR_TEMP = "dimmer_color_temp"
  42. LED_RGBW = "led_rgbw"
  43. LED_CONTROLLER = "led_controller"
  44. # === Aktoren: Steckdose ===
  45. PLUG_SWITCH = "plug_switch"
  46. PLUG_METERING = "plug_metering"
  47. SWITCH_METERING = "switch_metering" # Unterputz-Schaltaktor mit Messung (IST Licht)
  48. # === Aktoren: Rollladen / Jalousie ===
  49. BLIND = "blind"
  50. SHUTTER = "shutter"
  51. # === Aktoren: Heizung / Klima ===
  52. THERMOSTAT = "thermostat"
  53. WALL_THERMOSTAT = "wall_thermostat"
  54. FLOOR_HEATING = "floor_heating"
  55. VALVE = "valve"
  56. # === Sensoren: Kontakte ===
  57. CONTACT = "contact"
  58. ROTARY_HANDLE = "rotary_handle"
  59. TILT = "tilt"
  60. # === Sensoren: Bewegung ===
  61. MOTION = "motion"
  62. PRESENCE = "presence"
  63. # === Sensoren: Klima ===
  64. CLIMATE_SENSOR = "climate_sensor"
  65. # === Sensoren: Wetter ===
  66. WEATHER = "weather"
  67. RAIN = "rain"
  68. LIGHT_SENSOR = "light_sensor"
  69. # === Sensoren: Sonstige ===
  70. POWER_SENSOR = "power_sensor"
  71. WATER = "water"
  72. SMOKE = "smoke"
  73. # === Sicherheit ===
  74. SIREN = "siren"
  75. KEY_LOCK = "key_lock"
  76. # === Bedienelemente ===
  77. REMOTE = "remote"
  78. WALL_BUTTON = "wall_button"
  79. KEY_PAD = "key_pad"
  80. DOOR_BELL = "door_bell"
  81. # === Sonstige ===
  82. DISPLAY = "display"
  83. IO_MODULE = "io_module"
  84. CCU = "ccu"
  85. GARAGE = "garage"
  86. UNKNOWN = "unknown"
  87. @dataclass(frozen=True)
  88. class DeviceTypeInfo:
  89. """Informationen zu einem Geraetetyp."""
  90. category: DeviceCategory
  91. control_datapoints: tuple[str, ...] = ()
  92. status_datapoints: tuple[str, ...] = ()
  93. description: str = ""
  94. # ============================================================================
  95. # Geraetetyp → Info Mapping
  96. # ============================================================================
  97. # Eintraege mit "*" am Ende sind Prefix-Matches.
  98. # Exakte Matches haben immer Vorrang.
  99. # Bei Prefix-Matches gewinnt der laengste Match.
  100. # ============================================================================
  101. DEVICE_TYPE_MAP: dict[str, DeviceTypeInfo] = {
  102. # ==================================================================
  103. # HM Classic — Schaltaktoren (Licht)
  104. # ==================================================================
  105. # HM-LC-Sw = Unterputz/Aufputz/Hutschiene Lichtschalter
  106. # ACHTUNG: HM-LC-Sw*-Pl = Zwischenstecker = PLUG_SWITCH!
  107. "HM-LC-Sw1-Pl*": DeviceTypeInfo(
  108. DeviceCategory.PLUG_SWITCH,
  109. ("STATE",), ("STATE",),
  110. "Schaltaktor Zwischenstecker",
  111. ),
  112. "HM-LC-Sw*": DeviceTypeInfo(
  113. DeviceCategory.LIGHT_SWITCH,
  114. ("STATE",), ("STATE",),
  115. "Schaltaktor (Unterputz/Aufputz/Hutschiene)",
  116. ),
  117. # ==================================================================
  118. # HM Classic — Dimmer
  119. # ==================================================================
  120. "HM-LC-Dim*": DeviceTypeInfo(
  121. DeviceCategory.DIMMER,
  122. ("LEVEL", "RAMP_TIME", "ON_TIME"), ("LEVEL",),
  123. "Dimmaktor (Phasen-An/Abschnitt, PWM)",
  124. ),
  125. "HM-LC-DW-WM": DeviceTypeInfo(
  126. DeviceCategory.DIMMER_COLOR_TEMP,
  127. ("LEVEL", "COLOR_TEMPERATURE"), ("LEVEL", "COLOR_TEMPERATURE"),
  128. "Dual-White Dimmer (warm/kalt-weiss)",
  129. ),
  130. "HM-LC-AO-SM": DeviceTypeInfo(
  131. DeviceCategory.DIMMER,
  132. ("LEVEL",), ("LEVEL",),
  133. "Analoger Ausgang (0-10V)",
  134. ),
  135. "HM-LC-DDC1-PCB": DeviceTypeInfo(
  136. DeviceCategory.LED_CONTROLLER,
  137. ("LEVEL",), ("LEVEL",),
  138. "LED-Treiber PCB",
  139. ),
  140. "HM-DW-WM": DeviceTypeInfo(
  141. DeviceCategory.DIMMER_COLOR_TEMP,
  142. ("LEVEL", "COLOR_TEMPERATURE"), ("LEVEL", "COLOR_TEMPERATURE"),
  143. "Dual-White Wanddimmer",
  144. ),
  145. # ==================================================================
  146. # HM Classic — LED RGBW
  147. # ==================================================================
  148. # COLOR: 0-199 = Hue-Farbkreis, 200 = Weiss
  149. # LEVEL: 0.0-1.0 = Helligkeit
  150. # PROGRAM: 0-x = LED-Programm
  151. "HM-LC-RGBW-WM": DeviceTypeInfo(
  152. DeviceCategory.LED_RGBW,
  153. ("COLOR", "LEVEL", "PROGRAM"), ("COLOR", "LEVEL", "PROGRAM"),
  154. "RGBW LED-Controller (COLOR 0-200 Hue)",
  155. ),
  156. # ==================================================================
  157. # HM Classic — Rollladen / Jalousie
  158. # ==================================================================
  159. "HM-LC-Bl*": DeviceTypeInfo(
  160. DeviceCategory.SHUTTER,
  161. ("LEVEL", "STOP"), ("LEVEL", "WORKING"),
  162. "Rollladenaktor",
  163. ),
  164. "HM-LC-Ja*": DeviceTypeInfo(
  165. DeviceCategory.BLIND,
  166. ("LEVEL", "LEVEL_SLATS", "STOP"), ("LEVEL", "LEVEL_SLATS", "WORKING"),
  167. "Jalousieaktor mit Lamellenverstellung",
  168. ),
  169. # ==================================================================
  170. # HM Classic — Steckdosen mit Energiemessung (KEIN Licht!)
  171. # ==================================================================
  172. "HM-ES-PMSw*": DeviceTypeInfo(
  173. DeviceCategory.PLUG_METERING,
  174. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  175. "Steckdosen-Schaltaktor mit Leistungsmessung",
  176. ),
  177. "HM-ES-TX-WM": DeviceTypeInfo(
  178. DeviceCategory.POWER_SENSOR,
  179. (), ("ENERGY_COUNTER", "POWER"),
  180. "Energiezaehler-Sensor (Gas/Strom)",
  181. ),
  182. "HM-EM-CCM": DeviceTypeInfo(
  183. DeviceCategory.POWER_SENSOR, (), ("ENERGY_COUNTER",),
  184. "Energiezaehler Gaszaehler",
  185. ),
  186. "HM-EM-CMM": DeviceTypeInfo(
  187. DeviceCategory.POWER_SENSOR, (), ("ENERGY_COUNTER",),
  188. "Energiezaehler Stromzaehler",
  189. ),
  190. # ==================================================================
  191. # HM Classic — Heizung / Klima
  192. # ==================================================================
  193. "HM-CC-RT-DN": DeviceTypeInfo(
  194. DeviceCategory.THERMOSTAT,
  195. ("SET_TEMPERATURE", "MANU_MODE", "AUTO_MODE", "BOOST_MODE"),
  196. ("ACTUAL_TEMPERATURE", "SET_TEMPERATURE", "VALVE_STATE", "BATTERY_STATE"),
  197. "Funk-Heizkoerperthermostat",
  198. ),
  199. "HM-CC-TC": DeviceTypeInfo(
  200. DeviceCategory.WALL_THERMOSTAT,
  201. ("SET_TEMPERATURE",), ("TEMPERATURE", "SET_TEMPERATURE", "HUMIDITY"),
  202. "Wandthermostat (aeltere Version)",
  203. ),
  204. "HM-TC-IT-WM-W-EU": DeviceTypeInfo(
  205. DeviceCategory.WALL_THERMOSTAT,
  206. ("SET_TEMPERATURE", "MANU_MODE", "AUTO_MODE", "BOOST_MODE"),
  207. ("ACTUAL_TEMPERATURE", "SET_TEMPERATURE", "ACTUAL_HUMIDITY"),
  208. "Funk-Wandthermostat mit Display",
  209. ),
  210. "HM-CC-VD": DeviceTypeInfo(
  211. DeviceCategory.VALVE, ("VALVE_STATE",), ("VALVE_STATE",),
  212. "Ventilantrieb",
  213. ),
  214. "HM-CC-VG-1": DeviceTypeInfo(
  215. DeviceCategory.THERMOSTAT,
  216. ("SET_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_TEMPERATURE", "VALVE_STATE"),
  217. "Heizungsgruppe (virtuell)",
  218. ),
  219. "HM-CC-SCD": DeviceTypeInfo(
  220. DeviceCategory.CLIMATE_SENSOR, (), ("STATE",),
  221. "CO2-Sensor",
  222. ),
  223. # Temperatur-/Feuchte-Sensoren
  224. "HM-WDS40-TH-I*": DeviceTypeInfo(
  225. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE", "HUMIDITY"),
  226. "Temperatur-/Feuchte-Sensor (innen)",
  227. ),
  228. "HM-WDS10-TH-O": DeviceTypeInfo(
  229. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE", "HUMIDITY"),
  230. "Temperatur-/Feuchte-Sensor (aussen)",
  231. ),
  232. "HM-WDS30-T-O": DeviceTypeInfo(
  233. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE",),
  234. "Temperatursensor (aussen)",
  235. ),
  236. "HM-WDS30-OT2-SM*": DeviceTypeInfo(
  237. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE",),
  238. "Temperaturdifferenz-Sensor",
  239. ),
  240. # Wettersensoren
  241. "HM-WDS100-C6-O*": DeviceTypeInfo(
  242. DeviceCategory.WEATHER,
  243. (), ("TEMPERATURE", "HUMIDITY", "WIND_SPEED", "WIND_DIRECTION", "RAIN_COUNTER", "BRIGHTNESS"),
  244. "Kombinierter Wettersensor",
  245. ),
  246. "HM-WDC7000": DeviceTypeInfo(
  247. DeviceCategory.WEATHER, (), ("TEMPERATURE", "HUMIDITY"),
  248. "Wettersensor",
  249. ),
  250. "WS550*": DeviceTypeInfo(
  251. DeviceCategory.WEATHER, (), ("TEMPERATURE", "HUMIDITY"),
  252. "Wetterstation WS550",
  253. ),
  254. "KS550*": DeviceTypeInfo(
  255. DeviceCategory.WEATHER, (), ("TEMPERATURE", "HUMIDITY", "WIND_SPEED", "RAIN_COUNTER"),
  256. "Kombisensor KS550",
  257. ),
  258. "WS888*": DeviceTypeInfo(
  259. DeviceCategory.WEATHER, (), ("TEMPERATURE", "HUMIDITY"),
  260. "Wetterstation WS888",
  261. ),
  262. # ==================================================================
  263. # HM Classic — Kontakte
  264. # ==================================================================
  265. "HM-Sec-SCo": DeviceTypeInfo(
  266. DeviceCategory.CONTACT, (), ("STATE",),
  267. "Fenster-/Tuerkontakt (optisch)",
  268. ),
  269. "HM-Sec-SC*": DeviceTypeInfo(
  270. DeviceCategory.CONTACT, (), ("STATE",),
  271. "Fenster-/Tuerkontakt",
  272. ),
  273. "HM-SCI-3-FM": DeviceTypeInfo(
  274. DeviceCategory.CONTACT, (), ("STATE",),
  275. "3-Kanal Kontaktschnittstelle",
  276. ),
  277. "HM-Sec-RHS*": DeviceTypeInfo(
  278. DeviceCategory.ROTARY_HANDLE, (), ("STATE",),
  279. "Fenstergriff-Sensor",
  280. ),
  281. "HM-Sec-TiS": DeviceTypeInfo(
  282. DeviceCategory.TILT, (), ("STATE",),
  283. "Neigungssensor",
  284. ),
  285. # ==================================================================
  286. # HM Classic — Bewegungsmelder
  287. # ==================================================================
  288. "HM-Sec-MDIR*": DeviceTypeInfo(
  289. DeviceCategory.MOTION, (), ("MOTION", "BRIGHTNESS"),
  290. "Bewegungsmelder (innen)",
  291. ),
  292. "HM-Sen-MDIR*": DeviceTypeInfo(
  293. DeviceCategory.MOTION, (), ("MOTION", "BRIGHTNESS"),
  294. "Bewegungsmelder",
  295. ),
  296. # ==================================================================
  297. # HM Classic — Rauch / Wasser / Sicherheit
  298. # ==================================================================
  299. "HM-Sec-SD*": DeviceTypeInfo(
  300. DeviceCategory.SMOKE, (), ("STATE",),
  301. "Rauchmelder",
  302. ),
  303. "HM-Sec-WDS*": DeviceTypeInfo(
  304. DeviceCategory.WATER, (), ("STATE",),
  305. "Wassersensor",
  306. ),
  307. "HM-Sec-SFA-SM": DeviceTypeInfo(
  308. DeviceCategory.SIREN, ("STATE",), ("STATE",),
  309. "Sirenen-/Blitzansteuerung",
  310. ),
  311. "HM-Sec-Sir-WM": DeviceTypeInfo(
  312. DeviceCategory.SIREN, ("ARMSTATE", "STATE"), ("ARMSTATE", "STATE"),
  313. "Innensirene",
  314. ),
  315. "HM-Sec-Key*": DeviceTypeInfo(
  316. DeviceCategory.KEY_LOCK, ("STATE", "OPEN"), ("STATE", "ERROR"),
  317. "KeyMatic Tuerschloss",
  318. ),
  319. "HM-Sec-Win": DeviceTypeInfo(
  320. DeviceCategory.SHUTTER, ("LEVEL",), ("LEVEL", "STATUS"),
  321. "WinMatic Fensterantrieb",
  322. ),
  323. # ==================================================================
  324. # HM Classic — Fernbedienungen / Taster
  325. # ==================================================================
  326. "HM-RC-*": DeviceTypeInfo(
  327. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  328. "Fernbedienung",
  329. ),
  330. "HM-PB-*": DeviceTypeInfo(
  331. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  332. "Wandtaster",
  333. ),
  334. "HM-PBI-4-FM": DeviceTypeInfo(
  335. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  336. "4-Kanal Tasterschnittstelle",
  337. ),
  338. "HM-SwI-3-FM": DeviceTypeInfo(
  339. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT",),
  340. "3-Kanal Tasterschnittstelle",
  341. ),
  342. # ==================================================================
  343. # HM Classic — Sonstige Sensoren
  344. # ==================================================================
  345. "HM-Sen-LI-O": DeviceTypeInfo(
  346. DeviceCategory.LIGHT_SENSOR, (), ("LUX",),
  347. "Helligkeitssensor",
  348. ),
  349. "HM-Sen-EP": DeviceTypeInfo(
  350. DeviceCategory.POWER_SENSOR, (), ("ENERGY_COUNTER",),
  351. "Impulssensor (S0)",
  352. ),
  353. "HM-Sen-RD-O": DeviceTypeInfo(
  354. DeviceCategory.RAIN, (), ("STATE",),
  355. "Regensensor",
  356. ),
  357. "HM-Sen-Wa-Od": DeviceTypeInfo(
  358. DeviceCategory.WATER, (), ("FILLING_LEVEL",),
  359. "Fuellstandsensor",
  360. ),
  361. "HM-Sen-DB-PCB": DeviceTypeInfo(
  362. DeviceCategory.DOOR_BELL, (), ("PRESS_SHORT",),
  363. "Klingelsensor",
  364. ),
  365. # ==================================================================
  366. # HM Classic — Display / Ausgabe
  367. # ==================================================================
  368. "HM-OU-LED16": DeviceTypeInfo(
  369. DeviceCategory.DISPLAY, ("LED_STATUS",), ("LED_STATUS",),
  370. "16-Kanal LED-Statusanzeige",
  371. ),
  372. "HM-OU-CF*": DeviceTypeInfo(
  373. DeviceCategory.SIREN, ("STATE",), ("STATE",),
  374. "Funk-Gong / Signalgeber",
  375. ),
  376. "HM-OU-CM-PCB": DeviceTypeInfo(
  377. DeviceCategory.SIREN, ("STATE",), ("STATE",),
  378. "Schaltaktor mit Signalausgang",
  379. ),
  380. "HM-Dis-*": DeviceTypeInfo(
  381. DeviceCategory.DISPLAY, ("SUBMIT",), ("PRESS_SHORT", "PRESS_LONG"),
  382. "Statusanzeige / Display",
  383. ),
  384. # ==================================================================
  385. # HM Classic — Zentrale / System
  386. # ==================================================================
  387. "HM-RCV-50": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Virtueller Empfaenger"),
  388. "HM-CCU-1": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Zentrale"),
  389. "HM-Sys-sRP-Pl": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Repeater"),
  390. "RPI-RF-MOD": DeviceTypeInfo(DeviceCategory.CCU, (), (), "RPI-RF-Modul"),
  391. "HM-MOD-Re-8": DeviceTypeInfo(DeviceCategory.IO_MODULE, ("STATE",), ("STATE",), "8-Kanal Empfangsmodul"),
  392. "HM-MOD-EM-8*": DeviceTypeInfo(DeviceCategory.IO_MODULE, (), ("PRESS_SHORT",), "8-Kanal Sendermodul"),
  393. # ==================================================================
  394. # HmIP — Wandschalter (Licht!)
  395. # ==================================================================
  396. "HmIP-BS2": DeviceTypeInfo(
  397. DeviceCategory.LIGHT_SWITCH,
  398. ("STATE",), ("STATE",),
  399. "IP 2-Kanal Wandschalter",
  400. ),
  401. "HmIP-BSL": DeviceTypeInfo(
  402. DeviceCategory.LIGHT_SWITCH,
  403. ("STATE", "COLOR", "LEVEL"), ("STATE", "COLOR", "LEVEL"),
  404. "IP Schalter mit Signalleuchte",
  405. ),
  406. "HmIP-BSM": DeviceTypeInfo(
  407. DeviceCategory.SWITCH_METERING,
  408. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  409. "IP Schaltaktor mit Leistungsmessung (Unterputz)",
  410. ),
  411. "HmIP-BSM-I": DeviceTypeInfo(
  412. DeviceCategory.SWITCH_METERING,
  413. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  414. "IP Schaltaktor mit Leistungsmessung (unsichtbar)",
  415. ),
  416. "HmIP-FSI16": DeviceTypeInfo(
  417. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  418. "IP Schaltaktor 16A Unterputz",
  419. ),
  420. "HmIP-FSM": DeviceTypeInfo(
  421. DeviceCategory.SWITCH_METERING,
  422. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  423. "IP Schalt-Mess-Aktor Unterputz",
  424. ),
  425. "HmIP-FSM16": DeviceTypeInfo(
  426. DeviceCategory.SWITCH_METERING,
  427. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  428. "IP Schalt-Mess-Aktor 16A Unterputz",
  429. ),
  430. "HmIP-DRSI1": DeviceTypeInfo(
  431. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  432. "IP Hutschiene 1-fach Schaltaktor",
  433. ),
  434. "HmIP-DRSI4": DeviceTypeInfo(
  435. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  436. "IP Hutschiene 4-fach Schaltaktor",
  437. ),
  438. "HmIP-DRS4": DeviceTypeInfo(
  439. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  440. "IP Hutschiene 4-fach Schaltaktor",
  441. ),
  442. "HmIP-DRS8": DeviceTypeInfo(
  443. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  444. "IP Hutschiene 8-fach Schaltaktor",
  445. ),
  446. "HmIP-PCBS*": DeviceTypeInfo(
  447. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  448. "IP Schaltplatine",
  449. ),
  450. "HmIP-MOD-OC8": DeviceTypeInfo(
  451. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  452. "IP 8-fach Open-Collector",
  453. ),
  454. "HmIP-WHS2": DeviceTypeInfo(
  455. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  456. "IP 2-fach Schaltaktor Wandmontage",
  457. ),
  458. # ==================================================================
  459. # HmIP — Steckdosen (NICHT Licht!)
  460. # ==================================================================
  461. "HmIP-PS": DeviceTypeInfo(
  462. DeviceCategory.PLUG_SWITCH, ("STATE",), ("STATE",),
  463. "IP Steckdose (Zwischenstecker)",
  464. ),
  465. "HmIP-PS-2": DeviceTypeInfo(
  466. DeviceCategory.PLUG_SWITCH, ("STATE",), ("STATE",),
  467. "IP Steckdose V2",
  468. ),
  469. "HmIP-PSM": DeviceTypeInfo(
  470. DeviceCategory.PLUG_METERING,
  471. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  472. "IP Steckdose mit Leistungsmessung",
  473. ),
  474. "HmIP-PSM-2": DeviceTypeInfo(
  475. DeviceCategory.PLUG_METERING,
  476. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  477. "IP Steckdose mit Leistungsmessung V2",
  478. ),
  479. # Laendervarianten
  480. "HmIP-PS-*": DeviceTypeInfo(
  481. DeviceCategory.PLUG_SWITCH, ("STATE",), ("STATE",),
  482. "IP Steckdose (Laendervariante)",
  483. ),
  484. "HmIP-PSM-*": DeviceTypeInfo(
  485. DeviceCategory.PLUG_METERING,
  486. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  487. "IP Steckdose mit Messung (Laendervariante)",
  488. ),
  489. "HmIP-USBSM": DeviceTypeInfo(
  490. DeviceCategory.PLUG_METERING,
  491. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  492. "IP USB-Steckdose mit Messung",
  493. ),
  494. "HMIP-PS*": DeviceTypeInfo(
  495. DeviceCategory.PLUG_SWITCH, ("STATE",), ("STATE",),
  496. "IP Steckdose (alte Schreibweise)",
  497. ),
  498. "HMIP-PSM*": DeviceTypeInfo(
  499. DeviceCategory.PLUG_METERING,
  500. ("STATE",), ("STATE", "CURRENT", "ENERGY_COUNTER", "POWER", "VOLTAGE"),
  501. "IP Steckdose mit Messung (alte Schreibweise)",
  502. ),
  503. # ==================================================================
  504. # HmIP — Dimmer
  505. # ==================================================================
  506. "HmIP-BDT*": DeviceTypeInfo(
  507. DeviceCategory.DIMMER,
  508. ("LEVEL", "RAMP_TIME", "ON_TIME"), ("LEVEL",),
  509. "IP Wanddimmer",
  510. ),
  511. "HmIP-FDT": DeviceTypeInfo(
  512. DeviceCategory.DIMMER,
  513. ("LEVEL", "RAMP_TIME", "ON_TIME"), ("LEVEL",),
  514. "IP Unterputz-Dimmer",
  515. ),
  516. "HmIP-PDT*": DeviceTypeInfo(
  517. DeviceCategory.DIMMER,
  518. ("LEVEL", "RAMP_TIME", "ON_TIME"), ("LEVEL",),
  519. "IP Steckdosen-Dimmer",
  520. ),
  521. "HmIP-DRDI3": DeviceTypeInfo(
  522. DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",),
  523. "IP Hutschiene 3-fach Dimmer",
  524. ),
  525. "HmIP-DRG-DALI": DeviceTypeInfo(
  526. DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",),
  527. "IP DALI Gateway",
  528. ),
  529. # ==================================================================
  530. # HmIP — LED / RGBW
  531. # ==================================================================
  532. "HmIP-RGBW": DeviceTypeInfo(
  533. DeviceCategory.LED_RGBW,
  534. ("LEVEL", "HUE", "SATURATION"), ("LEVEL", "HUE", "SATURATION"),
  535. "IP RGBW LED-Controller (HSV)",
  536. ),
  537. "HmIP-LSC": DeviceTypeInfo(
  538. DeviceCategory.LED_CONTROLLER,
  539. ("LEVEL", "HUE", "SATURATION"), ("LEVEL", "HUE", "SATURATION"),
  540. "IP LED-Strip-Controller",
  541. ),
  542. # ==================================================================
  543. # HmIP — Rollladen / Jalousie
  544. # ==================================================================
  545. "HmIP-BROLL*": DeviceTypeInfo(
  546. DeviceCategory.SHUTTER,
  547. ("LEVEL", "STOP"), ("LEVEL", "ACTIVITY_STATE"),
  548. "IP Rollladenaktor",
  549. ),
  550. "HmIP-FROLL": DeviceTypeInfo(
  551. DeviceCategory.SHUTTER,
  552. ("LEVEL", "STOP"), ("LEVEL", "ACTIVITY_STATE"),
  553. "IP Rollladenaktor Unterputz",
  554. ),
  555. "HmIP-BBL*": DeviceTypeInfo(
  556. DeviceCategory.BLIND,
  557. ("LEVEL", "LEVEL_2", "STOP"), ("LEVEL", "LEVEL_2", "ACTIVITY_STATE"),
  558. "IP Jalousieaktor",
  559. ),
  560. "HmIP-FBL": DeviceTypeInfo(
  561. DeviceCategory.BLIND,
  562. ("LEVEL", "LEVEL_2", "STOP"), ("LEVEL", "LEVEL_2", "ACTIVITY_STATE"),
  563. "IP Jalousieaktor Unterputz",
  564. ),
  565. "HmIP-DRBLI4": DeviceTypeInfo(
  566. DeviceCategory.BLIND,
  567. ("LEVEL", "LEVEL_2", "STOP"), ("LEVEL", "LEVEL_2", "ACTIVITY_STATE"),
  568. "IP Hutschiene 4-fach Jalousie",
  569. ),
  570. "HmIP-MOD-HO": DeviceTypeInfo(
  571. DeviceCategory.GARAGE, ("DOOR_COMMAND",), ("DOOR_STATE",),
  572. "IP Hoermann Garagentorantrieb",
  573. ),
  574. "HmIP-MOD-TM": DeviceTypeInfo(
  575. DeviceCategory.GARAGE, ("DOOR_COMMAND",), ("DOOR_STATE",),
  576. "IP Tormatic Garagentorantrieb",
  577. ),
  578. "HmIP-WGC": DeviceTypeInfo(
  579. DeviceCategory.GARAGE, ("STATE",), ("STATE",),
  580. "IP Wandschalter Garagentor",
  581. ),
  582. # ==================================================================
  583. # HmIP — Thermostate
  584. # ==================================================================
  585. "HmIP-eTRV": DeviceTypeInfo(
  586. DeviceCategory.THERMOSTAT,
  587. ("SET_POINT_TEMPERATURE", "BOOST_MODE", "CONTROL_MODE"),
  588. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "LEVEL", "VALVE_STATE"),
  589. "IP Heizkoerperthermostat",
  590. ),
  591. "HmIP-eTRV-*": DeviceTypeInfo(
  592. DeviceCategory.THERMOSTAT,
  593. ("SET_POINT_TEMPERATURE", "BOOST_MODE", "CONTROL_MODE"),
  594. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "LEVEL"),
  595. "IP Heizkoerperthermostat (Variante)",
  596. ),
  597. "HmIP-HEATING": DeviceTypeInfo(
  598. DeviceCategory.THERMOSTAT,
  599. ("SET_POINT_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE"),
  600. "IP Heizungsgruppe (virtuell)",
  601. ),
  602. "HMIP-eTRV*": DeviceTypeInfo(
  603. DeviceCategory.THERMOSTAT,
  604. ("SET_POINT_TEMPERATURE", "BOOST_MODE"),
  605. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE"),
  606. "IP Thermostat (alte Schreibweise)",
  607. ),
  608. # Wandthermostate
  609. "HmIP-WTH*": DeviceTypeInfo(
  610. DeviceCategory.WALL_THERMOSTAT,
  611. ("SET_POINT_TEMPERATURE",),
  612. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  613. "IP Wandthermostat",
  614. ),
  615. "HmIP-BWTH*": DeviceTypeInfo(
  616. DeviceCategory.WALL_THERMOSTAT,
  617. ("SET_POINT_TEMPERATURE",),
  618. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  619. "IP Wandthermostat Pro (230V)",
  620. ),
  621. "HMIP-WTH*": DeviceTypeInfo(
  622. DeviceCategory.WALL_THERMOSTAT,
  623. ("SET_POINT_TEMPERATURE",),
  624. ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  625. "IP Wandthermostat (alte Schreibweise)",
  626. ),
  627. # Klimasensoren
  628. "HmIP-STH": DeviceTypeInfo(
  629. DeviceCategory.CLIMATE_SENSOR, (), ("ACTUAL_TEMPERATURE", "HUMIDITY"),
  630. "IP Temperatur-/Feuchte-Sensor",
  631. ),
  632. "HmIP-STH-*": DeviceTypeInfo(
  633. DeviceCategory.CLIMATE_SENSOR, (), ("ACTUAL_TEMPERATURE", "HUMIDITY"),
  634. "IP Temperatur-/Feuchte-Sensor (Variante)",
  635. ),
  636. "HmIP-STHD*": DeviceTypeInfo(
  637. DeviceCategory.CLIMATE_SENSOR,
  638. ("SET_POINT_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  639. "IP Temperatur-/Feuchte-Sensor mit Display",
  640. ),
  641. "HmIP-STHO*": DeviceTypeInfo(
  642. DeviceCategory.CLIMATE_SENSOR, (), ("ACTUAL_TEMPERATURE", "HUMIDITY"),
  643. "IP Temperatur-/Feuchte-Sensor (aussen)",
  644. ),
  645. "HmIP-SCTH230": DeviceTypeInfo(
  646. DeviceCategory.CLIMATE_SENSOR,
  647. ("STATE",), ("CONCENTRATION", "ACTUAL_TEMPERATURE", "HUMIDITY"),
  648. "IP CO2-Sensor (230V)",
  649. ),
  650. "HmIP-STE2-PCB": DeviceTypeInfo(
  651. DeviceCategory.CLIMATE_SENSOR, (), ("ACTUAL_TEMPERATURE",),
  652. "IP 2-Kanal Temperatur-Sensormodul",
  653. ),
  654. # Fussbodenheizung
  655. "HmIP-FAL*": DeviceTypeInfo(
  656. DeviceCategory.FLOOR_HEATING, ("STATE",), ("STATE",),
  657. "IP Fussbodenheizungsaktor",
  658. ),
  659. "HmIP-FALMOT*": DeviceTypeInfo(
  660. DeviceCategory.FLOOR_HEATING, ("LEVEL",), ("LEVEL",),
  661. "IP Fussbodenheizungsaktor motorisch",
  662. ),
  663. # ==================================================================
  664. # HmIP — Kontakte
  665. # ==================================================================
  666. "HmIP-SWDO*": DeviceTypeInfo(
  667. DeviceCategory.CONTACT, (), ("STATE",),
  668. "IP Fenster-/Tuerkontakt (optisch)",
  669. ),
  670. "HmIP-SWDM*": DeviceTypeInfo(
  671. DeviceCategory.CONTACT, (), ("STATE",),
  672. "IP Fenster-/Tuerkontakt (magnetisch)",
  673. ),
  674. "HmIP-SCI": DeviceTypeInfo(
  675. DeviceCategory.CONTACT, (), ("STATE",),
  676. "IP Kontaktschnittstelle",
  677. ),
  678. "HmIP-FCI*": DeviceTypeInfo(
  679. DeviceCategory.CONTACT, (), ("STATE",),
  680. "IP Unterputz-Kontaktschnittstelle",
  681. ),
  682. "HmIP-SRH": DeviceTypeInfo(
  683. DeviceCategory.ROTARY_HANDLE, (), ("STATE",),
  684. "IP Fenstergriff-Sensor",
  685. ),
  686. "HmIP-SAM": DeviceTypeInfo(
  687. DeviceCategory.TILT, (), ("MOTION",),
  688. "IP Beschleunigungssensor",
  689. ),
  690. "HmIP-STV": DeviceTypeInfo(
  691. DeviceCategory.TILT, (), ("MOTION",),
  692. "IP Kipp-/Vibrationssensor",
  693. ),
  694. "HmIP-STI": DeviceTypeInfo(
  695. DeviceCategory.CONTACT, (), ("STATE",),
  696. "IP Tuerkontakt (induktiv)",
  697. ),
  698. "HmIP-DLS": DeviceTypeInfo(
  699. DeviceCategory.CONTACT, (), ("STATE",),
  700. "IP Tuerschloss-Sensor",
  701. ),
  702. "HmIP-PMFS": DeviceTypeInfo(
  703. DeviceCategory.CONTACT, (), ("UNREACH",),
  704. "IP Netzausfallmelder",
  705. ),
  706. "HMIP-SWDO*": DeviceTypeInfo(
  707. DeviceCategory.CONTACT, (), ("STATE",),
  708. "IP Kontakt (alte Schreibweise)",
  709. ),
  710. # ==================================================================
  711. # HmIP — Bewegung / Praesenz
  712. # ==================================================================
  713. "HmIP-SMI55*": DeviceTypeInfo(
  714. DeviceCategory.MOTION,
  715. (), ("MOTION", "ILLUMINATION", "PRESS_SHORT", "PRESS_LONG"),
  716. "IP Bewegungsmelder mit Taster (55er Rahmen)",
  717. ),
  718. "HmIP-SMI": DeviceTypeInfo(
  719. DeviceCategory.MOTION, (), ("MOTION", "ILLUMINATION"),
  720. "IP Bewegungsmelder (innen)",
  721. ),
  722. "HmIP-SMO*": DeviceTypeInfo(
  723. DeviceCategory.MOTION, (), ("MOTION", "ILLUMINATION"),
  724. "IP Bewegungsmelder (aussen)",
  725. ),
  726. "HmIP-SPI": DeviceTypeInfo(
  727. DeviceCategory.PRESENCE, (), ("PRESENCE_DETECTION_STATE", "ILLUMINATION"),
  728. "IP Praesenzmelder",
  729. ),
  730. "HmIP-SPDR": DeviceTypeInfo(
  731. DeviceCategory.PRESENCE, (), ("PASSAGE_COUNTER_VALUE",),
  732. "IP Durchgangssensor",
  733. ),
  734. # ==================================================================
  735. # HmIP — Rauch / Wasser / Sicherheit
  736. # ==================================================================
  737. "HmIP-SWSD*": DeviceTypeInfo(
  738. DeviceCategory.SMOKE,
  739. ("SMOKE_DETECTOR_COMMAND",), ("SMOKE_DETECTOR_ALARM_STATUS",),
  740. "IP Rauchmelder",
  741. ),
  742. "HmIP-SWD*": DeviceTypeInfo(
  743. DeviceCategory.WATER, (), ("WATERLEVEL_DETECTED", "MOISTURE_DETECTED"),
  744. "IP Wassersensor",
  745. ),
  746. "HmIP-ASIR*": DeviceTypeInfo(
  747. DeviceCategory.SIREN,
  748. ("ACOUSTIC_ALARM_ACTIVE", "OPTICAL_ALARM_ACTIVE"),
  749. ("ACOUSTIC_ALARM_ACTIVE", "OPTICAL_ALARM_ACTIVE"),
  750. "IP Alarmsirene",
  751. ),
  752. "HmIP-DLD*": DeviceTypeInfo(
  753. DeviceCategory.KEY_LOCK,
  754. ("LOCK_STATE", "LOCK_TARGET_LEVEL"), ("LOCK_STATE",),
  755. "IP Tuerschlossantrieb",
  756. ),
  757. # ==================================================================
  758. # HmIP — Fernbedienungen / Taster
  759. # ==================================================================
  760. "HmIP-KRC*": DeviceTypeInfo(
  761. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  762. "IP Fernbedienung (Schluesselanhaenger)",
  763. ),
  764. "HmIP-KRCA*": DeviceTypeInfo(
  765. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  766. "IP 1-Taste Alarm-Fernbedienung",
  767. ),
  768. "HmIP-KRCK*": DeviceTypeInfo(
  769. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  770. "IP Funkschluessel",
  771. ),
  772. "HmIP-RC8": DeviceTypeInfo(
  773. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  774. "IP 8-Tasten Fernbedienung",
  775. ),
  776. "HmIP-MOD-RC8": DeviceTypeInfo(
  777. DeviceCategory.REMOTE, (), ("PRESS_SHORT", "PRESS_LONG"),
  778. "IP 8-Tasten Sendermodul",
  779. ),
  780. "HmIP-RCB1": DeviceTypeInfo(
  781. DeviceCategory.REMOTE, (), ("PRESS_SHORT",),
  782. "IP 1-Taste Fernbedienung",
  783. ),
  784. "HmIP-WRC2*": DeviceTypeInfo(
  785. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  786. "IP 2-Kanal Wandtaster",
  787. ),
  788. "HmIP-WRC6*": DeviceTypeInfo(
  789. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  790. "IP 6-Kanal Wandtaster",
  791. ),
  792. "HmIP-WRCC2": DeviceTypeInfo(
  793. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  794. "IP 2-Kanal Flachtaster",
  795. ),
  796. "HmIP-WRCD": DeviceTypeInfo(
  797. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  798. "IP Wandtaster mit Display",
  799. ),
  800. "HmIP-WRCR": DeviceTypeInfo(
  801. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  802. "IP Wandtaster Drehknopf",
  803. ),
  804. "HmIP-BRC2*": DeviceTypeInfo(
  805. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  806. "IP 2-Kanal Markentaster",
  807. ),
  808. "HmIP-WSC": DeviceTypeInfo(
  809. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  810. "IP Wandschalter",
  811. ),
  812. "HmIP-WT": DeviceTypeInfo(
  813. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  814. "IP Wandtaster",
  815. ),
  816. "HmIP-WKP": DeviceTypeInfo(
  817. DeviceCategory.KEY_PAD, (), ("CODE_STATE",),
  818. "IP Codeschloss",
  819. ),
  820. "HmIP-DBB": DeviceTypeInfo(
  821. DeviceCategory.DOOR_BELL, (), ("PRESS_SHORT",),
  822. "IP Klingeltaster",
  823. ),
  824. "HmIP-DSD-PCB": DeviceTypeInfo(
  825. DeviceCategory.DOOR_BELL, (), ("PRESS_SHORT",),
  826. "IP Klingel-Kontaktschnittstelle",
  827. ),
  828. "HMIP-WRC*": DeviceTypeInfo(
  829. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  830. "IP Wandtaster (alte Schreibweise)",
  831. ),
  832. # ==================================================================
  833. # HmIP — Wetter / Licht / Sonstige Sensoren
  834. # ==================================================================
  835. "HmIP-SWO-B": DeviceTypeInfo(
  836. DeviceCategory.WEATHER,
  837. (), ("ACTUAL_TEMPERATURE", "HUMIDITY", "ILLUMINATION", "WIND_SPEED", "SUNSHINEDURATION"),
  838. "IP Wettersensor Basic",
  839. ),
  840. "HmIP-SWO-PL": DeviceTypeInfo(
  841. DeviceCategory.WEATHER,
  842. (), ("ACTUAL_TEMPERATURE", "HUMIDITY", "ILLUMINATION", "WIND_SPEED", "WIND_DIR", "RAINING"),
  843. "IP Wettersensor Plus",
  844. ),
  845. "HmIP-SWO-PR": DeviceTypeInfo(
  846. DeviceCategory.WEATHER,
  847. (), ("ACTUAL_TEMPERATURE", "HUMIDITY", "ILLUMINATION", "WIND_SPEED", "WIND_DIR", "RAIN_COUNTER"),
  848. "IP Wettersensor Pro",
  849. ),
  850. "HmIP-SLO": DeviceTypeInfo(
  851. DeviceCategory.LIGHT_SENSOR,
  852. (), ("CURRENT_ILLUMINATION", "AVERAGE_ILLUMINATION"),
  853. "IP Lichtsensor",
  854. ),
  855. "HmIP-SRD": DeviceTypeInfo(
  856. DeviceCategory.RAIN, (), ("RAINING", "RAIN_COUNTER"),
  857. "IP Regensensor",
  858. ),
  859. "HmIP-SFD": DeviceTypeInfo(
  860. DeviceCategory.CLIMATE_SENSOR, (), ("PARTICULATE_MATTER_10", "PARTICULATE_MATTER_25"),
  861. "IP Feinstaubsensor",
  862. ),
  863. "HmIP-ESI": DeviceTypeInfo(
  864. DeviceCategory.POWER_SENSOR, (), ("ENERGY_COUNTER", "POWER"),
  865. "IP Energiezaehler-Schnittstelle",
  866. ),
  867. "HmIP-FWI": DeviceTypeInfo(
  868. DeviceCategory.WEATHER, (), ("WIND_SPEED",),
  869. "IP Windmesser",
  870. ),
  871. "HmIP-MP3P": DeviceTypeInfo(
  872. DeviceCategory.DISPLAY, ("PLAY", "SOUND_ID", "VOLUME"), ("PLAY",),
  873. "IP MP3-Signalgeber",
  874. ),
  875. # ==================================================================
  876. # HmIP — Zentrale / Infrastruktur
  877. # ==================================================================
  878. "HmIP-CCU3": DeviceTypeInfo(DeviceCategory.CCU, (), (), "CCU3 Zentrale"),
  879. "HmIP-HAP*": DeviceTypeInfo(DeviceCategory.CCU, (), (), "IP Access Point"),
  880. "HmIP-RCV-50": DeviceTypeInfo(DeviceCategory.CCU, (), (), "IP Virtueller Empfaenger"),
  881. "HmIP-MIO*": DeviceTypeInfo(DeviceCategory.IO_MODULE, ("STATE",), ("STATE",), "IP Multi-IO"),
  882. "HmIP-MOD-WD-VK": DeviceTypeInfo(DeviceCategory.IO_MODULE, (), (), "IP Wiegand-Modul"),
  883. # ==================================================================
  884. # HMW — Homematic Wired
  885. # ==================================================================
  886. "HMW-LC-Sw*": DeviceTypeInfo(
  887. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  888. "Wired Schaltaktor",
  889. ),
  890. "HMW-LC-Bl*": DeviceTypeInfo(
  891. DeviceCategory.SHUTTER, ("LEVEL", "STOP"), ("LEVEL",),
  892. "Wired Rollladenaktor",
  893. ),
  894. "HMW-LC-Dim*": DeviceTypeInfo(
  895. DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",),
  896. "Wired Dimmer",
  897. ),
  898. "HMW-IO-*": DeviceTypeInfo(
  899. DeviceCategory.IO_MODULE, ("STATE",), ("STATE",),
  900. "Wired I/O-Modul",
  901. ),
  902. "HMW-Sen-SC*": DeviceTypeInfo(
  903. DeviceCategory.CONTACT, (), ("STATE",),
  904. "Wired Kontaktsensor",
  905. ),
  906. "HMW-Sec-TR-FM": DeviceTypeInfo(
  907. DeviceCategory.CONTACT, (), ("STATE",),
  908. "Wired Tuerkontakt",
  909. ),
  910. "HMW-RCV-50": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Wired Virtueller Empfaenger"),
  911. "HMW-Sys-PS7-DR": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Wired Netzteil"),
  912. "HMW-WSE-SM": DeviceTypeInfo(
  913. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE", "HUMIDITY"),
  914. "Wired Temperatur-/Feuchte-Sensor",
  915. ),
  916. "HMW-WSTH-SM": DeviceTypeInfo(
  917. DeviceCategory.CLIMATE_SENSOR, (), ("TEMPERATURE", "HUMIDITY"),
  918. "Wired Temperatur-/Feuchte-Sensor",
  919. ),
  920. # ==================================================================
  921. # HmIPW — Homematic IP Wired
  922. # ==================================================================
  923. "HmIPW-DRS*": DeviceTypeInfo(
  924. DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",),
  925. "IP Wired Schaltaktor Hutschiene",
  926. ),
  927. "HmIPW-DRD3": DeviceTypeInfo(
  928. DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",),
  929. "IP Wired 3-fach Dimmer Hutschiene",
  930. ),
  931. "HmIPW-DRBL4": DeviceTypeInfo(
  932. DeviceCategory.BLIND,
  933. ("LEVEL", "LEVEL_2", "STOP"), ("LEVEL", "LEVEL_2", "ACTIVITY_STATE"),
  934. "IP Wired 4-fach Jalousie Hutschiene",
  935. ),
  936. "HmIPW-DRAP": DeviceTypeInfo(DeviceCategory.CCU, (), (), "IP Wired Access Point"),
  937. "HmIPW-BRC2": DeviceTypeInfo(
  938. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  939. "IP Wired 2-Kanal Taster",
  940. ),
  941. "HmIPW-WRC2*": DeviceTypeInfo(
  942. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  943. "IP Wired 2-Kanal Wandtaster",
  944. ),
  945. "HmIPW-WRC6*": DeviceTypeInfo(
  946. DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT", "PRESS_LONG"),
  947. "IP Wired 6-Kanal Wandtaster",
  948. ),
  949. "HmIPW-STH*": DeviceTypeInfo(
  950. DeviceCategory.CLIMATE_SENSOR, (), ("ACTUAL_TEMPERATURE", "HUMIDITY"),
  951. "IP Wired Temperatur-/Feuchte-Sensor",
  952. ),
  953. "HmIPW-STHD*": DeviceTypeInfo(
  954. DeviceCategory.CLIMATE_SENSOR,
  955. ("SET_POINT_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  956. "IP Wired Temperatur-/Feuchte-Sensor mit Display",
  957. ),
  958. "HmIPW-WTH*": DeviceTypeInfo(
  959. DeviceCategory.WALL_THERMOSTAT,
  960. ("SET_POINT_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE", "HUMIDITY"),
  961. "IP Wired Wandthermostat",
  962. ),
  963. "HmIPW-FAL*": DeviceTypeInfo(
  964. DeviceCategory.FLOOR_HEATING, ("STATE",), ("STATE",),
  965. "IP Wired Fussbodenheizungsaktor",
  966. ),
  967. "HmIPW-FALMOT*": DeviceTypeInfo(
  968. DeviceCategory.FLOOR_HEATING, ("LEVEL",), ("LEVEL",),
  969. "IP Wired Fussbodenheizungsaktor motorisch",
  970. ),
  971. "HmIPW-SMI*": DeviceTypeInfo(
  972. DeviceCategory.MOTION, (), ("MOTION", "ILLUMINATION"),
  973. "IP Wired Bewegungsmelder",
  974. ),
  975. "HmIPW-SPI": DeviceTypeInfo(
  976. DeviceCategory.PRESENCE, (), ("PRESENCE_DETECTION_STATE", "ILLUMINATION"),
  977. "IP Wired Praesenzmelder",
  978. ),
  979. "HmIPW-SCTHD": DeviceTypeInfo(
  980. DeviceCategory.CLIMATE_SENSOR, (), ("CONCENTRATION", "ACTUAL_TEMPERATURE", "HUMIDITY"),
  981. "IP Wired CO2-Sensor mit Display",
  982. ),
  983. "HmIPW-WGD*": DeviceTypeInfo(
  984. DeviceCategory.DISPLAY, (), (),
  985. "IP Wired Glasdisplay",
  986. ),
  987. "HmIPW-FIO6": DeviceTypeInfo(
  988. DeviceCategory.IO_MODULE, ("STATE",), ("STATE",),
  989. "IP Wired 6-fach I/O-Modul",
  990. ),
  991. "HmIPW-DRI*": DeviceTypeInfo(
  992. DeviceCategory.IO_MODULE, (), ("STATE",),
  993. "IP Wired Eingangsmodul",
  994. ),
  995. # ==================================================================
  996. # Virtuelle / Sonstige
  997. # ==================================================================
  998. "VIR-LG-ONOFF": DeviceTypeInfo(DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",), "Virtuelles Licht On/Off"),
  999. "VIR-LG-DIM": DeviceTypeInfo(DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",), "Virtueller Dimmer"),
  1000. "VIR-LG-RGB*": DeviceTypeInfo(DeviceCategory.LED_RGBW, ("COLOR", "LEVEL"), ("COLOR", "LEVEL"), "Virtuelles RGB-Licht"),
  1001. "VIR-LG-RGBW*": DeviceTypeInfo(DeviceCategory.LED_RGBW, ("COLOR", "LEVEL"), ("COLOR", "LEVEL"), "Virtuelles RGBW-Licht"),
  1002. "VIR-LG-WHITE*": DeviceTypeInfo(DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",), "Virtuelles White-Licht"),
  1003. "VIR-LG-GROUP": DeviceTypeInfo(DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",), "Virtuelle Lichtgruppe"),
  1004. "VIR-HUE-GTW": DeviceTypeInfo(DeviceCategory.CCU, (), (), "Hue Gateway"),
  1005. "VIR-OL-GTW": DeviceTypeInfo(DeviceCategory.CCU, (), (), "OsramLightify Gateway"),
  1006. "OLIGO.smart.iq.HM": DeviceTypeInfo(DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",), "Oligo Dimmer"),
  1007. # ELV-Geraete
  1008. "ELV-SH-BS2": DeviceTypeInfo(DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",), "ELV 2-fach Schalter"),
  1009. "ELV-SH-SW1-BAT": DeviceTypeInfo(DeviceCategory.LIGHT_SWITCH, ("STATE",), ("STATE",), "ELV Batterie-Schalter"),
  1010. "ELV-SH-BM-S": DeviceTypeInfo(DeviceCategory.MOTION, (), ("MOTION",), "ELV Bewegungsmelder"),
  1011. "ELV-SH-WSC": DeviceTypeInfo(DeviceCategory.WALL_BUTTON, (), ("PRESS_SHORT",), "ELV Wandschalter"),
  1012. "ELV-SH-WUA": DeviceTypeInfo(DeviceCategory.DIMMER, ("LEVEL",), ("LEVEL",), "ELV Universal-Aktor"),
  1013. # ALPHA-IP
  1014. "ALPHA-IP-RBG*": DeviceTypeInfo(DeviceCategory.THERMOSTAT,
  1015. ("SET_POINT_TEMPERATURE",), ("ACTUAL_TEMPERATURE", "SET_POINT_TEMPERATURE"),
  1016. "Alpha IP Thermostat"),
  1017. }
  1018. # ============================================================================
  1019. # Lookup
  1020. # ============================================================================
  1021. def classify_device(device_type: str) -> DeviceTypeInfo:
  1022. """Klassifiziert einen Homematic-Geraetetyp.
  1023. Prueft zuerst exakten Match, dann Prefix-Match (laengster gewinnt).
  1024. Bei Geraetetypen mit Suffix (z.B. "HmIP-eTRV-2 I9F") wird auch
  1025. der Basisname ohne Leerzeichen-Suffix geprueft.
  1026. Args:
  1027. device_type: Geraetetyp-String aus der CCU
  1028. Returns:
  1029. DeviceTypeInfo mit Kategorie und Datenpunkten
  1030. """
  1031. # 1. Exakter Match
  1032. info = DEVICE_TYPE_MAP.get(device_type)
  1033. if info is not None:
  1034. return info
  1035. # 2. Basisname ohne Suffix (z.B. "HmIP-PSM-2 QHJ" → "HmIP-PSM-2")
  1036. base = device_type.split(" ")[0]
  1037. if base != device_type:
  1038. info = DEVICE_TYPE_MAP.get(base)
  1039. if info is not None:
  1040. return info
  1041. # 3. Prefix-Match (laengster gewinnt)
  1042. best: DeviceTypeInfo | None = None
  1043. best_len = 0
  1044. for pattern, type_info in DEVICE_TYPE_MAP.items():
  1045. if pattern.endswith("*"):
  1046. prefix = pattern[:-1]
  1047. if device_type.startswith(prefix) and len(prefix) > best_len:
  1048. best = type_info
  1049. best_len = len(prefix)
  1050. if best is not None:
  1051. return best
  1052. return DeviceTypeInfo(DeviceCategory.UNKNOWN, description=f"Unbekannt: {device_type}")
  1053. # ============================================================================
  1054. # Kategorie-Gruppen
  1055. # ============================================================================
  1056. #: Alle Kategorien die "Licht" steuern (NICHT Steckdosen!)
  1057. LIGHT_CATEGORIES: frozenset[DeviceCategory] = frozenset({
  1058. DeviceCategory.LIGHT_SWITCH,
  1059. DeviceCategory.DIMMER,
  1060. DeviceCategory.DIMMER_COLOR_TEMP,
  1061. DeviceCategory.LED_RGBW,
  1062. DeviceCategory.LED_CONTROLLER,
  1063. DeviceCategory.SWITCH_METERING, # Unterputz mit Messung = trotzdem Licht
  1064. })
  1065. PLUG_CATEGORIES: frozenset[DeviceCategory] = frozenset({
  1066. DeviceCategory.PLUG_SWITCH,
  1067. DeviceCategory.PLUG_METERING,
  1068. })
  1069. CLIMATE_CATEGORIES: frozenset[DeviceCategory] = frozenset({
  1070. DeviceCategory.THERMOSTAT,
  1071. DeviceCategory.WALL_THERMOSTAT,
  1072. DeviceCategory.FLOOR_HEATING,
  1073. DeviceCategory.CLIMATE_SENSOR,
  1074. })
  1075. CONTACT_CATEGORIES: frozenset[DeviceCategory] = frozenset({
  1076. DeviceCategory.CONTACT,
  1077. DeviceCategory.ROTARY_HANDLE,
  1078. DeviceCategory.TILT,
  1079. })
  1080. MOTION_CATEGORIES: frozenset[DeviceCategory] = frozenset({
  1081. DeviceCategory.MOTION,
  1082. DeviceCategory.PRESENCE,
  1083. })
  1084. # ============================================================================
  1085. # Convenience-Funktionen
  1086. # ============================================================================
  1087. def is_light(device_type: str) -> bool:
  1088. """Prueft ob ein Geraet ein Licht-Aktor ist."""
  1089. return classify_device(device_type).category in LIGHT_CATEGORIES
  1090. def is_plug(device_type: str) -> bool:
  1091. """Prueft ob ein Geraet eine Steckdose ist."""
  1092. return classify_device(device_type).category in PLUG_CATEGORIES
  1093. def is_climate(device_type: str) -> bool:
  1094. """Prueft ob ein Geraet ein Klima-/Heizungsgeraet ist."""
  1095. return classify_device(device_type).category in CLIMATE_CATEGORIES
  1096. def is_contact(device_type: str) -> bool:
  1097. """Prueft ob ein Geraet ein Fenster-/Tuer-Kontakt ist."""
  1098. return classify_device(device_type).category in CONTACT_CATEGORIES
  1099. def is_motion(device_type: str) -> bool:
  1100. """Prueft ob ein Geraet ein Bewegungsmelder ist."""
  1101. return classify_device(device_type).category in MOTION_CATEGORIES