예제 #1
0
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 == "UP_TO_DATE"
    assert d.humidity == 43
    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"
    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) 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
예제 #2
0
def test_motion_detector(fake_home: Home):
    d = MotionDetectorIndoor(fake_home._connection)
    d = fake_home.search_device_by_id("3014F711000000000000BB11")

    assert d.illumination == 0.1
    assert d.currentIllumination == None
    assert d.motionBufferActive == False
    assert d.motionDetected == True
    assert d.motionDetectionSendInterval == MotionDetectionSendInterval.SECONDS_480
    assert d.numberOfBrightnessMeasurements == 7

    assert str(d) == (
        "HmIP-SMI Wohnzimmer lowbat(False) unreach(False) rssiDeviceValue(-56) rssiPeerValue(-52) configPending(False) "
        "dutyCycle(False) sabotage(False) motionDetected(True) illumination(0.1) motionBufferActive(False) "
        "motionDetectionSendInterval(SECONDS_480) numberOfBrightnessMeasurements(7)"
    )

    d = MotionDetectorOutdoor(fake_home._connection)
    d = fake_home.search_device_by_id("3014F71100000000000BBB17")

    assert d.illumination == 233.4
    assert d.currentIllumination == None
    assert d.motionBufferActive == True
    assert d.motionDetected == True
    assert d.motionDetectionSendInterval == MotionDetectionSendInterval.SECONDS_240
    assert d.numberOfBrightnessMeasurements == 7

    assert str(d) == (
        "HmIP-SMO-A Außen Küche lowbat(False) unreach(False) rssiDeviceValue(-70) rssiPeerValue(-67) configPending(False) "
        "dutyCycle(False) motionDetected(True) illumination(233.4) motionBufferActive(True) "
        "motionDetectionSendInterval(SECONDS_240) numberOfBrightnessMeasurements(7)"
    )
예제 #3
0
def test_full_flush_blind(fake_home: Home):
    with no_ssl_verification():
        d = FullFlushBlind(fake_home._connection)
        d = fake_home.search_device_by_id("3014F711BADCAFE000000001")

        assert d.shutterLevel == 1.0
        assert d.slatsLevel == 1.0
        assert d.blindModeActive == True
        assert d.slatsReferenceTime == 2.0

        d.set_slats_level(0.4)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711BADCAFE000000001")
        assert d.shutterLevel == 1.0
        assert d.slatsLevel == 0.4

        d.set_slats_level(0.8, 0.3)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711BADCAFE000000001")
        assert d.shutterLevel == 0.3
        assert d.slatsLevel == 0.8

        assert str(d) == (
            "HmIP-FBL Sofa links lowbat(None) unreach(False) rssiDeviceValue(-73) "
            "rssiPeerValue(-78) configPending(False) dutyCycle(False) "
            "shutterLevel(0.3) topToBottom(41.0) bottomToTop(41.0) "
            "slatsLevel(0.8) blindModeActive(True)"
        )
예제 #4
0
def test_full_flush_shutter(fake_home: Home):
    with no_ssl_verification():
        d = FullFlushShutter(fake_home._connection)
        d = fake_home.search_device_by_id("3014F711ACBCDABCADCA66")

        assert d.bottomToTopReferenceTime == 30.080000000000002
        assert d.changeOverDelay == 0.5
        assert d.delayCompensationValue == 12.7
        assert d.endpositionAutoDetectionEnabled == True
        assert d.previousShutterLevel == None
        assert d.processing == False
        assert d.profileMode == "AUTOMATIC"
        assert d.selfCalibrationInProgress == None
        assert d.shutterLevel == 1.0
        assert d.supportingDelayCompensation == True
        assert d.supportingEndpositionAutoDetection == True
        assert d.supportingSelfCalibration == True
        assert d.topToBottomReferenceTime == 24.68
        assert d.userDesiredProfileMode == "AUTOMATIC"

        assert str(d) == (
            "HmIP-BROLL *** lowbat(None) unreach(False) rssiDeviceValue(-78) rssiPeerValue(-77) configPending(False)"
            " dutyCycle(False) shutterLevel(1.0) topToBottom(24.68) bottomToTop(30.080000000000002)"
        )

        d.set_shutter_level(0.4)
        d.set_shutter_stop()  # this will not do anything in the test run
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711ACBCDABCADCA66")
        assert d.shutterLevel == 0.4
예제 #5
0
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
예제 #6
0
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"
예제 #7
0
def test_water_sensor(fake_home: Home):
    with no_ssl_verification():
        d = WaterSensor(fake_home._connection)  # just needed for intellisense
        d = fake_home.search_device_by_id("3014F7110000000000000050")
        assert d.label == "Wassersensor"
        assert d.routerModuleEnabled == False
        assert d.routerModuleSupported == False

        assert d.incorrectPositioned == True
        assert d.acousticAlarmSignal == AcousticAlarmSignal.FREQUENCY_RISING
        assert d.acousticAlarmTiming == AcousticAlarmTiming.ONCE_PER_MINUTE
        assert d.acousticWaterAlarmTrigger == WaterAlarmTrigger.WATER_DETECTION
        assert d.inAppWaterAlarmTrigger == WaterAlarmTrigger.WATER_MOISTURE_DETECTION
        assert d.moistureDetected == False
        assert d.sirenWaterAlarmTrigger == WaterAlarmTrigger.WATER_MOISTURE_DETECTION
        assert d.waterlevelDetected == False

        d.set_acoustic_alarm_timing(AcousticAlarmTiming.SIX_MINUTES)
        d.set_acoustic_alarm_signal(
            AcousticAlarmSignal.FREQUENCY_ALTERNATING_LOW_HIGH)
        d.set_inapp_water_alarm_trigger(WaterAlarmTrigger.MOISTURE_DETECTION)
        d.set_acoustic_water_alarm_trigger(WaterAlarmTrigger.NO_ALARM)
        d.set_siren_water_alarm_trigger(WaterAlarmTrigger.NO_ALARM)

        assert str(d) == (
            "HmIP-SWD Wassersensor lowbat(False) unreach(False) rssiDeviceValue(-65) rssiPeerValue(None) configPending(False) "
            "dutyCycle(False) incorrectPositioned(True) acousticAlarmSignal(FREQUENCY_RISING) acousticAlarmTiming(ONCE_PER_MINUTE) "
            "acousticWaterAlarmTrigger(WATER_DETECTION) inAppWaterAlarmTrigger(WATER_MOISTURE_DETECTION) moistureDetected(False) "
            "sirenWaterAlarmTrigger(WATER_MOISTURE_DETECTION) waterlevelDetected(False)"
        )

        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F7110000000000000050")

        assert d.acousticAlarmTiming == AcousticAlarmTiming.SIX_MINUTES
        assert (d.acousticAlarmSignal ==
                AcousticAlarmSignal.FREQUENCY_ALTERNATING_LOW_HIGH)
        assert d.acousticWaterAlarmTrigger == WaterAlarmTrigger.NO_ALARM
        assert d.inAppWaterAlarmTrigger == WaterAlarmTrigger.MOISTURE_DETECTION
        assert d.sirenWaterAlarmTrigger == WaterAlarmTrigger.NO_ALARM

        d.id = "INVALID_ID"
        result = d.set_acoustic_alarm_timing(AcousticAlarmTiming.SIX_MINUTES)
        assert result["errorCode"] == "INVALID_DEVICE"
        result = d.set_acoustic_alarm_signal(
            AcousticAlarmSignal.FREQUENCY_ALTERNATING_LOW_HIGH)
        assert result["errorCode"] == "INVALID_DEVICE"
        result = d.set_inapp_water_alarm_trigger(
            WaterAlarmTrigger.MOISTURE_DETECTION)
        assert result["errorCode"] == "INVALID_DEVICE"
        result = d.set_acoustic_water_alarm_trigger(WaterAlarmTrigger.NO_ALARM)
        assert result["errorCode"] == "INVALID_DEVICE"
        result = d.set_siren_water_alarm_trigger(WaterAlarmTrigger.NO_ALARM)
        assert result["errorCode"] == "INVALID_DEVICE"
예제 #8
0
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"
예제 #9
0
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"
예제 #10
0
def test_acceleration_sensor(fake_home: Home):
    d = fake_home.search_device_by_id("3014F7110000000000000031")
    assert isinstance(d, AccelerationSensor)
    assert d.accelerationSensorEventFilterPeriod == 3.0
    assert d.accelerationSensorMode == AccelerationSensorMode.FLAT_DECT
    assert (d.accelerationSensorNeutralPosition ==
            AccelerationSensorNeutralPosition.VERTICAL)
    assert (d.accelerationSensorSensitivity ==
            AccelerationSensorSensitivity.SENSOR_RANGE_4G)
    assert d.accelerationSensorTriggerAngle == 45
    assert d.accelerationSensorTriggered == True
    assert d.notificationSoundTypeHighToLow == NotificationSoundType.SOUND_LONG
    assert d.notificationSoundTypeLowToHigh == NotificationSoundType.SOUND_LONG

    assert str(d) == (
        "HmIP-SAM Garagentor lowbat(False) unreach(False) "
        "rssiDeviceValue(-88) rssiPeerValue(None) configPending(False)"
        " dutyCycle(False) accelerationSensorEventFilterPeriod(3.0)"
        " accelerationSensorMode(FLAT_DECT) accelerationSensorNeutralPosition(VERTICAL)"
        " accelerationSensorSensitivity(SENSOR_RANGE_4G) accelerationSensorTriggerAngle(45)"
        " accelerationSensorTriggered(True) notificationSoundTypeHighToLow(SOUND_LONG)"
        " notificationSoundTypeLowToHigh(SOUND_LONG)")

    with no_ssl_verification():
        d.set_acceleration_sensor_event_filter_period(10.0)
        d.set_acceleration_sensor_mode(AccelerationSensorMode.ANY_MOTION)
        d.set_acceleration_sensor_neutral_position(
            AccelerationSensorNeutralPosition.HORIZONTAL)
        d.set_acceleration_sensor_sensitivity(
            AccelerationSensorSensitivity.SENSOR_RANGE_2G)
        d.set_acceleration_sensor_trigger_angle(30)
        d.set_notification_sound_type(NotificationSoundType.SOUND_SHORT, True)
        d.set_notification_sound_type(NotificationSoundType.SOUND_SHORT_SHORT,
                                      False)

        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F7110000000000000031")

        assert d.accelerationSensorEventFilterPeriod == 10.0
        assert d.accelerationSensorMode == AccelerationSensorMode.ANY_MOTION
        assert (d.accelerationSensorNeutralPosition ==
                AccelerationSensorNeutralPosition.HORIZONTAL)
        assert (d.accelerationSensorSensitivity ==
                AccelerationSensorSensitivity.SENSOR_RANGE_2G)
        assert d.accelerationSensorTriggerAngle == 30
        assert d.notificationSoundTypeHighToLow == NotificationSoundType.SOUND_SHORT
        assert (d.notificationSoundTypeLowToHigh ==
                NotificationSoundType.SOUND_SHORT_SHORT)
예제 #11
0
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"])
예제 #12
0
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"])
예제 #13
0
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"])
예제 #14
0
def test_heating_thermostat_compact(fake_home: Home):
    d = fake_home.search_device_by_id("3014F71100000000ABCDEF10")
    assert isinstance(d, HeatingThermostatCompact)
    assert d.label == "Wohnzimmer 3"
    assert d.modelType == "HmIP-eTRV-C"
    assert d.oem == "eQ-3"
    assert d.serializedGlobalTradeItemNumber == "3014F71100000000ABCDEF10"
    assert d.updateState == DeviceUpdateState.UP_TO_DATE
    assert d.setPointTemperature == 21.0
    assert d.temperatureOffset == 0.0
    assert d.valvePosition == 0.0
    assert d.valveState == ValveState.ADAPTION_DONE
    assert d.lowBat == False
    assert d.routerModuleEnabled == False
    assert d.routerModuleSupported == False
    assert d.rssiDeviceValue == -47
    assert d.rssiPeerValue == -50
    assert d.unreach == False
    assert d.automaticValveAdaptionNeeded == False
    assert d.valveActualTemperature == 21.6

    assert str(d) == (
        "HmIP-eTRV-C Wohnzimmer 3 lowbat(False) unreach(False) rssiDeviceValue(-47) "
        "rssiPeerValue(-50) configPending(False) dutyCycle(False) sabotage(None) "
        "valvePosition(0.0) valveState(ADAPTION_DONE) temperatureOffset(0.0) "
        "setPointTemperature(21.0) valveActualTemperature(21.6)"
    )
예제 #15
0
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.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) 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"])
예제 #16
0
def test_floor_terminal_block(fake_home: Home):
    with no_ssl_verification():
        d = FloorTerminalBlock6(fake_home._connection)
        d = fake_home.search_device_by_id("3014F7110000000000BBBBB1")

        assert d.frostProtectionTemperature == 8.0
        assert d.coolingEmergencyValue == 0.0
        assert d.globalPumpControl == True
        assert d.heatingEmergencyValue == 0.25
        assert d.heatingLoadType == HeatingLoadType.LOAD_BALANCING
        assert d.heatingValveType == HeatingValveType.NORMALLY_CLOSE
        assert d.valveProtectionDuration == 5
        assert d.valveProtectionSwitchingInterval == 14

        assert d.pumpFollowUpTime == 2
        assert d.pumpLeadTime == 2
        assert d.pumpProtectionDuration == 1
        assert d.pumpProtectionSwitchingInterval == 14

        assert str(d) == (
            "HmIP-FAL230-C6 Fußbodenheizungsaktor lowbat(None) unreach(False) rssiDeviceValue(-62) rssiPeerValue(None) configPending(False) dutyCycle(False) "
            "globalPumpControl(True) heatingValveType(NORMALLY_CLOSE) heatingLoadType(LOAD_BALANCING) coolingEmergencyValue(0.0) frostProtectionTemperature(8.0) "
            "heatingEmergencyValue(0.25) valveProtectionDuration(5) valveProtectionSwitchingInterval(14) pumpFollowUpTime(2) pumpLeadTime(2) "
            "pumpProtectionDuration(1) pumpProtectionSwitchingInterval(14)"
        )
예제 #17
0
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.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)")
    assert (d._rawJSONData == fake_home_download_configuration()["devices"]
            ["3014F711AAAA000000000002"])
예제 #18
0
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"])
예제 #19
0
def test_dimmer(fake_home: Home):
    d = fake_home.search_device_by_id("3014F711AAAA000000000005")
    assert isinstance(d, BrandDimmer)
    assert d.label == "Schlafzimmerlicht"
    assert d.lastStatusUpdate == datetime(2018, 4, 27, 8, 6, 25, 462000) + timedelta(
        0, utc_offset
    )
    assert d.modelId == 290
    assert d.modelType == "HmIP-BDT"
    assert d.oem == "eQ-3"
    assert d.serializedGlobalTradeItemNumber == "3014F711AAAA000000000005"
    assert d.updateState == DeviceUpdateState.UP_TO_DATE
    assert d.profileMode == "AUTOMATIC"
    assert d.userDesiredProfileMode == "AUTOMATIC"
    assert d.dimLevel == 0.0
    assert d.lowBat == None
    assert d.routerModuleEnabled == False
    assert d.routerModuleSupported == False
    assert d.rssiDeviceValue == -44
    assert d.rssiPeerValue == -42
    assert d.unreach == False
    assert d.dutyCycle == False
    assert d.configPending == False
    assert d.availableFirmwareVersion == "0.0.0"
    assert d.firmwareVersion == "1.4.8"
    a, b, c = [int(i) for i in d.firmwareVersion.split(".")]
    assert d.firmwareVersionInteger == (a << 16) | (b << 8) | c

    assert str(d) == (
        "HmIP-BDT Schlafzimmerlicht lowbat(None) unreach(False) rssiDeviceValue(-44) rssiPeerValue(-42) configPending(False) dutyCycle(False) dimLevel(0.0)"
        " profileMode(AUTOMATIC) userDesiredProfileMode(AUTOMATIC)"
    )

    with no_ssl_verification():
        d.set_dim_level(1.0)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711AAAA000000000005")
        assert d.dimLevel == 1.0

        d.set_dim_level(0.5)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711AAAA000000000005")
        assert d.dimLevel == 0.5

        d.id = "INVALID_ID"
        result = d.set_dim_level(0.5)
        assert result["errorCode"] == "INVALID_DEVICE"
예제 #20
0
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"]
    )
예제 #21
0
def test_alarm_siren_indoor(fake_home: Home):
    with no_ssl_verification():
        d = AlarmSirenIndoor(fake_home._connection)
        d = fake_home.search_device_by_id("3014F7110000000000BBBBB8")

        assert str(
            d
        ) == "HmIP-ASIR Alarmsirene lowbat(False) unreach(False) rssiDeviceValue(-59) rssiPeerValue(None) configPending(False) dutyCycle(False) sabotage(False)"
def test_websocket_device(fake_home: Home, home_data):

    fake_home.enable_events()

    # preparing event data for device added
    device_base_id = "3014F7110000000000000031"
    device_added = home_data["devices"][device_base_id].copy()
    device_added_id = "NEW_DEVICE"
    device_added["id"] = device_added_id
    for x in device_added["functionalChannels"].values():
        x["deviceId"] = device_added_id
    send_event(fake_home, EventType.DEVICE_ADDED, "device", device_added)

    device_added = home_data["devices"][device_base_id].copy()
    device_added_by_change_id = "NEW_DEVICE_2"
    device_added["id"] = device_added_by_change_id
    for x in device_added["functionalChannels"].values():
        x["deviceId"] = device_added_by_change_id
    send_event(fake_home, EventType.DEVICE_CHANGED, "device", device_added)

    # preparing event data for device changed
    device_changed = home_data["devices"][device_base_id].copy()
    device_changed["label"] = "CHANGED"
    send_event(fake_home, EventType.DEVICE_CHANGED, "device", device_changed)
    # preparing event data for device remove
    device_delete_id = "3014F7110000000000BCBB11"
    assert fake_home.search_device_by_id(device_delete_id) != None
    send_event(fake_home, EventType.DEVICE_REMOVED, "id", device_delete_id)

    time.sleep(1)
    d = fake_home.search_device_by_id(device_added_id)
    assert d.label == "Garagentor"
    assert isinstance(d, AccelerationSensor)

    d = fake_home.search_device_by_id(device_added_by_change_id)
    assert d.label == "Garagentor"
    assert isinstance(d, AccelerationSensor)

    d = fake_home.search_device_by_id(device_base_id)
    assert d.label == "CHANGED"
    assert isinstance(d, AccelerationSensor)

    assert fake_home.search_device_by_id(device_delete_id) == None

    fake_home.disable_events()
예제 #23
0
def test_brand_blind(fake_home: Home):
    with no_ssl_verification():
        d = BrandBlind(fake_home._connection)
        d = fake_home.search_device_by_id("3014F71100000000000BBL24")
        assert isinstance(d, BrandBlind)

        assert str(d) == (
            "HmIP-BBL Jalousie Schiebetür lowbat(None) unreach(False) "
            "rssiDeviceValue(-64) rssiPeerValue(-76) configPending(False) "
            "dutyCycle(False) shutterLevel(0.885) topToBottom(53.68) bottomToTop(54.88) "
            "slatsLevel(1.0) blindModeActive(True)")
예제 #24
0
def test_full_flush_contact_interface(fake_home: Home):
    d = fake_home.search_device_by_id("3014F7110000000000000029")
    assert isinstance(d, FullFlushContactInterface)

    assert d.binaryBehaviorType == BinaryBehaviorType.NORMALLY_CLOSE
    assert d.windowState == WindowState.CLOSED
    assert d.multiModeInputMode == MultiModeInputMode.KEY_BEHAVIOR

    assert str(d) == (
        "HmIP-FCI1 Kontakt-Schnittstelle Unterputz – 1-fach lowbat(False) unreach(False) rssiDeviceValue(-46) rssiPeerValue(None) configPending(False) "
        "dutyCycle(False) binaryBehaviorType(NORMALLY_CLOSE) multiModeInputMode(KEY_BEHAVIOR) windowState(CLOSED)"
    )
예제 #25
0
def test_brand_switch_notification_light(fake_home: Home):
    with no_ssl_verification():
        d = BrandSwitchNotificationLight(fake_home._connection)
        d = fake_home.search_device_by_id("3014F711BSL0000000000050")

        c = d.functionalChannels[d.topLightChannelIndex]
        assert isinstance(c, NotificationLightChannel)
        assert c.simpleRGBColorState == RGBColorState.RED
        assert c.dimLevel == 0.0

        c = d.functionalChannels[d.bottomLightChannelIndex]
        assert isinstance(c, NotificationLightChannel)
        assert c.simpleRGBColorState == RGBColorState.GREEN
        assert c.dimLevel == 1.0

        d.set_rgb_dim_level(d.topLightChannelIndex, RGBColorState.BLUE, 0.5)
        d.set_rgb_dim_level_with_time(
            d.bottomLightChannelIndex, RGBColorState.YELLOW, 0.7, 10, 20
        )

        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711BSL0000000000050")

        c = d.functionalChannels[d.topLightChannelIndex]
        assert isinstance(c, NotificationLightChannel)
        assert c.simpleRGBColorState == RGBColorState.BLUE
        assert c.dimLevel == 0.5

        c = d.functionalChannels[d.bottomLightChannelIndex]
        assert isinstance(c, NotificationLightChannel)
        assert c.simpleRGBColorState == RGBColorState.YELLOW
        assert c.dimLevel == 0.7

        assert str(d) == (
            "HmIP-BSL Treppe lowbat(None) unreach(False) "
            "rssiDeviceValue(-67) rssiPeerValue(-70) configPending(False) "
            "dutyCycle(False) on(True) profileMode(AUTOMATIC) "
            "userDesiredProfileMode(AUTOMATIC) topDimLevel(0.5) "
            "topColor(BLUE) bottomDimLevel(0.7) bottomColor(YELLOW)"
        )
예제 #26
0
def test_basic_device_functions(fake_home:Home):
    with no_ssl_verification():
        d = fake_home.search_device_by_id('3014F7110000000000000009')
        assert d.label == "Brunnen"
        assert d.routerModuleEnabled == True

        d.set_label("new label")
        d.set_router_module_enabled(False)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id('3014F7110000000000000009')
        assert d.label == "new label"
        assert d.routerModuleEnabled == False

        d.set_label("other label")
        d.set_router_module_enabled(True)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id('3014F7110000000000000009')
        assert d.label == "other label"
        assert d.routerModuleEnabled == True

        d2 = fake_home.search_device_by_id('3014F7110000000000000005')
        d.delete()
        fake_home.get_current_state()
        dNotFound = fake_home.search_device_by_id('3014F7110000000000000009')
        assert dNotFound == None
        assert d2 is fake_home.search_device_by_id('3014F7110000000000000005') # make sure that the objects got updated and not completely renewed

        #check if the server is answering properly
        result = d.set_label("BLa")
        assert result["errorCode"] == "INVALID_DEVICE"
        result = d.delete()
        assert result["errorCode"] == "INVALID_DEVICE"
예제 #27
0
def test_multi_io_box(fake_home: Home):
    d = fake_home.search_device_by_id("3014F711ABCD0ABCD000002")
    assert isinstance(d,MultiIOBox)
    assert d.on == True
    assert d.functionalChannels[2].on == False
    assert d.analogOutputLevel == 12.5
    assert d.functionalChannels[5].analogOutputLevel == 12.5

    assert str(d) == ("HmIP-MIOB Multi IO Box lowbat(None) unreach(False) "
                      "rssiDeviceValue(-79) rssiPeerValue(None) configPending(False) "
                      "dutyCycle(False) on(True) profileMode(None) "
                      "userDesiredProfileMode(AUTOMATIC) analogOutputLevel(12.5)"
                        )
예제 #28
0
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"]
    )
예제 #29
0
def test_light_sensor(fake_home: Home):
    with no_ssl_verification():
        d = LightSensor(fake_home._connection)
        d = fake_home.search_device_by_id("3014F711SLO0000000000026")

        assert d.averageIllumination == 807.3
        assert d.currentIllumination == 785.2
        assert d.highestIllumination == 837.1
        assert d.lowestIllumination == 785.2

        assert str(d) == (
            "HmIP-SLO Lichtsensor Nord lowbat(False) unreach(False) rssiDeviceValue(-60) "
            "rssiPeerValue(None) configPending(False) dutyCycle(False) "
            "averageIllumination(807.3) currentIllumination(785.2) "
            "highestIllumination(837.1) lowestIllumination(785.2)")
예제 #30
0
def test_open_collector_8(fake_home: Home):
    with no_ssl_verification():
        d = OpenCollector8Module(fake_home._connection)
        d = fake_home.search_device_by_id("3014F711BBBBBBBBBBBBB18")

        c = d.functionalChannels[2]

        assert isinstance(c, SwitchChannel)
        assert c.index == 2
        assert c.on == False
        assert c.profileMode == "AUTOMATIC"

        c = d.functionalChannels[8]

        assert isinstance(c, SwitchChannel)
        assert c.index == 8
        assert c.on == True
        assert c.profileMode == "AUTOMATIC"

        d.turn_off(8)
        fake_home.get_current_state()
        d = fake_home.search_device_by_id("3014F711BBBBBBBBBBBBB18")
        c = d.functionalChannels[8]
        assert c.on == False