# Ondilo Binding

This binding integrates Ondilo ICO pool monitoring devices with openHAB, allowing you to monitor and automate your pool environment using openHAB’s rules and UI.

# Supported Things

account: Represents your Ondilo Account (authentication using OAuth2 flow) ondilo: Represents an individual Ondilo ICO device

Ondilo ICO Pool as well as Spa devices are supported. Chlor as well as salt water.

# Discovery

Ondilo ICOs are discovered automatically after the account is authorized and online. Each Ondilo ICO will appear as a new Thing in the inbox.

# Thing Configuration

# account Thing Configuration

  • url: The URL of the openHAB instance. Required for the redirect during OAuth2 authentication flow (e.g. http://localhost:8080)
  • refreshInterval: Polling interval in seconds (default: 900 s).

# ondilo Thing Configuration

  • id: The Id of an Ondilo ICO device. Set via discovery service (e.g. 12345)

Ondilo ICO takes measures every hour. Higher polling will not increase the update interval. The binding automatically adjusts the polling schedule to match the expected time of the next measure, which is typically 1 hour (plus 3 minutes buffer) after the previous measure.

The requests to the Ondilo Customer API are limited to the following per user quotas:

  • 5 requests per second
  • 30 requests per hour

account Thing performs 1 request per cycle - 4 per hour per Ondilo Account with default interval. ondilo Thing performs 2 requests per cycle - 8 per hour per Ondilo ICO with default interval.

# Channels

# account Channels

Channel ID Type Advanced Access Description
poll-update Switch true R/W Poll status update from the cloud (get latest measures, not a trigger for new measures)

# Measures Channels

Channel ID Type Advanced Access Description
temperature Number:Temperature false R Water temperature in the pool
ph Number false R pH value of the pool water
orp Number:ElectricPotential false R Oxidation-reduction potential (ORP)
salt Number:Density false R Salt concentration in the pool (salt pools only)
tds Number:Density false R Total dissolved solids in the pool (chlor pools only )
battery Number:Dimensionless false R Battery level of the device
rssi Number:Dimensionless false R Signal strength (RSSI)
value-time DateTime true R Timestamp of the set of measures

# Recommendations Channels

Channel ID Type Advanced Access Description
recommendation-id Number true R Unique ID of the current recommendation
recommendation-title String false R Title of the current recommendation
recommendation-message String false R Message of the current recommendation
recommendation-created-at String true R Creation time of the current recommendation
recommendation-updated-at String true R Last update time of the current recommendation
recommendation-status String false R/W Status of the current recommendation (waiting/ok)
sendCommand("ok") to validate current waiting recommendation
recommendation-deadline String true R Deadline of the current recommendation

# Full Example

# Thing Configuration

Bridge ondilo:account:ondiloAccount [ url="http://localhost:8080", refreshInterval=900 ] {
    Thing ondilo "<id_received_from_discovery>" [ id="<id_received_from_discovery>" ] {
    }

# Item Configuration

Number:Temperature        Ondilo_Temperature  "Pool Temperature [%.1f %unit%]"  { channel="ondilo:ondilo:ondiloAccount:12345:measure#temperature" }
Number                    Ondilo_pH           "Pool pH [%d]"                    { channel="ondilo:ondilo:ondiloAccount:12345:measure#ph" }
Number:ElectricPotential  Ondilo_ORP          "Pool ORP [%.1f %unit%]"          { channel="ondilo:ondilo:ondiloAccount:12345:measure#orp" }
Number:Density            Ondilo_Salt         "Pool Salt [%.0f %unit%]"         { channel="ondilo:ondilo:ondiloAccount:12345:measure#salt" }
Number:Dimensionless      Ondilo_Battery      "Pool Battery [%d %]"             { channel="ondilo:ondilo:ondiloAccount:12345:measure#battery" }
Number:Dimensionless      Ondilo_RSSI         "Pool RSSI [%.0f]"                { channel="ondilo:ondilo:ondiloAccount:12345:measure#rssi" }

String                    Ondilo_RecTitle     "Recommendation Title [%s]"       { channel="ondilo:ondilo:ondiloAccount:12345:recommendation#title" }
String                    Ondilo_RecMessage   "Recommendation Message [%s]"     { channel="ondilo:ondilo:ondiloAccount:12345:recommendation#message" }
String                    Ondilo_RecStatus    "Recommendation Status [%s]"      { channel="ondilo:ondilo:ondiloAccount:12345:recommendation#status" }

# Sitemap Configuration

sitemap demo label="Ondilo ICO" {
    Frame label="Measures" {
        Text        item=Ondilo_Temperature
        Text        item=Ondilo_pH
        Text        item=Ondilo_ORP
        Text        item=Ondilo_Battery
        Text        item=Ondilo_RSSI
    }
    Frame label="Recommendations" {
        Text        item=Ondilo_RecTitle
        Text        item=Ondilo_RecMessage
        Text        item=Ondilo_RecStatus
    }
}

# Troubleshooting

  • If authorization fails, check the openHAB log for error messages and verify your redirect URI url
  • For more details, enable TRACE logging for org.openhab.binding.ondilo

# Resources