__init__.py 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. from dataclasses import dataclass
  2. from switchbot import SwitchbotModel
  3. @dataclass
  4. class AdvTestCase:
  5. manufacturer_data: bytes | None
  6. service_data: bytes | None
  7. data: dict
  8. model: str | bytes
  9. modelFriendlyName: str
  10. modelName: SwitchbotModel
  11. STRIP_LIGHT_3_INFO = AdvTestCase(
  12. b'\xc0N0\xe0U\x9a\x85\x9e"\xd0\x00\x00\x00\x00\x00\x00\x12\x91\x00',
  13. b"\x00\x00\x00\x00\x10\xd0\xb1",
  14. {
  15. "sequence_number": 133,
  16. "isOn": True,
  17. "brightness": 30,
  18. "delay": False,
  19. "network_state": 2,
  20. "color_mode": 2,
  21. "cw": 4753,
  22. },
  23. b"\x00\x10\xd0\xb1",
  24. "Strip Light 3",
  25. SwitchbotModel.STRIP_LIGHT_3,
  26. )
  27. FLOOR_LAMP_INFO = AdvTestCase(
  28. b'\xa0\x85\xe3e,\x06P\xaa"\xd4\x00\x00\x00\x00\x00\x00\r\x93\x00',
  29. b"\x00\x00\x00\x00\x10\xd0\xb0",
  30. {
  31. "sequence_number": 80,
  32. "isOn": True,
  33. "brightness": 42,
  34. "delay": False,
  35. "network_state": 2,
  36. "color_mode": 2,
  37. "cw": 3475,
  38. },
  39. b"\x00\x10\xd0\xb0",
  40. "Floor Lamp",
  41. SwitchbotModel.FLOOR_LAMP,
  42. )
  43. CANDLE_WARMER_LAMP_INFO = AdvTestCase(
  44. b"\x90\xe5\xb1h\xda\xaa\n\xb0 \x00",
  45. b"\x00\x00\x00\x00\x11\x22\xb8",
  46. {
  47. "brightness": 48,
  48. "delay": False,
  49. "isOn": True,
  50. "network_state": 2,
  51. "sequence_number": 10,
  52. },
  53. b"\x00\x11\x22\xb8",
  54. "Candle Warmer Lamp",
  55. SwitchbotModel.CANDLE_WARMER_LAMP,
  56. )
  57. RGBICWW_STRIP_LIGHT_INFO = AdvTestCase(
  58. b'(7/L\x94\xb2\x0c\x9e"\x00\x11:\x00',
  59. b"\x00\x00\x00\x00\x10\xd0\xb3",
  60. {
  61. "sequence_number": 12,
  62. "isOn": True,
  63. "brightness": 30,
  64. "delay": False,
  65. "network_state": 2,
  66. "color_mode": 2,
  67. "cw": 4410,
  68. },
  69. b"\x00\x10\xd0\xb3",
  70. "Rgbic Strip Light",
  71. SwitchbotModel.RGBICWW_STRIP_LIGHT,
  72. )
  73. RGBICWW_FLOOR_LAMP_INFO = AdvTestCase(
  74. b'\xdc\x06u\xa6\xfb\xb2y\x9e"\x00\x11\xb8\x00',
  75. b"\x00\x00\x00\x00\x10\xd0\xb4",
  76. {
  77. "sequence_number": 121,
  78. "isOn": True,
  79. "brightness": 30,
  80. "delay": False,
  81. "network_state": 2,
  82. "color_mode": 2,
  83. "cw": 4536,
  84. },
  85. b"\x00\x10\xd0\xb4",
  86. "Rgbic Floor Lamp",
  87. SwitchbotModel.RGBICWW_FLOOR_LAMP,
  88. )
  89. SMART_THERMOSTAT_RADIATOR_INFO = AdvTestCase(
  90. b"\xb0\xe9\xfe\xa2T|6\xe4\x00\x9c\xa3A\x00",
  91. b"\x00 d\x00\x116@",
  92. {
  93. "battery": 100,
  94. "door_open": False,
  95. "fault_code": 0,
  96. "isOn": True,
  97. "last_mode": "comfort",
  98. "mode": "manual",
  99. "sequence_number": 54,
  100. "need_update_temp": False,
  101. "restarted": False,
  102. "target_temperature": 35.0,
  103. "temperature": 28.0,
  104. },
  105. b"\x00\x116@",
  106. "Smart Thermostat Radiator",
  107. SwitchbotModel.SMART_THERMOSTAT_RADIATOR,
  108. )
  109. ART_FRAME_INFO = AdvTestCase(
  110. b"\xb0\xe9\xfe\xe2\xfa8\x157\x03\x08",
  111. b"\x00\x007\x01\x11>\x10",
  112. {
  113. "battery": 55,
  114. "battery_charging": False,
  115. "display_mode": 1,
  116. "display_size": 0,
  117. "image_index": 3,
  118. "last_network_status": 0,
  119. "sequence_number": 21,
  120. },
  121. b"\x01\x11>\x10",
  122. "Art Frame",
  123. SwitchbotModel.ART_FRAME,
  124. )
  125. KEYPAD_VISION_INFO = AdvTestCase(
  126. b"\xb0\xe9\xfe\xe5\x04\x1e\xac\xdf\x00\x00\x00\x00\x00\x02",
  127. b"\x00\x00_\x01\x11\x03x",
  128. {
  129. "battery": 95,
  130. "battery_charging": True,
  131. "doorbell": False,
  132. "duress_alarm": False,
  133. "high_temperature": False,
  134. "lockout_alarm": False,
  135. "low_temperature": False,
  136. "pir_triggered_level": 2,
  137. "sequence_number": 172,
  138. "tamper_alarm": False,
  139. },
  140. b"\x01\x11\x03x",
  141. "Keypad Vision",
  142. SwitchbotModel.KEYPAD_VISION,
  143. )
  144. KEYPAD_VISION_PRO_INFO = AdvTestCase(
  145. b"\xb0\xe9\xfe\xde\xb6\x8c+`\x00\x00\x00\x00\x00\x002",
  146. b"\x00\x00`\x01\x11Q\x98",
  147. {
  148. "battery": 96,
  149. "battery_charging": False,
  150. "doorbell": False,
  151. "duress_alarm": False,
  152. "high_temperature": False,
  153. "lockout_alarm": False,
  154. "low_temperature": False,
  155. "radar_triggered_distance": 0,
  156. "radar_triggered_level": 0,
  157. "sequence_number": 43,
  158. "tamper_alarm": False,
  159. },
  160. b"\x01\x11Q\x98",
  161. "Keypad Vision Pro",
  162. SwitchbotModel.KEYPAD_VISION_PRO,
  163. )