Hey community,
yesterday I started fiddeling around with REST to integrate my secondary AdGuard Home instance into HA. My primary instance is the Addon of frenck.
Things were evolving quite good until I reached a point where the AdGuard Home REST API uses two endpoints for enabling and disabling e.g. the Parental Control Feature.
From my newbyish perspective I wish I had a REST-Switch that can handle something like ressource_on
/ ressource_off
but that seems to be unavailable probably due to some reason!?
My current “solution” is quite awkward.
I defined:
- a rest command to enable Parental Control
- a rest command to disable Parental Control
- a rest sensor to get the status in an interval of 5 mins
- a template switch that uses the rest commands and the rest sensor
Due to the fact that the rest sensor is not updated by the switch actuation, like it is when using a rest switch, the template switch e.g. returns to off after switching on until the scan_interval
polls a new sensor value.
There might be hacks to overcome the situation but I’m pretty sure I’m just lacking the knowledge how to do that properly.
Hacks:
- call
rest.reload
upon each switch actuation but that polls all rest sensors - setting the
scan_interval
to a rather low value but that means polling repeatedly also if no switch was actuated - set the switch to
optimistic:true
but come on …
Here comes the related yaml:
rest_command:
adguard_home_parental_enable_rest:
url: 'http://192.168.178.19/control/parental/enable'
method: POST
payload: "sensitivity=EARLY_CHILDHOOD"
headers:
Authorization: !secret adguard_key
Content-Type: text/plain
User-Agent: Home Assistant
adguard_home_parental_disable_rest:
url: 'http://192.168.178.19/control/parental/disable'
method: POST
payload: ""
headers:
Authorization: !secret adguard_key
Content-Type: text/plain
User-Agent: Home Assistant
switch:
- platform: template
switches:
adguard_home_parental_control:
friendly_name: AdGuard Home Parental Control
icon_template: mdi:shield-check
value_template: "{{ state_attr('sensor.adguard_home_parental_status_api', 'enabled')}}"
turn_on:
service: rest_command.adguard_home_parental_enable_rest
turn_off:
service: rest_command.adguard_home_parental_disable_rest
- platform: rest
name: AdGuard Home PARENTAL STATUS API
resource: http://192.168.178.19/control/parental/status
method: GET
headers:
Authorization: !secret adguard_key
Content-Type: application/json
User-Agent: Home Assistant
scan_interval: 300
value_template: 'PARENTAL STATUS API'
json_attributes:
- enabled
- sensitivity
Hope someone has a solution or pointer for me!
Thank you in advance,
Dominik