Skip to main content

Innova Air Conditioner Control API

Project description

PyPI version

Innova Control API

Tested on a Innova 2.0 unit

Also supports AirLeaf

Installation

pip install innova_controls

Innova class usage

See test_main.py for some example usage.

This is far from perfect documentation, but it is a start.

Communication protocol

Local Mode

All commands are sent to the unit itself through http at its network IP address: http://[IP_ADDRESS]/api/v/1.

Cloud Mode

Commands are sent to Innova's cloud services at https://innovaenergie.cloud/api/v/1 (or https://fancoil.innovaenergie.cloud/api/v/1 for AirLeaf, but currently not working). The serial number and the MAC Address of the unit are needed when using cloud mode.

The following custom http headers are added to requests to identify units

  • "X-serial": UNIT_SERIAL_NUMBER
  • "X-UID": UNIT_MAC_ADDRESS

Protocol definition

We just need to append the following commands and parameters where needed.

Ex: curl http://192.168.1.155/api/v/1/status

It is highly recommended to set the IP of your unit to a static DHCP address.

2.0 Commands and Statuses

Action HTTP Verb API Endpoint Data Needed (Content-Type: application/x-www-form-urlencoded) Extra Info
Status GET /status Returns json object
Power ON POST /power/on
Power OFF POST /power/off
Scheduling ON POST /set/calendar/on
Scheduling OFF (Manual) POST /set/calendar/off
Night Mode ON POST /set/feature/night value=1
Night Mode OFF POST /set/feature/night value=0
Set point POST /set/setpoint p_temp=24
Rotation ON POST /set/feature/rotation value=0
Rotation OFF POST /set/feature/rotation value=7
Fan Speed POST /set/fan value=[0-4] 0=auto,1=low,2=med,3=high,4=high++
Cooling POST /set/mode/cooling
Heating POST /set/mode/heating
Dehumidification POST /set/mode/dehumidification
Fan Only POST /set/mode/fanonly
Auto POST /set/mode/auto

JSON returned by status endpoint:

{
    "RESULT": {
        "a": [],
        "cci": 0,
        "ccv": 0,
        "cfg_lastWorkingMode": 4,
        "cloudConfig": 1,
        "cloudStatus": 4,
        "cm": 0,                       <--- Scheduling Mode: 0=off, 1=on
        "connectionStatus": 2,
        "coolingDisabled": 0,
        "cp": 0,
        "daynumber": 0,
        "fr": 7,                       <--- Fan Rotation: 0=on, 7=off
        "fs": 0,                       <--- Fan Speed: 0=auto, 1=low, 2=med, 3=high, 4=high++
        "heap": 11760,
        "heatingDisabled": 1,
        "heatingResistance": 0,
        "hotelMode": 0,
        "inputFlags": 0,
        "kl": 0,
        "lastRefresh": 3956,
        "ncc": 0,
        "nm": 0,                        <--- Night Mode: 0=off, 1=on
        "ns": 0,
        "ps": 0,                        <--- Power: 0=off, 1=on
        "pwd": "************",
        "sp": 26,                       <--- Temperature Set point
        "t": 16,                        <--- Ambient Temperature
        "timerStatus": 0,
        "uptime": 159660,
        "uscm": 0,
        "wm": 4                         <--- Working Mode: 0=heating, 1=cooling, 3=dehumidification, 4=fanonly. 5=auto
    },
    "UID": "[MAC ADDRESS]",
    "deviceType": "001",
    "net": {
        "dhcp": "1",
        "gw": "XXX.XXX.XXX.XXX",
        "ip": "XXX.XXX.XXX.XXX",
        "sub": "255.255.255.0"
    },
    "setup": {
        "name": "Device Name",
        "serial": "YYYYYYYYY"
    },
    "success": true,
    "sw": {
        "V": "1.0.42"
    },
    "time": {
        "d": 5,
        "h": 17,
        "i": 40,
        "m": 2,
        "y": 2022
    }
}

AirLeaf Commands and Statuses

Action HTTP Verb API Endpoint Data Needed (Content-Type: application/json) Extra Info
Status GET /status Returns json object
Power ON POST /power/on
Power OFF POST /power/off
Scheduling ON POST /set/calendar/on
Scheduling OFF (Manual) POST /set/calendar/off
Set point POST /set/setpoint temp=240 On AirLeaf, temperatures are multiplied by 10
Fan Function Auto POST /set/function/auto value=1
Fan Function Night POST /set/function/night value=1
Fan Function Min POST /set/function/min value=1
Fan Function Max POST /set/function/max value=1
Cooling POST /set/mode/cooling
Heating POST /set/mode/heating

JSON returned by status endpoint:

{
  "success": true,
  "sw": {
    "V": "1.0.3"
  },
  "UID": "f4:cf:a2:5f:29:ef",
  "deviceType": "002",
  "time": {
    "d": 18,
    "m": 10,
    "y": 2022,
    "h": 6,
    "i": 14
  },
  "net": {
    "gw": "XXX.XXX.XXX.XXX",
    "ip": "XXX.XXX.XXX.XXX",
    "sub": "255.255.255.0"
    "dhcp": "1"
  },
  "setup": {
    "name": "Device Name",
    "serial": "YYYYYYYYY"
  },
  "RESULT": {
    "sp": 200,                        <--- Temperature Set point (x10)
    "wm": 3,                          <--- Working Mode: 3=heating. 5=cooling
    "fn": 1,                          <--- Fan Function: 1=auto, 2=night, 3=min, 4=max
    "kl": 0,
    "lastworkingModeSet": 0,
    "ps": 0,                          <--- Power: 0=off, 1=on
    "cm": 0,                          <--- Scheduling Mode: 0=off, 1=on
    "a": [],
    "ta": 210,                        <--- Ambient Temperature (x10)
    "tw": 219,                        <--- Water Temperature (x10)
    "ns": 0,
    "cloudStatus": 4,
    "connectionStatus": 2,
    "cloudConfig": 1,
    "timerStatus": 0,
    "inputFlags": 0,
    "ncc": 0,
    "lcc": 0,
    "pwd": "",
    "heap": 11496,
    "ccv": 0,
    "cci": 0,
    "daynumber": 0,
    "uptime": 90675,
    "fclFw": 24,
    "uscm": 0,
    "lastRefresh": 2
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

innova_controls-2.2.4.tar.gz (15.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

innova_controls-2.2.4-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file innova_controls-2.2.4.tar.gz.

File metadata

  • Download URL: innova_controls-2.2.4.tar.gz
  • Upload date:
  • Size: 15.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for innova_controls-2.2.4.tar.gz
Algorithm Hash digest
SHA256 8258f6c3635088a310395d529c54626a6bcffd2f44803ae94e7f9125cb7dafec
MD5 14c6877218b70f354b5a3f620031dbac
BLAKE2b-256 58f98b83daa98751a5c51da206b397934f0768a0d8ac81c75a2dbf525c1425f2

See more details on using hashes here.

File details

Details for the file innova_controls-2.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for innova_controls-2.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 9bc310822fde3fab524228cae4d928f9f71c320e0f0c3523214ef0f708c98f1b
MD5 6e5af92622a4f99b17efa149e30dce8c
BLAKE2b-256 83d1844e59609a988600755b96aadb925e622f2ef10c226d75b1e83586037a46

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page