---
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"