This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Guide

This guide contains all the information a developer needs to understand and successfully integrate iZone into another system.

1 - Overview

Let’s talk about how an iZone system integrates with the outside world.

What is iZone?

Briefly, iZone is an engineering designed embedded system, which controls ducted air conditioning, zoning control devices and tons of other smart home devices.

How to integrate with an iZone system?

An iZone system communicates with the outside world through a device called an iZone “bridge”. A bridge must be connected to an IP network. There are two way of communicating with an iZone system via the bridge

  • Via local network: A client can call a local API hosted on the iZone bridge if they are located on the same local area network (LAN). This will faciliate faster communication and an internet connection is not needed.

  • Via cloud API: A cloud API is also available for a remote client access or cloud integration. The iZone bridge must be connected to the Internet to facilitate this connection.

Getting started

2 - Getting Started

The journey of integrating with iZone begins here.

2.1 - Before you begin

Prerequisites before getting your hands dirty.

You will need to have an iZone system before starting your integration. We recommand the following:

Make sure the firmware of all the iZone devices have been updated to the latest stable versions.

iZone system should be properly installed and configured.

The iZone Home mobile application can communicate successfully with the iZone system both locally and remotely.

Having issues with installation?

Use iZonepedia to search for diagrams, step-by-step instructions and answers to all your technical problems.

2.2 - Local network integration

Use your local area network (LAN) to integrate with an iZone system.

2.2.1 - Discovery

Make requests to discover local iZone devices.

Discover Local Device Command

Send IASD to UDP Broadcast 255.255.255.255:12107

An expected iZone bridge response would be like ASPort_12107,Mac_[bridge_ID],IP_[bridge_IPAddr],...

If the response is:

  • ASPort_12107,Mac_xxxxxxxxx,IP_xxx.xxx.xxx.xxx
  • ASPort_12107,Mac_xxxxxxxxx,IP_xxx.xxx.xxx.xxx,iZone, …

Then this device only supports the original API, which is described in this document

If the response is:

  • ASPort_12107,Mac_xxxxxxxxx,IP_xxx.xxx.xxx.xxx,iZoneV2, …

Then this device also supprts the new API, described below. The support for the original API is maintained.

Example response:

ASPort_12107,Mac_XXXXXXXXX,IP_xxx.xxx.xxx.xxx,iZoneV2,iLight,iDrate,iPower,Split

Where:

  • XXXXXXXXXX - is a 9-digit unique system ID number
  • iZone - iZone air con support API v1 (described in in this document)
  • iZoneV2 - iZone air con support API v2
  • iLight - lighting system, garage doors etc
  • iDrate - irrigation system,
  • iPower - monitoring system (power, air quality, solar diverter)
  • Split - split system air con

If a device does not support one of the above systems, the corresponding string will be replaced by “X” or missing

2.2.2 - Query

Make requests to query local iZone device states.

Query Local Device States Command

HTTP Request.

POST http://[bridge_IPAddr]/iZoneRequestV2

Request Body JSON:

{
    "iZoneV2Request": {
        "Type": 1,
        "No": 0,
        "No1": 0
    }
}

An example of response would be like:

{
    "AirStreamDeviceUId": string_deviceID,
    "DeviceType": "ASH",
    "SystemV2": datagram_systemsettings
}

where:

  • string_deviceID is 9-digits bridgeID get in discovery
  • datagram_systemsetting is datagram of an iZone device.

Refer to Reference the detail datagram of different types of iZone components.

2.2.3 - Control

Make requests to control local iZone device.

Control Local Device Command

HTTP Request.

POST http://[bridge_IPAddr]/iZoneCommandV2

Request Body JSON:

{
  "SysOn":type_syson
}

where:

An expected response would be like:

OK

Refer to Reference the detail control actions dictionary of different types of iZone device control.

2.2.4 - Documents & Tools

Latest released documents & testing tools.

iZone API Document v2

iZone Local API Test Example

  • Import this test example script iZoneExample.postman.json to Postman API Tools. Change IP address to your own testing system’s IP before start testing.

iZone API Document v1

2.3 - Cloud integration

Use iZone’s Cloud API to integrate with an iZone system.

Developer Account

You will need to have a developer account and get developer credentials to authenticate your integration on iZone.

To get a developer credential key, login developer account and your developer credential should display.

2.3.1 - Authorization

Get access token for calling iZone Cloud API.

iZone Cloud API uses OAuth access token to authorize user access.

Get authorization code

At some stage, you have to send user to iZone worldwide login service with your developer key and parameters.

Authorization Endpoint: https://worldwide.izone.com.au/login

The request uses GET method, with parameters:

Query Parameter
client_id Your developer key
scope Use query-control
state A value you can used to track the session in redirect callback
response_type Use code for authorization code
redirect_uri Encoded URL matching for your developer account

The login service asks the user to authorize your integration to use their iZone system. The user authenticates with login their worldwide account. iZone sends an authorization code back to your integration.

Get access token

Once you get an authorization code, use it to get an access token and refresh token.

Token Endpoint: https://worldwide.izone.com.au/token

The request uses POST method, with parameters:

Query Parameter
client_id Your developer key
grant_type Use authorization_code
code The authorization code received previously

If request format and parameters are all good, the response would be HTTP 200 OK, with payload like this:

{
  "access_token": "c3cda13u-393a-c832-112-946106e5bbab",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "c3cda13u-393a-c832-112-946106e5bbab",
  "scope": "query-control"
}

Use Access Token

The access token is required in every iZone Cloud API call. According to different types of iZone Cloud APIs:

  • HTTPS API
    • Use “Bearer” authentication in headers. Authorization: Bearer access-token
  • gRPC API
    • Use “accessToken” in gPRC proto.

2.3.2 - Discovery

Make requests to discover user’s iZone devices.

Discover Device Command

HTTPS Request.

POST https://api.izone.com.au/dev

Request Body JSON:

Key Type Description
requestId string A UUID string to identify request session
requestType string Must be Discover

An example of response would be like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "requestType": "Discover",
  "response": {
    "userID":string_userID,
    "devices":[
    {
        "componentId":"123456798_izone_systemsettings_0",
        "datagram":{
            "SysOn":1,
            "SysMode":2,
            "SysFan":3,
            ...
        }
    },
    ...]
}

Response contains requesting user’s string_userID and an array of all componentIds and their latest datagram.

Individual device states can be queried through Query.

Refer to Reference the detail datagram of different types of iZone components.

2.3.3 - Query

Make requests to query iZone device states.

Query Device States Command

HTTPS Request.

POST https://api.izone.com.au/dev

Request Body JSON:

Key Type Description
requestId string A UUID string to identify request session
requestType string Must be Query
componentId string A componentId to identify an iZone component

An example of response would be like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "requestType": "Query",
  "response": {
    "component":{
      "componentId":"123456798_izone_systemsettings_0",
      "datagram":{
          "SysOn":1,
          "SysMode":2,
          "SysFan":3,
          ...
      }
    }
  }
}

Where response is componentId:componentDatagram

Refer to Reference the detail datagram of different types of iZone components.

2.3.4 - Control

Make requests to control iZone device.

Control Device Command

HTTPS Request.

POST https://api.izone.com.au/dev

Request Body JSON:

Key Type Description
requestId string A UUID string to identify request session
requestType string Must be Control
componentId string A componentId to identify an iZone component
requestBody json A JSON control command body

An example of request body would like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "componentId": "123456798_izone_systemsettings_0",
  "requestType": "Control",
  "requestBody": {
    json_controlCommand
  }
}

where json_controlCommand is the one of control commands with target value.

An expected response would be like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "componentId": "123456798_izone_systemsettings_0",
  "requestType": "Control",
  "response": {
    "result":"OK"
  }
}

Refer to Reference the detail control actions dictionary of different types of iZone device control.

2.3.5 - Event Report

Get notified when device states changed.

Event Report API

iZone Cloud provides event report service, which can notify your event API when iZone device states changed or user deleted their account.

Please talk to Smart Alec about details of your event API.

Sync Request Body JSON Format:

Key Type Description
requestId string A UUID string to identify request session
requestType string Must be Sync
userId string A userId to identify an iZone worldwide user

An example of requesting re-discover/refresh would like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "userId": string_userID,
  "requestType": "Sync",
}

This request notifies user string_userID’s account condition has changed. To re-discover the user’s devices of userID.

Event Report Body JSON Format:

Key Type Description
requestId string A UUID string to identify request session
requestType string Must be Event
requestBody json A JSON datagram contains one or multiple devices datagram

An example of device event update would like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "requestType": "Event",
  "requestBody": {
    "devices":[
      {
        "componentId":"123456798_izone_systemsettings_0",
        "datagram":{
            "SysOn":1,
            "SysMode":2,
            "SysFan":3,
            ...
        }
      },
      ...
    ]
  }
}

where json_datagram is the one of iZone device datagram.

Refer to Reference the detail control actions dictionary of different types of iZone device control.

2.3.6 - Result

Get result.

Result Messages

iZone Cloud would return message after API actions are called.

An example of result would be like:

{
  "requestId": "28d45cb2-ff5a-4d58-a4c8-efb751ded699",
  "response": {
    "result":message_string
  }
}

where message_string contains OK or error messages.

3 - Examples

See your project in action!

4 - Reference

Reference documents for iZone APIs.

Categoried by device type

4.1 - AC Unit

Local Entry Point

Local request entry point for iZone Aircon System is:

Query Request.

POST http://[bridge_IPAddr]/iZoneRequestV2

Control Request.

POST http://[bridge_IPAddr]/iZoneCommandV2

Local Query Request Format

Local query request body format for iZone Aircon System is:

Request Body JSON:

{
    "iZoneV2Request": {
        "Type": 1,                  //AC unit info - 1, Zone status - 2, Schedule - 3.
        "No": 0,                    //index number of zone or schedule
        "No1": 0                    //reserved
    }
}

Datagram

Systemsettings

{
    "SysOn": int,					// AC system on: SysOn_e
    "SysMode": int,					// AC system mode: SysMode_e
    "SysFan": int,					// AC system fan: SysFan_e
    "SleepTimer": int,				// number of minutes to set the timer for, 0 = timer off
    "Supply": int,					// supply air temperature (x100)
    "Setpoint": int, 				// unit setpoint temperature (x100)
    "Temp": int,					// return air temperature (x100)
    "RAS": int,						// return air sensor mode: ReturnAirSensor_e
    "CtrlZone": int,				// zone number to control the unit 0-13, if 15, the use unit setpoint.
    "Tag1": string,					// first line text
    "Tag2": string,					// second line text
    "Warnings": "none",				// indicates current warnings/errors: "none", "filter"
    "ACError": string,				// 3 character error code. (" OK" = no error)
    "EcoLock": int,					// if true, setpoints (zones and system) can only be set within EcoMax and EcoMin
    "EcoMax": int,					// maximum setpoint temperature if EcoLock = true (x100)
    "EcoMin": int,					// minimum setpoint temperature if EcoLock = true (x100)
    "NoOfConst": int,				// number of constants in the system
    "NoOfZones": int,				// number of zones in the system
    "SysType": int,					// system type, 310 requires supprot for unit control related functions, 210 no unit control
    "iSaveEnable": int,
    "iSaveOn": int,
    "LockCode": string,				// up to 6 digits
    "LockStatus": int,				// locked flag, 1 - unit locked. Enter keycode on iZone controller to unlock the system"
    "LockOn": int,					// lock enabled
    "FanAutoEn": int,				// fan auto mode enabled
    "FanAutoType": int,				// fan auto mode fan type: FanAutoType_e
    "FanCapacity": int,				// fan auto mode fan capacity (airflow)
    "FanUnitCapacity": int,			// fan auto mode unit capacity
    "FilterWarn": int,				// filter wanrning setting (months)
    "iZoneOnOff": int,				// iZone controls AC unit on/off function, 0 - disabled, 1 - enabled
    "iZoneMode": int,				// iZone controls AC unit mode function,  0 - disabled, 1 - enabled
    "iZoneFan": int,				// iZone controls AC unit fan function, 0 - disabled, 1 - enabled
    "iZoneSetpoint": int,			// iZone controls AC unit setpoint function, 0 - disabled, 1 - enabled
    "ExtOnOff": int,				// AC unit controls iZone on/off function, 0 - disabled, 1 - enabled
    "ExtMode": int,					// AC unit controls iZone mode function, 0 - disabled, 1 - enabled
    "ExtFan": int,					// AC unit controls iZone fan function, 0 - disabled, 1 - enabled
    "ExtSetpoint": int,				// AC unit controls iZone setpoint function, 0 - disabled, 1 - enabled
    "DamperTime": int,				// damper time setting (senconds), 0 - automatic
    "AutoOff": int,					// auto off enable, 0 - disabled, 1 - enabled
    "RoomTempDisp": int,			// display room temperature,  0 - disabled, 1 - enabled
    "RfCh": int,					// RF channel number (1-8)
    "AutoModeDeadB": int,			// auto mode deadband (x100)
    "WiredLeds": int,				// wired sensor leds setting 
    "AirflowLock": int,
    "AirflowMinLock": int,
    "OutOfViewRAS": int,
    "CpuType": int,					// AcCpuType_e
    "SysNo": int,					// 0 - 4
    "AcUnitBrand": int,				// type of the connected AC unit: UnitBrand_e
    "AcUnitBrandSet": int,			// type of the connected AC unit: UnitBrandSet_e
    "OemMake": int,					// system make: OemMake_e
    "HideInduct": int, 				// hide induct temperature setting
    "ReverseDampers":1,				// reverse dampers, 0 - disabled, 1 - enabled
    "Scrooge":0,					// scrooge mode, 0 - disabled, 1 - enabled
    "Pass":string,					// system configuration password
    "CnstCtrlAreaEn": int,			// enable the function, 0 - disabled, 1 - enabled
    "CnstCtrlArea": int,			// zone area setting for the constant control by area setting
    "StaticP": int,					// static pressure setting for Midea type of units 0-lowest -> 4-highest
    "OpenDampersWhenOff": int,		// open dampers when AC system is off setting
    "ShowActTemps": int,			// in the modern zone list show actual temperatures instead of airflow
    "UseInductEnergy": int,			// use induct energy setting
    "UnitOpt": {
        "RA":0,						// display RA sensor option, 0 - disabled, 1 - enabled
        "Master":1,					// display Master sensor option, 0 - disabled, 1 - enabled
        "Zones":1,					// display Zones sensor option, 0 - disabled, 1 - enabled
        "History":0,				// display unit history option, 0 - disabled, 1 - enabled
        "SlaveOpt":0				// display Master/Slave options, 0 - disabled, 1 - enabled
    },
    "Temperzone": {
        "HeatSetpoint": int,		// temperzone AC unit heat mode setpoint
        "CoolSetpoint": int,		// temperzone AC unit cool mode setpoint
        "FanType": int,
        "ModeType": int,
        "Quiet": int,				// temperzone outdoor fan quiet mode
    },
    "GasHeat": {
        "Type": int, 				// universal unit type control: GasHeatType_e
        "MinRunTime": int,			// minimum run time setting
        "AnticycleTime": int,		// anticycle time setting
        "StageOffset": int,			// stage offset setting
        "StageDelay": int,			// stage delay time setting
        "CycleFanCool": int,		// cycle fan in cool mode
        "CycleFanHeat": int,		// cycle fan in heat mode
    },
    "Ventilation":
    {
        "RhSetpoint":int,			// RH setpoint (5 - 95%)
        "VocsSetpoint":int,			// VOCs setpoint (50 - 2500ppb)
        "Eco2Setpoint":int,			// ECO2 setpotin (500 - 1500ppm)
        "FanStageDelay":int,		// fan stage delay in minutes (3 - 240m)
        "CycleFanOff":int,			// cycle fan off setting (0 - 1)
        "UseRhControl":int,			// use RH control setting (0 - 1)
        "UseVcosControl":int,		// use VOCs control setting (0 - 1)
        "UseEco2Control":int		// use ECO2 control setting (0 - 1)
    },
    "Coolbreeze":
    {
        "FanSpeed":int,				// current fan speed (1 - 100)
        "State":string,				// just a string to display
        "RhSet":int,				// humidity setpoint (10 - 90)
        "RhRead":int,				// humidity reading (%)
        "FanRunH":int,				// fan run hours
        "PumpRunH":int,				// pump run hours
        "PrewEn":int,				// prewash enable (0 - 1)
        "PrewTime":int,				// prewash time (1 - 60 minutes)
        "DrAfPrewEn":int,			// drain after prewash (0 - 1)
        "DrCycEn":int,				// drain cycle enable (0 - 1)
        "DrCycPer":int,				// drain cycle period (1 - 50 hours) send and receive number in minutes
        "PostwEn":int,				// post wash enable (0 - 1)
        "DrBfPostwEn":int,			// drain before post wash (0 - 1)
        "PostwT":int,				// post wash time (5 - 30 minutes)
        "Inverter":int,				// inverter (0 - 1)
        "ResumeLast":int,			// resume last state (0 - 1)
        "FanMaxAuto":int,			// maximum fan speed in auto mode (1 - 100)
        "FanMax":int,				// maximum fan speed in manual mode (1 - 100)
        "ExhMax":int,				// maximum fan speed in exhaust mode (1 - 100)
        "ExhEn":int,				// exhaust mode enable (0 - 1)
        "CtrlSens":int,				// control sensor (CoolbreezeControlSensor_e)
        "CalibTemp":int,			// temperature calibration (-50 - 50) /10 to get value
        "DeadTemp":int,				// temperature dead band (100 - 500) /100 to get value
        "AutoFanMaxTime":int		// Auto mode fan max speed time (0 - 60 minutes)
    }
}

Control Actions

AC Unit On/Off

Available: Local API, Cloud API

{
	"SysOn":a
}

where: a - is the on/off setting

Change AC Unit Mode

Available: Local API, Cloud API

{
	"SysMode":a
}

where: a - is the mode setting

Change AC Unit Fanspeed

Available: Local API, Cloud API

{
	"SysFan":a
}

where: a - is the fanspeed setting

Set AC Unit Setpoint

Available: Local API, Cloud API

{
	"SysSetpoint":a
}

where: a - is target setpoint degree multiply 100. value limits: 1500 <= a <= 3000

Change iSave On/Off

Available: Local API, Cloud API

{
	"iSave":a
}

where: a - is target iSave setting: 0 = iSave is off, 1 = iSave is on

Set Sleep Timer

Available: Local API, Cloud API

{
	"SysSleepTimer":x
}

where: x - is target sleep timer time in minute, x=0 turn off sleeptimer.

Types

SysOn_e

{
	SysOn_Off,
	SysOn_On
}

SysMode_e

{
	SysMode_Na,
	SysMode_Cool = 1,
	SysMode_Heat,
	SysMode_Vent,
	SysMode_Dry,
	SysMode_Auto,
	SysMode_Exhaust,
	SysMode_PumpOnly,
}

SysFan_e

{
	SysFan_Na,
	SysFan_Low = 1,
	SysFan_Med,
	SysFan_High,
	SysFan_Auto,
	SysFan_Top,
	SysFan_NonGasHeat = 99
 }

4.2 - Zone

Datagram

Zone

{
    "Index": 0,				// zone index
    "Name": string,			// upto 16 chars including \0
    "ZoneType": int,		// zone type setting: ZoneType_e
    "SensType": int,		// zone sensor type: RoomSensorType_t
    "Mode": int,			// current zone mode: ZoneMode_e
    "Setpoint": int,		// current zone setpoint (x100)
    "Temp": int,			// current zone temperature (x100)
    "MaxAir": int,			// maximum damper open setting %
    "MinAir": int,			// minumum damper closed setting %
    "Const": int,			// constant number (each constant will have its own number)
    "ConstA": int			// constant zone active (zone forced open): 0 - not active, 1 - active
    "Master": int			// Master zone is forced open (display zone constant graphic in zone summary screen)
    "DmpFlt": int,			// zone damper motor fault
    "iSense": int,			// isense controller active: 
    "Area": int,			// area of zone in m2
    "Calibration": int,		// zone sensot calibration value
    "Bypass": int,			// constant zone set to bypass 
    "DmpPos": int,  		// current damper position
    "RfSignal": int,		// RF signal level: RfSignalLevel_e
    "BattVolt": int,		// battery level: BatteryLevel_e
    "SensorFault": int,		// sensor fault: 0 - no fault, 1- fault
    "BalanceMax":int,		// Zone balance max
    "BalanceMin":int,		// zone balance min
    "DamperSkip":int		// damper skip: 0 - no skip, 1 - skip
}

Control Actions

Change Zone Mode

Available: Local API, Cloud API

{
	"ZoneMode":{
		"Index":a,
		"Mode":b
	}
}

where:

Set Zone Setpoint

Available: Local API, Cloud API

{
	"ZoneSetpoint":{
		"Index":a,
		"Setpoint":b
	}
}

where:

  • a - is the zone index number
  • b - is the target setpoint degree x100, value limits: 1500 <= b <= 3000, steps of 50

Set Zone Max Airflow

Available: Local API, Cloud API

{
	"ZoneMaxAir":{
		"Index":a,
		"MaxAir":b
	}
}

where:

  • a - is the zone index number
  • b - is maximum open percentage, value limits 0 <= b <= 100, steps of 5

Set Zone Min Airflow

Available: Local API, Cloud API

{
	"ZoneMinAir":{
		"Index":a,
		"MinAir":b
	}
}

where:

  • a - is the zone index number
  • b - is minimum open percentage, value limits 0 <= b <= 100, steps of 5

Set Zone Name

Available: Local API, Cloud API

{
	"ZoneName":{
		"Index":a,
		"Name":b
	}
}

where:

  • a - is the zone index number
  • b - is string of new zone name, max length 15 characters.

Types

ZoneMode_e

{
	ZoneMode_Open = 1,
	ZoneMode_Close,
	ZoneMode_Auto,
	ZoneMode_Override,
	ZoneMode_Constant
}

ZoneType_e

{
	ZoneType_OpenClose = 1,
	ZoneType_Constant,
	ZoneType_Auto
}

4.3 - Schedule

Datagram

Schedule

{
    "Index": int,		        // index of favourite
    "Name": string,				// name of fav.
    "Enabled": int,             // 0 - disabled; 1 - enabled
    "Mode": int,				// SysMode_e
    "Fan": int,					// SysFan_e
    "StartH":int,               // set 0 - 23, disable 31
    "StartM":int,               // set 0 - 59, disable 63
    "StopH":int,                // set 0 - 23, disable 31
    "StopM":int,                // set 0 - 59, disable 63
    "DaysEnabled":{
        "M":int,                // 0 - disabled; 1 - enabled
        "Tu":int,               // 0 - disabled; 1 - enabled
        "W":int,                // 0 - disabled; 1 - enabled
        "Th":int,               // 0 - disabled; 1 - enabled
        "F":int,                // 0 - disabled; 1 - enabled
        "Sa":int,               // 0 - disabled; 1 - enabled
        "Su":int                // 0 - disabled; 1 - enabled
    }
    "Zones": [
        {
            "Mode":int,			// zone mode ZoneMode_e
            "Setpoint":int		// zone setpoint (1500 - 3000)
        },
        ... 14 zones
    ]
}

Control Actions

Change Schedule AC Mode

Available: Local API, Cloud API

{
	"SchedAcMode":{
		"Index":a,
		"Mode":b
	}
}

where:

Change Schedule AC Fan

Available: Local API, Cloud API

{
	"SchedAcFan":{
		"Index":a,
		"Fan":b
	}
}

where:

Set Schedule Name

Available: Local API, Cloud API

{
	"SchedName":{
		"Index":a,
		"Name":b
	}
}

where:

  • a - is the schedule index number, value limites 0 <= a <= 8, step of 1
  • b - is string of new schedule name, max length 15 characters.

Set Schedule Zone Settings

Available: Local API, Cloud API

{
	"SchedZones":{
		"Index":a,
		"Zones":[
            {"Mode":b,"Setpoint":c},
            ... (14 zones settings)
        ]
	}
}

where:

  • a - is the schedule index number, value limites 0 <= a <= 8, step of 1
  • b - is zone mode setting for each zone
  • c - is zone setpoint setting for each zone, value is setpointx100, limits: 1500 <= b <= 3000, steps of 50

Set Schedule Time

Available: Local API, Cloud API

{
	"SchedSettings":{
		"Index":a,
        "StartH":b,
        "StartM":c,
        "StopH":d,
        "StopM":e,
        "DaysEnabled":{
            "M":f,
            "Tu":g,
            "W":h,
            "Th":i,
            "F":j,
            "Sa":k,
            "Su":l
        }
	}
}

where:

  • a - is the schedule index number, value limites 0 <= a <= 8, step of 1
  • b - is start hour of the day, value limits 0 <= b <= 23, step of 1; 31 means disable start time
  • c - is start minute of the day, value limits 0 <= b <= 23, step of 1; 63 means disable start time
  • d - is stop hour of the day, value limits 0 <= b <= 23, step of 1; 31 means disable stop time
  • e - is stop minute of the day, value limits 0 <= b <= 23, step of 1; 63 means disable stop time
  • f-l - is weekdays enable for schedule, 0 - disable, 1 - enable.

Change Schedule Enable

Available: Local API, Cloud API

{
	"SchedEnable":{
		"Index":a,
		"Enabled":b
	}
}

where:

  • a - is the schedule index number, value limites 0 <= a <= 8, step of 1
  • b - is schedule enabled state, 0 - disabled, 1 - enabled.

Start Schedule Manually

Available: Local API, Cloud API

{
	"FavouriteSet":a
}

where:

  • a - is the schedule index+1, value limites 1 <= a <= 9, step of 1

4.4 - Wall Split AC

Local Entry Point

Local request entry point for iZone split system is:

Query Request.

POST http://[bridge_IPAddr]/SplitSystemRequest

Control Request.

POST http://[bridge_IPAddr]/SplitSystemCommand

Local Query Request Format

Local query request body format for iZone split system is:

Request Body JSON:

{
	"SplitSystemRequest":
	{
		"Type": x, //data type to be requested. 1 - system confiugration/status 2 - favourites configuration
		"No": y, //currently no use
		"No1": z //currently no use
	}
}

Datagram

Split sytem configuration information

{
	"AirStreamDeviceUId":int,				// system ID number
	"DeviceType":"ASH",
	"SplitSystemSystem":
	{
		"Global":
		{
			"Beep":int,					// indicates whether the split system ack commands by sound (0 - disable, 1 - enable)
			"MaxZones":int,				// maximum possible number of units	(5 or 14)
			"MaxFavs":int				// number of favourites (4 or 9)
		}
		,
		"Zones":
		[
			{
				"Index":int,			// zone index (0 - 13, may not be consecutive)
				"Att":int,				// split attached/paired (0 - not paired, 1 - paired)
				"Name":string,			// split name (up to 16 characted including the terminating characted '\0')
				"On":int,				// split on (0 - off, 1 - on)
				"Mode":int,				// split mode (SysMode_e)
				"Fan":int,				// split fan speed (SysFan_e)
				"Setpoint":int,			// split setpoint multiplied by 100 (1700 (17) - 3000 (30), increments of 50 (0.5)) 
				"Swing":int,			// split swing (SplitSystemSwingType_e)
				"Act":int,				// split system active/detected (0 - not active/detected, 1 - active/detected)
				"Sleep":int,			// split sleep timer (SplitSystemSleepTimer_e)
				"Brand":int,			// split brand (SplitSystemBrand_e)
				"AllOn":int,			// all on enable (0 - all on disabled, 1 - all on enabled)
				"AllOff":int			// all off enable (0 - all off disabled, 1 - all off enabled)
			}
			,
			...						// up to 14 units
		]
	}
}

Split sytem favourites information

{
	"AirStreamDeviceUId":int,				// system ID number
	"DeviceType":"ASH",
	"SplitSystemFavourites":
	[
		{
			"Index":int,				// favourite index (0 - 8)
			"Name":string,				// favourite name (up to 16 characted including the terminating characted '\0')
			"StartH":int,				// favourite start hour (0 - 23, otherwise disabled)
			"StartM":int,				// favourite start minute (0 - 59, otherwise disabled)
			"StopH":int,				// favourite stop hour (0 - 23, otherwise disabled)
			"StopM":int,				// favourite stop minute (0 - 59, otherwise disabled)
			"Enabled":int,				// schedule enable (0 - schedule disabled, 1 - schedule enabled)
			"DaysEnabled":
			{
				"M":int,				// schedule enable on monday (0 - disabled, 1 - enabled)
				"Tu":int,				// schedule enable on tuesday (0 - disabled, 1 - enabled)
				"W":int,				// schedule enable on wednesday (0 - disabled, 1 - enabled)
				"Th":int,				// schedule enable on thursday (0 - disabled, 1 - enabled)
				"F":int,				// schedule enable on friday (0 - disabled, 1 - enabled)
				"Sa":int,				// schedule enable on saturday (0 - disabled, 1 - enabled)
				"Su":int				// schedule enable on sunday (0 - disabled, 1 - enabled)
			}
			,
			"Zones":
			[
				[int,int,int,int,int,int],	// split index, split on, split mode (SysMode_e), split fan speed (SysFan_e), split setpoint, split swing
				...					// up to 14 splits (may not be consecutive)
			]
		}
		...							// 9 favourites
	]
}

Control Actions

Turn Split Unit On/Off

{
	"SplitSystemZoneOn":
	{
		"Index":a,
		"On":b
	}
}

where:
a - split index
b - is the on/off setting (0 - off, 1 - on)

Change Split Unit Mode

{
	"SplitSystemZoneMode":
	{
		"Index":a,
		"Mode":b
	}
}

where:
a - split index
b - is the mode setting

Change Split Unit Fanspeed

{
	"SplitSystemZoneFan":
	{
		"Index":a,
		"Fan":b
	}
}

where:
a - split index
b - is the fanspeed setting

Set Split Unit Setpoint

{
	"SplitSystemZoneSetpoint":
	{
		"Index":a,
		"Setpoint":b
	}
}

where:
a - split index
b - is setpoint multiplied by 100 (1700 (17) - 3000 (30), increments of 50 (0.5))

Set Split Unit Swing

{
	"SplitSystemZoneSwing":
	{
		"Index":a,
		"Swing":b
	}
}

where:
a - split index
b - is swing

Set Split Unit Sleep Timer

{
	"SplitSystemZoneSleepTimer":
	{
		"Index":int,
		"Sleep":int
	}
}

where:
a - split index
b - is sleep timer

Change Split Unit Name

{
	"SplitSystemZoneName":
	{
		"Index":a,
		"Name":b
	}
}

where:
a: split index
b: name (up to 16 characted including the terminating characted ‘\0’)

Change Favourite Name

{
	"SplitSystemFavouriteName":
	{
		"Index":a,
		"Name":b
	}
}

where:
a: favourite index
b: name (up to 16 characted including the terminating characted ‘\0’)

Enable Schedule

{
	"SplitSystemScheduleEnable":
	{
		"Index":a,
		"En":b
	}
}

where:
a: schedule (favourite) index
b: enable (0 - disabled, 1 - enabled)

Change Schedule Settings

{
	"SplitSystemScheduleSettings":
	{
		"Index":a,
		"StartH":b,
		"StartM":c,
		"StopH":d,
		"StopM":e,
		"DaysEnabled":
		{
			"M":f,
			"Tu":f,
			"W":f,
			"Th":f,
			"F":f,
			"Sa":f,
			"Su":f
		}
	}
}

where:
a: schedule (favourite) index
b: schedule start hour (0 - 23, otherwise disabled)
c: schedule start minute (0 - 59, otherwise disabled)
d: schedule stop hour (0 - 23, otherwise disabled)
e: schedule stop minute (0 - 59, otherwise disabled)
f: schedule day enable (0 - disabled, 1 - enabled)

Split Favourite Setting

{
	"SplitSystemChangeSplitFavourite":
	{
		"SplitIndex": a,
		"FavouriteIndex" : b,
		"Apply" : c,
		"On" : d,
		"Mode" : e,
		"Fan" : f,
		"Swing" : g,
		"Sleep" : h,
		"Setpoint" : i
	}
}

where:
a - the split system index ( 0 to SplitSystemSystem.Global.MaxZones )
b - the favourite index ( 0 to SplitSystemSystem.Global.MaxFavs )
c - the apply flag ( 0 - do not change split system for this favourite, 1 - change split system )
d - the on flag ( 0 - turn split system OFF, 1 - turn split system ON )
e - the mode
f - the fan speed
g - the swing setting
h - the sleep setting
i - the setpoint multiplied by 100

Types

SysMode_e

{
        SysMode_Cool = 1,
        SysMode_Heat,
        SysMode_Vent,
        SysMode_Dry,
        SysMode_Auto,
}

SysFan_e

{
        SysFan_Low = 1,
        SysFan_Med,
        SysFan_High,
        SysFan_Auto,
        // daikin and rinnai speeds
        DaikinSplitFan_Auto = 1,
        DaikinSplitFan_Quiet,
        DaikinSplitFan_1,
        DaikinSplitFan_2,
        DaikinSplitFan_3,
        DaikinSplitFan_4,
        DaikinSplitFan_5
 }

SplitSystemSwingType_e

{
        SplitSystemSwingType_None,
        SplitSystemSwingType_Horizontal,
        SplitSystemSwingType_Vertical,
        SplitSystemSwingType_Both
}

SplitSystemSleepTimer_e

{
        SplitSystemSleepTimer_Off,
        SplitSystemSleepTimer_05h,
        SplitSystemSleepTimer_1h,
        SplitSystemSleepTimer_2h,
        SplitSystemSleepTimer_4h,
        SplitSystemSleepTimer_6h,
        SplitSystemSleepTimer_8h,
        SplitSystemSleepTimer_12h
}

4.5 - Irrigation

Local Entry Point

Local request entry point for iZone Irrigation is:

Query Request.

POST http://[bridge_IPAddr]/iLightRequest

Control Request.

POST http://[bridge_IPAddr]/iLightCommand

Local Query Request Format

Local query request body format for iZone Irrigation is:

Request Body JSON:

{
    "RetRequest": {
        "Type": 1,                  //Retic system info 1, Retic program info 2, Retic station info	- 3
        "No": 0,                    //program or station number
        "No1": 0                     //reserved
    }
}

Datagram

Irrigation Controller

{
    "Tag1":"iDrate",						// string
    "Tag2":"Irrigation System",	            // string
    "Name1":"Morning",						// string
    "Name2":"Program 2",					// string
    "Name3":"Program 3",					// string
    "Name4":"Program 4",					// string
    "Name5":"Program 5",					// string
    "Name6":"Program 6",					// string
    "Name7":"Program 7",					// string
    "Name8":"Program 8",					// string
    "Name9":"Program 9",					// string
    "Enable":true,							// bool - retic system is enabled
    "SoakPeriods":2,						// int - Max is 15
    "SoakTime":1,							// int - max is 240
    "NoOfStations":8,						// int - max is 24
    "Ratio":100,							// int - valid 0<>200, display as "ratio-100"
    "TestTime":1,							// int - max is 240
    "RainWait":0,							// int - max is 7
    "ManualRunTime":1,						// int - max 240
    "IgnoreLowCurrentFault":0,				// int - ignore low current fault (1 - ignore, 0 - do not ignore)
    "CurrentProgram":9,						// int - 0-8; other = no program
    "TestMode":0							// int - 0/1
    "Pass": "string",						// configuration password
    "RfCh": 1,								// RF channel used by the system ( 1 - 8 )
    "CtrlErr": 0							// 0 - no errors, 1 - controller 1 error, 2 - controller 2 error, 3 - controller 3 error
}

Irrigation Station

{
    "Index":0,						// int - 0-23
    "Name":"Front Lawn",			// string
    "Soak":1,						// int - 0/1
    "State":0,						// int - 	0 : not running,1 : soaking, 2 : watering
    "Error":0,						// int - 	0 : no error,1 : error - open, 2 : error - short
    "LastRun":7,					// int - 7 means 7 or more days
    "Mode": 0						// int - 0 - Auto, 1 - Manual, 2 - Disabled
}

Irrigation Program

{
    "Name":"Morning",					// string
    "Days":
    {
        "M":0,							// int - 0/1
        "T":0,							// int - 0/1
        "W":1,							// int - 0/1
        "Th":1,							// int - 0/1
        "F":0,							// int - 0/1
        "Sa":0,							// int - 0/1
        "Su":0							// int - 0/1
    },
    "Enable":1,							// int - 0/1
    "Index":0,							// int - program number 0-8
    "StartTimes":
    [
        {
            "h":12,						// int - start hour
            "m":21						// int - start minute
        }
    ],
    "RunTimes":
    [
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        },
        {
            "t":10						// int - max 240
        }
    ]
}

Control Actions

Irrigation System On/Off

Available: Local API

{
	"RetEnable":a
}

where: a - is enabled state

Set Run Time Ratio

Available: Local API

{
	"RetRatio":a
}

where:

  • a - is the ratio to adjust run time (0 - 200, when displaying substruct 100, means -100% to 100%).

Set Rain Wait

Available: Local API

{
	"RetRainWait":a
}

where:

  • a - is the number of days on hold before watering again (0 - 7)

Run Test Irrigation System

Available: Local API

{
	"RetTestMode":a
}

where:

  • a - is the test mode flag: 1 - run test ; 0 - stop test

Set Soak Divide Number

Available: Local API

{
	"RetSoakIntervals":a
}

where:

  • a - is the number of soaking intervals (max is 15)

Set Each Soak Pause Time

Available: Local API

{
	"RetSoakTime":a
}

where:

  • a - is the each soak pause time in minutes.

Set Manual Mode Station Run Time

Available: Local API

{
	"RetSetManRunTime":a
}

where:

  • a - is the time in minutes (1 - 240).

Name Irrigation System

Available: Local API

{
	"RetTag2":{
		"Tag":"string"
	}
}

where:

  • string is the new tag text, 15 characters max

Change Station Mode

Available: Local API

{
	"RetStnMode":{
		"No":a,
		"Mode":b
	}
}

where:

Set Station Soak Cycle

Available: Local API

{
	"RetStSoak":{
		"No":a,
		"Soak":b
	}
}

where:

  • a - is the station number (0 - 23)
  • b - is the station soak cycle setting (0 - disable; 1 - enable)

Name Station

Available: Local API

{
	"RetPrRetStNameogName":{
		"No": a,
		"Name":"string"
	}
}

where:

  • a - is the station number (0 - 23)
  • string is the new station name, 15 characters max

Set Station Run Time For Program

Available: Local API

{
	"RetStRunTime":{
		"Program":a,
		"No":b,
		"RunTime":c
	}
}

where:

  • a - is the program number (0 - 8)
  • b - is the station number (0 - 23)
  • c - is station run time in minutes in this program (max is 240)

Run Program

Available: Local API

{
	"RetRunProgram":{
		"No":a,
		"Run":b
	}
}

where:

  • a - is the program number (0 - 8)
  • b - is run flag (0 - stop; 1 - run)

Set Program Schedule

Available: Local API

{
	"RetProgram":{
		"Index":a,
		"StartTimes":
		[
			{
				"h":b,
				"m":c
			}
		],
		"M":d,
		"Tu":e,
		"W":f,
		"Th":g,
		"F":h,
		"Sa":i,
		"Su":j
	}
}

where:

  • a is program number
  • b is start hour
  • c is start minute
  • d is monday enabled (0 - disabled; 1 - enabled)
  • e is tuesday enabled (0 - disabled; 1 - enabled)
  • f is wednesday enabled (0 - disabled; 1 - enabled)
  • g is thursday enabled (0 - disabled; 1 - enabled)
  • h is friday enabled (0 - disabled; 1 - enabled)
  • i is saturday enabled (0 - disabled; 1 - enabled)
  • j is sunday enabled (0 - disabled; 1 - enabled)

Enable Program Schedule

Available: Local API

{
	"RetPrEnable":{
		"No":a,
		"Enable":b
	}
}

where:

  • a - is the program number (0 - 8)
  • b - is enable flag (0 - disable; 1 - enable)

Name Program

Available: Local API

{
	"RetProgName":{
		"No": a,
		"Name":"string"
	}
}

where:

  • a - is the program number (0 - 8)
  • string is the new program name, 15 characters max

Types

RetEn_e

{
    En_Off,
    En_On
}

StnMode_e

{
    StnMode_Auto,
    StnMode_Manual,
    SysMode_Disabled,
}

4.6 - Power Monitor

Local Entry Point

Local request entry point for iZone Power Monitor is:

Query Request.

POST http://[bridge_IPAddr]/PowerRequest

Control Request.

POST http://[bridge_IPAddr]/PowerCommand

Local Query Request Format

Local query request body format for iZone Power Monitor is:

Request Body JSON:

{
    "PowerRequest": {
        "Type": 1,                  //Power monitor system info 1, Power monitor current status 2
        "No": 0,                    //reserved
        "No1": 0                     //reserved
    }
}

Datagram

Power Monitor System Configuration

{
    "Enabled":int,						// power monitor system enabled flag
    "Tag1":"string",					// power monitor tag line 1
    "Tag2":"string",					// power monitor tag line 2
    "Voltage":int,						// power system voltage
    "PF":int,							// power factor
    "CostOfPower":int,					// cost of power in 0.01 cents
    "Emissions":int,					// emissions in gCOe per kWh
    "Devices":[
        {
            "Enabled":int,				// device 1 enabled flag
            "Channels":[
                {						// device 1 channel 1 (1):
                    "Name":"string",  	// name
                    "GrNo":int,			// group number
                    "Consum":int,		// consumption
                    "Enabled":int		// channel enabled
                },
                {						// device 1 channel 2 (2):
                    "Name":"string",  	// name
                    "GrNo":int,			// group number
                    "Consum":int,		// consumption
                    "Enabled":int		// channel enabled
                },
                {						// device 1 channel 3 (3):
                    "Name":"string",  	// name
                    "GrNo":int,			// group number
                    "Consum":int,		// consumption
                    "Enabled":int		// channel enabled
                }
            ],
        },
        ... 5 devices
    ]
}

Power Monitor Status

{
    "lastReadingNo":int,				// last reading number (internal)
    "Dev":[
        {
            "Ok":int,					// device 1 OK flag
            "Batt":int_battlv,			// device 1 battery level
            "Ch":[
                {
                    "Pwr":int			// device 1 channel 1 (1) power [W] 
                },
                {
                    "Pwr":int 			// device 1 channel 2 (2) power [W] 
                },
                {
                    "Pwr":int 			// device 1 channel 3 (3) power [W] 
                }
            ]
        },
        ... 5 devices
    ]
}

where:

Control Actions

Rename Power Channel

Available: Local API

{
	"ChannelName":{
		"Device":a,
		"Channel":b,
		"Name":c
	}
}

where:

  • a - is the power monitor device number (0 - 4)
  • b - is the channel number of each device (0 - 2)
  • c - is the new monitor channel name, 15 characters max

Types

CpmBatt_e

{
  CpmBatt_Critical = 0,
  CpmBatt_Low      = 1,
  CpmBatt_Normal   = 2,
  CpmBatt_Full     = 3
}

4.7 - Result Message

Message Type Description
OK Success API called successfully
InvalidRequest Error Request format is incorrect
InvalidUser Error Request user token is invalid
UserNotAllowed Error Request user is not allowed for the operation
Error Error General error for other reasons