HTTP Trigger

by app-pixels·v1.0.0·#smart-home #tool·source
Screenshot 1
1 / 7

A tiny configurable HTTP remote. Define screen layouts in a text file on the SD card, reboot, and start tapping. Use it to control smart-home gear, fire Pushover / Discord / IFTTT webhooks, glance at a Bitcoin or GitHub stat, scrub the volume on a Sonos — any service with a REST endpoint.

Works with

  • Home Assistant — call any service (POST /api/services/...), read any state (GET /api/states/sensor.x); long-lived access token in a single Bearer header that cascades to every screen.
  • Shelly (Gen 1 / Gen 2 RPC) — bare HTTP, no auth needed on the LAN.
  • Tasmota / ESPHome — same.
  • Philips Hue BridgePUT /api/{user}/groups/X/action with brightness / colour JSON.
  • Bond Bridge — blinds / fans via PUT /v2/devices/.../actions/Open with a BOND-Token header.
  • node-sonos-http-api — GET URLs for transport + volume.
  • Tado / Ecobee / Nest cloud APIs, Pushover / ntfy.sh notifications, CoinGecko / GitHub / Hacker News for read-only displays, IFTTT / Zapier / n8n / Node-RED webhooks for everything else.

If the device or service has an HTTP endpoint, you can wire a button to it.

Four widget types — button, toggle, slider, display — that can be combined in any order. Button screens stack 1–3 pills; display screens show 1–3 polled values. Sliders substitute {value} into the URL / body / headers. Toggles can optionally poll a status endpoint and reflect the real server state.

Controls

  • PWR short — next screen · BOOT short — previous screen
  • Swipe left / right — also navigates
  • Touch tap — fires the widget
  • Slider drag — vertical; sends 1 s after release so you can correct

setup.txt keys

  • SSID / PASSWORD — WiFi (plus optional SSID2/3 + PASSWORD2/3)
  • BRIGHTNESS (1–255, default 180)
  • TIMEOUT (idle seconds → auto-off, 0 = never)
  • INFO_REFRESH_M (default 15) — minutes between background polls of display values + toggle/button status URLs
  • HTTPS_INSECURE — default off. HTTPS endpoints are verified against the embedded Mozilla root-CA bundle (works for every public-CA cert: Home Assistant Cloud, Tado, CoinGecko, GitHub, Pushover, …). Set to true only if your LAN endpoint presents a self-signed certificate.

http-trigger.txt — screen definitions

INI-style sections. WiFi stays in setup.txt; this file is purely the screens.

[screen]
type   = button
label  = Music
method = POST

  [button]
  label = Prev
  url   = http://192.168.1.70:5005/Kitchen/previous

  [button]
  label = Play
  url   = http://192.168.1.70:5005/Kitchen/playpause

  [button]
  label = Next
  url   = http://192.168.1.70:5005/Kitchen/next

[screen]
type  = display
label = Bitcoin

  [value]
  label     = EUR
  url       = https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=eur
  json_path = bitcoin.eur
  unit      = EUR
  decimals  = 0

[screen]
type      = toggle
label     = Lamp
label_on  = ON
label_off = OFF
method    = POST
header    = Authorization: Bearer YOUR_TOKEN
header2   = Content-Type: application/json
url_on    = https://home.example.com/api/services/switch/turn_on
body_on   = {"entity_id":"switch.lamp"}
url_off   = https://home.example.com/api/services/switch/turn_off
body_off  = {"entity_id":"switch.lamp"}
status_url       = https://home.example.com/api/states/switch.lamp
status_json_path = state

Up to 16 screens. Each [screen] carries shared method / header / header2 / header3 that cascade into its [button] or [value] sub-sections. Toggle and slider keep all their fields on the screen line.

Download example config

Drop these two files onto the SD card under /setup/ and reboot:

  • setup.txt — WiFi, brightness, refresh interval, optional HTTPS verification toggle.
  • http-trigger.txt — ten example screens covering every widget type (smart-home buttons, toggle with status polling, slider, single + multi-value displays, Pushover notification, transit countdown).

Replace the placeholder URLs and tokens with your own; the rest of the structure should give you a working starting point.

Editing the config without ejecting the SD card

Plug the device into your computer over USB-C — the SD card mounts as a removable drive. Edit setup.txt / http-trigger.txt, save, reboot.

Supported Devices

Waveshare ESP32-S3 1.8" AMOLED Touch

Tags

#smart-home#tool

Install