__init__.py 5.0 KB

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