|
29 | 29 | HUBMINI_MATTER_SERVICE_INFO, |
30 | 30 | LEAK_SERVICE_INFO, |
31 | 31 | PLUG_MINI_EU_SERVICE_INFO, |
| 32 | + RELAY_SWITCH_2PM_SERVICE_INFO, |
32 | 33 | REMOTE_SERVICE_INFO, |
33 | 34 | WOHAND_SERVICE_INFO, |
34 | 35 | WOHUB2_SERVICE_INFO, |
@@ -617,3 +618,113 @@ async def test_plug_mini_eu_sensor(hass: HomeAssistant) -> None: |
617 | 618 |
|
618 | 619 | assert await hass.config_entries.async_unload(entry.entry_id) |
619 | 620 | await hass.async_block_till_done() |
| 621 | + |
| 622 | + |
| 623 | +@pytest.mark.usefixtures("entity_registry_enabled_by_default") |
| 624 | +async def test_relay_switch_2pm_sensor(hass: HomeAssistant) -> None: |
| 625 | + """Test setting up creates the relay switch 2PM sensor.""" |
| 626 | + await async_setup_component(hass, DOMAIN, {}) |
| 627 | + inject_bluetooth_service_info(hass, RELAY_SWITCH_2PM_SERVICE_INFO) |
| 628 | + |
| 629 | + with patch( |
| 630 | + "homeassistant.components.switchbot.switch.switchbot.SwitchbotRelaySwitch2PM.get_basic_info", |
| 631 | + new=AsyncMock( |
| 632 | + return_value={ |
| 633 | + 1: { |
| 634 | + "power": 4.9, |
| 635 | + "current": 0.1, |
| 636 | + "voltage": 25, |
| 637 | + "energy": 0.2, |
| 638 | + }, |
| 639 | + 2: { |
| 640 | + "power": 7.9, |
| 641 | + "current": 0.6, |
| 642 | + "voltage": 25, |
| 643 | + "energy": 2.5, |
| 644 | + }, |
| 645 | + } |
| 646 | + ), |
| 647 | + ): |
| 648 | + entry = MockConfigEntry( |
| 649 | + domain=DOMAIN, |
| 650 | + data={ |
| 651 | + CONF_ADDRESS: "aa:bb:cc:dd:ee:ff", |
| 652 | + CONF_NAME: "test-name", |
| 653 | + CONF_SENSOR_TYPE: "relay_switch_2pm", |
| 654 | + CONF_KEY_ID: "ff", |
| 655 | + CONF_ENCRYPTION_KEY: "ffffffffffffffffffffffffffffffff", |
| 656 | + }, |
| 657 | + unique_id="aabbccddeeaa", |
| 658 | + ) |
| 659 | + entry.add_to_hass(hass) |
| 660 | + |
| 661 | + assert await hass.config_entries.async_setup(entry.entry_id) |
| 662 | + await hass.async_block_till_done() |
| 663 | + |
| 664 | + assert len(hass.states.async_all("sensor")) == 9 |
| 665 | + |
| 666 | + power_sensor_1 = hass.states.get("sensor.test_name_channel_1_power") |
| 667 | + power_sensor_attrs = power_sensor_1.attributes |
| 668 | + assert power_sensor_1.state == "4.9" |
| 669 | + assert power_sensor_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 1 Power" |
| 670 | + assert power_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "W" |
| 671 | + assert power_sensor_attrs[ATTR_STATE_CLASS] == "measurement" |
| 672 | + |
| 673 | + voltage_sensor_1 = hass.states.get("sensor.test_name_channel_1_voltage") |
| 674 | + voltage_sensor_1_attrs = voltage_sensor_1.attributes |
| 675 | + assert voltage_sensor_1.state == "25" |
| 676 | + assert voltage_sensor_1_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 1 Voltage" |
| 677 | + assert voltage_sensor_1_attrs[ATTR_UNIT_OF_MEASUREMENT] == "V" |
| 678 | + assert voltage_sensor_1_attrs[ATTR_STATE_CLASS] == "measurement" |
| 679 | + |
| 680 | + current_sensor_1 = hass.states.get("sensor.test_name_channel_1_current") |
| 681 | + current_sensor_1_attrs = current_sensor_1.attributes |
| 682 | + assert current_sensor_1.state == "0.1" |
| 683 | + assert current_sensor_1_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 1 Current" |
| 684 | + assert current_sensor_1_attrs[ATTR_UNIT_OF_MEASUREMENT] == "A" |
| 685 | + assert current_sensor_1_attrs[ATTR_STATE_CLASS] == "measurement" |
| 686 | + |
| 687 | + energy_sensor_1 = hass.states.get("sensor.test_name_channel_1_energy") |
| 688 | + energy_sensor_1_attrs = energy_sensor_1.attributes |
| 689 | + assert energy_sensor_1.state == "0.2" |
| 690 | + assert energy_sensor_1_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 1 Energy" |
| 691 | + assert energy_sensor_1_attrs[ATTR_UNIT_OF_MEASUREMENT] == "kWh" |
| 692 | + assert energy_sensor_1_attrs[ATTR_STATE_CLASS] == "total_increasing" |
| 693 | + |
| 694 | + power_sensor_2 = hass.states.get("sensor.test_name_channel_2_power") |
| 695 | + power_sensor_2_attrs = power_sensor_2.attributes |
| 696 | + assert power_sensor_2.state == "7.9" |
| 697 | + assert power_sensor_2_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 2 Power" |
| 698 | + assert power_sensor_2_attrs[ATTR_UNIT_OF_MEASUREMENT] == "W" |
| 699 | + assert power_sensor_2_attrs[ATTR_STATE_CLASS] == "measurement" |
| 700 | + |
| 701 | + voltage_sensor_2 = hass.states.get("sensor.test_name_channel_2_voltage") |
| 702 | + voltage_sensor_2_attrs = voltage_sensor_2.attributes |
| 703 | + assert voltage_sensor_2.state == "25" |
| 704 | + assert voltage_sensor_2_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 2 Voltage" |
| 705 | + assert voltage_sensor_2_attrs[ATTR_UNIT_OF_MEASUREMENT] == "V" |
| 706 | + assert voltage_sensor_2_attrs[ATTR_STATE_CLASS] == "measurement" |
| 707 | + |
| 708 | + current_sensor_2 = hass.states.get("sensor.test_name_channel_2_current") |
| 709 | + current_sensor_2_attrs = current_sensor_2.attributes |
| 710 | + assert current_sensor_2.state == "0.6" |
| 711 | + assert current_sensor_2_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 2 Current" |
| 712 | + assert current_sensor_2_attrs[ATTR_UNIT_OF_MEASUREMENT] == "A" |
| 713 | + assert current_sensor_2_attrs[ATTR_STATE_CLASS] == "measurement" |
| 714 | + |
| 715 | + energy_sensor_2 = hass.states.get("sensor.test_name_channel_2_energy") |
| 716 | + energy_sensor_2_attrs = energy_sensor_2.attributes |
| 717 | + assert energy_sensor_2.state == "2.5" |
| 718 | + assert energy_sensor_2_attrs[ATTR_FRIENDLY_NAME] == "test-name Channel 2 Energy" |
| 719 | + assert energy_sensor_2_attrs[ATTR_UNIT_OF_MEASUREMENT] == "kWh" |
| 720 | + assert energy_sensor_2_attrs[ATTR_STATE_CLASS] == "total_increasing" |
| 721 | + |
| 722 | + rssi_sensor = hass.states.get("sensor.test_name_bluetooth_signal") |
| 723 | + rssi_sensor_attrs = rssi_sensor.attributes |
| 724 | + assert rssi_sensor.state == "-60" |
| 725 | + assert rssi_sensor_attrs[ATTR_FRIENDLY_NAME] == "test-name Bluetooth signal" |
| 726 | + assert rssi_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == "dBm" |
| 727 | + assert rssi_sensor_attrs[ATTR_STATE_CLASS] == "measurement" |
| 728 | + |
| 729 | + assert await hass.config_entries.async_unload(entry.entry_id) |
| 730 | + await hass.async_block_till_done() |
0 commit comments