# LinkTap Binding

This binding is for Link-Tap (opens new window) devices.

This is for communication over a local area network, that prevents direct access to your gateway / openHAB instance from the internet. E.g. behind a router

The method of interaction this binding supports is:

Program and execution of the watering plan within the application

The currently supported capabilities include where supported by the gateway / device:

  • Time synchronisation to openHAB
  • Child lock controls
  • Monitoring and dismissal for device alarms (Water Cut, etc.)
  • Monitoring of sensor states (Battery, Zigbee Signal, Flow Meters Statistics, etc.)
  • Enable watering based on time duration / volume limits
  • Shutdown of active watering

# Requirements

A LinkTap gateway device such as the GW_02, in order for openHAB to connect to the system, as a gateway. Older GW_01 gateway devices have not been tested but should work with a static IP setup.

The recommended minimum version of the firmware is:

  • GW_01 is to start with at least S609
  • GW_02 is to start with at least G609

# Connection Options

LinkTap supports MQTT and a direct interaction via HTTP. This binding directly interacts with LinkTap's gateway devices using the Local HTTP API (HTTP). The binding connects to the gateway's directly, and the Gateway is configured automatically to push updates to openHAB if it has a HTTP configured server. (Note HTTPS is not supported).

Should the Gateway device's not be able to connect to the binding it automatically falls-back to a polling implementation (15 second cycle). The gateway supports 1 Local HTTP API, for an ideal behavior the Gateway should be able to connect to openHAB on a HTTP port by its IP, and only a single openHAB instance should be connected to a Gateway. It is recommended that you use static IP's for this binding, for both openHAB and the Gateway device(s) regardless of the gateway's model.

If dynamic IPs are used for the gateway, the mDNS address is recommended to be used. This can be found when running a manual scan, for LinkTap Gateways. This will remove any DNS caching related issues, depending on your setup.

# Supported Things

This binding supports the follow thing types:

Thing Type Thing Type UID Discovery Description
Bridge gateway Manual / Automatic A connection to a LinkTap Gateway device
Thing device Automatic A end device such as one of the four controlled values on the Q1

NOTE This binding was developed and tested using a GW-02 gateway with a Q1 device.

# Discovery

# Gateways

If mDNS has been enabled on the Gateway device via it's webpage, then the gateway(s) will be discovered, and appear in the inbox when a manual scan is run when adding a LinkTap Gateway. It is however recommended to use static IP addresses and add the gateways directly using the IP address.

# Devices

Once connected to a LinkTap gateway, the binding will listen for updates of new devices and add them, to the inbox. If the gateway cannot publish to openHAB, then the gateway is checked every 2 minutes for new devices, and they are added to the inbox when discovered.

# Binding Configuration

# Gateway Configuration

Name Type Description Recommended Values Required Advanced
host String The hostname / IP address of the gateway device Yes No
username String The username if set for the gateway device No No
password String The password if set for the gateway device No No
enableMDNS Switch On connection whether the mDNS responder should be enabled on the gateway device true No Yes
enforceProtocolLimits Switch If true data outside of the allowed ranges against the protocol will be logged and not sent true No Yes
enableJSONComms Switch false by default for backwards compatibility, if using up to date firmware with no other local network applications set this to true, for more efficient communications true No Yes

NOTE When enableMDNS is enabled, upon connection to the gateway option "Enable mDNS responder" is switched on.

# Device Configuration

Name Type Description Recommended Values Required Advanced
deviceId String The Device Id for the device under the gateway No (A,B) No
deviceName String The name allocated to the device by the app. (Must be unique if used) No (B) No
enableAlerts boolean On connection whether the device should be configured to send alerts true No Yes

NOTE:

(A) It is recommended to use the Device Id, for locating devices. This can be found in the LinkTap mobile application under Settings->TapLinker / ValveLinker, e.g.

  • ValueLinker_1 (D71BC52F004B1200_1-xxxx)
    • has Device Id "ValveLinker_1"
    • has Device Name D71BC52F004B1200_1

(B) Either a deviceId or deviceName is required for the device to be located and used.

# Channels

Name Type Description Representation Write Action Note
water-cut Switch Water cut-off alert Alert Dismiss alert
shutdown-failure Switch The device has failed to close the valve Alert Dismiss alert
high-flow Switch Unusually high flow rate detected alert Alert Dismiss alert
low-flow Switch Unusually low flow rate detected alert Alert Dismiss alert
fall-status Switch The device has fallen Alert Dismiss alert
mode Text The current watering plan mode R
flm-linked Switch The device has a included flow meter R
rf-linked Switch Is the device RF linked R
signal Number:Dimensionless Reception Signal Strength R
battery Number:Dimensionless Battery Remaining Level R
flow-rate Number:VolumetricFlowRate Current water flow rate R
volume Number:Volume Accumulated volume of current watering cycle R
eco-final Switch In ECO mode this is true when the final ON watering on segment is running R
remaining Number:Time Remaining duration of the current watering cycle R
duration Number:Time Total duration of current watering cycle R
watering Switch Active watering status RW True - Start immediate watering, False - Stops the current watering process, the next planned watering will run as scheduled
manual-watering Switch Manual watering mode status R
child-lock Text The child lock mode RW Unlocked - Button enabled, Partially locked -> 3 second push required, Completely locked -> Button disabled If the GW has internet connectivity settings will be reset when it sync's to TapLink's servers.
oh-dur-limit Number:Time Max duration allowed for the immediate watering W Max Time duration for "Start immediate watering"
oh-vol-limit Number:Volume Max Volume limit for immediate watering W Max Volume for "Start immediate watering"
plan-pause-enable Switch When ON will pause the current watering plan for an hour every 55 minutes RW Pause current watering plan every 55 mins for one hour This disables the TapLink Watering Plan from being run, it is not reflected in the mobile app.
plan-resume-time DateTime Displays when the last pause issued will expiry, resuming the current watering plan R
watering-plan-id Text Displays the current watering plan id R

NOTE: There are 4 different areas of channels:

  • R (Read Only Data)
    • These represent data published by the device
  • Alerts
    • These are switches that are set to ON by the device when an alert condition is detected, such as a Water Cut.
    • The alert can be dismissed by setting the switch to OFF
  • RW (Read Write Data)
    • Provides the ability to read data
    • Provides the ability to set a relevant state to the data
  • W Data
    • Provides parameter values for the named action, it is stored within openHAB is not read from the device
      • E.g. Start Immediate Watering
        • Can be limited by a time duration - ohDurLimit
        • If a flow meter is attached can be limited by a volume limit - ohVolLimit

# Full Example

# Thing Configuration

  • Gateway Model: GW_02
  • Device Model: Q1
Bridge linktap:gateway:home "LinkTap GW02" [ host="192.168.0.21", enableMDNS=true, enableJSONComms=false, enforceProtocolLimits=true ] {
  Thing device TapValve1 "Outdoor Tap 1"  [ id="D71BC52E985B1200_1", name="ValveLinker_1", enableAlerts=true ]
  Thing device TapValve2 "Outdoor Tap 2"  [ id="D71BC52E985B1200_2", name="ValveLinker_2", enableAlerts=true ]
  Thing device TapValve3 "Outdoor Tap 3"  [ id="D71BC52E985B1200_3", name="ValveLinker_3", enableAlerts=true ]
  Thing device TapValve4 "Outdoor Tap 4"  [ id="D71BC52E985B1200_4", name="ValveLinker_4", enableAlerts=true ]
}

# Item Configuration

Number:Dimensionless   	   Tap1BatteryLevel       "Tap 1 - Battery Level"                 <batterylevel>     ["Point"] { channel="linktap:device:home:tapValve1:battery",unit="%%" }
Number:Dimensionless   	   Tap1SignalLevel        "Tap 1 - Signal Level"                  <qualityofservice> ["Point"] { channel="linktap:device:home:tapValve1:signal",unit="%%" }
Switch                     Tap1RfLinked           "Tap 1 - RF Linked"                     <switch>           ["Point"] { channel="linktap:device:home:tapValve1:rf-linked"}
Switch                     Tap1FlmLinked          "Tap 1 - FLM Linked"                    <switch>           ["Point"] { channel="linktap:device:home:tapValve1:flm-linked"}
Switch                     Tap1WaterCutAlert      "Tap 1 - Water Cut Alert"               <alarm>            ["Point"] { channel="linktap:device:home:tapValve1:water-cut" }
Switch                     Tap1WaterFallAlert     "Tap 1 - Fallen Alert"                  <alarm>            ["Point"] { channel="linktap:device:home:tapValve1:fall-status" }
Switch                     Tap1WaterValveAlert    "Tap 1 - Shutdown Failure Alert"        <alarm>            ["Point"] { channel="linktap:device:home:tapValve1:shutdown-failure" }
Switch                     Tap1WaterLowFlowAlert  "Tap 1 - Low Flow Alert"                <alarm>            ["Point"] { channel="linktap:device:home:tapValve1:low-flow" }
Switch                     Tap1WaterHighFlowAlert "Tap 1 - High Flow Alert"               <alarm>            ["Point"] { channel="linktap:device:home:tapValve1:high-flow" }
String                     Tap1ChildLockMode      "Tap 1 - Child Lock Mode"               <lock>             ["Point"] { channel="linktap:device:home:tapValve1:child-lock" }
Number:VolumetricFlowRate  Tap1FlowRate           "Tap 1 - Flow Rate"                     <flow>             ["Point"] { channel="linktap:device:home:tapValve1:flow-rate",unit="l/min" }
Number:Volume              Tap1WateringVolume     "Tap 1 - Watering Volume"               <water>            ["Point"] { channel="linktap:device:home:tapValve1:volume",unit="l" }
Switch                     Tap1FinalEcoSegment    "Tap 1 - Final ECO Segment"             <switch>           ["Point"] { channel="linktap:device:home:tapValve1:eco-final" }
Switch                     Tap1Watering           "Tap 1 - Watering"                      <water>            ["Point"] { channel="linktap:device:home:tapValve1:watering" }
Switch                     Tap1ManualWatering     "Tap 1 - Manual Watering"               <water>            ["Point"] { channel="linktap:device:home:tapValve1:manual-watering" }
String                     Tap1WateringMode       "Tap 1 - Watering Mode"                 <time>             ["Point"] { channel="linktap:device:home:tapValve1:mode" }
Number:Time                Tap1TimeDuration       "Tap 1 - Current Cycle Duration"        <time>             ["Point"] { channel="linktap:device:home:tapValve1:duration",unit="s" }
Number:Time                Tap1TimeRemain         "Tap 1 - Current Cycle Remaining"       <time>             ["Point"] { channel="linktap:device:home:tapValve1:remaining",unit="s" }
Number:Time                Tap1WateringCycleDur   "Tap 1 - Current Cycle Duration Limit"  <time>             ["Point"] { channel="linktap:device:home:tapValve1:dur-limit",unit="s" }
Number:Volume              Tap1WateringCycleVol   "Tap 1 - Current Cycle Volume Limit"    <water>            ["Point"] { channel="linktap:device:home:tapValve1:vol-limit",unit="l" }
Number:Time                Tap1ManTimeLimit       "Tap 1 - Instant On Duration Limit"     <time>             ["Point"] { channel="linktap:device:home:tapValve1:oh-dur-limit",unit="s" }
Number:Volume              Tap1ManVolLimit        "Tap 1 - Instant On Volume Limit"       <water>            ["Point"] { channel="linktap:device:home:tapValve1:oh-vol-limit",unit="l" }
Switch                     Tap1PauseWateringPlan  "Tap 1 - Pause Current Plan"            <time>             ["Point"] { channel="linktap:device:home:tapValve1:plan-pause-enable" }
DateTime                   Tap1PauseExpiry        "Tap 1 - Pause Expiry"                  <calendar>         ["Point"] { channel="linktap:device:home:tapValve1:plan-resume-time" }
String                     Tap1WateringPlanId     "Tap 1 - Watering Plan Id"              <calendar>         ["Point"] { channel="linktap:device:home:tapValve1:watering-plan-id" }

# Sitemap Configuration

Text item=Tap1BatteryLevel
Switch item=Tap1WaterCutAlert
Switch item=Tap1WaterFallAlert
Switch item=Tap1WaterValveAlert
Switch item=Tap1WaterLowFlowAlert
Switch item=Tap1WaterHighFlowAlert
Text item=Tap1ChildLockMode
Text item=Tap1FlowRate label="Tap 1 - Flow Rate [%.0f %unit%]"
Text item=Tap1WateringVolume label="Tap 1 - Watering Volume [%.0f %unit%]"
Text item=Tap1FinalEcoSegment label="Tap 1 - Final Segment [%s]"
Switch item=Tap1Watering
Switch item=Tap1ManualWatering
Text item=Tap1WateringMode
Text item=Tap1TimeDuration label="Tap 1 - Time Duration [%.0f %unit%]"
Text item=Tap1TimeRemain label="Tap 1 - Time Remaining [%.0f %unit%]"
Text item=Tap1WateringCycleDur label="Tap 1 - Cycle Duration [%.0f %unit%]"
Text item=Tap1WateringCycleVol label="Tap 1 - Cycle Volume [%.0f %unit%]"
Slider item=Tap1ManTimeLimit minValue=3 maxValue=86340 step=30 releaseOnly label="Tap 1 - Instant On Time Limit [%.0f %unit%]"
Slider item=Tap1ManVolLimit minValue=1 maxValue=5000 step=1 releaseOnly label="Tap 1 - Instant On Volume Limit [%.0f %unit%]"
Switch item=Tap1PauseWateringPlan
Text item=Tap1PauseExpiry
Text item=Tap1WateringPlanId

# Other Models

Please check the Link-Tap (opens new window) website. Presently at this location here (opens new window) is a chart that shows the features available for the products. If a product such as the G1S is used, it will not support flow based commands or readings. In this case exclude the volume based Items and Sitemap entries.

Note in cases such as the G1S where flow meters are not included, or are disconnected, the instant watering will be based solely on the time arguments. Flow data would as expected not be updated.

# Thanks To

A note goes out to Bill at Link-Tap who has been extremely responsive in providing specifications, and quick fixes for a single issue noticed, as well as answering many questions about the behaviours of untested devices.