NodeSOS
Node.js module for communicating with LifeSOS alarm systems. Useful for DIY setups.

Background
For years, I’ve had a LifeSOS alarm system at home. It’s been a reliable piece of security hardware. Simple, effective, and rock solid at what it does. But it also came with one big quirk (or strength, depending on how you look at it): it didn’t come with its own HMI (Human-Machine Interface).
On the one hand, that’s a drawback. Without an HMI, you’re forced to rely on an online third party provider just to do the basics like arming, disarming, or checking system status. That’s exactly how I first used it, through a provider’s platform.
Ok, It’s still possible to use the remote controller to arm and disarm, but since I only have one, I wanted to integrate it into Home Assistant so my partner and kids can also manage the alarm state.
On the other hand, it opens up an opportunity. You could be your own third party provider. The alarm base unit lets you toggle between two modes: client or server (via TCP control).

- In client mode, the alarm base unit sends all events to an online third party provider. They store and visualize the data for you, but it means you’re locked into their ecosystem.
- In server mode, the alarm base unit itself acts as a host. Clients must connect directly to it in order to listen for events and send commands.
The alarm base unit never saves any data in either mode, besides a fixed-length list of logs that are rotated in itself over time.
These modes caught my attention. I first started using server mode because I didn’t want to fiddle with network or firewall settings. I wanted an on-premises solution that stayed entirely inside my home network without relying on online servers, for both privacy and stability reasons.
And as a tinkerer and developer who enjoys both home automation and building tools, the idea started forming. I didn’t want my alarm system to remain a standalone box, and I definitely didn’t want to keep paying for a third party online service that felt outdated and limited.
That’s where the idea for NodeSOS was born.
Purpose and Goal
Once I had the alarm base unit running in server mode, the goal became clear:
- Bring the alarm system into the modern smart home.
- Keep it local and private, with no need for online third party connections.
- Make it modular, so others could use it in whatever way suited them, whether tinkering with code, integrating into MQTT, or plugging it straight into Home Assistant.
In short, I wanted to give this solid piece of hardware a second life by making it play nicely with the rest of my home automation ecosystem.
Problems and Thought Process
Of course, the journey wasn’t straightforward.
The Undocumented Protocol
The alarm system didn’t exactly ship with developer docs. Figuring out how to talk to it meant digging into raw TCP traffic, something I hadn’t done much of before. I captured traffic between the base unit and the unofficial Windows application HyperSecureLink, logging the messages and slowly piecing together how the protocol worked.
While searching for documentation, I stumbled across a few Python projects that tried to do something similar. But they weren’t well-built, lacked documentation, and didn’t contain what I needed.
Then I discovered a Python library that spoke to the base unit, created by Richard Orr, called LifeSOSpy. It even came with a companion MQTT bridge project called LifeSOS_MQTT, and had some built-in support for Home Assistant via MQTT discovery. This was exactly what I wanted to build myself, which left me wondering: Well, if this already exists, should I even bother building my own version?
Running LifeSOSpy and the birth of NodeSOS
For a while I used LifeSOSpy by running it inside a Docker container as a Home Assistant add-on. That worked well enough (I even got a few of my PRs merged), but when Home Assistant updated its base Python version, things broke. LifeSOSpy was no longer maintained, its GitHub repo had been archived, and I didn’t want to depend on unmaintained code for my home security.
The Turning Point
That’s when I thought: I can do this myself. But in Node, and with TypeScript.
So I started writing NodeSOS and NodeSOS MQTT, heavily inspired by LifeSOSpy and LifeSOS_MQTT, but designed in a way that I could maintain, extend, and adapt for the future.
The Three Projects
A layered approach give flexibility: developers can dive into the library, power users can adopt the MQTT client, and everyday Home Assistant users can just use the add-on.
NodeSOS
The foundation. A Node.js module that speaks directly to the base unit. It handles TCP communication, decodes messages, and provides a clean event-driven API for interacting with the alarm system. Perfect for developers.
import { Client, GetOpModeCommand, OpModeResponse } from 'nodesos';
(async () => {
const client = new Client(1680, '192.168.1.100');
await client.open();
const response = await client.execute<OpModeResponse>(new GetOpModeCommand());
console.log(`Operation mode is ${response.operation_mode}`);
await client.close();
process.exit(0);
})();Source code and docs for NodeSOS: https://github.com/bratanon/nodesos
NodeSOS MQTT
The bridge. Built on top of NodeSOS, this project exposes base unit events and controls through MQTT. That makes it possible to integrate with virtually any system that speaks MQTT, which is almost every DIY smart home platform out there.
https://github.com/bratanon/nodesos_mqtt
LifeSOS Add-on for Home Assistant
The user-friendly layer. This add-on bundles NodeSOS MQTT into a Home Assistant ready package. Just install it, configure your alarm’s IP and port, and suddenly your alarm base unit and all your connected devices (PIRs, door sensors, fire detectors etc.) show up in Home Assistant as entities you can use in automations and dashboards.

https://github.com/bratanon/lifesos_addon
Looking Back
What started as a personal itch, wanting to connect my old alarm to my smart home, grew into something more structured and shareable.
NodeSOS is more than just code for me. It’s a reminder that with a bit of curiosity (and a lot of packet sniffing), you can take old hardware that was never designed for modern ecosystems and make it part of something bigger.
It’s also a philosophy: smart homes don’t have to mean throwing out perfectly good devices just because they’re “dumb” by today’s standards. Sometimes, with the right bridge, they can keep on doing their job, only smarter.
- NodeSOS https://github.com/bratanon/nodesos
- NodeSOS MQTT https://github.com/bratanon/nodesos_mqtt
- LifeSOS Addon https://github.com/bratanon/lifesos_addon