瀏覽代碼

Use snake_case style for fan modes (#321)

Retha Runolfsson 1 周之前
父節點
當前提交
42d4f40ded
共有 5 個文件被更改,包括 15 次插入15 次删除
  1. 1 1
      switchbot/adv_parsers/fan.py
  2. 1 1
      switchbot/const/fan.py
  3. 5 5
      switchbot/devices/fan.py
  4. 2 2
      tests/test_adv_parser.py
  5. 6 6
      tests/test_fan.py

+ 1 - 1
switchbot/adv_parsers/fan.py

@@ -15,7 +15,7 @@ def process_fan(data: bytes | None, mfr_data: bytes | None) -> dict[str, bool |
     _seq_num = device_data[0]
     _isOn = bool(device_data[1] & 0b10000000)
     _mode = (device_data[1] & 0b01110000) >> 4
-    _mode = FanMode(_mode).name if 1 <= _mode <= 4 else None
+    _mode = FanMode(_mode).name.lower() if 1 <= _mode <= 4 else None
     _nightLight = (device_data[1] & 0b00001100) >> 2
     _oscillate_left_and_right = bool(device_data[1] & 0b00000010)
     _oscillate_up_and_down = bool(device_data[1] & 0b00000001)

+ 1 - 1
switchbot/const/fan.py

@@ -11,4 +11,4 @@ class FanMode(Enum):
 
     @classmethod
     def get_modes(cls) -> list[str]:
-        return [mode.name for mode in cls]
+        return [mode.name.lower() for mode in cls]

+ 5 - 5
switchbot/devices/fan.py

@@ -21,10 +21,10 @@ COMMAND_TURN_OFF = f"{COMMAND_HEAD}0102"
 COMMAND_START_OSCILLATION = f"{COMMAND_HEAD}020101ff"
 COMMAND_STOP_OSCILLATION = f"{COMMAND_HEAD}020102ff"
 COMMAND_SET_MODE = {
-    FanMode.NORMAL.name: f"{COMMAND_HEAD}030101ff",
-    FanMode.NATURAL.name: f"{COMMAND_HEAD}030102ff",
-    FanMode.SLEEP.name: f"{COMMAND_HEAD}030103",
-    FanMode.BABY.name: f"{COMMAND_HEAD}030104",
+    FanMode.NORMAL.name.lower(): f"{COMMAND_HEAD}030101ff",
+    FanMode.NATURAL.name.lower(): f"{COMMAND_HEAD}030102ff",
+    FanMode.SLEEP.name.lower(): f"{COMMAND_HEAD}030103",
+    FanMode.BABY.name.lower(): f"{COMMAND_HEAD}030104",
 }
 COMMAND_SET_PERCENTAGE = f"{COMMAND_HEAD}0302"  #  +speed
 COMMAND_GET_BASIC_INFO = "570f428102"
@@ -48,7 +48,7 @@ class SwitchbotFan(SwitchbotSequenceDevice):
         isOn = bool(_data[3] & 0b10000000)
         oscillating = bool(_data[3] & 0b01100000)
         _mode = _data[8] & 0b00000111
-        mode = FanMode(_mode).name if 1 <= _mode <= 4 else None
+        mode = FanMode(_mode).name.lower() if 1 <= _mode <= 4 else None
         speed = _data[9]
         firmware = _data1[2] / 10.0
 

+ 2 - 2
tests/test_adv_parser.py

@@ -2123,7 +2123,7 @@ def test_circulator_fan_active() -> None:
             "data": {
                 "sequence_number": 126,
                 "isOn": False,
-                "mode": "BABY",
+                "mode": "baby",
                 "nightLight": 3,
                 "oscillating": False,
                 "battery": 82,
@@ -2157,7 +2157,7 @@ def test_circulator_fan_passive() -> None:
             "data": {
                 "sequence_number": 126,
                 "isOn": False,
-                "mode": "BABY",
+                "mode": "baby",
                 "nightLight": 3,
                 "oscillating": False,
                 "battery": 82,

+ 6 - 6
tests/test_fan.py

@@ -89,12 +89,12 @@ async def test_get_basic_info_returns_none(basic_info, firmware_info):
         (
             bytearray(b"\x01\x02W\x82g\xf5\xde4\x01=dPP\x03\x14P\x00\x00\x00\x00"),
             bytearray(b"\x01W\x0b\x17\x01"),
-            [87, True, False, "NORMAL", 61, 1.1],
+            [87, True, False, "normal", 61, 1.1],
         ),
         (
             bytearray(b"\x01\x02U\xc2g\xf5\xde4\x04+dPP\x03\x14P\x00\x00\x00\x00"),
             bytearray(b"\x01U\x0b\x17\x01"),
-            [85, True, True, "BABY", 43, 1.1],
+            [85, True, True, "baby", 43, 1.1],
         ),
     ],
 )
@@ -120,9 +120,9 @@ async def test_get_basic_info(basic_info, firmware_info, result):
 
 @pytest.mark.asyncio
 async def test_set_preset_mode():
-    fan_device = create_device_for_command_testing({"mode": "BABY"})
-    await fan_device.set_preset_mode("BABY")
-    assert fan_device.get_current_mode() == "BABY"
+    fan_device = create_device_for_command_testing({"mode": "baby"})
+    await fan_device.set_preset_mode("baby")
+    assert fan_device.get_current_mode() == "baby"
 
 
 @pytest.mark.asyncio
@@ -169,4 +169,4 @@ async def test_turn_off():
 
 
 def test_get_modes():
-    assert FanMode.get_modes() == ["NORMAL", "NATURAL", "SLEEP", "BABY"]
+    assert FanMode.get_modes() == ["normal", "natural", "sleep", "baby"]