MeranoThis saves me …Security and access

Signal does not notify you about your own messages

Home Assistant was paired as a secondary device and sent under my own number. The images arrived, the notification never did. Only a foreign sender triggers it.

Every notification out of the Merano flat runs through one single script, not through scattered calls in twenty automations.

The reason is mundane and has already paid off three times: if the channel changes — a second recipient, escalation, a different service — that is one change in one place.

This article is about what that one channel looks like. And about a detour that did deliver images but never triggered a notification.

Two channels, and the severity decides

Severity Signal App
info ✓ —
warning ✓ with sound, time-sensitive
alarm ✓ critical — rings through silent mode

Two channels are not exuberance but division of labour: each can do something the other cannot.

Why Signal at all. In a phone notification an image is only a thumbnail you have to carefully pinch open — and a tap always opens the app that sent it, meaning Home Assistant. My objection, verbatim: “you have to very carefully enlarge the message, I’m too stupid for that.”

In a Signal conversation that same image appears at full width, and a tap lands in Signal.

Why the app stays anyway. Only it can push an alarm through silent mode and focus. The frost warning in a flat that stands empty in winter rests on that.

And why neither is enough. The dead-man’s switch — the alert in case the system itself goes quiet — deliberately runs on the outside, through a foreign service.

A notification path running inside the same system it monitors cannot report the one thing that matters most: that this system no longer exists.

One field, two forms — converted rather than duplicated

For an image the app needs a media URL, Signal needs a file path. Both point at the same file, just written differently.

Instead of making every caller fill in two fields, the script converts. So a call looks like this:

- action: script.melden
  data:
    stufe: alarm
    titel: Water alarm
    text: Kitchen leak detector triggered
    bild: /media/local/schnappschuesse/tuer_zuletzt.jpg

Not a single caller had to be adapted when the second channel arrived. That is the entire point of the exercise.

The detour that did not work

The first setup was the obvious one: pair Home Assistant by QR code as a secondary device on the personal Signal account — just like a desktop client, no new phone number needed.

It worked. Halfway.

The images arrived. A notification never did.

The reason, once spoken aloud, is obvious: Home Assistant was sending under the recipient’s own number.

Signal does not notify you about your own messages. That is not a malfunction, that is the whole point — otherwise your phone would ring for every message you type on your computer.

A group would have changed nothing; the same applies there. Only a foreign sender triggers a notification.

The solution: an account of its own, without a phone

Home Assistant now has its own Signal account. No phone, no Signal app on any device — the software is the primary device itself, and the number had to receive a confirmation code exactly once.

Notifications go into a group containing both residents. A side effect I had not considered: both see the same conversation and can reply inside it. A notification becomes a conversation without anybody having to forward anything.

And why the clean-up afterwards was not cosmetic

The paired secondary device was removed — first in Signal under Linked devices, then the remnants on the device itself.

That mattered more than it sounds:

As a linked device, Home Assistant was a full Signal device on the personal account — and would have been recording that account’s private conversations in the add-on’s directory.

An alerting system that incidentally stores its owner’s private message history is no longer an alerting system. Nobody notices, because it works.

A warning about that, because the wrong route is tempting: do not use the unregister endpoint to remove it. With the corresponding option, that deletes the account, not the link.

What I’d suggest

  1. Put all notifications through one script. The second channel will come, and then you want to change one place, not twenty.
  2. Give the alerting system its own account. You get no notification about your own messages — on every service that handles this sensibly.
  3. Do not pair it to your private account. A linked device is a full device, with everything it then reads along.
  4. Keep one channel that gets through silent mode. For exactly the two alerts a year where that counts.
  5. Put the dead-man’s switch on the outside. A system cannot report that it has failed.
  6. Convert one field instead of maintaining two. Same file, two spellings — that belongs in the script, not in every call.

So what?

The failed detour was not stupid. It was the most frugal solution: no second account, no second number, nothing to set up.

It failed on a property that is not a fault and is documented nowhere as a limitation, because from the service’s point of view it is entirely correct. Nobody notifies you about your own messages.

And had it stayed, it would incidentally have done something it was never meant for: record a person’s private conversations on a server in the basement.

Both together are why the notification path has an account of its own today — and why that is not an inconvenience but the actual solution.