Source code for gort.devices.nps

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# @Author: José Sánchez-Gallego (gallegoj@uw.edu)
# @Date: 2023-03-13
# @Filename: nps.py
# @License: BSD 3-clause (http://www.opensource.org/licenses/BSD-3-Clause)

from __future__ import annotations

from typing import TYPE_CHECKING

from gort.devices.core import GortDevice, GortDeviceSet


if TYPE_CHECKING:
    from gort import ActorReply
    from gort.gort import Gort


__all__ = ["NPS", "NPSSet"]


[docs] class NPS(GortDevice): """Class representing a networked power switch.""" def __init__(self, gort: Gort, name: str, actor: str, **kwargs): super().__init__(gort, name, actor)
[docs] async def status(self, outlet: int | str | None = None): """Retrieves the status of the power outlet.""" if outlet is None: reply: ActorReply = await self.actor.commands.status(n_retries=3) return reply.flatten()["outlets"] else: reply: ActorReply = await self.actor.commands.status(outlet, n_retries=3) return reply.flatten()["outlet_info"]
[docs] async def on(self, outlet: str): """Turns an outlet on.""" await self.actor.commands.on(outlet, n_retries=3)
[docs] async def off(self, outlet: str): """Turns an outlet on.""" await self.actor.commands.off(outlet, n_retries=3)
[docs] async def all_off(self): """Turns off all the outlets.""" self.write_to_log("Turning off all outlets.") await self.actor.commands.all_off(n_retries=3)
[docs] class NPSSet(GortDeviceSet[NPS]): """A set of networked power switches.""" __DEVICE_CLASS__ = NPS __DEPLOYMENTS__ = ["lvmnps"]