Here’s a config code for sensors. I recon it could be done better using binary_sensor for some of the variables.
Im still working on sending commands to the controller.
[updated version - 29.07.2019]
sensors:
- platform: rest
resource: !secret hozelock_controller_0
name: "Hozelock Back Garden Sprinkler"
value_template: '{{ value_json["controller"]["name"] }}'
json_attributes:
- controller
- platform: template
sensors:
hozelock_back_garden_sprinkler_pause_starttime:
friendly_name: "Pause start"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["pause"]["startTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_pause_endtime:
friendly_name: "Pause end"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["pause"]["endTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_pause_duration:
friendly_name: "Pause duration"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["pause"]["duration"] | int / 60000 ) | int }}'
hozelock_back_garden_sprinkler_adjustment_starttime:
friendly_name: "Adjustment start"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["adjustment"]["startTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_adjustment_endtime:
friendly_name: "Adjustment end"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["adjustment"]["endTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_adjustment_wateringadjustment:
friendly_name: "Adjustment amount"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["adjustment"]["wateringAdjustment"] }}'
unit_of_measurement: '%'
hozelock_back_garden_sprinkler_waternowevent:
friendly_name: "Water now event"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["waterNowEvent"] }}'
hozelock_back_garden_sprinkler_currentwateringevent:
friendly_name: "Current watering event"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["currentWateringEvent"] }}'
hozelock_back_garden_sprinkler_nextwateringevent_starttime:
friendly_name: "Next watering start"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["nextWateringEvent"]["startTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_nextwateringevent_endtime:
friendly_name: "Next watering end"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["nextWateringEvent"]["endTime"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_nextwateringevent_duration:
friendly_name: "Next watering duration"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["nextWateringEvent"]["duration"] | int / 60000 ) | int}}'
unit_of_measurement: 'min'
hozelock_back_garden_sprinkler_lastcommunicationwithserver:
friendly_name: "Last communication"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["lastCommunicationWithServer"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_nextcommunicationwithserver:
friendly_name: "Next communication"
value_template: '{{ ( state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["nextCommunicationWithServer"] | int / 1000 ) | int | timestamp_local }}'
hozelock_back_garden_sprinkler_batterystatus:
friendly_name: "Battery status"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["batteryStatus"] }}'
hozelock_back_garden_sprinkler_signalstrength:
friendly_name: "Signal strength"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["signalStrength"] }}'
hozelock_back_garden_sprinkler_overridescheduleduration:
friendly_name: "Override schedule duration"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["overrideScheduleDuration"] }}'
binary_sensors:
- platform: template
sensors:
hozelock_back_garden_sprinkler_haswaternowevent:
friendly_name: "Water now event"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["hasWaterNowEvent"] }}'
hozelock_back_garden_sprinkler_ischildlockenabled:
friendly_name: "Child lock"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isChildlockEnabled"] }}'
hozelock_back_garden_sprinkler_iswatering:
friendly_name: "Watering now"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isWatering"] }}'
hozelock_back_garden_sprinkler_ispanelremoved:
friendly_name: "Panel removed"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isPanelRemoved"] }}'
hozelock_back_garden_sprinkler_isadjusted:
friendly_name: "Adjustment"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isAdjusted"] }}'
hozelock_back_garden_sprinkler_isscheduleuptodate:
friendly_name: "Schedule up-to-date"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isScheduleUpToDate"] }}'
hozelock_back_garden_sprinkler_ispaused:
friendly_name: "Paused"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["isPaused"] }}'
hozelock_back_garden_sprinkler_nextwateringevent_enabled:
friendly_name: "Next watering enabled"
value_template: '{{ state_attr("sensor.hozelock_back_garden_sprinkler", "controller")["nextWateringEvent"]["enabled"] }}'