# Gardena Binding

This is the binding for Gardena smart system (opens new window). This binding allows you to integrate, view and control Gardena smart system devices in the openHAB environment.

# Supported Things

Devices connected to Gardena smart system, currently:

Thing type Name
bridge smart Gateway
mower smart SILENO(+), SILENO city, SILENO life Mower
sensor smart Sensor
pump smart Pressure Pump
power smart Power Adapter
water_control smart Water Control
irrigation_control smart Irrigation Control

# Discovery

An account must be specified, all things for an account are discovered automatically.

# Account Configuration

There are several settings for an account:

Name Required Description
apiSecret yes The Gardena smart system integration API secret
apiKey yes The Gardena smart system integration API key
connectionTimeout no The timeout in seconds for connections to Gardena smart system integration API (default = 10)

# Obtaining your API Key

  1. Goto https://developer.husqvarnagroup.cloud/ (opens new window), sign in using your GARDENA smart system account and accept the terms of use
  2. Create and save a new application via the 'Create application' button. The Redirect URLs do not matter, you can enter what you want (e.g. http://localhost:8080 (opens new window))
  3. Connect both Authentication API and GARDENA smart system API to your application via the 'Connect new API' button
  4. Copy the application key to use with this binding as apiKey

# Examples

# Things

Minimal Thing configuration:

Bridge gardena:account:home [ apiSecret="...", apiKey="..." ]

Configuration of multiple bridges:

Bridge gardena:account:home1 [ apiSecret="...", apiKey="..." ]
Bridge gardena:account:home2 [ apiSecret="...", apiKey="..." ]

Once a connection to an account is established, connected Things are discovered automatically.

Alternatively, you can manually configure Things:

Bridge gardena:account:home [ apiSecret="...", apiKey="..." ]
{
  Thing mower myMower [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
  Thing water_control myWaterControl [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
  Thing sensor mySensor [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
  Thing pump myEPP [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
  Thing power myPowerSocket [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
  Thing irrigation_control myIrrigationControl [ deviceId="c81ad682-6e45-42ce-bed1-6b4eff5620c8" ]
}

# Items

In the items file, you can link items to channels of your Things:

Number Mower_Battery_Level "Battery [%d %%]" {channel="gardena:mower:home:myMower:common#batteryLevel"}

# Sensor refresh

Sensor refresh commands are not yet supported by the Gardena smart system integration API.

# Example configuration

// smart Water Control
String  WC_Valve_Activity                 "Valve Activity" { channel="gardena:water_control:home:myWateringComputer:valve#activity" }
Number  WC_Valve_Duration                 "Last Watering Duration [%d min]" { channel="gardena:water_control:home:myWateringComputer:valve#duration" }

Number  WC_Valve_cmd_Duration             "Command Duration [%d min]" { channel="gardena:water_control:home:myWateringComputer:valve_commands#commandDuration" }
Switch  WC_Valve_cmd_OpenWithDuration     "Watering Timer [%d min]" { channel="gardena:water_control:home:myWateringComputer:valve_commands#start_seconds_to_override" }
Switch  WC_Valve_cmd_CloseValve           "Stop Switch" { channel="gardena:water_control:home:myWateringComputer:valve_commands#stop_until_next_task" }

openhab:status WC_Valve_Duration // returns the duration of the last watering request if still active, or 0
openhab:status WC_Valve_Activity // returns the current valve activity  (CLOSED|MANUAL_WATERING|SCHEDULED_WATERING)

All channels are read-only, except the command group and the lastUpdate timestamp

openhab:send WC_Valve_cmd_Duration.sendCommand(10) // set the duration for the command to 10min
openhab:send WC_Valve_cmd_OpenWithDuration.sendCommand(ON) // start watering
openhab:send WC_Valve_cmd_CloseValve.sendCommand(ON) // stop any active watering

If you send a REFRESH command to the last update timestamp (no matter which thing), ALL items from ALL things are updated

DateTime LastUpdate "LastUpdate [%1$td.%1$tm.%1$tY %1$tH:%1$tM]" { channel="gardena:water_control:home:myWateringComputer:common#lastUpdate_timestamp" }

// refresh ALL items
openhab:send LastUpdate REFRESH

# Server Call Rate Limitation

The Gardena server imposes call rate limits to prevent malicious use of its API. The limits are:

  • On average not more than one call every 15 minutes.
  • 3000 calls per month.

Normally the binding does not exceed these limits. But from time to time the server may nevertheless consider the limits to have been exceeded, in which case it reports an HTTP 429 Error (Limit Exceeded). If such an error occurs you will be locked out of your Gardena account for 24 hours. In this case the binding will wait in an offline state for the respective 24 hours, after which it will automatically try to reconnect again. Attempting to force reconnect within the 24 hours causes the call rate to be exceeded further, and therefore just exacerbates the problem.

# Debugging and Tracing

If you want to see what's going on in the binding, switch the loglevel to TRACE in the Karaf console

log:set TRACE org.openhab.binding.gardena

Set the logging back to normal

log:set INFO org.openhab.binding.gardena

Notes and known limitations: When the binding sends a command to a device, it communicates only with the Gardena smart system integration API. It has no control over whether the command is sent from the online service via your gateway to the device. It is the same as if you send the command in the Gardena App.

Schedules, sensor-refresh commands, irrigation control master valve configuration etc. are not supported. This binding relies on the GARDENA smart system integration API. Further API documentation: https://developer.1689.cloud/apis/GARDENA+smart+system+API (opens new window)

###Troubleshooting Occasionally it can happen that the API key is no longer valid.

HTTP protocol violation: Authentication challenge without WWW-Authenticate header

If this error message appears in the log file, simply renew or delete/create a new API key as described in 'Obtaining your API Key' and restart openHAB.