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.3.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

innova_controls-2.2.3-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: innova_controls-2.2.3.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for innova_controls-2.2.3.tar.gz
Algorithm Hash digest
SHA256 890ee6cc8ab54dc213abb9486eed19273da3cf4c3604cc1b795be1611881d7a2
MD5 ce3f4b833b1f7da0ac8b4b39ad0f7ecd
BLAKE2b-256 21adc7a25951414f4c847c53767c60c0546516a80f6e5ed0861abfe5a5f3a369

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for innova_controls-2.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d10e46a22282def58ccfe94d077b1c2eeb69585a1b160e67a1b9cd666f37d6b3
MD5 e181ab527ccdcaa889b0c7019e3a365c
BLAKE2b-256 d637a54754530412e6c5106b54606b08ba78afbcc408a012f238798e3e8a7740

See more details on using hashes here.

Supported by

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