diff --git a/CODEOWNERS b/CODEOWNERS index ce170df3602..ceb58f370d4 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -156,6 +156,7 @@ homeassistant/components/iqvia/* @bachya homeassistant/components/irish_rail_transport/* @ttroy50 homeassistant/components/izone/* @Swamp-Ig homeassistant/components/jewish_calendar/* @tsvi +homeassistant/components/juicenet/* @jesserockz homeassistant/components/kaiterra/* @Michsior14 homeassistant/components/keba/* @dannerph homeassistant/components/keenetic_ndms2/* @foxel diff --git a/homeassistant/components/juicenet/__init__.py b/homeassistant/components/juicenet/__init__.py index 207dac7836a..55bf91ac398 100644 --- a/homeassistant/components/juicenet/__init__.py +++ b/homeassistant/components/juicenet/__init__.py @@ -18,6 +18,8 @@ CONFIG_SCHEMA = vol.Schema( extra=vol.ALLOW_EXTRA, ) +JUICENET_COMPONENTS = ["sensor", "switch"] + def setup(hass, config): """Set up the Juicenet component.""" @@ -26,7 +28,9 @@ def setup(hass, config): access_token = config[DOMAIN].get(CONF_ACCESS_TOKEN) hass.data[DOMAIN]["api"] = pyjuicenet.Api(access_token) - discovery.load_platform(hass, "sensor", DOMAIN, {}, config) + for component in JUICENET_COMPONENTS: + discovery.load_platform(hass, component, DOMAIN, {}, config) + return True diff --git a/homeassistant/components/juicenet/manifest.json b/homeassistant/components/juicenet/manifest.json index 1ef84b74502..076567573c7 100644 --- a/homeassistant/components/juicenet/manifest.json +++ b/homeassistant/components/juicenet/manifest.json @@ -3,8 +3,10 @@ "name": "Juicenet", "documentation": "https://www.home-assistant.io/integrations/juicenet", "requirements": [ - "python-juicenet==0.0.5" + "python-juicenet==0.1.5" ], "dependencies": [], - "codeowners": [] + "codeowners": [ + "@jesserockz" + ] } diff --git a/homeassistant/components/juicenet/switch.py b/homeassistant/components/juicenet/switch.py new file mode 100644 index 00000000000..30bb5b22814 --- /dev/null +++ b/homeassistant/components/juicenet/switch.py @@ -0,0 +1,45 @@ +"""Support for monitoring juicenet/juicepoint/juicebox based EVSE switches.""" +import logging + +from homeassistant.components.switch import SwitchDevice + +from . import DOMAIN, JuicenetDevice + +_LOGGER = logging.getLogger(__name__) + + +def setup_platform(hass, config, add_entities, discovery_info=None): + """Set up the Juicenet switch.""" + api = hass.data[DOMAIN]["api"] + + devs = [] + for device in api.get_devices(): + devs.append(JuicenetChargeNowSwitch(device, hass)) + + add_entities(devs) + + +class JuicenetChargeNowSwitch(JuicenetDevice, SwitchDevice): + """Implementation of a Juicenet switch.""" + + def __init__(self, device, hass): + """Initialise the switch.""" + super().__init__(device, "charge_now", hass) + + @property + def name(self): + """Return the name of the device.""" + return f"{self.device.name()} Charge Now" + + @property + def is_on(self): + """Return true if switch is on.""" + return self.device.getOverrideTime() != 0 + + def turn_on(self, **kwargs): + """Charge now.""" + self.device.setOverride(True) + + def turn_off(self, **kwargs): + """Don't charge now.""" + self.device.setOverride(False) diff --git a/requirements_all.txt b/requirements_all.txt index 282d04ac77c..99c562870bb 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1537,7 +1537,7 @@ python-izone==1.1.1 python-join-api==0.0.4 # homeassistant.components.juicenet -python-juicenet==0.0.5 +python-juicenet==0.1.5 # homeassistant.components.lirc # python-lirc==1.2.3