Module pyControl4.relay

Controls Control4 Relay devices. These can include locks, and potentially other types of devices.

Expand source code
"""Controls Control4 Relay devices. These can include locks, and potentially other types of devices.
"""


from pyControl4 import C4Entity


class C4Relay(C4Entity):
    async def getRelayState(self):
        """Returns the current state of the relay.

        For locks, `0` means locked and `1` means unlocked.
        For relays in general, `0` probably means open and `1` probably means closed.
        """

        return await self.director.getItemVariableValue(self.item_id, "RelayState")

    async def getRelayStateVerified(self):
        """Returns True if Relay is functional.

        Notes:
            I think this is just used to verify that the relay is functional,
            not 100% sure though.
        """
        return bool(
            await self.director.getItemVariableValue(self.item_id, "StateVerified")
        )

    async def open(self):
        """Set the relay to its open state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Lock the Front › Door Lock",
          "command": "OPEN",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "OPEN",
            {},
        )

    async def close(self):
        """Set the relay to its closed state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Unlock the Front › Door Lock",
          "command": "CLOSE",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "CLOSE",
            {},
        )

    async def toggle(self):
        """Toggles the relay state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Toggle the Front › Door Lock",
          "command": "TOGGLE",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "TOGGLE",
            {},
        )

Classes

class C4Relay (C4Director, item_id)

Creates a Control4 object.

Parameters

C4Director - A C4Director object that corresponds to the Control4 Director that the device is connected to.

item_id - The Control4 item ID.

Expand source code
class C4Relay(C4Entity):
    async def getRelayState(self):
        """Returns the current state of the relay.

        For locks, `0` means locked and `1` means unlocked.
        For relays in general, `0` probably means open and `1` probably means closed.
        """

        return await self.director.getItemVariableValue(self.item_id, "RelayState")

    async def getRelayStateVerified(self):
        """Returns True if Relay is functional.

        Notes:
            I think this is just used to verify that the relay is functional,
            not 100% sure though.
        """
        return bool(
            await self.director.getItemVariableValue(self.item_id, "StateVerified")
        )

    async def open(self):
        """Set the relay to its open state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Lock the Front › Door Lock",
          "command": "OPEN",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "OPEN",
            {},
        )

    async def close(self):
        """Set the relay to its closed state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Unlock the Front › Door Lock",
          "command": "CLOSE",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "CLOSE",
            {},
        )

    async def toggle(self):
        """Toggles the relay state.

        Example description JSON for this command from the director:
        ```
        {
          "display": "Toggle the Front › Door Lock",
          "command": "TOGGLE",
          "deviceId": 307
        }
        ```
        """

        await self.director.sendPostRequest(
            "/api/v1/items/{}/commands".format(self.item_id),
            "TOGGLE",
            {},
        )

Ancestors

Methods

async def close(self)

Set the relay to its closed state.

Example description JSON for this command from the director:

{
  "display": "Unlock the Front › Door Lock",
  "command": "CLOSE",
  "deviceId": 307
}
Expand source code
async def close(self):
    """Set the relay to its closed state.

    Example description JSON for this command from the director:
    ```
    {
      "display": "Unlock the Front › Door Lock",
      "command": "CLOSE",
      "deviceId": 307
    }
    ```
    """

    await self.director.sendPostRequest(
        "/api/v1/items/{}/commands".format(self.item_id),
        "CLOSE",
        {},
    )
async def getRelayState(self)

Returns the current state of the relay.

For locks, 0 means locked and 1 means unlocked. For relays in general, 0 probably means open and 1 probably means closed.

Expand source code
async def getRelayState(self):
    """Returns the current state of the relay.

    For locks, `0` means locked and `1` means unlocked.
    For relays in general, `0` probably means open and `1` probably means closed.
    """

    return await self.director.getItemVariableValue(self.item_id, "RelayState")
async def getRelayStateVerified(self)

Returns True if Relay is functional.

Notes

I think this is just used to verify that the relay is functional, not 100% sure though.

Expand source code
async def getRelayStateVerified(self):
    """Returns True if Relay is functional.

    Notes:
        I think this is just used to verify that the relay is functional,
        not 100% sure though.
    """
    return bool(
        await self.director.getItemVariableValue(self.item_id, "StateVerified")
    )
async def open(self)

Set the relay to its open state.

Example description JSON for this command from the director:

{
  "display": "Lock the Front › Door Lock",
  "command": "OPEN",
  "deviceId": 307
}
Expand source code
async def open(self):
    """Set the relay to its open state.

    Example description JSON for this command from the director:
    ```
    {
      "display": "Lock the Front › Door Lock",
      "command": "OPEN",
      "deviceId": 307
    }
    ```
    """

    await self.director.sendPostRequest(
        "/api/v1/items/{}/commands".format(self.item_id),
        "OPEN",
        {},
    )
async def toggle(self)

Toggles the relay state.

Example description JSON for this command from the director:

{
  "display": "Toggle the Front › Door Lock",
  "command": "TOGGLE",
  "deviceId": 307
}
Expand source code
async def toggle(self):
    """Toggles the relay state.

    Example description JSON for this command from the director:
    ```
    {
      "display": "Toggle the Front › Door Lock",
      "command": "TOGGLE",
      "deviceId": 307
    }
    ```
    """

    await self.director.sendPostRequest(
        "/api/v1/items/{}/commands".format(self.item_id),
        "TOGGLE",
        {},
    )