Source code for homematicip.aio.group

import json

from homematicip.base.enums import *
from homematicip.group import (
    AlarmSwitchingGroup,
    EnvironmentGroup,
    ExtendedLinkedShutterGroup,
    ExtendedLinkedSwitchingGroup,
    Group,
    HeatingChangeoverGroup,
    HeatingCoolingDemandBoilerGroup,
    HeatingCoolingDemandGroup,
    HeatingCoolingDemandPumpGroup,
    HeatingDehumidifierGroup,
    HeatingExternalClockGroup,
    HeatingFailureAlertRuleGroup,
    HeatingGroup,
    HeatingHumidyLimiterGroup,
    HeatingTemperatureLimiterGroup,
    HotWaterGroup,
    HumidityWarningRuleGroup,
    InboxGroup,
    LinkedSwitchingGroup,
    LockOutProtectionRule,
    MetaGroup,
    OverHeatProtectionRule,
    SecurityGroup,
    SecurityZoneGroup,
    ShutterProfile,
    ShutterWindProtectionRule,
    SmokeAlarmDetectionRule,
    SwitchGroupBase,
    SwitchingGroup,
    SwitchingProfileGroup,
)


[docs]class AsyncGroup(Group):
[docs] async def set_label(self, label): return await self._connection.api_call(*super().set_label(label))
[docs] async def delete(self): return await self._connection.api_call(*super().delete())
[docs]class AsyncMetaGroup(MetaGroup, AsyncGroup): """ a meta group is a "Room" inside the homematic configuration """ pass
[docs]class AsyncSecurityGroup(SecurityGroup, AsyncGroup): pass
[docs]class AsyncSwitchGroupBase(SwitchGroupBase, AsyncGroup):
[docs] async def turn_on(self): return await self.set_switch_state(True)
[docs] async def turn_off(self): return await self.set_switch_state(False)
[docs] async def set_switch_state(self, on=True): url, data = super().set_switch_state(on=on) return await self._connection.api_call(url, data)
[docs]class AsyncSwitchingGroup(SwitchingGroup, AsyncSwitchGroupBase):
[docs] async def set_shutter_level(self, level): url, data = super().set_shutter_level(level) return await self._connection.api_call(url, data)
[docs] async def set_shutter_stop(self): url, data = super().set_shutter_stop() return await self._connection.api_call(url, data)
[docs] async def set_slats_level(self, slatsLevel, shutterlevel): url, data = super().set_slats_level(slatsLevel, shutterlevel) return await self._connection.api_call(url, data)
[docs]class AsyncShutterProfile(ShutterProfile, AsyncGroup):
[docs] async def set_shutter_level(self, level): url, data = super().set_shutter_level(level) return await self._connection.api_call(url, data)
[docs] async def set_shutter_stop(self): url, data = super().set_shutter_stop() return await self._connection.api_call(url, data)
[docs] async def set_slats_level(self, slatsLevel, shutterlevel): url, data = super().set_slats_level(slatsLevel, shutterlevel) return await self._connection.api_call(url, data)
[docs] async def set_profile_mode(self, profileMode: ProfileMode): return await self._connection.api_call(*super().set_profile_mode(profileMode))
[docs]class AsyncLinkedSwitchingGroup(LinkedSwitchingGroup, AsyncGroup):
[docs] async def set_light_group_switches(self, devices): url, data = super().set_light_group_switches(devices) return await self._connection.api_call(url, data)
[docs]class AsyncExtendedLinkedSwitchingGroup( ExtendedLinkedSwitchingGroup, AsyncSwitchGroupBase ):
[docs] async def set_on_time(self, onTimeSeconds): url, data = super().set_on_time(onTimeSeconds) return await self._connection.api_call(url, data)
[docs]class AsyncExtendedLinkedShutterGroup(ExtendedLinkedShutterGroup, AsyncGroup):
[docs] async def set_shutter_level(self, level): url, data = super().set_shutter_level(level) return await self._connection.api_call(url, data)
[docs] async def set_shutter_stop(self): url, data = super().set_shutter_stop() return await self._connection.api_call(url, data)
[docs] async def set_slats_level(self, slatsLevel=0.0, shutterLevel=None): url, data = super().set_slats_level(slatsLevel, shutterLevel) return await self._connection.api_call(url, data)
[docs]class AsyncAlarmSwitchingGroup(AlarmSwitchingGroup, AsyncGroup):
[docs] async def set_on_time(self, onTimeSeconds): url, data = super().set_on_time(onTimeSeconds) return await self._connection.api_call(url, data)
[docs] async def test_signal_optical( self, signalOptical=OpticalAlarmSignal.BLINKING_ALTERNATELY_REPEATING ): url, data = super().test_signal_optical(signalOptical=signalOptical) return await self._connection.api_call(url, data)
[docs] async def set_signal_optical( self, signalOptical=OpticalAlarmSignal.BLINKING_ALTERNATELY_REPEATING ): url, data = super().set_signal_optical(signalOptical=signalOptical) return await self._connection.api_call(url, data)
[docs] async def test_signal_acoustic( self, signalAcoustic=AcousticAlarmSignal.FREQUENCY_FALLING ): url, data = super().test_signal_acoustic(signalAcoustic=signalAcoustic) return await self._connection.api_call(url, data)
[docs] async def set_signal_acoustic( self, signalAcoustic=AcousticAlarmSignal.FREQUENCY_FALLING ): url, data = super().set_signal_acoustic(signalAcoustic=signalAcoustic) return await self._connection.api_call(url, data)
# at the moment it doesn't look like this class has any special properties/functions # keep it as a placeholder in the meantime
[docs]class AsyncHeatingHumidyLimiterGroup(HeatingHumidyLimiterGroup, AsyncGroup): pass
# at the moment it doesn't look like this class has any special properties/functions # keep it as a placeholder in the meantime
[docs]class AsyncHeatingTemperatureLimiterGroup(HeatingTemperatureLimiterGroup, AsyncGroup): pass
[docs]class AsyncHeatingChangeoverGroup(HeatingChangeoverGroup, AsyncGroup): pass
[docs]class AsyncHeatingFailureAlertRuleGroup(HeatingFailureAlertRuleGroup, AsyncGroup): pass
# at the moment it doesn't look like this class has any special properties/functions # keep it as a placeholder in the meantime
[docs]class AsyncInboxGroup(InboxGroup, AsyncGroup): pass
[docs]class AsyncSecurityZoneGroup(SecurityZoneGroup, AsyncGroup): pass
[docs]class AsyncHeatingGroup(HeatingGroup, AsyncGroup):
[docs] async def set_point_temperature(self, temperature): return await self._connection.api_call( *super().set_point_temperature(temperature) )
[docs] async def set_boost(self, enable=True): return await self._connection.api_call(*super().set_boost(enable=enable))
[docs] async def set_active_profile(self, index): return await self._connection.api_call(*super().set_active_profile(index))
[docs] async def set_boost_duration(self, duration: int): return await self._connection.api_call(*super().set_boost_duration(duration))
[docs] async def set_control_mode(self, mode=ClimateControlMode.AUTOMATIC): return await self._connection.api_call(*super().set_control_mode(mode=mode))
[docs]class AsyncHeatingDehumidifierGroup(HeatingDehumidifierGroup, AsyncGroup): pass
[docs]class AsyncHeatingCoolingDemandGroup(HeatingCoolingDemandGroup, AsyncGroup): pass
# at the moment it doesn't look like this class has any special properties/functions # keep it as a placeholder in the meantime
[docs]class AsyncHeatingExternalClockGroup(HeatingExternalClockGroup, AsyncGroup): pass
[docs]class AsyncHeatingCoolingDemandBoilerGroup(HeatingCoolingDemandBoilerGroup, AsyncGroup): pass
[docs]class AsyncHeatingCoolingDemandPumpGroup(HeatingCoolingDemandPumpGroup, AsyncGroup): pass
[docs]class AsyncHumidityWarningRuleGroup(HumidityWarningRuleGroup, AsyncGroup): pass
[docs]class AsyncSwitchingProfileGroup(SwitchingProfileGroup, AsyncGroup):
[docs] async def set_group_channels(self): return await self._connection.api_call(*super().set_group_channels())
[docs] async def set_profile_mode(self, devices, automatic=True): return await self._connection.api_call( *super().set_profile_mode(devices, automatic=automatic) )
[docs] async def create(self, label): data = {"label": label} result = await self._connection.api_call( "group/switching/profile/createSwitchingProfileGroup", body=json.dumps(data) ) if "groupId" in result: self.id = result["groupId"] return result
[docs]class AsyncOverHeatProtectionRule(OverHeatProtectionRule, AsyncGroup): pass
[docs]class AsyncSmokeAlarmDetectionRule(SmokeAlarmDetectionRule, AsyncGroup): pass
[docs]class AsyncShutterWindProtectionRule(ShutterWindProtectionRule, AsyncGroup): pass
[docs]class AsyncLockOutProtectionRule(LockOutProtectionRule, AsyncGroup): pass
[docs]class AsyncEnvironmentGroup(EnvironmentGroup, AsyncGroup): pass
[docs]class AsyncHotWaterGroup(HotWaterGroup, AsyncGroup):
[docs] async def set_profile_mode(self, profileMode: ProfileMode): return await self._connection.api_call(*super().set_profile_mode(profileMode))