예제 #1
0
    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)
예제 #2
0
    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])
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
    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])
예제 #7
0
                    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})')