Package: innova-controls
Innova Control APITested on aInnova 2.0 unitAlso supportsAirLeafInstallationpip install innova_controlsInnova class usageSeetest_main.pyfor some example usage.This is far from perfect documentation, but it is a start.Communication protocolLocal ModeAll commands are sent to the unit itself through http at its network IP address:http://[IP_ADDRESS]/api/v/1.Cloud ModeCommands are sent to Innova's cloud services athttps://innovaenergie.cloud/api/v/1(orhttps://fancoil.innovaenergie.cloud/api/v/1for 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_ADDRESSProtocol definitionWe just need to append the following commands and parameters where needed.Ex:curl http://192.168.1.155/api/v/1/statusIt is highly recommended to set the IP of your unit to a static DHCP address.2.0 Commands and StatusesActionHTTP VerbAPI EndpointData Needed (Content-Type: application/x-www-form-urlencoded)Extra InfoStatusGET/statusReturns json objectPower ONPOST/power/onPower OFFPOST/power/offScheduling ONPOST/set/calendar/onScheduling OFF (Manual)POST/set/calendar/offNight Mode ONPOST/set/feature/nightvalue=1Night Mode OFFPOST/set/feature/nightvalue=0Set pointPOST/set/setpointp_temp=24Rotation ONPOST/set/feature/rotationvalue=0Rotation OFFPOST/set/feature/rotationvalue=7Fan SpeedPOST/set/fanvalue=[0-4]0=auto,1=low,2=med,3=high,4=high++CoolingPOST/set/mode/coolingHeatingPOST/set/mode/heatingDehumidificationPOST/set/mode/dehumidificationFan OnlyPOST/set/mode/fanonlyAutoPOST/set/mode/autoJSON returned by status endpoint:{"RESULT":{"a":[],"cci":0,"ccv":0,"cfg_lastWorkingMode":4,"cloudConfig":1,"cloudStatus":4,"cm":0,<---SchedulingMode:0=off,1=on"connectionStatus":2,"coolingDisabled":0,"cp":0,"daynumber":0,"fr":7,<---FanRotation:0=on,7=off"fs":0,<---FanSpeed: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,<---NightMode:0=off,1=on"ns":0,"ps":0,<---Power:0=off,1=on"pwd":"************","sp":26,<---TemperatureSetpoint"t":16,<---AmbientTemperature"timerStatus":0,"uptime":159660,"uscm":0,"wm":4<---WorkingMode: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 StatusesActionHTTP VerbAPI EndpointData Needed (Content-Type: application/json)Extra InfoStatusGET/statusReturns json objectPower ONPOST/power/onPower OFFPOST/power/offScheduling ONPOST/set/calendar/onScheduling OFF (Manual)POST/set/calendar/offSet pointPOST/set/setpointtemp=240On AirLeaf, temperatures are multiplied by 10Fan Function AutoPOST/set/function/autovalue=1Fan Function NightPOST/set/function/nightvalue=1Fan Function MinPOST/set/function/minvalue=1Fan Function MaxPOST/set/function/maxvalue=1CoolingPOST/set/mode/coolingHeatingPOST/set/mode/heatingJSON 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,<---TemperatureSetpoint(x10)"wm":3,<---WorkingMode:3=heating.5=cooling"fn":1,<---FanFunction:1=auto,2=night,3=min,4=max"kl":0,"lastworkingModeSet":0,"ps":0,<---Power:0=off,1=on"cm":0,<---SchedulingMode:0=off,1=on"a":[],"ta":210,<---AmbientTemperature(x10)"tw":219,<---WaterTemperature(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}}