Control your display from your home automation system
Your display has its own personal address. Any system that can call a web address can write to it: Home Assistant, Jeedom, Node-RED, a script, a connected button. Nothing to install.
How it works
One address, two parameters. Call it, and the text replaces your personal message and scrolls across the panel within a minute.
https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message=The+laundry+is+done
| Parameter | Role |
|---|---|
key |
Your personal key. It identifies you: do not publish it — anyone who has it can write to your display. |
message |
The text to display, encoded for a web address:
spaces become + or %20, accented
characters become sequences like %C3%A9. Almost every
tool does this for you.
|
Where to find your key
Sign in to your customer area, box “Your personal URL”, then “Show my URL”. You get the full address, key included.
Copy the address exactly as it appears, without
editing it. The key contains characters that are already encoded —
%2B, %3D — which must stay as they are.
Replace only the word MYNEWMESSAGE at the end.
Three things to know before you start
They explain nearly every “it doesn't work” report we get.
The address returns OK even when nothing happened —
missing key, misplaced parameters. This is intentional: your home
automation must never fail because of the display.
Check the panel, or your customer area, where the “Personal message” field should contain your text.
If your tool offers to send the data “as a POST” form,
it will be ignored and you will still get
OK. This is the most common mistake.
key and message must appear in the address,
after the ?. Whether you use GET or POST doesn't matter.
There is no duration or expiry: the text you send scrolls until another
call replaces it. For a short-lived message, plan a second call that
clears it, with an empty message=.
Sending a message also switches on the “Personal message” option if it was off. Your other options — time, weather, date — keep scrolling around it.
Home Assistant
Declare a command once and for all, then call it from any automation.
1. Declare the command
In configuration.yaml, then restart Home Assistant:
# configuration.yaml rest_command: display: # Paste your address here, keeping the key exactly as # shown in the customer area, including the %2B and %3D. url: >- https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message={{ text | urlencode }} method: get
The urlencode filter is essential: without it, a message
containing a space, an accent or an ampersand would break the address.
2. Call it
# From an automation, a script, or the developer tools
action: rest_command.display
data:
text: "The laundry is done"
3. A few handy automations
The washing machine has finished — detected by power draw dropping:
automation:
- alias: "Display - washing machine done"
triggers:
- trigger: numeric_state
entity_id: sensor.washing_machine_power
below: 5
for: "00:05:00"
actions:
- action: rest_command.display
data:
text: "The laundry is done"
The day's forecast, every morning:
automation:
- alias: "Display - morning weather"
triggers:
- trigger: time
at: "07:15:00"
actions:
- action: rest_command.display
data:
text: >-
Today {{ state_attr('weather.home','temperature') }} degrees,
{{ states('sensor.air_quality') }}
Clear the message in the evening — the display resumes its other options:
automation:
- alias: "Display - clear in the evening"
triggers:
- trigger: time
at: "22:00:00"
actions:
- action: rest_command.display
data:
text: ""
Want a button on your dashboard? Create a script that
calls rest_command.display with a fixed text, and place it
as a button card. Handy for a family “Dinner's ready!”
Jeedom
Two ways to do it, depending on whether you prefer graphical scenarios or code.
In a scenario
Add an Action block, choose “HTTP request” and paste the address. Jeedom tags work inside the message:
https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message=Living+room+temperature+#[Living room][Thermometer][Temperature]#+degrees
Watch out for spaces. Jeedom doesn't always encode
them: write + instead of spaces in the fixed text, as
above. For accents, prefer a Code block.
In a Code block
$text = "Alarm triggered in the garage";
$url = "https://www.smartledmessenger.com/push.ashx"
. "?key=YOUR_KEY"
. "&message=" . urlencode($text);
file_get_contents($url);
urlencode() takes care of spaces and accents: it's the
safest method.
Node-RED
A function node to build the address, an http request node to call it.
“function” node
// msg.payload holds the text to display
const key = "YOUR_KEY";
msg.url = "https://www.smartledmessenger.com/push.ashx"
+ "?key=" + key
+ "&message=" + encodeURIComponent(msg.payload);
return msg;
“http request” node
- Method: GET
- URL: leave blank — it comes from
msg.url - Return: a UTF-8 string
encodeURIComponent handles spaces and accents. Don't apply it
to the key, which is already encoded.
Script, terminal, scheduled task
The most direct way, and the best way to check that your key works before putting it into an automation.
Linux, macOS, Raspberry Pi
# --data-urlencode encodes spaces and accents for you
curl --get \
--data-urlencode "key=YOUR_PLAIN_KEY" \
--data-urlencode "message=Hello from the Raspberry" \
https://www.smartledmessenger.com/push.ashx
With --data-urlencode, give the key in plain
form — the one shown in the address, but with the
%2B turned back into + and the %3D
into =. Curl takes care of the encoding.
Simpler still: copy the whole address in quotes and don't use
--data-urlencode.
Windows, PowerShell
$text = "Backup complete"
$url = "https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message=" `
+ [uri]::EscapeDataString($text)
Invoke-RestMethod $url
Every morning, via cron
# Bin reminder on Tuesday and Friday at 7am
0 7 * * 2,5 curl -s "https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message=Take+out+the+bins"
From Claude, in plain language
Your display also speaks MCP (Model Context Protocol), the protocol used by AI assistants. Once connected, just say “show the London weather on my panel” or “send HAPPY BIRTHDAY GRANDMA”: Claude sets up your display on its own.
Connecting your display to Claude
On claude.ai (or in the Claude app): Settings → Connectors → Add custom connector, then fill in:
| Field | Value |
|---|---|
| Name | Smart Led Messenger |
| URL | https://www.smartledmessenger.com/mcp?key=YOUR_KEY |
YOUR_KEY is the same as for the push link above: the value
that follows key= in your personal address, copied exactly as
is (see “Where to find your key”).
An alternative, with no key to copy: connect the
server with the address https://www.smartledmessenger.com/mcp
(without ?key=…). Claude then opens a page where you sign
in with your usual email and password, and you grant access in one
click — nothing to copy. This is the flow you'll be offered if you add
Smart Led Messenger from Claude's connector directory.
What Claude can do
| You say | What happens |
|---|---|
| “Show the Manchester weather” | Turns on the weather and sets the city to Manchester |
| “Send DINNER IS READY” | The message scrolls across the panel within a minute |
| “Drop the saying and put the BBC news up” | Adjusts the matching options |
| “What's my panel showing right now?” | Reads your settings and shows the panel preview |
The URL contains your personal key: the connector therefore grants control over your display. Don't share this URL, any more than your push link.
If something goes wrong
I get “OK” but nothing shows up
This is the most common symptom, and “OK” means nothing. Three causes, in order of frequency:
The parameters are in the request body instead of
the address. Check that your tool really puts
?key=…&message=… in the URL.
The key was edited. A %2B turned into
+, or a + turned into a space when copying.
Show it again from the customer area and paste it back.
You didn't wait. The display checks the site every thirty seconds and finishes the message in progress: allow up to a minute.
To settle it, open your customer area: if the “Personal message” field contains your text, the call worked and the problem is on the display side.
I get “Invalid key”
The key is unreadable for the server. Show it again from the customer area and copy the whole address, without changing anything.
This response is actually a good sign: it proves your call is
reaching the server with a key parameter.
The accents display oddly
The text wasn't encoded. Use the filter your tool provides:
urlencode for Home Assistant and Jeedom,
encodeURIComponent for Node-RED,
--data-urlencode for curl.
Also worth knowing: the panel doesn't carry accented capitals.
À will show as A, and ÉTÉ
will become ETE. Accented lowercase letters, on the
other hand, display correctly.
How to clear the message
Call the address with an empty message:
https://www.smartledmessenger.com/push.ashx?key=YOUR_KEY&message=
The panel then resumes its other options. If none are enabled, it shows nothing at all.
How long can a message be?
Technically there's no limit, but keep in mind that a scrolling panel shows only one thing at a time: at normal speed, a hundred characters take about a dozen seconds to scroll past, and your other options queue up behind them.
A short sentence gets read; a paragraph gets endured.
Can I control several displays separately?
Not today. The key identifies your account, not a device: all displays linked to the same account show the same message.
For different messages, you currently need one account per display. Write to us if the need comes up — it will help us prioritise it.
Does my key have an expiry date?
No, it stays valid. In return it can't be revoked on a self-service basis: if you think it has leaked, write to us.
Treat it like a password. Don't publish it in a configuration shared on a forum or on GitHub.
A use case that doesn't fit these examples? Write to us — these pages are shaped by your feedback.