Great work Guys. This was quick and painless (unlike trying to connect my tuya ir controller to home assistant). This just worked without hardly doing anything. I have the “link+ pro Smoke alarms with base station” fs31 base station model SBS50 and 3 Smoke alarms XS01-M. Thanks.
Hello, would it be possible to create a virtual button to activate the smoke detector sirens? I have the gateway and the xs01m *6 detectors. I know this will never happen, but I would like the sirens of all the detectors to be able to activate in the event of a break-in in the house via a home assistant command. Would this be possible? I took this connected model hoping that it would be possible, but I can’t find out how to do it. Thank you all.
Any UK residents deployed these? I’m having a hard time figuring out the model numbers compared to the US based official website.
For example amazon have an MR11 which is the voice alarm combination model and the base station. However MR11 are apparently not compatible with MR31 but to me these look the same just a triple pack.
Thanks
Anyone working on an alternative Firmware for the SBS50 Base station? I had a surplus one and connected a Serial Port TTL adapter to it.
Output looks like this and loops:
ets Jul 29 2019 12:21:46
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:948
load:0x40078000,len:11768
load:0x40080400,len:6332
entry 0x400806ac
I (858) psram: This chip is ESP32-D0WD
I (858) spiram: Found 64MBit SPI RAM device
I (858) spiram: SPI RAM mode: flash 40m sram 40m
I (861) spiram: PSRAM initialized, cache is in normal (1-core) mode.
I (868) cpu_start: Pro cpu up.
I (872) cpu_start: Application information:
I (877) cpu_start: Project name: esp-idf
I (881) cpu_start: App version: 202007.00
I (887) cpu_start: Compile time: Oct 16 2024 10:26:23
I (893) cpu_start: ELF file SHA256: 229b335dd86b150a...
I (899) cpu_start: ESP-IDF: v3.3.2-235-ga3ce2f400
I (905) cpu_start: Single core mode
I (909) cpu_start: Feed hardware watchdog
I (1811) spiram: SPI SRAM memory test OK
I (1829) heap_init: Initializing. RAM available for dynamic allocation:
I (1829) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (1831) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (1837) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (1843) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM
I (1849) heap_init: At 3FFCA190 len 00015E70 (87 KiB): DRAM
I (1856) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM
I (1862) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (1868) heap_init: At 4009D908 len 000026F8 (9 KiB): IRAM
I (1875) cpu_start: Pro cpu start user code
I (1879) spiram: Adding pool of 3962K of external SPI memory to heap allocator
I (223) cpu_start: Starting scheduler on PRO CPU.
I (224) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (834) uart: ALREADY NULL
I (864) PKCS11: Initializing NVS partition: "storage"
E (884) PKCS11: failed nvs get file size 4354 0
I (964) gpio: GPIO[5]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (964) gpio: GPIO[12]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (974) gpio: GPIO[13]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (984) gpio: GPIO[19]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (994) gpio: GPIO[23]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1734) gpio: GPIO[34]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:3
I (1754) gpio: GPIO[32]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1754) gpio: GPIO[33]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1764) gpio: GPIO[14]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:1
I (2024) gpio: GPIO[19]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (2024) gpio: GPIO[18]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (2974) wifi:wifi driver task: 3ffdfd54, prio:23, stack:3584, core=0
I (2974) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (2974) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (3124) wifi:wifi firmware version: 1afdae0
I (3124) wifi:config NVS flash: enabled
I (3124) wifi:config nano formating: disabled
I (3124) wifi:Init dynamic tx buffer num: 32
I (3134) wifi:Init data frame dynamic rx buffer num: 32
I (3134) wifi:Init management frame dynamic rx buffer num: 32
I (3144) wifi:Init management short buffer num: 32
I (3144) wifi:Init static tx buffer num: 16
I (3154) wifi:Init static rx buffer size: 1600
I (3154) wifi:Init static rx buffer num: 10
I (3154) wifi:Init dynamic rx buffer num: 32
Chip is an ESP32-WROVER-E
I connected VCC ↔ 3.3 V, RX ↔ TX, TX ↔ RX and GND ↔ GND, Baud-Rate 115200
After updating the Firmware from 1.5.7 to 1.6.0, the console output looks like this
ets Jul 29 2019 12:21:46
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:948
load:0x40078000,len:11768
load:0x40080400,len:6332
entry 0x400806ac
I (868) psram: This chip is ESP32-D0WD
I (869) spiram: Found 64MBit SPI RAM device
I (869) spiram: SPI RAM mode: flash 40m sram 40m
I (871) spiram: PSRAM initialized, cache is in normal (1-core) mode.
I (878) cpu_start: Pro cpu up.
I (882) cpu_start: Application information:
I (887) cpu_start: Project name: esp-idf
I (892) cpu_start: App version: 202007.00
I (897) cpu_start: Compile time: Dec 31 2024 18:26:49
I (903) cpu_start: ELF file SHA256: 8af1206959803125...
I (909) cpu_start: ESP-IDF: v3.3.2-235-ga3ce2f400
I (915) cpu_start: Single core mode
I (919) cpu_start: Feed hardware watchdog
I (1821) spiram: SPI SRAM memory test OK
I (1839) heap_init: Initializing. RAM available for dynamic allocation:
I (1839) heap_init: At 3FFAFF10 len 000000F0 (0 KiB): DRAM
I (1841) heap_init: At 3FFB6388 len 00001C78 (7 KiB): DRAM
I (1847) heap_init: At 3FFB9A20 len 00004108 (16 KiB): DRAM
I (1853) heap_init: At 3FFBDB5C len 00000004 (0 KiB): DRAM
I (1859) heap_init: At 3FFCA1A8 len 00015E58 (87 KiB): DRAM
I (1866) heap_init: At 3FFE0440 len 0001FBC0 (126 KiB): D/IRAM
I (1872) heap_init: At 40078000 len 00008000 (32 KiB): IRAM
I (1878) heap_init: At 4009DEE4 len 0000211C (8 KiB): IRAM
I (1885) cpu_start: Pro cpu start user code
I (1889) spiram: Adding pool of 3962K of external SPI memory to heap allocator
I (233) cpu_start: Starting scheduler on PRO CPU.
I (234) spiram: Reserving pool of 32K of internal memory for DMA/internal allocations
I (254) xmc_sr: non-xmc (C84017). SR lock skipped.
I (804) uart: ALREADY NULL
I (834) PKCS11: Initializing NVS partition: "storage"
E (854) PKCS11: failed nvs get file size 4354 0
I (944) gpio: GPIO[5]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (944) gpio: GPIO[12]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (954) gpio: GPIO[13]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (964) gpio: GPIO[19]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
Console output works only, if the USB-C Power is not connected. The Boot-Loop probably only occurs due to the insufficient Power Supply (the 3.3V from the USB TTL Adapter is not enough).
Best regards,
Patrick
I tried it a while back. During the pairing process, it sends the config. If we could inject that one you would not even need a custom firmware … just make it connect to your own MQTT server.
custom data (was printed as ascii in version 202007.00)
I (1197680) Custom Data: 7b 22 6d 73 67 54 79 70 65 22 3a 22 63 66 67 22
is
{"msgType":"cfg"}
{
"msgType":"cfg",
"houseId":"*******A888311FFBB169315501******",
"wifiSsid":"Alice im WLANd",
"wifiPassword":"3575056568641*******",
"validTime":30,
"mqttServer":"eu-central-1.x-sense-iot.com",
"rfBand":868
}
{
"msgType":"regSucc",
"requestId":"16366170**",
"stationSN":"F28013**"
}
I also tried dumping the firmware. Could only read chunks of 1000 byte at a time because it rebooted every second. Even unsoldered the ESP but that did not really help.
Sniffing bluetooth during the paring process also did not work. Seems that this part is encrypted. But I have no clue what I’m doing … so maybe someone else wants to check that.
Another thing I tried was to reverse engineer the 868 MhZ protocol and was able to test a smoke detector. But that seemed like a hack.
Thanks for the hint. I tried to hijack the Hostname in my own DNS-Server (pointed the Hostname eu-central-1.x-sense-iot.com to my local MQTT Server), but I did not receive any MQTT Infos on my local MQTT Server.
After capturing a few Packets on the Firewall and running it through Wireshark, it looks like they indeed use TLS and MQTT on Port 8883.
I might take a look at implementing TLS on my MQTT Broker to see if this gets the SBS50 to talk to my MQTT Broker, but that’s a Topic for another Day.
I have just set this up with the mailbox alarm, water sensor, temperature, and combo alarm. All work and show up, but I can not get notice of an alarm test or drill in the Home Assistant. Any ideas on how to see the alarm test status of a combo SC07-MR sensor in home assistant? Trying to test some automation from the sensors.
Hello Theo,
Thank you for all the time you have invested in putting this integration together.
I can see from your github page the integration supports the SC07-WX. Has any testing been done to verify if the SC06-WX also works? I need to replace 3 smoke detectors and would like them to integrate with HA but the SC07-WX does not seem to be sold in a 3 pack in the UK.
Thanks for your help.
Tim
Hey all!
Wow, what a great work! ![]()
I own a SBS50, a keypad and 6 smoke detectors!
Everything is integrated in HA successfully (thanks to the HACS integration) ! ![]()
The only thing I couldn’t figure out yet is how I can use the SBS50/keypad to control my HA alarm system.
I want to use the keypad and the arm/disarm state of the SBS50 in HA, but I cannot find any entity regarding this. Is this not supported on purpose or did I not look correctly?
Any help is highly appreciated!
BR Simon
Edit: let me know in case it helps you when I share the keypad. Since it is not in real use yet we can use it for playing around.
I’m glad I’m not the only one that wants to do this very same thing. I too can’t find where I can use the keypad in HA or Use Alarmo to arm/disarm the system. This would be great addition to the integration. Much appreciate your hard work on this.
Hello,
I set up the X-Sense SC06-WX combined detector.
The integration is working correctly, and the entities are showing up, but it seems like the “smoke detector” sensor is missing.
Only the “carbon monoxide detector” is appearing.
Additionally, the “Mute” button is also missing.
Is this a feature that needs to be implemented?
Thanks in advance.
Issues : Issue with X-Sense SC06-WX Integration ? · Issue #39 · Jarnsen/ha-xsense-component_test · GitHub
I managed to get hold of a SC07-WX in the UK and it’s working well. Thanks for the integration!
Hey Everyone.
Just playing around with this integration at the minute.
I have 2 x XS01-WX units.
The issue i have is when i set up the integration in HA - i get a repeat of the same device (x2).
In the App i see 2 different devices, however on the integration, i see one device (both with the same name as each other) - so i cant set up any routines/alerts based on the individual devices.
Screen shots attached:
Dear @theosnel and @Jarnsen, Thanks for great work.
I am interested in getting my X-Sense SSC0A Camera to be accessible in Home Assistant. I went through whole thread here, and if I understood correctly, you guys have tried to integrate that but could not complete, right? Is it because of some technical limitations on protocol used by SSC0A camera OR just that you could not have time to do it?
Can you share any information on it that you have collected so far?
Ive also just picked up the SBS50
I can see the sensors etc in HA (except the motion sensor doesnt give an output to see there motion)
Is there a way to expose the entities so HA can arm and disarm? (Use Alarmo)
Hello
I have the same issue with 2 of my smoke Detectors : XS01-WX
Have you found a solution ?
Many thanks
Nick
Hi Nick
Unfortunately not - I’m to the point of replacing them already with Aqara instead ![]()
Hello. I am writing from Germany and hope you can understand me.
I have the alarm system with window contacts and the X-Sense base station. I have also integrated everything into Home Assistant. However, I can only see the status of the sensors but cannot change the alarm settings.
As a door lock, I use the Aqara U200. My idea is to set up automation so that when I lock the door, the X-Sense system is automatically armed. And when I unlock the door, it automatically deactivates the alarm.
Is this somehow possible? I really appreciate any responses in advance.
Hi @patrickschneider any updates on your side? Sounds interesting.
Same here, unfortunately the alarm setting is not supported (so far).




