The problem
Previously, I covered how to programmatically
navigate Firefox to a URL. But what's the most convenient way for the
user to provide that URL? It would be great if when viewing a web page
on one device, it would take just a few clicks to open it in the Firefox
window on the target device.
You may have noticed this sounds a lot like the "cast"
feature in Chrome; we're just trying to build a simplified version of it
that we have full control over. At least that UI already exists, which
simplifies the problem to figuring out how we can add our own option
to the share menu that casting appears in (without having to write and
publish our own apps for Android and iOS) or somehow make use of one of
the existing options.
The Web Share Target API lets a web app add an entry
to the share menu… but it's not supported by
Firefox or Safari, so it's only usable on Android devices, not iOS.
The solution
Home Assistant can be configured to run a script when
used as a share target, including
making a REST request.
Adding the command cannot be done inside the web interface; instead
add the following lines to configuration.yaml
:
rest_command:
send_url:
url: "http://local_device/ha_share"
method: POST
content_type: "text/plain"
payload: "{{ url }}"
Then add an automation triggered by the mobile_app.share
event
with the action
service: rest_command.send_url
data:
url: '{{ trigger.event.data.url }}'
Then whenever a user views a website on their phone which is logged into
Home Assistant, they can share to Home Assistant and it will generate an
HTTP POST request to http://local_device/ha_share
where the body of
the request will be the URL of the website.
The details