---
id: argoclima
label: ArgoClima
title: ArgoClima - Bindings
type: binding
description: "The binding provides support for [ArgoClima](https://argoclima.com/en/) Wi-Fi-enabled air conditioning devices which use _Argo Web APP_ for control."
logo: images/addons/argoclima.png
install: auto
---
{% include base.html %}
# ArgoClima Binding
The binding provides support for [ArgoClima](https://argoclima.com/en/) Wi-Fi-enabled air conditioning devices which use _Argo Web APP_ for control.
Refer to [Argo Web APP details](#argo-web-app-details) section for an example.
> **IMPORTANT:** The same vendor also manufactures HVAC devices supported by a [phone application](https://www.youtube.com/playlist?list=PLQiJByZqkxY-4IjmviF2U-Grg_qYTzpKn).
>
> These devices are using a different protocol and are _not_ supported by this binding.
> There are good chances these will be supported by the [Gree](https://www.openhab.org/addons/bindings/gree/) binding, though!
The binding supports all HVAC remote functions (including built-in schedule and settings) except for _iFeel_ (room) temperature which is not supported by the Argo remote protocol and has to be sent via infrared.
The binding can operate in local, remote and hybrid modes.
Refer to [Connection Modes](#connection-modes) for more details.
See also [Argo protocol details](#argo-protocol-details) to find out more about how the device operates.
## Supported Things
- `remote`: Represents a HVAC device which is controlled remotely - through vendor's web application
- `local`: Represents a locally available device, which openHAB interacts with directly _(or indirectly, through a stub server)_. Refer to [Connection Modes](#connection-modes) for more details.
The binding has been primarily developed and tested using [Ulisse 13 DCI ECO Wi-Fi](https://argoclima.com/en/prodotti/argo-ulisse-eco/) device.
## Discovery
The binding does not support device auto-discovery (as the devices don't announce themselves locally).
- Note it is _technically_ possible for the advanced mode with API stub to discover devices, but as it requires manual firewall reconfiguration, it won't be an "auto" anyway so was not implemented.
## Thing Configuration
### `remote` Thing Configuration
| Name | Type | Description | Default | Required | Advanced |
|------------------|---------|---------------------------------------------------------------|---------------|----------|----------|
| **username** | text | Remote site login (can be retrieved from device during setup) | N/A | yes | no |
| **password** | text | Password to access the device | N/A | yes | no |
| refreshInterval | integer | Interval the remote API is polled with (in sec.) | 30 | no | yes |
| oemServerAddress | text | The Argo server's IP or hostname, used for communications. | 31.14.128.210 | no | yes |
| oemServerPort | integer | The Argo server's port. | 80 | no | yes |
### `local` Thing Configuration
| Name | Type | Description | Default | Required | Advanced |
|-------------------------------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------|----------|----------|
| **hostname** | text | Hostname or IP address of the HVAC device. If ```useLocalConnection``` setting is enabled, **this** address will be used for direct communication with the device. | N/A | yes | no |
| connectionMode | text | Type of connection to use. One of: ```LOCAL_CONNECTION```, ```REMOTE_API_STUB```, ```REMOTE_API_PROXY```. Refer to [Connection Modes](#connection-modes) | LOCAL_CONNECTION | yes | no |
| hvacListenPort | integer | Port at which the HVAC listens on (used if ```useLocalConnection== true```) | 1001 | no | yes |
| localDeviceIP | text | Local IP address of the device for matching intercepted requests (may be different from **hostname**, if behind NAT). Used in ```REMOTE_API_*``` modes. | N/A | no | yes |
| deviceCpuId | text | CPU ID of the device. Optional, value is used for detecting device update in proxy mode. Used in ```REMOTE_API_*``` modes. | N/A | no | yes |
| useLocalConnection | boolean | Whether the binding is permitted to talk to the device directly. | yes | no | yes |
| refreshInterval | integer | Interval the device is polled in (in sec.). Used if ```useLocalConnection== true``` | 30 | no | yes |
| stubServerPort | integer | Stub server listen port Used in ```REMOTE_API_*``` modes. | 8239 | no | yes |
| stubServerListenAddresses | text(multiple) | List of interfaces the stub server will listen on Used in ```REMOTE_API_*``` modes. | 0.0.0.0 | no | yes |
| oemServerAddress | text | The Argo server's IP or hostname, used for pass-through. Used in ```REMOTE_API_PROXY``` mode | 31.14.128.210 | no | yes |
| oemServerPort | integer | The Argo server's port. Used in ```REMOTE_API_PROXY``` mode | 80 | no | yes |
| includeDeviceSidePasswordsInProperties | text | Whether to show the intercepted passwords (in ```REMOTE_API_*``` modes) as Thing Properties. One of: ```NEVER```, ```MASKED```, ```CLEARTEXT``` | NEVER | no | yes |
| matchAnyIncomingDeviceIp | boolean | If enabled, will accept any Argo message as matching this Thing (instead of requiring an exact-match by ```hostname``` or ```localDeviceIP```). Used in ```REMOTE_API_*``` modes. | no | no | yes |
### General Device Configuration (dynamic)
These parameters are modeled as thing configuration, but are actually configuring behavior of the HVAC device itself (when in certain modes).
The same values apply to **both** `remote` and `local`.
| Name | Type | Description | Default | Required | Advanced |
|------------------------|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------|----------|----------|
| schedule1DayOfWeek | text(multiple) | Days (set comprising of values ```MON```, ```TUE```, ```WED```, ```THU```, ```FRI```, ```SAT```, ``SUN``), when Schedule Timer 1 actions should be performed. This is used only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_1``` mode. | [MON, TUE, WED, THU, FRI, SAT, SUN] | no | yes |
| schedule1OnTime | text | The time of day (HH:MM) the device should turn **ON** _(in the last used mode)_ on the `schedule1DayOfWeek`-specified days. In effect only if `active-timer` [channel](#channels) is in `SCHEDULE_TIMER_1` mode | 8:00 | no | yes |
| schedule1OffTime | text | The time of day (HH:MM) the device should turn **OFF** on the ```schedule1DayOfWeek```-specified days. In effect only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_1``` mode | 18:00 | no | yes |
| schedule2DayOfWeek | text(multiple) | Days (set comprising of values ```MON```, ```TUE```, ```WED```, ```THU```, ```FRI```, ```SAT```, ``SUN``), when Schedule Timer 1 actions should be performed. This is used only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_1``` mode. | [MON, TUE, WED, THU, FRI] | no | yes |
| schedule2OnTime | text | The time of day (HH:MM) the device should turn **ON** _(in the last used mode)_ on the ```schedule2DayOfWeek```-specified days. In effect only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_2``` mode | 15:00 | no | yes |
| schedule2OffTime | text | The time of day (HH:MM) the device should turn **OFF** on the ```schedule2DayOfWeek```-specified days. In effect only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_2``` mode | 20:00 | no | yes |
| schedule3DayOfWeek | text(multiple) | Days (set comprising of values ```MON```, ```TUE```, ```WED```, ```THU```, ```FRI```, ```SAT```, ``SUN``), when Schedule Timer 1 actions should be performed. This is used only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_1``` mode. | [SAT, SUN] | no | yes |
| schedule3OnTime | text | The time of day (HH:MM) the device should turn **ON** _(in the last used mode)_ on the ```schedule3DayOfWeek```-specified days. In effect only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_3``` mode | 11:00 | no | yes |
| schedule3OffTime | text | The time of day (HH:MM) the device should turn **OFF** on the ```schedule3DayOfWeek```-specified days. In effect only if ```active-timer``` [channel](#channels) is in ```SCHEDULE_TIMER_3``` mode | 22:00 | no | yes |
| resetToFactoryDefaults | boolean(action) | When set, upon successful Thing initialization, the binding will issue a one-time factory reset request to the device (and flip this value back do OFF) | false | no | yes |
## Channels
Both thing types are functionally equivalent and support the same channels.
| Channel | Type | Read/Write | Description |
|--------------------------|----------------------|------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| - **A/C Controls** (#ac-controls) ||||
| power | Switch | RW | This is the control channel |
| mode | String | RW | Operation mode. One of: ```COOL```, ```DRY```, ```FAN```, ```AUTO``` |
| set-temperature | Number:Temperature | RW | The device's target temperature |
| current-temperature | Number:Temperature | R | Actual (ambient) temperature. Either from device's built-in sensor or iFeel. Read-only, see also: [Room Temperature Support](#room-temperature-support) |
| fan-speed | String | RW | Fan mode. One of: ```AUTO```, ```LEVEL_1```, ```LEVEL_2```, ```LEVEL_3```, ```LEVEL_4```, ```LEVEL_5```, ```LEVEL_6``` |
| - **Operation Modes** (#modes) ||||
| eco-mode | Switch | RW | Economy (Energy Saving) Mode (cap device max power to the ```eco-power-limit```) |
| turbo-mode | Switch | RW | Turbo mode (max power). _While the device API (similarly to original remote) allows enabling ```turbo``` **while** ```night``` and/or ```economy``` modes are **active**, actual effect of such a combo is unknown :)_ |
| night-mode | Switch | RW | Night mode _(lowers device noise by lowering the fan speed and automatically raising the set temperature by 1°C after 60 minutes of enabling this option)_ |
| - **Timers (advanced)** (#timers) ||||
| active-timer | String | RW | Active timer. One of ```NO_TIMER```, ```DELAY_TIMER```, ```SCHEDULE_TIMER_1```, ```SCHEDULE_TIMER_2```, ```SCHEDULE_TIMER_3```. See also [schedule configuration](#general-device-configuration-dynamic) |
| delay-timer | Number:Time | W | Delay timer value. In effect only if ```active-timer``` is in ```DELAY_TIMER``` mode. The delay timer toggles the current ```power``` (ex. OFF->ON) after the configured period elapses |
| - **Settings** (#settings) ||||
| ifeel-enabled | Switch | RW | Use iFeel Temperature updates for ```current-temperature``` |
| device-lights | Switch | RW | Device Lights |
| temperature-display-unit | String | W | **(advanced)** Unit's display temperature display unit. One of ```SCALE_CELSIUS```, ```SCALE_FARHENHEIT``` |
| eco-power-limit | Number:Dimensionless | W | **(advanced)** Power limit in eco mode (in %, factory default is 75%), |
| - **Advanced (not supported by all devices)** (#unsupported) ||||
| mode-ex | String | RW | Extended Operation mode. Same as ```mode```, but also supports ```WARM``` |
| swing-mode | String | RW | Airflow Direction (flap setting). One of ```AUTO```, ```LEVEL_1```, ```LEVEL_2```, ```LEVEL_3```, ```LEVEL_4```, ```LEVEL_5```, ```LEVEL_6```, ```LEVEL_7``` |
| filter-mode | Switch | RW | Filter Mode |
## Full Example
### argoclima.things
```java
//BASIC MODES examples
Thing argoclima:remote:argoHvacRemote "Argo HVAC (via Argo remote API)" @ "Living Room" [
username="",
password=""
]
Thing argoclima:local:argoHvacLocalDirect "Argo HVAC (connected locally)" @ "Living Room" [
hostname="192.168.0.3"
]
Thing argoclima:local:argoHvacLocalDirectEx "Argo HVAC (connected locally) - extended example (with explicit options)" [
hostname="192.168.0.3",
connectionMode="LOCAL_CONNECTION",
refreshInterval=30,
hvacListenPort=1001,
// Schedule options (these are valid for all thing types)
schedule1DayOfWeek="[FRI, SAT, SUN, MON]",
schedule1OnTime="7:35",
schedule1OffTime="18:00",
schedule2DayOfWeek="[MON, TUE, WED, THU, FRI]",
schedule2OnTime="15:00",
schedule2OffTime="22:00",
schedule3DayOfWeek="SUN","SAT", //Alternative syntax for the weekdays list
schedule3OnTime="11:00",
schedule3OffTime="22:00"
//,resetToFactoryDefaults=true //This triggers a one-shot command each time the thing
// definition is (re)loaded from file.
// Use only intermittently - it is not designed with prolonged
// usage via Things text file in mind (mostly a MainUI feature!)
]
//ADVANCED MODES examples
Thing argoclima:local:argoHvacLocalWithPassthroughIndirect "Argo HVAC (accessible only indirectly, via pass-through mode)" [
hostname="192.168.4.2", // Doesn't have to be reachable!
connectionMode="REMOTE_API_PROXY",
useLocalConnection=false
]
Thing argoclima:local:argoHvacLocalWithPassthroughPlusDirectEx "Argo HVAC (accessible both indirectly and directly, via pass-through mode, with explicit options)" [
hostname="192.168.0.3", // Direct address of the device (reachable from openHAB)
connectionMode="REMOTE_API_PROXY",
hvacListenPort=1001,
refreshInterval=30,
useLocalConnection=true,
// Stub server-specific
stubServerPort=8240,
stubServerListenAddresses="7d47:86bd:0bfe:0413:4688:4523:4284:5936","192.168.0.195",
includeDeviceSidePasswordsInProperties="MASKED",
matchAnyIncomingDeviceIp=false,
deviceCpuId="deadbeefdeadbeef", // For direct match to a concrete device (optional)
localDeviceIP="192.168.4.2", // Address in local subnet (used for indirect request matching)
// Pass-through-specific
oemServerAddress="uisetup.ddns.net",
oemServerPort=80
]
Thing argoclima:local:argoHvacLocalWithStub "Argo HVAC (accessible both indirectly and directly with a stub) - **RECOMMENDED MODE**" [
hostname="192.168.0.3", // Has to be reachable, since useLocalConnection is true (default)
connectionMode="REMOTE_API_STUB",
localDeviceIP="192.168.4.2" // Or use matchAnyIncomingDeviceIp=true
]
```
### argoclima.items
```java
Group GArgoClimaHVACRemote "Ulisse 13 DCI ECO - remote mode" ["HVAC"]
Switch ArgoClimaHVACRemote_Power "Power" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:ac-controls#power"
}
String ArgoClimaHVACRemote_Mode "Mode" (GArgoClimaHVACRemote) ["Control"] {
channel="argoclima:remote:argoHvacRemote:ac-controls#mode"
}
Number:Temperature ArgoClimaHVACRemote_SetTemperature "Set Temperature" (GArgoClimaHVACRemote) ["Temperature", "Setpoint"] {
channel="argoclima:remote:argoHvacRemote:ac-controls#set-temperature",
unit="°C",
stateDescription="" [ pattern="%.1f °C", readOnly=false, min=10.0, max=36.0, step=0.5],
widget="oh-stepper-card" [ min=10, max=36, step=0.5, autorepeat=true],
listWidget="oh-stepper-item" [min=10, max=36, step=0.5, autorepeat=true]
}
Number:Temperature ArgoClimaHVACRemote_CurrentTemperature "Current Temperature" (GArgoClimaHVACRemote) ["Temperature", "Measurement"] {
channel="argoclima:remote:argoHvacRemote:ac-controls#current-temperature"
}
String ArgoClimaHVACRemote_FanSpeed "Fan Speed" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:ac-controls#fan-speed"
}
Switch ArgoClimaHVACRemote_EcoMode "Eco Mode" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:modes#eco-mode"
}
Switch ArgoClimaHVACRemote_TurboMode "Turbo Mode" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:modes#turbo-mode"
}
Switch ArgoClimaHVACRemote_NightMode "Night Mode" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:modes#night-mode"
}
String ArgoClimaHVACRemote_ActiveTimer "Active timer" (GArgoClimaHVACRemote) {
channel="argoclima:remote:argoHvacRemote:timers#active-timer"
}
Number:Time ArgoClimaHVACRemote_DelayTimer "Delay timer value"