def test_smoke_detector(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000020") assert isinstance(d, SmokeDetector) assert d.label == "Rauchwarnmelder" assert d.lastStatusUpdate == datetime(2018, 4, 23, 4, 5, 24, 824000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 296 assert d.modelType == "HmIP-SWSD" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000020" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -54 assert d.rssiPeerValue == None assert d.unreach == False assert d.smokeDetectorAlarmType == SmokeDetectorAlarmType.IDLE_OFF assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "1.0.11" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.configPending == False assert ( str(d) == "HmIP-SWSD Rauchwarnmelder lowbat(False) unreach(False) rssiDeviceValue(-54) rssiPeerValue(None) configPending(False) dutyCycle(False) smokeDetectorAlarmType(IDLE_OFF)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000020"])
def test_rotary_handle_sensor(fake_home: Home): d = fake_home.search_device_by_id("3014F711AAAA000000000004") assert isinstance(d, RotaryHandleSensor) assert d.label == "Fenstergriffsensor" assert d.lastStatusUpdate == datetime(2018, 4, 27, 8, 6, 25, 462000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 286 assert d.modelType == "HmIP-SRH" assert d.oem == "eQ-3" assert d.windowState == WindowState.TILTED assert d.serializedGlobalTradeItemNumber == "3014F711AAAA000000000004" assert d.availableFirmwareVersion == "1.2.10" assert d.firmwareVersion == "1.2.10" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -54 assert d.rssiPeerValue == None assert d.dutyCycle == False assert d.configPending == False assert str(d) == ( "HmIP-SRH Fenstergriffsensor lowbat(False) unreach(False) rssiDeviceValue(-54) rssiPeerValue(None) configPending(False) dutyCycle(False)" " sabotage(False) windowState(TILTED)") assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F711AAAA000000000004"])
def test_contact_interface_device(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000064") assert isinstance(d, ContactInterface) assert d.label == "Schließer Magnet" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 37, 34, 304000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 375 assert d.modelType == "HmIP-SCI" assert d.oem == "eQ-3" assert d.windowState == WindowState.CLOSED assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000064" assert d.availableFirmwareVersion == "1.0.6" assert d.firmwareVersion == "1.0.6" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -42 assert d.rssiPeerValue == None assert d.dutyCycle == False assert d.configPending == False assert d.deviceOverheated == True assert d.deviceOverloaded == None assert d.deviceUndervoltage == None assert d.temperatureOutOfRange == None assert ( str(d) == "HmIP-SCI Schließer Magnet lowbat(False) unreach(False) rssiDeviceValue(-42) rssiPeerValue(None) configPending(False) dutyCycle(False) sabotage(False) windowState(CLOSED)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000064"])
def test_shutter_device_magnetic(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000005551") assert isinstance(d, ShutterContactMagnetic) assert d.label == "Eingangstürkontakt" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 37, 34, 304000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 340 assert d.modelType == "HmIP-SWDM" assert d.oem == "eQ-3" assert d.windowState == WindowState.CLOSED assert d.serializedGlobalTradeItemNumber == "3014F7110000000000005551" assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "1.2.12" assert d.firmwareVersionInteger == 66060 assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -73 assert d.rssiPeerValue == None assert d.dutyCycle == False assert d.configPending == False assert ( str(d) == "HmIP-SWDM Eingangstürkontakt lowbat(False) unreach(False) rssiDeviceValue(-73) rssiPeerValue(None) configPending(False) dutyCycle(False) windowState(CLOSED)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000005551"])
def test_temperature_humidity_sensor_outdoor(fake_home: Home): d = fake_home.search_device_by_id("3014F711AAAA000000000002") assert isinstance(d, TemperatureHumiditySensorOutdoor) assert d.label == "Temperatur- und Luftfeuchtigkeitssensor - außen" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 5, 50, 325000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 314 assert d.modelType == "HmIP-STHO" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F711AAAA000000000002" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.humidity == 70 assert d.vaporAmount == 6.177718198711658 assert d.actualTemperature == 15.1 assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -55 assert d.rssiPeerValue == None assert d.unreach == False assert d.configPending == False assert d.dutyCycle == False assert str(d) == ( "HmIP-STHO Temperatur- und Luftfeuchtigkeitssensor - außen lowbat(False) unreach(False)" " rssiDeviceValue(-55) rssiPeerValue(None) configPending(False)" " dutyCycle(False) actualTemperature(15.1) humidity(70) vaporAmount(6.177718198711658)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F711AAAA000000000002"])
def test_meta_group(fake_home: Home): g = fake_home.search_group_by_id("00000000-0000-0000-0000-000000000020") assert isinstance(g, MetaGroup) assert g.label == "Badezimmer" assert g.lastStatusUpdate == datetime(2018, 4, 23, 20, 49, 16, 479000) + timedelta(0, utc_offset) assert g.lowBat is False assert g.metaGroup is None assert g.sabotage is None assert g.configPending is False assert g.unreach is False assert g.dutyCycle is False assert g.incorrectPositioned is None for d in g.devices: assert d.id in [ "3014F7110000000000000025", "3014F7110000000000000016", "3014F7110000000000000050", ] for g_sub in g.groups: assert g_sub.id in [ "00000000-0000-0000-0000-000000000021", "00000000-0000-0000-0000-000000000021", ] assert str(g) == "META Badezimmer" assert (g._rawJSONData == fake_home_download_configuration()["groups"] ["00000000-0000-0000-0000-000000000020"])
def test_weather_sensor_pro(fake_home: Home): d = fake_home.search_device_by_id("3014F711AAAA000000000001") assert isinstance(d, WeatherSensorPro) assert d.label == "Wettersensor - pro" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 5, 50, 325000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 352 assert d.modelType == "HmIP-SWO-PR" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F711AAAA000000000001" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "1.0.10" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.humidity == 65 assert d.vaporAmount == 6.177718198711658 assert d.illumination == 4153.0 assert d.illuminationThresholdSunshine == 10.0 assert d.raining == False assert d.storm == False assert d.sunshine == True assert d.todayRainCounter == 6.5 assert d.todaySunshineDuration == 100 assert d.totalRainCounter == 6.5 assert d.totalSunshineDuration == 100 assert d.weathervaneAlignmentNeeded == False assert d.windDirection == 295.0 assert d.windDirectionVariation == 56.25 assert d.windSpeed == 2.6 assert d.windValueType == WindValueType.AVERAGE_VALUE assert d.yesterdayRainCounter == 0.0 assert d.yesterdaySunshineDuration == 0 assert d.actualTemperature == 15.4 assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -68 assert d.rssiPeerValue == None assert d.unreach == False assert d.configPending == False assert d.dutyCycle == False assert str(d) == ( "HmIP-SWO-PR Wettersensor - pro lowbat(False) unreach(False) rssiDeviceValue(-68)" " rssiPeerValue(None) configPending(False) dutyCycle(False)" " actualTemperature(15.4) humidity(65) vaporAmount(6.177718198711658)" " illumination(4153.0) illuminationThresholdSunshine(10.0)" " raining(False) storm(False) sunshine(True) todayRainCounter(6.5) todaySunshineDuration(100)" " totalRainCounter(6.5) totalSunshineDuration(100)" " weathervaneAlignmentNeeded(False) windDirection(295.0)" " windDirectionVariation(56.25) windSpeed(2.6)" " windValueType(AVERAGE_VALUE) yesterdayRainCounter(0.0) yesterdaySunshineDuration(0)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F711AAAA000000000001"])
async def test_home_location(no_ssl_fake_async_home: AsyncHome): assert no_ssl_fake_async_home.location.city == "1010 Wien, Österreich" assert no_ssl_fake_async_home.location.latitude == "48.208088" assert no_ssl_fake_async_home.location.longitude == "16.358608" assert (no_ssl_fake_async_home.location._rawJSONData == fake_home_download_configuration()["home"]["location"]) assert ( str(no_ssl_fake_async_home.location) == "city(1010 Wien, Österreich) latitude(48.208088) longitude(16.358608)" )
def test_clients(fake_home: Home): client = fake_home.search_client_by_id( "00000000-0000-0000-0000-000000000000") assert client.label == "TEST-Client" assert client.homeId == "00000000-0000-0000-0000-000000000001" assert client.id == "00000000-0000-0000-0000-000000000000" assert client.clientType == ClientType.APP assert (client._rawJSONData == fake_home_download_configuration() ["clients"]["00000000-0000-0000-0000-000000000000"]) assert str(client) == "label(TEST-Client)"
def test_pluggable_switch_measuring(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000009") assert isinstance(d, PlugableSwitchMeasuring) assert d.label == "Brunnen" assert d.lastStatusUpdate == (datetime(2018, 4, 23, 20, 36, 26, 303000) + timedelta(0, utc_offset)) assert d.manufacturerCode == 1 assert d.modelId == 262 assert d.modelType == "HMIP-PSM" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000009" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.on == False assert d.profileMode == "AUTOMATIC" assert d.userDesiredProfileMode == "AUTOMATIC" assert d.currentPowerConsumption == 0.0 assert d.energyCounter == 0.4754 assert d.lowBat == None assert d.routerModuleEnabled == True assert d.routerModuleSupported == True assert d.rssiDeviceValue == -60 assert d.rssiPeerValue == -66 assert d.unreach == False assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "2.6.2" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.dutyCycle == False assert d.configPending == False assert str(d) == ( "HMIP-PSM Brunnen lowbat(None) unreach(False) rssiDeviceValue(-60) rssiPeerValue(-66) configPending(False) dutyCycle(False) on(False) profileMode(AUTOMATIC)" " userDesiredProfileMode(AUTOMATIC) energyCounter(0.4754) currentPowerConsumption(0.0W)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000009"]) with no_ssl_verification(): d.turn_on() fake_home.get_current_state() d = fake_home.search_device_by_id("3014F7110000000000000009") assert d.on == True d.turn_off() fake_home.get_current_state() d = fake_home.search_device_by_id("3014F7110000000000000009") assert d.on == False d.id = "INVALID_ID" result = d.turn_off() assert result["errorCode"] == "INVALID_DEVICE"
def test_home_base(fake_home: Home): assert fake_home.connected is True assert fake_home.currentAPVersion == "1.2.4" assert (fake_home.deviceUpdateStrategy == DeviceUpdateStrategy.AUTOMATICALLY_IF_POSSIBLE) assert fake_home.dutyCycle == 8.0 assert fake_home.pinAssigned is False assert fake_home.powerMeterCurrency == "EUR" assert fake_home.powerMeterUnitPrice == 0.0 assert fake_home.timeZoneId == "Europe/Vienna" assert fake_home.updateState == HomeUpdateState.UP_TO_DATE assert fake_home.apExchangeState == ApExchangeState.NONE assert fake_home._rawJSONData == fake_home_download_configuration()["home"]
def test_home_weather(fake_home: Home): assert fake_home.weather.humidity == 54 assert fake_home.weather.maxTemperature == 16.6 assert fake_home.weather.minTemperature == 16.6 assert fake_home.weather.temperature == 16.6 assert fake_home.weather.weatherCondition == WeatherCondition.LIGHT_CLOUDY assert fake_home.weather.weatherDayTime == WeatherDayTime.NIGHT assert fake_home.weather.windDirection == 294 assert fake_home.weather.windSpeed == 8.568 assert (fake_home.weather._rawJSONData == fake_home_download_configuration()["home"]["weather"]) assert ( str(fake_home.weather) == "temperature(16.6) weatherCondition(LIGHT_CLOUDY) weatherDayTime(NIGHT) minTemperature(16.6) maxTemperature(16.6) humidity(54) vaporAmount(5.465858858389302) windSpeed(8.568) windDirection(294)" )
def test_wall_mounted_thermostat_pro(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000022") assert isinstance(d, WallMountedThermostatPro) assert d.id == "3014F7110000000000000022" assert d.label == "Wandthermostat" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 48, 54, 382000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 297 assert d.modelType == "HmIP-WTH-2" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000022" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.humidity == 43 assert d.vaporAmount == 6.177718198711658 assert d.setPointTemperature == 5.0 assert d.display == ClimateControlDisplay.ACTUAL_HUMIDITY assert d.temperatureOffset == 0.0 assert d.lowBat == False assert d.operationLockActive == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -76 assert d.rssiPeerValue == -63 assert d.unreach == False assert d.dutyCycle == False assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "1.8.0" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert str(d) == ( "HmIP-WTH-2 Wandthermostat lowbat(False) unreach(False) rssiDeviceValue(-76) rssiPeerValue(-63)" " configPending(False) dutyCycle(False) operationLockActive(False)" " actualTemperature(24.7) humidity(43) vaporAmount(6.177718198711658) setPointTemperature(5.0)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000022"]) with no_ssl_verification(): d.set_display(ClimateControlDisplay.ACTUAL) fake_home.get_current_state() d = fake_home.search_device_by_id("3014F7110000000000000022") assert d.display == ClimateControlDisplay.ACTUAL d.id = "INVALID_ID" result = d.set_display(ClimateControlDisplay.ACTUAL) assert result["errorCode"] == "INVALID_DEVICE"
def test_heating_thermostat(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000015") assert isinstance(d, HeatingThermostat) assert d.label == "Wohnzimmer-Heizung" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 5, 50, 325000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 269 assert d.modelType == "HMIP-eTRV" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000015" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert d.setPointTemperature == 5.0 assert d.temperatureOffset == 0.0 assert d.valvePosition == 0.0 assert d.valveState == ValveState.ADAPTION_DONE assert d.lowBat == False assert d.operationLockActive == True assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -65 assert d.rssiPeerValue == -66 assert d.unreach == False assert d.automaticValveAdaptionNeeded == False assert d.availableFirmwareVersion == "2.0.2" assert d.firmwareVersion == "2.0.2" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.valveActualTemperature == 20.0 assert str(d) == ( "HMIP-eTRV Wohnzimmer-Heizung lowbat(False) unreach(False) rssiDeviceValue(-65) rssiPeerValue(-66) configPending(False) dutyCycle(False) operationLockActive(True)" " valvePosition(0.0) valveState(ADAPTION_DONE) temperatureOffset(0.0) setPointTemperature(5.0) valveActualTemperature(20.0)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000015"]) with no_ssl_verification(): d.set_operation_lock(False) fake_home.get_current_state() d = fake_home.search_device_by_id("3014F7110000000000000015") assert d.operationLockActive == False d.id = "INVALID_ID" result = d.set_operation_lock(True) assert result["errorCode"] == "INVALID_DEVICE"
def test_weather_sensor(fake_home: Home): d = fake_home.search_device_by_id("3014F711AAAA000000000003") assert isinstance(d, WeatherSensor) assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 5, 50, 325000) + timedelta(0, utc_offset) assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -77 assert d.rssiPeerValue == None assert d.unreach == False assert d.configPending == False assert d.dutyCycle == False assert d.availableFirmwareVersion == "0.0.0" assert d.firmwareVersion == "1.0.10" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.humidity == 42 assert d.vaporAmount == 6.177718198711658 assert d.illumination == 4890.0 assert d.illuminationThresholdSunshine == 3500.0 assert d.storm == False assert d.sunshine == True assert d.todaySunshineDuration == 51 assert d.totalSunshineDuration == 54 assert d.windSpeed == 6.6 assert d.windValueType == WindValueType.MAX_VALUE assert d.yesterdaySunshineDuration == 3 assert d.actualTemperature == 15.2 assert d.label == "Wettersensor" assert d.manufacturerCode == 1 assert d.modelId == 350 assert d.modelType == "HmIP-SWO-B" assert d.oem == "eQ-3" assert d.serializedGlobalTradeItemNumber == "3014F711AAAA000000000003" assert d.updateState == DeviceUpdateState.UP_TO_DATE assert str(d) == ( "HmIP-SWO-B Wettersensor lowbat(False) unreach(False) rssiDeviceValue(-77)" " rssiPeerValue(None) configPending(False) dutyCycle(False)" " actualTemperature(15.2) humidity(42) vaporAmount(6.177718198711658)" " illumination(4890.0) illuminationThresholdSunshine(3500.0) storm(False) sunshine(True)" " todaySunshineDuration(51) totalSunshineDuration(54) windSpeed(6.6)" " windValueType(MAX_VALUE) yesterdaySunshineDuration(3)") assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F711AAAA000000000003"])
def test_weather_sensor_plus(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000038") assert isinstance(d, WeatherSensorPlus) assert d.humidity == 97 assert d.vaporAmount == 6.177718198711658 assert d.illumination == 26.4 assert d.illuminationThresholdSunshine == 3500.0 assert d.raining == False assert d.storm == False assert d.sunshine == False assert d.todayRainCounter == 3.8999999999999773 assert d.todaySunshineDuration == 0 assert d.totalRainCounter == 544.0999999999999 assert d.totalSunshineDuration == 132057 assert d.windSpeed == 15.0 assert d.windValueType == WindValueType.CURRENT_VALUE assert d.yesterdayRainCounter == 25.600000000000023 assert d.yesterdaySunshineDuration == 0 assert d.actualTemperature == 4.3 assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -55 assert d.rssiPeerValue == None assert d.unreach == False assert d.configPending == False assert d.dutyCycle == False assert str(d) == ( "HmIP-SWO-PL Weather Sensor \u2013 plus lowbat(False) unreach(False) rssiDeviceValue(-55)" " rssiPeerValue(None) configPending(False) dutyCycle(False) actualTemperature(4.3)" " humidity(97) vaporAmount(6.177718198711658) illumination(26.4)" " illuminationThresholdSunshine(3500.0) raining(False) storm(False)" " sunshine(False) todayRainCounter(3.8999999999999773) todaySunshineDuration(0)" " totalRainCounter(544.0999999999999) totalSunshineDuration(132057) windSpeed(15.0)" " windValueType(CURRENT_VALUE) yesterdayRainCounter(25.600000000000023) yesterdaySunshineDuration(0)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000038"])
def test_shutter_device(fake_home: Home): d = fake_home.search_device_by_id("3014F7110000000000000001") assert isinstance(d, ShutterContact) assert d.label == "Fenster" assert d.lastStatusUpdate == datetime(2018, 4, 23, 20, 37, 34, 304000) + timedelta(0, utc_offset) assert d.manufacturerCode == 1 assert d.modelId == 258 assert d.modelType == "HMIP-SWDO" assert d.oem == "eQ-3" assert d.windowState == WindowState.CLOSED assert d.serializedGlobalTradeItemNumber == "3014F7110000000000000001" assert d.availableFirmwareVersion == "1.16.8" assert d.firmwareVersion == "1.16.8" a, b, c = [int(i) for i in d.firmwareVersion.split(".")] assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c assert d.lowBat == False assert d.routerModuleEnabled == False assert d.routerModuleSupported == False assert d.rssiDeviceValue == -64 assert d.rssiPeerValue == None assert d.dutyCycle == False assert d.configPending == False assert ( str(d) == "HMIP-SWDO Fenster lowbat(False) unreach(False) rssiDeviceValue(-64) rssiPeerValue(None) configPending(False) dutyCycle(False) sabotage(False) windowState(CLOSED)" ) assert (d._rawJSONData == fake_home_download_configuration()["devices"] ["3014F7110000000000000001"]) d = fake_home.search_device_by_id("3014F7110000000000000005") assert d.windowState == WindowState.OPEN assert d.lastStatusUpdate == None assert (d.set_router_module_enabled(True) == False ) # Shutter contact won't support this
def test_heating_group(fake_home: Home): g = fake_home.search_group_by_id("00000000-0000-0000-0000-000000000012") assert isinstance(g, HeatingGroup) for d in g.devices: assert d.id in [ "3014F7110000000000000004", "3014F7110000000000000022", "3014F7110000000000000008", ] assert g.activeProfile.index == "PROFILE_1" assert g.activeProfile.enabled is True assert g.activeProfile.name == "STD" assert g.activeProfile.visible is True assert g.activeProfile.id == "00000000-0000-0000-0000-000000000023" assert g.activeProfile.groupId == "00000000-0000-0000-0000-000000000012" profile3 = g.profiles[2] assert profile3.index == "PROFILE_3" assert profile3.visible is False assert profile3.id == "00000000-0000-0000-0000-000000000025" assert g.actualTemperature == 24.7 assert g.boostDuration == 15 assert g.boostMode is False assert g.controlMode == ClimateControlMode.AUTOMATIC assert g.controllable is True assert g.cooling is False assert g.coolingAllowed is False assert g.coolingIgnored is False assert g.dutyCycle is False assert g.ecoAllowed is True assert g.ecoIgnored is False assert g.externalClockCoolingTemperature == 23.0 assert g.externalClockEnabled is False assert g.externalClockHeatingTemperature == 19.0 assert g.floorHeatingMode == "FLOOR_HEATING_STANDARD" assert g.humidity == 43 assert g.humidityLimitEnabled is True assert g.humidityLimitValue == 60 assert g.label == "Schlafzimmer" assert g.lastStatusUpdate == datetime(2018, 4, 23, 20, 48, 54, 382000) + timedelta(0, utc_offset) assert g.lowBat is False assert g.maxTemperature == 30.0 assert g.metaGroup.id == "00000000-0000-0000-0000-000000000011" assert g.minTemperature == 5.0 assert g.partyMode is False assert g.setPointTemperature == 5.0 assert g.unreach is False assert g.valvePosition == 0.0 assert g.windowOpenTemperature == 5.0 assert g.windowState == "OPEN" assert g.lastSetPointReachedTimestamp == datetime.fromtimestamp( 1557767559939 / 1000.0) assert g.lastSetPointUpdatedTimestamp == datetime.fromtimestamp( 1557767559939 / 1000.0) assert str(g) == ( "HEATING Schlafzimmer windowOpenTemperature(5.0) setPointTemperature(5.0) windowState(OPEN) motionDetected(30.0)" " sabotage(5.0) cooling(False) partyMode(False) controlMode(AUTOMATIC) actualTemperature(24.7) valvePosition(0.0)" ) assert (g._rawJSONData == fake_home_download_configuration()["groups"] ["00000000-0000-0000-0000-000000000012"]) with no_ssl_verification(): g.set_boost_duration(20) g.set_boost(True) g.set_active_profile(3) g.set_point_temperature(10.5) g.set_control_mode(ClimateControlMode.MANUAL) fake_home.get_current_state() g = fake_home.search_group_by_id( "00000000-0000-0000-0000-000000000012") assert g.boostDuration == 20 assert g.boostMode is True assert g.activeProfile.index == "PROFILE_4" assert g.setPointTemperature == 10.5 assert g.controlMode == ClimateControlMode.MANUAL fake_home.delete_group(g) fake_home.get_current_state() gNotFound = fake_home.search_group_by_id( "00000000-0000-0000-0000-000000000012") assert gNotFound is None result = g.set_boost_duration(20) assert result["errorCode"] == "INVALID_GROUP" result = g.set_boost(True) assert result["errorCode"] == "INVALID_GROUP" result = g.set_active_profile(1) assert result["errorCode"] == "INVALID_GROUP" result = g.set_point_temperature(10.5) assert result["errorCode"] == "INVALID_GROUP" result = g.set_control_mode(ClimateControlMode.MANUAL) assert result["errorCode"] == "INVALID_GROUP"