Пример #1
0
def test_integration_simple() -> None:
    """Test authentification then get basic pool measures."""
    # Init client
    client = FliprAPIRestClient(USERNAME, PASSWORD)

    list_fliprs = client.search_flipr_ids()
    print("Identifiants flipper trouvés : " + str(list_fliprs))

    assert FLIPR_ID in list_fliprs

    data = client.get_pool_measure_latest(FLIPR_ID)
    print(
        "Valeurs de la piscine : le {:s} temperature = {:.2f}, redox = {:.2f}, chlorine = {:.5f}, ph = {:.2f}".format(
            data["date_time"].strftime("%Y-%m-%d %H:%M:%S"),
            data["temperature"],
            data["red_ox"],
            data["chlorine"],
            data["ph"],
        )
    )

    assert data["temperature"] > 0
    assert data["red_ox"] > 0
    assert data["chlorine"] > 0
    assert data["ph"] > 0
    assert data["date_time"] is not None
    async def _authenticate_and_search_flipr(self) -> list[str]:
        """Validate the username and password provided and searches for a flipr id."""
        # Instantiates the flipr API that does not require async since it is has no network access.
        client = FliprAPIRestClient(self._username, self._password)

        flipr_ids = await self.hass.async_add_executor_job(client.search_flipr_ids)

        return flipr_ids
Пример #3
0
def test_integration_hub() -> None:
    """Test authentification then get hub operation."""
    # Init client
    client = FliprAPIRestClient(USERNAME, PASSWORD)

    list_hubs = client.search_hub_ids()
    print("Identifiants hub trouvés : " + str(list_hubs))

    assert HUB_ID in list_hubs

    data = client.get_hub_state(HUB_ID)
    print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"]))

    assert data["state"] in [True, False]
    assert data["mode"] in ["auto", "manual", "planning"]

    print("set hub mode to auto")

    data = client.set_hub_mode(HUB_ID, "auto")
    print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"]))

    assert data["state"] in [True, False]
    assert data["mode"] == "auto"

    print("set hub state to On")

    data = client.set_hub_state(HUB_ID, True)
    print("Hub state: {:b}, mode: {:s}".format(data["state"], data["mode"]))

    assert data["state"] is True
    assert data["mode"] == "manual"
Пример #4
0
    def __init__(self, hass, entry):
        """Initialize."""
        username = entry.data[CONF_EMAIL]
        password = entry.data[CONF_PASSWORD]
        self.flipr_id = entry.data[CONF_FLIPR_ID]

        # Establishes the connection.
        self.client = FliprAPIRestClient(username, password)
        self.entry = entry

        super().__init__(
            hass,
            _LOGGER,
            name=f"Flipr data measure for {self.flipr_id}",
            update_interval=SCAN_INTERVAL,
        )
Пример #5
0
def test_integration_simple(requests_mock) -> None:  # type: ignore
    """Test authentification then get basic pool measures."""
    # mock behaviour :
    requests_mock.post(
        FLIPR_AUTH_URL,
        json={
            "access_token": "abcd-dummy_token_value",
            "token_type": "bearer",
            "expires_in": 23327999,
            "refresh_token": "dummy_refresh_token",
        },
    )
    requests_mock.get(
        f"{FLIPR_API_URL}/modules",
        json=[
            {
                "ActivationKey": "12345",
                "IsSuspended": False,
                "Status": {
                    "Comment": None,
                    "DateTime": "2020-04-13T14:26:53.563",
                    "Status": "Activated",
                },
                "BatteryPlugDate": "2019-07-01T00:00:00",
                "Comments": None,
                "NoAlertUnil": "2000-01-01T00:00:00",
                "Serial": "AB256C",
                "PAC": "123456B",
                "ResetsCounter": 4,
                "SigfoxStatus": "Activated",
                "OffsetOrp": 0.0,
                "OffsetTemperature": 0.0,
                "OffsetPh": 0.0,
                "OffsetConductivite": 0,
                "IsForSpa": False,
                "Version": 3,
                "LastMeasureDateTime": "2021-02-01T07:40:23.663",
                "CommercialType": {
                    "Id": 2,
                    "Value": "Pro"
                },
                "SubscribtionValidUntil": 1565947747,
                "ModuleType_Id": 1,
                "Eco_Mode": 0,
                "IsSubscriptionValid": True,
            },
            {
                "ActivationKey": "12345",
                "IsSuspended": False,
                "Status": {
                    "Comment": None,
                    "DateTime": "2020-04-13T14:26:53.563",
                    "Status": "Activated",
                },
                "BatteryPlugDate": "2019-07-01T00:00:00",
                "Comments": None,
                "NoAlertUnil": "2000-01-01T00:00:00",
                "Serial": "CD256C",
                "PAC": "123456B",
                "ResetsCounter": 0,
                "SigfoxStatus": "Inactive",
                "OffsetOrp": 0.0,
                "OffsetTemperature": 0.0,
                "OffsetPh": 0.0,
                "OffsetConductivite": 0,
                "IsForSpa": False,
                "Version": 3,
                "LastMeasureDateTime": "2021-02-01T07:40:23.663",
                "CommercialType": {
                    "Id": 1,
                    "Value": "Start"
                },
                "SubscribtionValidUntil": 1565947747,
                "ModuleType_Id": 2,
                "Eco_Mode": 0,
                "IsSubscriptionValid": True,
            },
        ],
    )
    requests_mock.get(
        f"{FLIPR_API_URL}/modules/AB256C/survey/last",
        json={
            "MeasureId": 405698,
            "DateTime": "2021-02-01T07:40:21Z",
            "Temperature": 10.0,
            "PH": {
                "Label": "PH",
                "Message": "Parfait",
                "Deviation": -0.47,
                "Value": 7.01,
                "DeviationSector": "Medium",
            },
            "OxydoReductionPotentiel": {
                "Label": "Potentiel Redox.",
                "Value": 474.0
            },
            "Conductivity": {
                "Label": "Conductivité",
                "Level": "Low"
            },
            "UvIndex": 0.0,
            "Battery": {
                "Label": "Batterie",
                "Deviation": 0.75
            },
            "Desinfectant": {
                "Label": "Chlore",
                "Message": "Trop faible",
                "Deviation": -1.01,
                "Value": 0.31986785186370315,
                "DeviationSector": "TooLow",
            },
        },
    )

    requests_mock.get(
        f"{FLIPR_API_URL}/hub/CD256C/state",
        json={
            "stateEquipment": 1,
            "behavior": "manual",
            "planning": "",
            "internalKeepAlive": None,
            "messageModeAutoFiltration": None,
            "ErrorCode": None,
            "ErrorMessage": None,
        },
    )
    requests_mock.put(
        f"{FLIPR_API_URL}/hub/CD256C/mode/manual",
        json={
            "stateEquipment": 1,
            "behavior": "manual",
            "planning": "",
            "internalKeepAlive": None,
            "messageModeAutoFiltration": None,
            "ErrorCode": None,
            "ErrorMessage": None,
        },
    )

    requests_mock.put(
        f"{FLIPR_API_URL}/hub/CD256C/mode/auto",
        json={
            "stateEquipment": 1,
            "behavior": "auto",
            "planning": "",
            "internalKeepAlive": None,
            "messageModeAutoFiltration": None,
            "ErrorCode": None,
            "ErrorMessage": None,
        },
    )

    requests_mock.put(
        f"{FLIPR_API_URL}/hub/CD256C/mode/planning",
        json={
            "stateEquipment": 1,
            "behavior": "planning",
            "planning": "",
            "internalKeepAlive": None,
            "messageModeAutoFiltration": None,
            "ErrorCode": None,
            "ErrorMessage": None,
        },
    )

    requests_mock.post(f"{FLIPR_API_URL}/hub/CD256C/Manual/True", )

    # Init client
    client = FliprAPIRestClient("USERNAME", "PASSWORD")

    # Test all id search
    list_all = client.search_all_ids()
    print("Identifiants  trouvés : " + str(list_all))

    assert "AB256C" in list_all["flipr"]
    assert "CD256C" in list_all["hub"]

    # Test flipr id search
    list_fliprs = client.search_flipr_ids()
    print("Identifiants flipper trouvés : " + str(list_fliprs))

    assert "AB256C" in list_fliprs

    # Test pool measure retrieval
    data = client.get_pool_measure_latest("AB256C")

    date_time = data["date_time"]
    temperature = data["temperature"]
    red_ox = data["red_ox"]
    chlorine = data["chlorine"]
    ph = data["ph"]

    print(
        "Valeurs de la piscine : le {:s} temperature = {:.2f}, redox = {:.2f}, chlorine = {:.5f}, ph = {:.2f}"
        .format(
            date_time.strftime("%Y-%m-%d %H:%M:%S"),
            temperature,
            red_ox,
            chlorine,
            ph,
        ))

    assert temperature == 10.0
    assert red_ox == 474.0
    assert chlorine == 0.31986785186370315
    assert ph == 7.01
    assert date_time.strftime("%Y-%m-%d %H:%M:%S") == "2021-02-01 07:40:21"

    # Test hub id search
    list_hub = client.search_hub_ids()
    print("Identifiants hub trouvés : " + str(list_hub))

    assert "CD256C" in list_hub

    # Test hub get_hub_state

    data = client.get_hub_state("CD256C")

    state = data["state"]
    mode = data["mode"]

    assert state is True
    assert mode == "manual"

    # Test hub set_hub_mode

    for target_mode in ["manual", "auto", "planning"]:

        data = client.set_hub_mode("CD256C", target_mode)
        assert data["mode"] == target_mode

    # Test hub set_hub_mode with wrong value
    with pytest.raises(ValueError):
        data = client.set_hub_mode("CD256C", "Manual")

    # Test hub set_hub_state

    data = client.set_hub_state("CD256C", True)

    state = data["state"]
    mode = data["mode"]

    assert state is True
    assert mode == "manual"

    # Test hub set_hub_state with wrong value
    with pytest.raises(ValueError):
        data = client.set_hub_state("CD256C", "On")

    # Test flipr id not found
    requests_mock.get(f"{FLIPR_API_URL}/modules", json=[])

    list_fliprs = client.search_flipr_ids()

    assert len(list_fliprs) == 0