1
0

__init__.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  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. RGBICWW_CEILING_LIGHT_INFO = AdvTestCase(
  90. b'(7/L\x94\xb2\x0c\x9e"\x00\x11:\x00\xa0',
  91. b"\x00\x00\x00\x00\x11\xbb\x10",
  92. {
  93. "sequence_number": 12,
  94. "isOn": True,
  95. "brightness": 30,
  96. "delay": False,
  97. "network_state": 2,
  98. "color_mode": 2,
  99. "cw": 4410,
  100. "main_isOn": True,
  101. "main_brightness": 32,
  102. },
  103. b"\x00\x11\xbb\x10",
  104. "RGBICWW Ceiling Light",
  105. SwitchbotModel.RGBICWW_CEILING_LIGHT,
  106. )
  107. RGBIC_NEON_LIGHT_INFO = AdvTestCase(
  108. b'\xdc\x06u\xa6\xfb\xb2y\x9e"\x00\x11\xb8\x00',
  109. b"\x00\x00\x00\x00\x10\xd0\xb6",
  110. {
  111. "sequence_number": 121,
  112. "isOn": True,
  113. "brightness": 30,
  114. "delay": False,
  115. "network_state": 2,
  116. "color_mode": 2,
  117. },
  118. b"\x00\x10\xd0\xb6",
  119. "Rgbic Neon Rope Light",
  120. SwitchbotModel.RGBIC_NEON_ROPE_LIGHT,
  121. )
  122. PERMANENT_OUTDOOR_LIGHT_INFO = AdvTestCase(
  123. b'\xc0N0\xe0U\x9a\x85\x9e"\xd0\x00\x00\x00\x00\x00\x00\x12\x91\x00',
  124. b"\x00\x00\x00\x00\x10\xd0\xb7",
  125. {
  126. "sequence_number": 133,
  127. "isOn": True,
  128. "brightness": 30,
  129. "delay": False,
  130. "network_state": 2,
  131. "color_mode": 2,
  132. "cw": 0,
  133. },
  134. b"\x00\x10\xd0\xb7",
  135. "Permanent Outdoor Light",
  136. SwitchbotModel.PERMANENT_OUTDOOR_LIGHT,
  137. )
  138. SMART_THERMOSTAT_RADIATOR_INFO = AdvTestCase(
  139. b"\xb0\xe9\xfe\xa2T|6\xe4\x00\x9c\xa3A\x00",
  140. b"\x00 d\x00\x116@",
  141. {
  142. "battery": 100,
  143. "door_open": False,
  144. "fault_code": 0,
  145. "isOn": True,
  146. "last_mode": "comfort",
  147. "mode": "manual",
  148. "sequence_number": 54,
  149. "need_update_temp": False,
  150. "restarted": False,
  151. "target_temperature": 35.0,
  152. "temperature": 28.0,
  153. },
  154. b"\x00\x116@",
  155. "Smart Thermostat Radiator",
  156. SwitchbotModel.SMART_THERMOSTAT_RADIATOR,
  157. )
  158. ART_FRAME_INFO = AdvTestCase(
  159. b"\xb0\xe9\xfe\xe2\xfa8\x157\x03\x08",
  160. b"\x00\x007\x01\x11>\x10",
  161. {
  162. "battery": 55,
  163. "battery_charging": False,
  164. "display_mode": 1,
  165. "display_size": 0,
  166. "image_index": 3,
  167. "last_network_status": 0,
  168. "sequence_number": 21,
  169. },
  170. b"\x01\x11>\x10",
  171. "Art Frame",
  172. SwitchbotModel.ART_FRAME,
  173. )
  174. KEYPAD_VISION_INFO = AdvTestCase(
  175. b"\xb0\xe9\xfe\xe5\x04\x1e\xac\xdf\x00\x00\x00\x00\x00\x02",
  176. b"\x00\x00_\x01\x11\x03x",
  177. {
  178. "battery": 95,
  179. "battery_charging": True,
  180. "doorbell": False,
  181. "duress_alarm": False,
  182. "high_temperature": False,
  183. "lockout_alarm": False,
  184. "low_temperature": False,
  185. "pir_triggered_level": 2,
  186. "sequence_number": 172,
  187. "tamper_alarm": False,
  188. },
  189. b"\x01\x11\x03x",
  190. "Keypad Vision",
  191. SwitchbotModel.KEYPAD_VISION,
  192. )
  193. KEYPAD_VISION_PRO_INFO = AdvTestCase(
  194. b"\xb0\xe9\xfe\xde\xb6\x8c+`\x00\x00\x00\x00\x00\x002",
  195. b"\x00\x00`\x01\x11Q\x98",
  196. {
  197. "battery": 96,
  198. "battery_charging": False,
  199. "doorbell": False,
  200. "duress_alarm": False,
  201. "high_temperature": False,
  202. "lockout_alarm": False,
  203. "low_temperature": False,
  204. "radar_triggered_distance": 0,
  205. "radar_triggered_level": 0,
  206. "sequence_number": 43,
  207. "tamper_alarm": False,
  208. },
  209. b"\x01\x11Q\x98",
  210. "Keypad Vision Pro",
  211. SwitchbotModel.KEYPAD_VISION_PRO,
  212. )