def test_xl824_idle(self): """Tests for nexia xl824 zone idle.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_house_xl624.json")) nexia.update_from_json(devices_json) thermostat_ids = nexia.get_thermostat_ids() self.assertEqual(thermostat_ids, [2222222, 3333333]) thermostat = nexia.get_thermostat_by_id(3333333) zone = thermostat.get_zone_by_id(99999999) self.assertEqual(zone.get_name(), "Upstairs NativeZone") self.assertEqual(zone.get_cooling_setpoint(), 74) self.assertEqual(zone.get_heating_setpoint(), 62) self.assertEqual(zone.get_current_mode(), "COOL") self.assertEqual( zone.get_requested_mode(), "COOL", ) self.assertEqual( zone.get_presets(), ["None", "Home", "Away", "Sleep"], ) self.assertEqual( zone.get_preset(), "None", ) self.assertEqual( zone.get_status(), "Idle", ) self.assertEqual( zone.get_setpoint_status(), "Permanent Hold", ) self.assertEqual(zone.is_calling(), False) self.assertEqual(zone.is_in_permanent_hold(), True)
def test_active_thermo(self): """Get methods for an active thermostat.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_houses_123456.json")) nexia.update_from_json(devices_json) thermostat = nexia.get_thermostat_by_id(2293892) self.assertEqual(thermostat.get_model(), "XL1050") self.assertEqual(thermostat.get_firmware(), "5.9.1") self.assertEqual(thermostat.get_dev_build_number(), "1581321824") self.assertEqual(thermostat.get_device_id(), "0281B02C") self.assertEqual(thermostat.get_type(), "XL1050") self.assertEqual(thermostat.get_name(), "Master Suite") self.assertEqual(thermostat.get_deadband(), 3) self.assertEqual(thermostat.get_setpoint_limits(), (55, 99)) self.assertEqual(thermostat.get_variable_fan_speed_limits(), (0.35, 1.0)) self.assertEqual(thermostat.get_unit(), "F") self.assertEqual(thermostat.get_humidity_setpoint_limits(), (0.35, 0.65)) self.assertEqual(thermostat.get_fan_mode(), "Auto") self.assertEqual(thermostat.get_fan_modes(), ["Auto", "On", "Circulate"]) self.assertEqual(thermostat.get_outdoor_temperature(), 87.0) self.assertEqual(thermostat.get_relative_humidity(), 0.52) self.assertEqual(thermostat.get_current_compressor_speed(), 0.69) self.assertEqual(thermostat.get_requested_compressor_speed(), 0.69) self.assertEqual(thermostat.get_fan_speed_setpoint(), 0.35) self.assertEqual(thermostat.get_dehumidify_setpoint(), 0.45) self.assertEqual(thermostat.has_dehumidify_support(), True) self.assertEqual(thermostat.has_humidify_support(), False) self.assertEqual(thermostat.has_emergency_heat(), False) self.assertEqual(thermostat.get_system_status(), "Cooling") self.assertEqual(thermostat.has_air_cleaner(), True) self.assertEqual(thermostat.get_air_cleaner_mode(), "auto") self.assertEqual(thermostat.is_blower_active(), True) zone_ids = thermostat.get_zone_ids() self.assertEqual(zone_ids, [83394133, 83394130, 83394136, 83394127, 83394139])
def test_zone_relieving_air(self): """Tests for nexia thermostat zone relieving air.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_houses_123456.json")) nexia.update_from_json(devices_json) thermostat = nexia.get_thermostat_by_id(2293892) zone = thermostat.get_zone_by_id(83394133) self.assertEqual(zone.thermostat, thermostat) self.assertEqual(zone.get_name(), "Bath Closet") self.assertEqual(zone.get_cooling_setpoint(), 79) self.assertEqual(zone.get_heating_setpoint(), 63) self.assertEqual(zone.get_current_mode(), "AUTO") self.assertEqual( zone.get_requested_mode(), "AUTO", ) self.assertEqual( zone.get_presets(), ["None", "Home", "Away", "Sleep"], ) self.assertEqual( zone.get_preset(), "None", ) self.assertEqual( zone.get_status(), "Relieving Air", ) self.assertEqual( zone.get_setpoint_status(), "Permanent Hold", ) self.assertEqual(zone.is_calling(), True) self.assertEqual(zone.is_in_permanent_hold(), True)
def test_zone_issue_33758(self): """Tests for nexia thermostat zone relieving air.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_house_issue_33758.json")) nexia.update_from_json(devices_json) thermostat = nexia.get_thermostat_by_id(12345678) zone = thermostat.get_zone_by_id(12345678) self.assertEqual(zone.thermostat, thermostat) self.assertEqual(zone.get_name(), "Thermostat NativeZone") self.assertEqual(zone.get_cooling_setpoint(), 73) self.assertEqual(zone.get_heating_setpoint(), 68) self.assertEqual(zone.get_current_mode(), "AUTO") self.assertEqual( zone.get_requested_mode(), "AUTO", ) self.assertEqual( zone.get_presets(), ["None", "Home", "Away", "Sleep"], ) self.assertEqual( zone.get_preset(), "None", ) self.assertEqual( zone.get_status(), "Idle", ) self.assertEqual( zone.get_setpoint_status(), "Run Schedule - None", ) self.assertEqual(zone.is_calling(), False) self.assertEqual(zone.is_in_permanent_hold(), False)
def test_zone_issue_33968_zone_83037343(self): """Tests for nexia thermostat zone that is cooling.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_house_issue_33968.json")) nexia.update_from_json(devices_json) thermostat = nexia.get_thermostat_by_id(1690380) zone = thermostat.get_zone_by_id(83037343) self.assertEqual(zone.thermostat, thermostat) self.assertEqual(zone.get_name(), "Master") self.assertEqual(zone.get_cooling_setpoint(), 77) self.assertEqual(zone.get_heating_setpoint(), 68) self.assertEqual(zone.get_current_mode(), "COOL") self.assertEqual( zone.get_requested_mode(), "COOL", ) self.assertEqual( zone.get_presets(), ["None", "Home", "Away", "Sleep"], ) self.assertEqual( zone.get_preset(), "None", ) self.assertEqual( zone.get_status(), "Damper Open", ) self.assertEqual( zone.get_setpoint_status(), "Permanent Hold", ) self.assertEqual(zone.is_calling(), True) self.assertEqual(zone.is_in_permanent_hold(), True)
def test_xl824_2(self): """Get methods for an xl824 thermostat.""" nexia = NexiaHome(auto_login=False) devices_json = json.loads(load_fixture("mobile_house_xl624.json")) nexia.update_from_json(devices_json) thermostat_ids = nexia.get_thermostat_ids() self.assertEqual(thermostat_ids, [2222222, 3333333]) thermostat = nexia.get_thermostat_by_id(3333333) self.assertEqual(thermostat.get_model(), "XL824") self.assertEqual(thermostat.get_firmware(), "5.9.1") self.assertEqual(thermostat.get_dev_build_number(), "1581314625") self.assertEqual(thermostat.get_device_id(), "01573380") self.assertEqual(thermostat.get_type(), "XL824") self.assertEqual(thermostat.get_name(), "Upstairs") self.assertEqual(thermostat.get_deadband(), 3) self.assertEqual(thermostat.get_setpoint_limits(), (55, 99)) self.assertEqual(thermostat.has_variable_fan_speed(), True) self.assertEqual(thermostat.get_unit(), "F") self.assertEqual(thermostat.get_humidity_setpoint_limits(), (0.35, 0.65)) self.assertEqual(thermostat.get_fan_mode(), "Circulate") self.assertEqual(thermostat.get_fan_modes(), ["Auto", "On", "Circulate"]) self.assertEqual(thermostat.get_current_compressor_speed(), 0.0) self.assertEqual(thermostat.get_requested_compressor_speed(), 0.0) self.assertEqual(thermostat.has_dehumidify_support(), True) self.assertEqual(thermostat.has_humidify_support(), False) self.assertEqual(thermostat.has_emergency_heat(), False) self.assertEqual(thermostat.get_system_status(), "System Idle") self.assertEqual(thermostat.has_air_cleaner(), True) self.assertEqual(thermostat.is_blower_active(), False) zone_ids = thermostat.get_zone_ids() self.assertEqual(zone_ids, [99999999])
type=str, help="Your Nexia username/email address.") parser.add_argument("--password", type=str, help="Your Nexia password.") args = parser.parse_args() if args.username and args.password: nexia_home = NexiaHome(username=args.username, password=args.password) else: parser.print_help() exit() print("NexiaThermostat instance can be referenced using nt.<command>.") print("List of available thermostats and zones:") for _thermostat_id in nexia_home.get_thermostat_ids(): thermostat = nexia_home.get_thermostat_by_id(_thermostat_id) _thermostat_name = thermostat.get_name() _thermostat_model = thermostat.get_model() _thermostat_compressor_speed = thermostat.get_current_compressor_speed() print( f'{_thermostat_id} - "{_thermostat_name}" ({_thermostat_model}) [{_thermostat_compressor_speed}]' ) print(" Zones:") for _zone_id in thermostat.get_zone_ids(): zone = thermostat.get_zone_by_id(_zone_id) _zone_name = zone.get_name() _zone_status = zone.get_status() print(f' {_zone_id} - "{_zone_name}" ({_zone_status})')