Home › User Guide › Home Automation
Home Assistant · Hubitat · Webhooks

Your projector, in Home Assistant and Hubitat.

Projector Pilot publishes your projector's live state and every control to Home Assistant, Hubitat and any webhook you like. Set it up once, and your smart home drives the projector on its own - no phone on the network, no cloud in the middle.

Serverless once set upScenes become scriptsReady-made dashboardSetup checklistPaid add-on
Overview

What Home Automation does

Home Automation turns Projector Pilot from a remote in your hand into a device your whole house can see. It exposes what the projector is doing - power, input, color mode, the picture figures, lamp hours - and hands your smart home a control for everything the app can change.

Home Automation is a paid add-on. It is a one-time purchase, separate from Projector Pilot Pro, and a bundle buys both together at a saving. No subscription, no account, no cloud. See pricing.

Three ways in, one hub

Settings › Home Automation is the hub. Pick the platform you run - Home Assistant, Hubitat or Webhooks - and set it up there. You can wire up more than one at a time; they are independent.

The Home Automation hub in Projector Pilot: Home Assistant, Hubitat and Webhooks
Home Assistant

Set up Home Assistant

Sign in from the app, publish the projector as a sensor, paste one block into your configuration, and sync. From then on Home Assistant drives the projector itself.

  1. Open Settings › Home Automation › Home Assistant.
  2. Type your Home Assistant address (for example http://homeassistant.local:8123 or its IP), then tap Sign in. It is a browser sign-in against your own instance - there is no token to paste. Use your normal Home Assistant login, two-factor and all.
  3. The app publishes the projector as a sensor, with an entity like sensor.projector_pilot_epson_qb1000b_qb1000w, carrying power, input, color mode, the picture figures and lamp hours.
  4. Turn on Send the projector's state so those readings update in Home Assistant whenever they change while the app is open, and turn on Sync Advanced Controls to publish scripts for picture modes, inputs, lens memories and power.
  5. Paste the one shell_command block (below) into your configuration.yaml, restart Home Assistant, then tap Sync With HA.
The Home Assistant screen in Projector Pilot showing the shell_command block, Sign in, Projector Entity ID and the sync toggles

The shell_command block

This is the whole serverless trick. The app writes one command Home Assistant runs to talk to the projector's Web Control, and every script it syncs calls that command with a different verb. Tap Copy block in the app and paste it into configuration.yaml. The example below is illustrative - the app fills in your projector's own address and command name:

shell_command:
  projector_pilot_epson: >-
    curl -s --max-time 5 --digest -u 'EPSONWEB:'
    -H "X-Requested-With: XMLHttpRequest"
    -H "Referer: http://192.168.1.50/cgi-bin/webconf"
    "http://192.168.1.50/cgi-bin/directsend?{{ verb }}={{ value | urlencode }}"

Example only. The app generates yours with the projector's real IP and a name derived from its serial.

Why serverless. That curl runs on the Home Assistant box, not your phone. Home Assistant reaches the projector's IP directly over Web Control, so an automation fires whether or not the app is open and whether or not your phone is even home. The EPSONWEB digest user is the Web Control login; the app uses the Web Control password already saved for the projector.

Test Connection, Sync, and cleanup

Setup checklist

The app tells you what is done and what is missing

The Home Assistant screen carries a Setup checklist and a What your Home Assistant has panel, so you are never guessing which step is left. Each row says whether it is done, missing, or could not be told, and says what to do next.

Check again tells you what it found. Tap Check again after you fix something and the app re-reads your Home Assistant and reports the result, instead of leaving you to wonder whether it worked. A row that could not be checked says Could not tell, never a guessed yes or no.
While the projector is off

Readings that stay put

A projector in standby reports very little, so a dashboard would normally go blank. The optional last-known sensor keeps your projector's last readings - the input, lamp or laser hours - in Home Assistant while the projector is off.

Scenes as scripts

Every Scene becomes a Home Assistant script

After a sync, your Scenes are not stuck inside the app. Each one, plus power, each input, each color mode and each lens memory your projector actually has, is written as a Home Assistant script.

Scripts are named so a rename updates the same one. The script names are derived from the projector and the control, so re-syncing after you rename a Scene updates the existing script rather than forking a second copy.
The dashboard

Sync builds the dashboard for you

You do not have to hand-build a Lovelace view, and you no longer have to paste one either. When you tap Sync With HA, the app builds a complete Projector Pilot dashboard directly in Home Assistant over its own API: the projector's live state and a button for every Scene and control it synced. It appears in your Home Assistant sidebar as Projector Pilot - open it and it is done.

The Projector Pilot dashboard in Home Assistant: power and source, color modes, the full picture menu, HDR and signal, RGB calibration, lens and geometry, a laser-hours graph, maintenance, and Scenes - all as green glass tiles
A richer, hand-built version of the board. The one Sync builds for you carries the same live state and buttons in standard Home Assistant cards; the green glass look below is the optional custom build. Scroll it, or click to enlarge.
  1. Sign in to Home Assistant in the app.
  2. Paste the app's Copy block into configuration.yaml once and restart Home Assistant (the one manual step - Home Assistant does not let apps add that command remotely).
  3. Tap Sync With HA. The dashboard is built for you and shows up in the sidebar as Projector Pilot.
Prefer to paste it yourself? Copy dashboard is still there on the Home Assistant screen. Tap it, then in Home Assistant go to Settings › Dashboards › Add Dashboard, create an empty dashboard, open its three-dot menu › Edit dashboard › three-dot menu › Raw configuration editor, and paste the copied YAML.

Whether it is built for you or you paste it, the dashboard is the same - a state card plus a button for each control (illustrative snippet):

views:
  - title: Projector
    cards:
      - type: entity
        entity: sensor.projector_pilot_epson_qb1000b_qb1000w
        name: Projector
      - type: button
        name: Power On
        tap_action:
          action: perform-action
          perform_action: script.turn_on
          target:
            entity_id: script.projector_pilot_power_on
      - type: button
        name: Movie Night
        tap_action:
          action: perform-action
          perform_action: script.turn_on
          target:
            entity_id: script.projector_pilot_scene_movie_night

Example only. Your dashboard carries your projector's real entity and your own Scenes.

Model-agnostic. The dashboard is built from your projector's own capabilities - the entity, the picture figures, the inputs, color modes, lens memories and Scenes it actually reported. The screenshots here are a QB1000; your model may show different inputs, controls and readings. For a full green-glass board like the one pictured, follow the step-by-step dashboard guide or download the complete view and change two strings.
Want a richer wall? The same scripts drive whatever cards you like. If you have used AVR Maestro, the approach is identical - build lit source and mode tiles, live headers and history off the one sensor and the synced scripts.
Hubitat

Set up Hubitat

On Hubitat, Projector Pilot mirrors the projector onto a device in your hub through the Maker API, so Rule Machine can read and act on power, mute and input.

  1. In Hubitat, enable the Maker API app and note its access URL and token, and pick which devices it exposes.
  2. In Projector Pilot, open Settings › Home Automation › Hubitat and enter your hub's Maker API details.
  3. Pick the device that stands for the projector. The app suggests the likely one; choose it or select your own.
  4. The app mirrors power, mute and input onto that device, sending only the commands the device accepts.
  5. Build Rule Machine rules against that device the way you would any other - the projector's state drives them.
Only what the device accepts. The app sends a projector value to Hubitat only when the chosen device supports that command, so it never pushes something the device would reject.
Webhooks

Set up Webhooks

Webhooks are the catch-all. The app posts to a URL of yours when the projector powers on, powers off, changes input or recalls a Scene - a Home Assistant webhook, Node-RED, IFTTT, or anything that takes JSON.

  1. Open Settings › Home Automation › Webhooks.
  2. Enter the URL to post to. A Home Assistant webhook looks like http://homeassistant.local:8123/api/webhook/your-id.
  3. Choose which events fire the webhook: power on, power off, input change, Scene recall - and optionally filter to a specific input or Scene.
  4. Optionally set a custom payload if the receiving service wants a particular shape; otherwise the app sends its default JSON.
  5. Save. The app posts on each matching event from then on.

The default payload is plain JSON - an event, the projector, and the value that changed:

{
  "event": "scene_recalled",
  "projector": "Epson QB1000B/QB1000W",
  "scene": "Movie Night",
  "power": "on",
  "input": "HDMI1",
  "color_mode": "Cinema",
  "timestamp": "2026-09-23T20:14:07Z"
}

Example payload. An input-change or power event carries the fields relevant to it.

Re-linking fixes them all. If you re-link Home Assistant at a new address, the app updates every webhook that points at it at once, so a moved instance does not mean editing each one by hand.

Troubleshooting

Sign-in bounces back to the login page

Make sure the address you entered is the one you actually reach Home Assistant on, including the port (usually :8123). The sign-in is a real browser login against your instance, so your username, password and two-factor code all apply. On a phone the sign-in completes whether the in-app browser hands the result back or the local callback returns first; if it still stalls, close the sheet and tap Sign in again.

The projector sensor is not appearing in Home Assistant

The sensor is published while the app is open and Send the projector's state is on, so open the app and confirm that toggle. Then check Developer Tools › States in Home Assistant and filter on projector_pilot. A projector in standby publishes very little; wake it and the readings fill in.

The synced scripts are missing

The scripts are written by Sync With HA, which needs the shell_command block already pasted into configuration.yaml and Home Assistant restarted once. Run Test Connection first - it tells you whether the block is present. Then Sync again. If old, dead scripts are cluttering the list, use Remove orphaned scripts.

A script runs in the app but not from Home Assistant when my phone is away

That is the point of the shell_command block - it is what lets Home Assistant reach the projector's IP on its own. If it only works with the app open, the block is probably not pasted or Home Assistant was not restarted after pasting it. Confirm with Test Connection, restart Home Assistant, and Sync.

Wire your projector into the whole house

Home Automation is a one-time add-on. No subscription, no account, no cloud. One purchase unlocks it on every platform you own.

Google Play - available now App Store - awaiting approval Microsoft Store - awaiting approval Mac App Store - awaiting approval

See Free vs Pro vs Home Automation → · Full user guide →

FAQ

Quick answers

Does my phone need to stay on the network for Home Assistant automations to run?

No. Once you paste the one shell_command block into Home Assistant and sync, Home Assistant sends commands straight to the projector's IP address. Projector Pilot is only the setup tool; after that, Home Assistant talks to the projector on its own, whether your phone is home or not.

How does the projector appear in Home Assistant?

As a sensor, for example sensor.projector_pilot_epson_qb1000b_qb1000w, carrying power, input, color mode, the picture figures and lamp hours, updated whenever they change while the app is open. Turn on Sync Advanced Controls and the app also writes a Home Assistant script for every Scene, plus power, each input, each color mode and each lens memory your projector has.

Is Home Automation free?

Home Automation is a paid add-on, a one-time purchase, separate from Projector Pilot Pro. A bundle buys both together at a saving. See the pricing page.